HD44780液晶模组上电初始化

电器工程 液晶显示器 高清44780
2022-01-11 10:43:22

我正在使用 HD44780 克隆 LCD 模块和 KS0066U。模块上一切正常,除非我快速重启设备(开->关->开)。出于某种原因,电源中非常短的中断会导致显示模块不正确地初始化为 1 行 LCD 而不是 2 行 LCD 显示器。什么会导致这种行为?有没有办法在软件中防止它?

编辑:我在 4 位模式而不是 8 位模式下使用显示控制器。

4个回答

我更改了我的初始化代码,以便它两次发送函数 set 命令的高 4 位半字节。之后我讨厌高 4 位半字节,然后是低 4 位半字节。这与数据表不匹配,数据表似乎表明您可以发送高 4 位半字节,然后发送功能设置命令高 4 位,然后发送低 4 位。

// 有时可以使用伪代码
port=0x20;
e=1;e=0;
端口=0x20;
e=1;e=0;
端口=0xC0;
e=1;e=0;

// 一直工作 伪代码
port=0x20;
e=1;e=0;
e=1;e=0;
端口=0x20;
e=1;e=0;
端口=0xC0;
e=1;e=0;

我的猜测是您在初始化序列中缺少必要的延迟。如果在您尝试发送命令时显示器正忙,则该命令将被忽略。如果当您开始您的程序时,显示器处于四位模式并且刚刚输入“0000”作为命令的前半部分,那么当您输入“0011”时,显示器将看到整个命令为“00000011” ,这将导致显示器忙碌长达 1.6 毫秒。

顺便说一句,如果可能的话,最好将低位数据线从显示器连接起来,这样当“0011”命令发送到显示器时,显示器看到的全部 8 位将形成模式设置命令这对于您使用的显示器类型是正确的。这将有助于在重置已在使用的显示器时避免任何显示故障(定期重置显示器是一个好主意,如果它可以无故障地完成,因为它将确保如果显示器以某种方式进入不良模式,它将修复本身)。

我找到了解决该问题的方法:

在初始化/配置 LCD 控制器之前,我在启动时添加了 1000 毫秒的延迟。它对我来说效果很好。

较低的延迟(100、200 毫秒)效果不佳。请注意:它只发生在 4 位数据总线中。

祝你好运!

在你的代码中插入一个延迟,这样当它打开时,它会给 LCD 足够长的时间来在它启动时进行初始化。最多几百毫秒。

您也可以尝试将 LCD 电源连接到微控制器并在启动后关闭 LCD 一秒钟。