初学430,最近几天都在调12864液晶,那可真整的焦头烂额!
从网上down了程序无数,改好端口一个一个试,无果。没办法,从基层做起,一句一句研究代码,反复理解吃透;找来液晶的器件手册,将工作原理和控制时序烂熟于心……谁知道调试起来却越来越没有头绪,连最简单的清屏和打点都出来乱码一片,更头疼的是同样的指令居然一刻换一个模样,几近令人崩溃。
也曾想过是I/O口的问题,需要上拉电阻吗?貌似全世界都是直接驱动的,我也没在这个问题上多纠缠。430的指令周期比51系列短的多,于是我把重点放在忙测试和等待时间上,用不同的时钟模式,又反复改等待时间,都没有影响。最后甚至怀疑是单片机出了问题,从P1到P6又测试了一遍,无果……
430的3.3V在逻辑上仍为1,能够为数字电路识别。可突然想到实验板用JTAG在线调试的时候,工作电压只有2.7V左右,难道是这点差别引起的。立刻换稳压芯片3.3V供电,烧入第一次调试原封不动的程序,液晶立刻显示出清晰正确的图案,真是令人哭笑不得。
手册上说12864可识别的高电平范围>0.55VDD,采用5V供电时恰巧在2.7V左右,而JTAG供电电压在调试时又会有波动变化,可能是这个原因导致了乱码的问题。当然,也可能是电流的问题,需要精通JTAG接口的高手指教。
结合自己的经验,就液晶调试常见的问题做一些总结:
一、
无任何显示
A:硬件问题
1:这种情况是新手最常碰到的问题,碰到这种情况首先对应硬件,文档,确定接线没有任何问题,如果是51单片机,用P0口一定要加10K的上拉电阻,不然程序正常了也显示不出来。
2: 另外要注意第三脚Vo的连接方式,这个是对比度电位引脚,实际中常采用10k的可变电阻滑动端连 接Vo脚,固定端的一段接VCC,另外一端应根据实际硬件连接。如果用的是1602,另一端直接接到GND就 可 以 了,但是对于12864就应该看18脚的标记了,如果写的是NC ,那么另一端直接接地,如果是VEE, 那么就应该接到18脚,因为这时的18脚是负压输出端。 根据这点确定对比对调节电路接法正确无误。
3:关于串并行选择的问题。串并行选择对于有字库的12864适用(1602的四线驱动也可以叫做串行驱动),如果有PSB引脚,那么你的屏应该可以支持串并行了。串并行的选择决定于PSB引脚的电位,一般是低电平为串行模式,高电平为并行模式。有些朋友在使用的时候对PSB进行了电位定义但是没有任何显示,这是你应该注意一下LCM板上焊点,尤其是和PSB引脚相连的那些起跳线作用的焊点。因为大多厂家在出厂的时候就预先设置为并行模式,也就是接到高电位上(VCC)。碰到这种情况把焊点跳线重新焊接一下,接到低电位上就可以了。模式选择错误不显示是小问题,由于屏电路的不同,可能你在驱动的时候损坏屏或者单片机,因为选择不对,定义的电位相当于短路。
B:软件问题
软件问题一般也就是定义的引脚不对,这种情况出现于真正的初学者,在copy别人的程序或者屏本身的模板程序没有修改引脚的定义,这种情况比较简单,只需要把引脚对应的端口重新定义一下就可以了。
二、
显示不清楚
A:屏上的Vo引脚(3脚)电位不对 如果按照上面的说法接了对比度电路,这时只需要调节电位器的旋钮就可以了,最终可以得到满意的对比度,使显示最清晰。
B:电源问题,即本人吃了大亏的问题。还有朋友的实验板电源取自电脑USB口,这种情况容易出现显示不清楚的情况,原因是供电电流不够,因为电脑的USB口为500mA供电。碰到此类情况,用外接电源,肯定可以解决。
三、其他问题
A、对于带字库12864某些字无法正常显示 这种情况是编译器的问题,因为编译器会自动过滤0xfd,而你要显示的汉字内码刚好有这个字段,常见的 有“三”“数”等字,碰到这种情况有两种解决途径:
1:程序中直接使用内码
2:给开发(keil)环境加补丁
B:确定屏的工作电压
现在常用的屏有 3.3V 和5V 两种。
注:附件为C语言调试程序,down别人的,觉得可读性和移植性都不错。
用户377235 2014-7-17 17:31
谢谢分享啊!!
用户377235 2013-10-16 18:56