我正在使用Winstar Display LCD(WH2004A-YYK-CP)和STM32处理器,并且代码以C编写。我需要以4位模式运行它。我运行它并写下了我想要的。

如您所知,4位模式发送8位数据是4位的2倍。问题是,当我在2个半字节之间进行重置时,它会打印出奇怪的字符,并且无论我进行了多少重置,它都无法正常工作。我提出的唯一解决方案是将其重置几次。

为了弄清楚到底发生了什么,我在2个半字节(每个4位)之间增加了2秒的延迟,并打印了一个长句子。因此,每当我重置它时,处理器就会等待发送第二个半字节。

我正在重置它,它打印出一些奇怪的东西,第二次重置后它什么都不打印,而在第三次重置后它又正确地打印了。然后第4次重设它再次打印出奇怪的东西,第5次重设则什么也不打印,第6次重又正确打印...,然后像这样继续。
因此,我现在确定问题是这些分割的字节。

类似的代码在8位模式下也可以正常工作。

我要问的是在这里:
如何确定“当我重置STM32处理器时,LCD不会等待第二个半字节在前一个 session 中发送的某些数据。”通过使用C代码?

更新:

我也在这里发送我的代码:http://pastebin.com/kHQQEqjx

LCD命令也在这里:http://imgur.com/mfDlj

最佳答案

以下流程图详细说明了以4位模式初始化该LCD Controller 所需的所有步骤。

08-27 20:02