我正在使用 Winstar Display LCD (WH2004A-YYK-CP) 和 STM32 处理器,代码是用 C 编写的。我需要以 4 位模式运行它。我运行它并写下我想要的。
如您所知,4 位模式发送 8 位数据为 2 倍 4 位。问题是,当我在 2 个半字节之间重置时,它会打印出奇怪的字符,无论我重置多少,它都无法正常工作。我想出的唯一解决方案是重置它几次。
为了弄清楚发生了什么,我在 2 个半字节(每个 4 位)之间添加了 2 秒延迟,并打印了一个长句子。因此,每当我重置它时,处理器都会等待发送第二个半字节。
我正在重置它,它打印出一些奇怪的东西,第二次重置后它什么也没打印,第三次重置后它再次正确打印。第 4 次重置它再次打印一些奇怪的东西,第 5 次没有打印,第 6 次再次正确打印......并像这样继续。因此,我现在确定问题出在这些分割字节上。
类似的代码在 8 位模式下工作得很好。
我要问的是:我如何确定“当我重置 STM32 处理器时,LCD 不会等待在前一个会话中发送第一个半字节的某些数据的第二个半字节。” 通过使用 C 代码?
更新:
我也在这里发送我的代码:http: //pastebin.com/kHQQEqjx
LCD 命令也在这里:http: //imgur.com/mfDlj