我正在使用Winstar Display LCD(WH2004A-YYK-CP)和STM32处理器,代码用C语言编写。我需要以4位模式运行它。我运行它并写下我想要的东西。
如您所知,4位模式将8位数据发送为2位4位。问题是,当我在2个半字节之间重置时,它会输出奇怪的字符,无论我重置多少,它都无法正常工作。我提出的唯一解决方案是重置几次。
为了弄清楚发生了什么,我在2个半字节(每个4位)之间加了2秒延迟,并打印一个长句。因此每当我重置它时,处理器等待发送第二个半字节。
我正在重置它,它打印出一些奇怪的东西,在第二次重置后它什么都没打印,在第三次重置后它再次正确打印。第四次重置它再次打印出一些奇怪的东西,第五次打印没有任何东西,第六次再次正确打印......并继续这样下去。 因此,我现在确定问题是这些划分的字节。
类似的代码在8位模式下运行得非常好。
我要问的是: 我怎么能确定“当我重置STM32处理器时,LCD没有等待在前一个会话中发送第一个半字节的某些数据的第二个半字节。”使用C代码?
更新
我也在这里发送我的代码:http://pastebin.com/kHQQEqjx
LCD命令也在这里:http://imgur.com/mfDlj
答案 0 :(得分:15)
以下是详细说明以4位模式初始化该LCD控制器所需的所有步骤的流程图。
答案 1 :(得分:1)
通常情况下,会有一种重置LCD设备的方法,您可以在处理器启动时执行此操作。
这样,处理器的复位也会使LCD处于已知状态。
您需要掌握数据表(或其他编程规范),看看它是如何完成的。几乎可以肯定有一种方法可以让LCD恢复到已知的初始状态。
否则,您可能需要将复位开关连接到处理器和 LCD控制器。