【问题标题】:4-bit LCD with C code带有 C 代码的 4 位 LCD
【发布时间】:2012-08-14 11:50:15
【问题描述】:

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

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

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

我正在重置它,它打印出一些奇怪的东西,第二次重置后它什么也没打印,第三次重置后它再次正确打印。第 4 次重置它再次打印一些奇怪的东西,第 5 次没有打印,第 6 次再次正确打印......并像这样继续。 因此,我现在确定问题出在这些分割字节上。

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

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

更新:

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

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

【问题讨论】:

  • 看看我是如何接近 4 位模式的(虽然不同的处理器 - 我是 AVR 人):github.com/H2CO3/libavrutil/blob/master/src/lcd.c
  • @tuğrulbüyükışık 我添加了我的代码。 @h2co3 当你移除部件时会发生什么变化:/* Set 8-bit mode 3 times (!) */,你有没有试过或者你可以帮我试试吗?我会尝试实现类似的。

标签: c microcontroller microprocessors lcd


【解决方案1】:

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

【讨论】:

  • 您现在是否在 4 位模式下正确初始化 LCD?
  • 是的,现在完全好了!
【解决方案2】:

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

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

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

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

【讨论】:

  • 这正是我的想法。我有数据表,我搜索关键字“reset”和“start”等,但甚至没有匹配项。而且我意识到即使有它的命令,它也不会工作,因为同样的原因:LCD 会将它分成两个。现在我在想我们需要对它进行一些hack
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2014-01-25
相关资源
最近更新 更多