使用数字发现模拟HD44780显示

HD44780兼容显示器用于各种设备。它们可以连接到系统,使用短至6个引脚并显示最多80个字母数字字符。最常见的版本使用2×16字符数组。可以使用诸如数字发现的逻辑分析仪调试显示操作。此演示模拟使用数字发现和运行Python脚本的计算机的实时操作。


库存

  • 一台有USB接口的电脑来运行该软件
  • Python 2.7软件使用Python 2.7解释器和Tkinter及其依赖项
    • 2×6 MTE线缆可用于硬件连接
  • 一个Arduino™
    • 在该示例中,将使用Arduino™Uno™兼容设备,但能够驱动HD44780兼容显示器的任何其他Arduino™板都适合
  • HD44780兼容2×16显示
    • 在演示中液晶将使用Arduino键盘屏蔽
  • Python源代码下载到电脑
  • Arduino素描代码下载到电脑

步骤1:硬件设置

1.请下载链接到的Arduino草图库存本指南的一部分。

2.打开草图并上传到Arduino Uno。草图将显示在串行端口上接收的一些短内容液晶.然后液晶应该连接到Arduino模块。所有连接都是标准的4位操作而不读取忙碌标志,并在示例Arduino草图中进行了描述。电路如下:

LCD RS引脚以数字引脚8 LCD启用引脚向数字引脚9 LCD D4引脚向数字引脚4 LCD D5引脚到数字引脚5 LCD D6引脚以数字引脚6 LCD D7引脚向数字引脚7背光控制到数字引脚10 LCD RCD控制/ W引脚接地10K电阻至+ 5V和地面擦拭器到LCD VO引脚(LCD引脚3)

3.如果使用不同的液晶模块然后应根据需要在上传和连接之前根据需要调整Arduino代码。通过关联任何所需的库初始化库液晶接口引脚与它所连接的Arduino引脚号。

Const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7, bl = 10;液晶显示器(rs, en, d4, d5, d6, d7);

4.重置设备后,显示屏上应显示“LCD测试”消息。如果需要,应调整对比度。以下是如何将数字发现连接到HD44780液晶

注意:在进行任何其他连接之前,应连接地面。

数字发现GND到LCD GND数字发现DIN0到LCD en Digital Discovery DIN1到LCD RS数字发现DIN2到LCD D4数字发现DIN3到LCD D5数字发现DIN4到LCD D6数字发现DIN5到LCD D7


步骤2:沟通

可以使用波形软件和逻辑分析仪器看到发送到HD44780兼容显示器的数据。在逻辑分析仪中,在EN信号的上升沿上添加一个时钟的总线。接下来,将RS信号作为单独的信号添加,并将触发模式设置为正常,在EN信号的上升沿触发。在设置此后,运行逻辑分析器并通过串行端口发送一个字母。这封信将出现在液晶和逻辑分析器。此时,您将能够看到传输的四个4位点,每个点位于EN线的上升边缘。小咬被“分组”成一个8位数字。RS线的状态决定这个8位数字是命令RS低还是数据RS高。命令0x01(“clear display”)发送之后是数据0x50,其中包含字母“P”美国信息交换标准代码


步骤3:基于Python的HD44780仿真

中链接的Python源文件库存本指南的一部分。

实时数据采集和分析可分为多个步骤。多线程解决方案是一个很好的选择。这个演示有四个线程:

  1. GUI线程或主线初始化设备并负责GUI操作。
  2. 获取线程收集实时数据表单数字发现,并将数据放入队列中。
  3. 原始数据处理线程从队列中读取数据。仅在EN的上升边缘进行锁定,并将数据放入另一个队列。
  4. 数据处理线程从第二个队列中读取锁存的数据,并模拟HD44780显示器的行为。

数据处理算法有一定的局限性:

  • 未实现原始控制器使用的完整完成状态机。使用简化的初始化过程。命令模式到数据模式转换,它是RS线上的上升沿用于确定何时液晶初始化。这用于设置4位模式以及其他参数的设置。
  • 一些命令实现,例如清除屏幕并设置设置光标位置的DDRAM地址。
  • 脚本未针对性能进行优化。

关于如何在脚本中以注释的形式呈现仿真函数的所有细节。


步骤4:运行示例

要测试该示例,请运行Python脚本。如果原始缓冲区或数据缓冲区填充非常快,采样率应该降低。请注意,过低的采样率可能无法捕捉到所有的EN脉冲,根据规范,EN脉冲可能短至450纳斯。

采样率=系统频率/分频器,100 MHz / 400 = 0.25 MHz dwf。FDwfDigitalInDividerSet (hdwf c_int (400))

建立与Arduino的串行连接。如果已经建立了连接,您可能需要重置Arduino。

“Int”指示器显示脚本是否检测到初始化。值为“2”表示初始化成功完成,值为“0”或“1”表示进程未完成。如果启动时显示器已经初始化,脚本用户可以设置SI或重置CI初始化标志。“Nib”指示器表示是否接收到偶数次咬。偶数用“0”表示,奇数用“1”表示。如果产生错误,用户还可以使用CN和SN按钮手动调整该标志。通过串口将一些数据发送到Arduino,数据显示在液晶以及Python脚本创建的用户界面。


下一个步骤

该示例演示了兼容hd44780的16×2显示器的一个简单模拟器。可以对软件进行进一步的开发。例如,实现初始化过程的完全兼容,检测显示电源周期和自动复位。数字发现能够将数字数据输入计算机,定制软件可以用于非标准分析和调试。

要获得更多关于如何使用Digital Discovery的指导,请回到设备上资源中心

有关波形的更多信息,请访问波形参考手册

有关技术支持,请访问测试和测量Digilent论坛的一部分。