世俱杯 2025

使用 Shift Register 的 3 线串行 LCD

出处:维库电子市场网 发布于:2025-02-25 17:41:24 | 657 次阅读

  基于 HD44780 字符 LCD 需要至少 6 个 I/O 线来显示数据。因此,它们不适用于 PIC12F 系列微芯片等低引脚微控制器。在本项目中,我将展示如何仅使用微控制器的 3 个引脚驱动基于 HD44780 的 LCD 显示器。我将用PIC12F683微芯片进行演示。来自微控制器的字符数据和命令串行传输到移位寄存器 (74HC595),而移位寄存器的并行输出被馈送到 LCD 引脚。
  关于 74HC595  74HC595 是一款高速 8 位串行输入、串行或并行输出移位寄存器,带有存储寄存器和 3 态输出。


  shift register 和 storage registers 分别具有单独的 clocks, SH_CP 和 ST_CP 。移位寄存器中的数据在 SH_CP 的正向转换中移位,移位寄存器的内容将在 ST_CP 的正向转换中传输到存储寄存器。如果我们将两个 clocks捆绑在一起,则 shift register 将始终比 storage register领先一个 clock 。当输出使能 (OE) 为低电平时,存储寄存器的 8 位数据将出现在并行输出 (Q0-Q7) 上。
  在这个项目中,SH_CP 和 ST_CP 是捆绑在一起的。因此,如果我们想在 Q0-Q7 接收串行传输的 8 位到 parallel 形式,那么在发送第 8 位串行数据后需要一个额外的 clock pulse,因为 clocks 是绑定的,并且 storage register 比 shift register 晚 1 clock 。
  基于 HD44780 字符 LCD  所有基于 HD44780 字符 LCD 显示器都使用 14 根线连接:8 根 (D0-D7)、3 根控制线(RS、E、R/W)和 3 根(Vdd、Vss、Vee)。某些 LCD 可能具有 背光,因此它们可能具有其他连接(通常两个:LED+ 和 LED-)。

  Pinout_2  提供单个 LCD 引脚的详细说明不属于本项目的范围。如果你是 LCD 的初学者,我建议先阅读 Everyday Practical Electronics 杂志的这两篇文章:如何使用智能 LCD

    第 1 部分:电路图

  这个项目的硬件部分相当简单。具有挑战性的部分是编写驱动程序软件,该软件负责将字符数据和命令串行传输到 74HC595 串行输入并行输出移位寄存器所需的适当作序列。然后将移位寄存器并行输出连接到 LCD 数据线 (D4-D7) 和 RS 控制引脚。这种安排需要微控制器的 3 个引脚在并行 LCD 显示器上显示字符数据:2 个引脚用于为 74HC595 提供时钟和数据,1 个引脚用于 LCD 模块的启用控制 (E) 引脚。由于数据传输使用 4 位模式,因此任何 8 位命令或字符数据都分两步发送:先发送较高的半字节,然后发送较低的半字节。R/W 控制引脚接地,因此在这种情况下无法从 LCD 模块读取数据或状态。

  Schematic_1  75HC595 的 SH_CP (11) 和 ST_CP (12) 时钟输入连接在一起,将由一个微控制器引脚驱动。来自微控制器的串行数据通过 DS (14) 引脚馈送到移位寄存器。OE (13) 引脚接地,复位引脚 MR (10) 被拉高。74HC595 的并行输出 Q0-Q3 连接到 LCD 模块的 D4-D7 引脚。同样,Q4 输出用于 RS 控制引脚。如果 LCD 模块带有内置背光 LED,则只需通过上图所示的 LED 控制引脚即可打开或关闭它。将 LED 引脚拉至逻辑高电平将打开背光。

  焊接在通用原型板上的电路

  软件
  首先,馈送到 74HC595的 DS pin 的一点数据在 2 个 clocks 后出现在 Q0 输出处(因为 SH_CP 和 ST_CP 是绑定的)。因此,发送 4 位数据 (D4-D7) 和 RS 信号需要 6 个时钟脉冲,直到它们分别出现在 Q0-Q4 输出端。当 LCD 模块打开时,它会以 8 位模式初始化。应发送许多初始化命令以在 4 位模式下作 LCD 模块。这里讨论的所有驱动程序例程都是用 mikroC 编译器编写的。它们仅适用于 16×2 LCD 模块。用户可以修改 Initialize_LCD() 例程中的初始化作,以考虑其他 LCD 配置。驱动程序例程及其功能如下所述。
  Initialize_LCD() :它初始化 LCD 模块以 4 位模式运行,2 行显示,5×7 大小字符,显示开启,无光标。Write_LCD_Data() :发送要在当前光标位置显示的字符字节。Write_LCD_Cmd() :将命令字节写入 LCD 模块。Write_LCD_Nibble() :数据或命令字节以两个半字节的形式发送到 LCD 模块。所以这个 function routine 负责将 nibble 数据发送到 LCD module。Write_LCD_Text() :此例程用于发送要在当前光标位置显示的字符串。Position_LCD() :更改当前光标位置在程序开始时,您需要定义所选微控制器端口的 Data_Pin、Clk_Pin 和 Enable_Pin。我将在这里演示如何使用这些驱动程序例程在不同位置显示两个闪烁的字符串,即 Message1 和 Message2。我将使用 PIC12F683 微控制器测试我们的串行 LCD 模块。测试电路如下所示。
  注意:我的 PIC12F683 设置
  以 4 MHz 内部时钟运行,MCLR 禁用,WDT 关闭。
  lock、Data 和 Enable 线路通过 GP1、GP5 和 GP2 端口提供服务。
  Schematic_2

0次

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//tgdrjb.cn,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
  一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30 

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!