Proteus仿真液晶显示LCM1602遇到的问题<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Proteus是一个很好的单片机仿真工具,解决了很多像我这种没钱的穷学生学习51单片机,学习ARM的途径,支持众多单片机外设的仿真是它的一大特点,像用得比较多的液晶LCM1602。
今天我本来想验证一下51单片机用模拟口线方法控制LCM1602的程序,于是Proteus仿真。程序用的是网上流传很广的明浩的程序(LCM1602模拟口线)
http://www.avrtool.com/dpj51/bzyc/rjian/200710/770.html
Proteus电路图
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
可以看到在Proteus中仿真LCM1602要选LM016L,51单片机最小系统不必都连上,像晶振、/EA、复位电路、电源VCC和地GND都默认连接好,晶振频率在仿真设置中设好,只要把LCM1602按模拟口线方式连好就行。
|DB0-----P1.0 | DB4-----P1.4 | RW-------P2.0 |
|DB1-----P1.1 | DB5-----P1.5 | RS-------P2.1 |
|DB2-----P1.2 | DB6-----P1.6 | E--------P2.2 |
|DB3-----P1.3 | DB7-----P1.7 | VLCD 接 1K 电阻到 GND|
但编译好,在Proteus中把Hex文件设置好时,运行确没反应,1602没显示。在网上找了其他人在Proteus中对LCM1602的仿真,好像都遇到大大小小的问题。
http://blog.ednchina.com/yt_ferris/95207/message.aspx
http://blog.ednchina.com/zhuyjgh/90016/message.aspx
自己再编译了一个确定是能运行的ASM汇编程序,还是没显示。就这样折腾了一下午。最后终于能正常显示了:把检查忙的语句换成延时。原来是在实际器件中能对忙信号进行反应,在Proteus中并没这方面的仿真。看来软件仿真并不是百分百能反映实际情况的,是不是能运行的程序,还是需要下载到实际片子上试试J
本文工程文档(包括Proteus和keil文件) https://static.assets-stash.eet-china.com/album/old-resources/2009/4/10/a06e0322-c887-48fa-967f-bdfac6496c76.rar
要提醒注意的是,能在Proteus上仿真LCM1602显示的程序,在实际的1602上不一定显示成功,所以仿真时要注意。我按DataSheet上的时序实现的程序,在实物LCM1602上能显示,但在Proteus上仿真不出来。所以不要确信仿真,在程序不完善的时候,最好验证的办法是在线硬件仿真或者下载到片子上运行,而不是在仿真库有缺陷的软件上倒腾J
参考程序:
http://blog.ednchina.com/ahai0306/93234/message.aspx
(不知道为什么这个程序能在Proteus上仿真成功,也能在实际的1602显示成功。而有的在实际实现的,确在Proteus上仿真失败。)
用户433052 2012-11-20 18:41
用户58310 2010-12-26 14:23
用户1422098 2009-7-23 00:33
用户167435 2009-4-10 21:40
用户518079 2009-4-10 16:20