joyrus 发表于 2012-7-9 00:16:27

[转]LCD1602等液晶屏使用注意事项

      很多人都在使用LCD1602等液晶做显示,结合我自己使用的体会,说几点:
      一、为什么开机后,程序中写的开机菜单(如logo等)没有显示就直接进入后面的代码,而且极容易出现满屏乱码?
      答:系统的电源从上电到稳定要有几十毫秒甚至更长的时间,这段时间极易使单片机程序走乱,或者开始几行代码没有正确执行。解决的方法是在配置位(--CONFIG())中一定要加入上电定时使能位:PWRTEN。这样就可以使得单片机在上电时的72MS内保持复位状态,避免由于电压还未稳定而发生程序执行错误等问题。
      二、程序可以正确执行,也能正确显示,但运行一段时间后,在字符间隔的空白处会出现乱码,如何解决?
      答:这可能是干扰所导致的,可以这样解决:在字符间隔的空白处,要写入空格符补齐(注意:空格也是字符!),如数组里的字符串,即使不足16位,后面也要用空格补齐到16位。其他没有字符的空白处,同样要写入空格,总的原则是:所有字符间隔的空白处,一定不要使它们处于游离状态!
      三、为什么在清屏之后的显示内容上,往往会缺失第一行前面的几个字符?
      答:清屏是要耗时的。因此在清屏命令之后一定要安排一条延时50MS以上的命令,不然因为延时不够,单片机来不及,就会使得第一行前面几个字符来不及写。形成空格,或所有字符都会退后几个位置。
      四、为什么屏幕上显示的字符和程序中设定的位置不同,如退后几格?
      答:仍然是要正确的安排延时的问题。很多朋友的程序可能是引用书上或网上下的,这时要特别注意的是:原来使用的晶振的频率和你现在使用的晶振是否一致? 举一例:如果原来的程序是在4M时用的,那你引用后是在8M中使用,那所有的延时函数的时间都不对了(延时时间减少了一半!),LCD1602在使用中,很多地方都安排有延时,如果延时时间不够,就不能正确显示。解决的办法是重新修改延时函数的值,使之符合要求。
      五、程序可以正确执行,也能正确显示,但连续运行一段时间后(可能几个小时到几天),显示屏上原来正确显示的字符会变成乱码。如何解决?
      答:有些人喜欢将屏幕上一成不变的的那些字符,写在大循环之前,即一次写成之后,永远不再改变,这样做从道理上说并无问题,程序也比较简单明了。但是如果长时间运行,可能遇到干扰等原因,会使个别字符出现乱码。我的做法是在大循环中,安排一定的时间刷新一次屏幕(重写一次),这样即使因干扰出现乱码,也能及时更新。刷新的安排有多种方法:如安排在更新数据的同时更新那些不变的字符,比如温度显示, (如28*C) 温度值是不断更新的,但*C是永远不要更新的。实际上程序中可能还有其他功能,并不需要每次扫描都要进行温度转换和显示更新,如果每15秒检测一次温度,那可以安排同时更新温度值和*C.也可以用大循环计次的方式,隔一定时间刷新一次。
      当然如果程序的功能比较复杂,要完成的任务比较多,使用液晶时,一定要考虑的是:不要频繁的去读写液晶,那会占用很多的机时,会严重影响任务的执行。所以刷新屏幕、更新数据一定要安排的合理。
       以上只是自己的一点体会,不对之处,请各位指正。
[此贴子已经被作者于2011-5-3 15:41:26编辑过]

joyrus 发表于 2012-7-11 20:29:38

我在自己的LCD1602函数库的编写中也遇到了几个棘手的问题,也已经一一攻克。
我的第五个单片机开源项目——PIC单片机LCD1602液晶屏显示程序
同时要感谢上面这篇文章的作者文中提供的各种经验和信息!
页: [1]
查看完整版本: [转]LCD1602等液晶屏使用注意事项