段式LCD偶尔显示缺失
时间:10-02
整理:3721RD
点击:
我使用的LCD如下图,32段LCD,可以显示4位数字,现在最低位偶尔显示不出来(具体表现:最低位每一段都淡淡地发亮,但是不会随数字变化而闪烁)。
LCD使用的HT1621B驱动,LCD模块的5个输入CS、WR、DA、VC、GND都接到STM32F4的GPIO口,IO设置为push-pull输出,无上下拉。
现在的情况是,十次开机可能有一两次显示不正常,大部分时候都正常。一开始我怀疑是焊接问题,换了两块板子和三个LCD模块,结果都一样。而且某次开机,一旦显示正常,就会一直正常;同样,开机后如果不正常,就会一直不正常。这样的现象也不像是硬件的问题,但更不像是软件的问题。
最好的办法可能是示波器观察正常和不正常的波形。但我以前没用过LCD模块,代码是稍微修改了别人的就拿来用了,对LCD和驱动的时序不太了解。所以先请大家帮我分析一下可能是什么原因。
LCD使用的HT1621B驱动,LCD模块的5个输入CS、WR、DA、VC、GND都接到STM32F4的GPIO口,IO设置为push-pull输出,无上下拉。
现在的情况是,十次开机可能有一两次显示不正常,大部分时候都正常。一开始我怀疑是焊接问题,换了两块板子和三个LCD模块,结果都一样。而且某次开机,一旦显示正常,就会一直正常;同样,开机后如果不正常,就会一直不正常。这样的现象也不像是硬件的问题,但更不像是软件的问题。
最好的办法可能是示波器观察正常和不正常的波形。但我以前没用过LCD模块,代码是稍微修改了别人的就拿来用了,对LCD和驱动的时序不太了解。所以先请大家帮我分析一下可能是什么原因。
我认为是初始化问题,初始化的某个指令的时序可能正好在边缘状态,就是有时候成有时候不成,可能稍微延时一下给硬件一点响应时间就可以了。上示波器,找资料,看波形时序。
我假设这个是一个模块和你另一个板子连接,如果你怀疑这个板子有问题,那么换几块试试,如果你怀疑主板问题,换主板试试,有效解决虚焊短路问题。
还有一个GND你确定是连接到一个GPIO上了?
可能存在的问题就是,接地IO拉低,是否是直接连到地?这个问题需要斟酌,IO内部结构需要考虑,否则这是一个浮地,当电路大一点的话,结果可能出乎意料。
额外为各位个给我哥我哥我个人过额外问问
void Ht1621_Init(void)
{
Ht1621_CS_1();
Ht1621_WR_1();
Ht1621_DO_1();
Ht1621WrCmd(BIAS);
Ht1621WrCmd(RC256); // internal oscillator
//Ht1621WrCmd(XTAL); // external oscillator
Ht1621WrCmd(SYSDIS);
Ht1621WrCmd(WDTDIS1);
Ht1621WrCmd(SYSEN);
Ht1621WrCmd(LCDON);
}
在HT1621初始化代码中加入如上前三句,对WR、CS、DO置1。问题解决。