MCU Club | 讲解STC89C52单片机最小系统

1、实物图

 

2、原理图

 

3、介绍

3.1、主芯片

STC89C52是STC公司生产的一种低功耗、高性能8位微控制器

器件参数:

1、增强型8051单片机,指令代码完全兼容传统8051

2、工作电压:5.5V~3.3V

3、工作频率范围:0~40MHz,实际工作频率可达48MHz

4、用户应用程序空间为8K字节(程序空间)

5、片上集成512 字节RAM(变量或寄存器空间)

6、通用I/O 口(32 个),所有I/O口默认状态都是高电平,复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。

7、ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过USB-TTL模块连接串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成。

8、具有EEPROM 功能,总大小为4k,共8个扇区,每个扇区512个字节

9、共3 个16 位定时器/计数器。即定时器T0、T1、T2

10、外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒

11、通用异步串行口(UART),还可用定时器软件实现多个UART

12、工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)

VCC 电源正极
GND 电源负极
RST 复位脚
XTAL1 内部时钟电路反相放大器输入端,接外部晶振的一个引脚。当直接使用外部时钟源时,此引脚是外部时钟源的输入端。
XTAL2 内部时钟电路反相放大器的输出端,接外部晶振的另一端。当直接使用外部时钟源时,此引脚可浮空,此时XTAL2实际将XTAL1输入的时钟进行输出。
EA/VPP 内外存储器选择引脚
ALE/PROG 地址锁存允许信号输出引脚/编程脉冲输入引脚
PSEN 外部程序存储器选通信号输出引脚

3.2、复位电路

 一、复位电路的用途

单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。

二、复位电路的工作原理

在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢?

在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。

开机的时候为什么会复位:

在电路图中,电容的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是T=RC=10K*10UF=0.1S。

也就是说在单片机启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

按键按下的时候为什么会复位:

在单片机启动0.1S后,电容C两端的电压持续充电为5V,这时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

总结:

1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。

2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

3.3、晶振电路

 早期的单片机(比如经典的51单片机)系统,外接晶振是必须的,因为单片机的运行必须依赖于稳定的时钟脉冲。但是随着技术的发展,现在很多单片机都已经集成了内部时钟,所以在一般的应用场合,可以不用外接晶振电路了。不过由于内部时钟容易受外界干扰,所以在要求严格的场合,外接晶振电路还是很有必要的。

晶振介绍:

晶振有很多种,常用的有11.0592M、12M等。

选取11.0592M晶振:

使用11.0592MHz的晶振可以产生9600的波特率

波特率 = (2SMOD/32)* T1溢出率

溢出率 = (计算速率)/(256 – TH1初值)

= (fose / 12) / (256 – TH1初值)

注:机器周期 = 12个时钟周期

最终波特率 =(2SMOD/32)* (fose / 12) / (256 – TH1初值)

如果波特率=9600,SMOD=0,fose=11059200,则最终TH1=253=0Xfd,是一个整数

如果fose=12000000,要得到9600的波特率,则TH1=252.745,不是一个整数,所以不能产生标准的9600波特率。

选取12M晶振:

单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,它的一个机器周期是12x(1/12)us,也就是1US。机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

电容介绍:

这两个电容一般称为“匹配电容”或者“负载电容”、“谐振电容”。晶振电路中加这两个电容是为了满足谐振条件。一般外接电容,是为了使晶振两端的等效电容等于或接近负载电容。只有连接合适的电容才能满足晶振的起振要求,晶振才能正常工作。

负载电容无法满足的话一般会使晶体频率产生偏差,严重的话晶体无法起振。电路设计中要尽量满足晶体的负载电容需求,从而使晶体工作在最佳状态。负载电容计算公式如下:

CL = C1*C2 / (C1+C2) + CS

CL为晶振的负载电容值,一般通过查询晶振的数据手册获得,一般15-30pF。CS为电路板的寄生电容,一般取 3~5pF,取C1 = C2,那么公式可以简化成如下:

CL = C1 / 2 + CS

一般情况下,增大负载电容的值会使振荡频率下降,减小负载电容的值,会使振荡频率上升。

3.4、电源

 一个type-c的插座,一个自锁按键、一个220uF的电解电容、一个1k的限流电阻和一个LED灯

这个220uF的电解电容选取:

为什么要:一是电源本身就有纹波,多加一个滤波电容更好,二是电源线有电阻,负载电流的变化会在该电阻上形成不同的电压降,进一步加大了电压的波动,因此每块电路板上都有电源滤波电容。负载电流越大,滤波电容容量也越大。至于选取多大的电容,一般是100-220uF。

灯和限流电阻:当供电正常并且自锁按键按下时,灯会点亮,表明板子处于供电状态。

3.5、下载口

 使用USB—TTL模块进行下载,使用专门的下载工具stc-isp

               

 

物联沃分享整理
物联沃-IOTWORD物联网 » MCU Club | 讲解STC89C52单片机最小系统

发表评论