雁舞白沙 发表于 2008-2-28 17:21

HT1621B驱动液晶片花屏疑难问题求助!

故障:<br /><br />1)此表已经生产100套,并长期测试(1年的时间)没有发生类似现象!<br /><br />2)更改器件厂家后,或者更改新1621后此表在没有定时刷新的时候,头两个小时出现花屏,单观察数据正常!<br /><br />3)加上定时初始化后,24小时后100套出现2套此现象!<br /><br />4)表下电重新上电后故障消失,但有可能会再次出现!<br />谢谢指教!

banyai 发表于 2008-2-29 08:42

很可能是驱动的时序不是很准确.

yuntian 发表于 2008-2-29 09:29

定时初始化

别以为一次就没事了.

雁舞白沙 发表于 2008-2-29 09:46

原程序,看看那里不对?

<br /><br /><br />//------------------------------&nbsp;***&nbsp;-&nbsp;时间延时&nbsp;-&nbsp;***&nbsp;------------------------------//<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;count)<br />{<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt=count;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;&nbsp;j&lt5;&nbsp;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br />//-----***-LCD启动-***-----//<br />void&nbsp;LcdBitSet(unsigned&nbsp;char&nbsp;BitSetData)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(BitSetData&0x80)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdData=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdData=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />void&nbsp;LcdStart(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=0;<br />}<br />//-----***-LCD停止-***-----//<br />void&nbsp;LcdStop(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=1;<br />}<br />//-----***-发送控制代码-***-----//<br />void&nbsp;LcdSendId(unsigned&nbsp;char&nbsp;ID)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=3;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(ID);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID=ID&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送地址-***-----//<br />void&nbsp;LcdSendAddress(unsigned&nbsp;char&nbsp;Address)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=6;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Address);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address=Address&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送一个字节-***-----//<br />void&nbsp;LcdSendByte(unsigned&nbsp;char&nbsp;Data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i,k;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=2;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(k=4;k&gt0;k--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data=Data&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送控制命令-***-----//<br />void&nbsp;LcdSendCommand(unsigned&nbsp;char&nbsp;Command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdStart();<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdSendId(0x80);<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt9;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Command);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command=Command&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdStop();<br />}

ljxh401 发表于 2008-2-29 09:51

定时刷新啊

雁舞白沙 发表于 2008-2-29 10:09

修改后的,那个更好一些?

//------------------------------&nbsp;***&nbsp;-&nbsp;时间延时&nbsp;-&nbsp;***&nbsp;------------------------------//<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;count)<br />{<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt=count;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;&nbsp;j&lt5;&nbsp;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br /><br />//-----***-LCD启动-***-----//<br />void&nbsp;LcdBitSet(unsigned&nbsp;char&nbsp;BitSetData)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(BitSetData&0x80)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdData=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdData=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(9);<br />}<br />void&nbsp;LcdStart(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />}<br />//-----***-LCD停止-***-----//<br />void&nbsp;LcdStop(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdCs=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />}<br />//-----***-发送控制代码-***-----//<br />void&nbsp;LcdSendId(unsigned&nbsp;char&nbsp;ID)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=3;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(ID);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID=ID&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送地址-***-----//<br />void&nbsp;LcdSendAddress(unsigned&nbsp;char&nbsp;Address)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=6;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Address);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address=Address&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送一个字节-***-----//<br />void&nbsp;LcdSendByte(unsigned&nbsp;char&nbsp;Data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i,k;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=2;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(k=4;k&gt0;k--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data=Data&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//-----***-发送控制命令-***-----//<br />void&nbsp;LcdSendCommand(unsigned&nbsp;char&nbsp;Command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdStart();<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdSendId(0x80);<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt9;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdBitSet(Command);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdWr=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command=Command&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdStop();<br />}

雁舞白沙 发表于 2008-2-29 10:10

此程序每分钟定时初始化一次1621!

mikezhong 发表于 2008-2-29 11:23

ok

定时刷新,没这么严重吧.....我都开机复位后从来没有再复位...一切正常.....难道是上帝保护吗...

ayb_ice 发表于 2008-2-29 13:53

随便说说

我也只初始化一次,曾经连续几个晚上也没有问题。。。<br />多半是时钟太快,或时序不是很可靠。。。

雁舞白沙 发表于 2008-2-29 16:31

请求高手帮忙~

zhuhai2004 发表于 2008-2-29 16:50

我也碰到这样的问题,定时更新系统指令也不行!

每次我进行数据更新的时候同时更新系统指令(相当于初始化HT1621).没有招了,测量发现锯齿电压波形都没有了。怀疑芯片本身有问题,或是假货。

雁舞白沙 发表于 2008-2-29 17:47

求助,问题疑问中!

雁舞白沙 发表于 2008-2-29 20:48

继续等待结果!

雁舞白沙 发表于 2008-2-29 22:16

急啊,等待中!

yewuyi 发表于 2008-3-1 08:39

买的HOLTEK的HT1621还是替代的国产HT1621

雁舞白沙 发表于 2008-3-4 08:59

可悲啊,居然没有人愿意出来共享自己的成果!

问题解决了!谢谢大家的关心!<br /><br />哪位需要解决方式,请留下EMAIL!<br /><br />不想让那些不动脑筋的人轻而易举的得到答案!

xwj 发表于 2008-3-4 09:03

我觉得还是你的现场环境、抗干扰设计、电源设计的问题

不过,你的读写时序种的延时安排得不合理哦

雁舞白沙 发表于 2008-3-4 09:27

不是程序延时的问题~

雁舞白沙 发表于 2008-3-4 09:29

http://tieba.baidu.com/f?kw=%B5%E7%D7%D3%B9%A4%B3%CC%CA%A6%D2%C9%C4%D1%CE%CA%CC%E2%C7%F3%D6%FA%D6%AE

lkdd 发表于 2008-3-7 15:18

做秤时,遇到过这个问题

做秤时,遇到过这个问题<br />==========================<br />一到冬季,空气干燥就死机;最后用单片机定时给其复位的。<br /><br /><br />想知道你的解决方法!!!<br /><br /><br />lkdd
页: [1] 2 3
查看完整版本: HT1621B驱动液晶片花屏疑难问题求助!