学单片机的第一步通常就是搭一个最小系统。所谓最小系统,就是让单片机能跑起来所需的最少电路,少一个都不行,多一个都是外设。别看它简单,很多新手烧了好几天程序没反应,最后发现就是最小系统某个地方没接对。
一个典型的51单片机最小系统包括三大部分:电源电路、复位电路、振荡电路。电源电路给单片机提供稳定的5V或3.3V供电,一般用LM7805或者AMS1117稳压,输入端加个滤波电容,输出端也加一个,滤掉高低频干扰。复位电路负责上电时给单片机一个复位脉冲,让它从初始状态开始运行,通常是一个电阻加一个电容,利用电容充电的时间来产生复位信号。振荡电路给单片机提供时钟节拍,一般用一个11.0592MHz的晶振搭配两个30pF左右的电容。
为什么晶振常用11.0592MHz而不是整数频率?这是为了让串口波特率更准确。51单片机的串口波特率是由定时器分频得到的,11.0592MHz分频后能得到精确的9600、19200等标准波特率,而12MHz晶振算出来的波特率会有误差,通信容易出错。所以做串口通信的话,晶振频率一定要选对。
复位电路有好几种接法。最简单的是上电复位,一个电阻接VCC,一个电容接GND,中间连到RST引脚。上电瞬间电容相当于短路,RST引脚是高电平,电容充满后变成低电平,单片机就退出复位开始运行。想要手动复位的话,再加一个按键接VCC,按下时RST拉高。要注意电阻和电容的取值,时间常数太小复位不彻底,太大启动太慢。
实际搭电路的时候有几个坑要注意。第一,电源引脚旁边一定要加去耦电容,一般0.1μF的瓷片电容就近接在VCC和GND之间,滤掉高频噪声。第二,EA引脚要接高电平(51单片机),否则单片机会从外部ROM取指,而不是内部Flash,程序就跑不起来。第三,晶振的走线要尽量短,电容要紧靠晶振和单片机的XTAL引脚,减少干扰。
最小系统跑通后,可以先写个最简单的LED闪烁程序验证一下。如果LED不闪,先查电源电压对不对,再查晶振有没有起振(用示波器看XTAL引脚有没有波形),最后查复位引脚的电平是否正常。把最小系统搞定了,后面加外设就跟搭积木一样,都是在这个基础上扩展。
下一篇:没有了