2

我正在使用 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

4

2 回答 2

15

这是详细说明在 4 位模式下初始化 LCD 控制器所需的所有步骤的流程图。

在此处输入图像描述

于 2012-08-30T22:03:18.007 回答
1

通常,会有一种重置 LCD 设备的方法,您可以在处理器启动过程中执行此操作。

这样,处理器的复位也会使 LCD 处于已知状态。

您需要掌握数据表(或其他编程规范)并了解它是如何完成的。几乎可以肯定有一种方法可以让 LCD 恢复到已知的初始状态。

否则,您可能需要将复位开关连接到处理器LCD 控制器。

于 2012-08-14T11:57:19.197 回答