准备写一个单片机学习入门的系列。这方面的教材很多。不乏很多的专家写的文章。比如《平凡的单片机》。但是个人感觉单片机入门学习是一回事,如何调试一个单板又是另外一回事。大家刚入门的时候总会不免出现各种各样的错误。导致板子无法正常工作。由于是新手,电路板出了问题的时候不知道怎么分析。无法定位问题所在。所以,打算从最基本的调试说起。写一个系列,让单片机的调试不再成为入门的拦路虎。
由于51单片机是大家学的最多,用的最多的,同时本人也是从51开始入门的,对51比较熟悉,所以,后文中提到的单片机一般都指51单片机。
调试阶段之一准备说说《单片机的运行是否正常》。
第一块电路板的成功运行难度对于单片机学习的兴趣有很大的帮助。有一些人用开发板用的很流畅,看书也基本都看懂了。可是等他自己做了第一块电路板来用的时候发现,咦,程序好像没有成功运行!怎么回事?我不是和书上的一模一样吗?
根据本人的经验,51单片机的成功运行该从如下几个方面来分析。
▲1:当然是电源。电源没有成功供电。电源供电可以从如下几个方面来分析。你用的电源本身没有问题。比如你用的开关电源,开关电源如果空载的时候输出正常,那么接到你电路板上开关电源的影响可以忽略不计了。问题是你的电路板上有没有问题。
比如:
存在IC插反?51单片机本身插反?IC插反可能导致一些未知的问题。
电容插反?一般来说电容插反不会导致单片机不运行但是可能导致其他的一些问题。但是电源部分的电解电容如果反了,也许不出问题,也许过了几分钟后,你可以看到一道白光,然后是啪的一声巨响,你的电容爆了,可以吓到一片人。(做模拟炸弹比较好)
供电接口松动,没有正常供电上电路板!
△1:所以,一块电路板在上电以前,我一般要用万用表的阻抗档(有的是二极管档)测量VCC和GND之间的阻抗,如果短路,那电路板肯定有问题。如果不存在短路,则测量各个IC的电源引脚到VCC是否短路,各个地引脚到GND是否短路。然后再看关键电容,主要是电源部分的电解电容是否插反。
一切OK后才给电路板上点。同时,强烈建议做一个电源指示灯。电源插头插上后如果电源指示灯亮,至少表明90%的可能性电源供电不出问题了。10%的问题处在电容接反不会出现提示。
▲2:然后是看晶振是否接对。对于51单片机,晶振的比较简单,只要一个晶体振荡器+2个小电容就可以了。但是现在很多公司用贴片电容,如果开发物料管理不是很好,很有可能焊接上去的不是30p附近的电容,比如焊接一个103或者104上去。程序照样不会跑。
在有示波器的时候,很简单,直接用示波器观察以下51的晶振脚,如果有3V附近的正弦波出现,OK,晶振起振了。
没有示波器怎么办?如果有仿真头,也行,很多仿真头有自带晶振。比如WAVE系列仿真头。WAVE仿真头连不上电路板其中一个原因就是选择了外部晶振,而你的外部晶振没有起振,那么仿真头连不上电路板的。
没有示波器,也没有自带晶振的仿真头,万用表你总有吧。用万用表测量晶振脚的电压,如果在2V附近,那么恭喜你,晶振也起振了。
△2:最佳的解决方案是用示波器观看。这种方法最直观最快。
还有,匹配电容在你使用不同大小晶振的时候可能电容大小不同。需要查阅芯片手册寻找一个最佳的电容。对于51而言,偏差50%影响不大。
▲3:EA是否上拉到VCC。51单片机要烧片子运行。必需EA上拉到VCC,可以用4.7K-10K上拉,有的人甚至不用电阻,直接接VCC也可以用。不过不推荐直接接VCC的方案。
△3:用万用表测量EA上电平,如果是5V则表明烧片子运行的硬件条件已经满足了。
▲4:复位电路。51的复位电路要求不是很严格,但是设计如果太草率也有可能出现问题。注意有的新手可能会出现复位电路的电容和电阻位置弄反的情况。另外一种错误就是复位时间不够。电阻电容常数不对。
△4:解决方案查阅手册,看你使用的芯片对于复位电路的要求到底是什么?一般手册上都有说明。
▲5:以上四点都已经做到了,但是还是不运行。
△5:可以尝试将电路板上所有的IC全部取下,然后通电看是否程序运行。然后一片一片的上IC。
以上是一个最简单的51系统是否运行应该注意的几个方面。
注意做电子开发的过程中。切记心平气和,万事小心行事,不急不燥。一个一个问题慢慢调试,不要一下子被它吓到了不知道从哪里下手。
问题一个个排除后你会发现,原来一切就这么简单。