郁闷了好几天的单片机点液晶屏不成功原因终于找到了,用的是SYM320240BZK 的蓝屏,烧进厂家提供的程序始终不行,查引脚接法查了N遍也没查出错,最后不得不借助串口调试,因为刚开始是要对屏进行初始化,而初始化就是对屏里的一大堆寄存器进行写操作,比如:lcd_cmdwrite(0x00,0xcd),借用串口调试,把刚写好的寄存器里的值再读出来(lcd_cmdread(0x00))再发到上位机,结果发现刚往0x00号寄存器里写的0xcd变成了0x03,晕死,找不着北~~~再试着同样操作别的寄存器,结果傻了,都是0x03,狂汗~~~
从程序软件和硬件连接方面入手检查了一遍又一遍也没找出bug,于是乎就开始怀疑是屏的问题了。。。
再于是乎就找专家座诊了,高手就是高手,调试起来先从软件入手,对测忙寄存器进行读写,反馈数据上来,结果发现测忙根本不顶用~~~不管怎么改测忙寄存器相应位来改变测忙的触发方式,还是不行,于是就怀疑根本就是lcd_cmdwrite这个函数没有把数据写进屏里去(偶怎么没想到这一点呢,菜鸟什么时候才能学会飞?),于是就拿来示波器开测单片机读写时序(大虾与菜鸟的区别在此啊,菜鸟直接把屏给否定了
~~~)结果当然出来了,单片机的WR脚波形不正常!出现了除了高和低电平的第三态。。。再检查板子,结果真丢人,
当初居然天真地想看到写的状态而在WR脚上接了个发光二极管+1K限流电阻,靠,居然把信号线拿来当驱动线用了,信号线电流本来就小,再被二极管这么一拉。。。不出问题才怪呢~~~这下也以血的教训彻底明白别人驱动蜂鸣器发光管什么的为什么要用与非门之类的东东了啊5555~~
最后得出结论:示波器,好东东啊!有嘛事搞不定了,找示波器啊~~~~
再后来当然是屏幕终于出字了。。。虽然屏幕到了最后出了点意外,经高手诊断DB7信号脚挂了(当然还是先用示波器先看出DB7不正常再通过串口收发数据发现最高位始终为0)从而导致屏幕OVER返厂,但是这个调试过程还是值得学习总结一下的。。。
差距啊~~~还是因为自己实战少了啊,缺少通过一步一步想尽办法调试来缩小查错范围最后锁定错误的能力,多多动手,培养这种能力~~~~