1.45k likes | 1.74k Views
第 6 章 液晶显示模块的应用. 6.1 液晶应用一览 6.2 笔段型液晶显示模块的应用 6.3 字符点阵型液晶显示模块的应用 6.4 内置控制器型图形点阵型液晶显示模块的应用 6.5 液晶显示器件故障的简易查询及排除方法. 6.1 液晶应用一览 6.1.1 液晶应用之树. 液晶的应用大体简化为四大类: 显示、光学、传感和其他类. 液晶应用分类. 6.1.2 液晶在显示技术上的应用.
E N D
第6章 液晶显示模块的应用 • 6.1 液晶应用一览 • 6.2 笔段型液晶显示模块的应用 • 6.3 字符点阵型液晶显示模块的应用 • 6.4 内置控制器型图形点阵型液晶显示模块的应用 • 6.5 液晶显示器件故障的简易查询及排除方法
6.1 液晶应用一览6.1.1 液晶应用之树 液晶的应用大体简化为四大类: 显示、光学、传感和其他类
6.1.2 液晶在显示技术上的应用 • 液晶显示器件是液晶应用的主体,发展很快。我们知道,液晶显示器件显示的图像并不醒目,视角又小,有很强的温度特性,显示质量也不算高,但为什么有那么大的魅力呢?这是和液晶显示器件的综合优点分不开的。液晶显示器件具有以下几大特点: • ①低压工作、微功耗。 • ②与集成电路匹配性能好,配套驱动简单、直接。 • ③平板型、装配体积小。 • ④被动显示、不怕光冲刷。 • ⑤彩色化容易,效果逼真。 • ⑥显示面积可大可小。 • ⑦设计、改型容易。 • ⑧易于大批量生产。 • ⑨工艺不断更新、成本还会降低。 这些特点,使液晶显示器件综合性能比其他显示器件都具有更大优势。随着液晶显示器件本身技术的成熟,产品的更新换代,一些原有的缺陷被不断克服,使得其应用领域还会进一步扩大。
6.1.3 液晶在光学器件方面的应用 • 由于液晶具有受外场引起的分子排列变化可以调制外界光的基本特性,使液晶可以加工成各式各样的电控光学器件。其实显示器件也可以广义地被看作各类液晶光阀制作的光学器件。 • 但是与显示器件不同的是,作为光学器件我们更关心的是液晶因电压作用而引起的折射率、双折射特性的变化,双折射波长色散特性等等。 这一方面的应用主要有: • 液晶电子光阀、液晶调光器件、光调制器及相位衍射光栅和光路切换和光束偏转器等。
6.1.4 液晶在计量和传感方面的应用 • 液晶分子排列极容易受外场,如电、热、磁,压力等的影响,一旦受外场作用,分子排列发生变化将随之引起光学特性以及其他参数的改变。利用这一特性可以在检测、测量和传感技术方面得到广泛的应用。 • 向列相液晶在传感和检测方面的应用主要有:无损检测集成电路、高灵敏度温度传感器、加速度传感器、物体位置测定、超声波检测和电压测量等。 • 胆甾液晶在传感和检测方面的应用主要是利用胆甾液晶在外场作用下螺距变化而呈现的干涉光颜色。其应用主要有:示温变色温度计、非破坏性试验的检测探查、流速检测、压敏元件、场测量、多种临床医疗用检查膜、装饰用品、印刷和防伪商标等。
6.1.5 液晶聚合物的应用 • 有一类聚合物在溶融时,由于分子具有液晶的各向异性而呈液晶态,我们称之为热致变液晶聚合物,简称LCP。这类物质既有液晶光学异性又有聚合物的易于加工良好的成膜性和成型性,有更加广泛的应用价值。 • 1 侧链型液晶聚合物的应用 • 侧链型液晶聚合物主要用于制作各种新型功能性材料,如记忆、记录元件、光调制器件、光学元件、偏振片等。 • 另一类是所谓直链型和复合型液晶聚合物。它主要是用于制作一些高性能材料,如高强度、高弹性、耐高温,耐老化等特殊材料。 • 2 胆甾液晶聚合物的应用 • 胆甾液晶聚合物是由胆甾液晶与高分子聚合物聚合、固化而成。其中以侧链液晶聚合物为重点,通常是致晶功能团直接或间接与聚合物骨架连接。常见骨架以聚丙烯酸盐和聚丙烯酸脂为主。 • 由于它是由胆甾液晶与聚合物聚合而成,保留了胆甾液晶的所有光学特性,好象将这些特性“凝固”在聚合物中一样,而且,一般不随温度等外界条件而改变。 • 适当的改变聚合物中手性液晶浓度,改变聚合温度,以及注入不同的添加剂,将可以方便地调节胆甾液晶聚合物的光学特性。因此,这种胆甾液晶聚合物具有广泛的应用前景。其中,在光学信息存储、强激光技术及显示上都有极重要的应用。
6.2 笔段型液晶显示模块的应用6.2.1 笔段型液晶显示模块简介 • 笔段型液晶显示模块是指以长条状显示像素组成一位显示类型的液晶显示模块,简称段型液晶显示模块。 • 专业的液晶显示模块归于此类,如空调上,游戏机上用液晶显示模块等。 • 段型显示模块主要用于数字显示,或围绕数字显示。在形状上总是围绕数字“8”的结构变化。在显示数字的基础上,也可以显示西文字母、某些专用符号或固定图形,还可以将一个汉字或一个汉字组作为一段显示。 • 从显示形状上分类,段型显示可分为六段显示,七段显示,八段显示,九段显示,十四段显示和十六段显示等。其中以七段显示最为常用,被广泛应用于各种数字仪表、计时器、计数器等。段型显示还包含了为专业显示而设计的固定图形和字符。 • 从段型液晶显示模块的驱动方式上分类,可分成静态驱动和动态驱动两种。由于段型动态液晶显示模块寻址路数一般不超过4路,所以对段型液晶显示模块而言,动态驱动通常被称为是多路寻址驱动法。一个段型液晶显示模块的驱动方式主要取决于该模块各显示像素外引线的引出与排布方式。 • 静态液晶显示模块引线排布与结构如本书第三部分第一篇(上)驱动知识篇中第二节图5-1所示。
多路寻址驱动的液晶显示模块引线排布和结构示例多路寻址驱动的液晶显示模块引线排布和结构示例 (a)4×2驱动 (b)3×3驱动 (c)3×3驱动 (d)2×4驱动 由于引线电极排布不同,故其驱动方式也就不同。所以在使用液晶显示器件时首先要弄清楚这点。不同的电极排布要配不同的驱动器,使用不同的控制方法。 静态驱动方法的应用电路/多路寻址驱动方法的应用电路
6.2.2 静态驱动法及其应用电路 • 举例:集成电路HEF4543的应用电路 • HEF4543是一位BCD——七段译码带数据锁存功能的驱动器,它可以驱动发光二极管的七段数码管,也可以驱动七段液晶显示器件。 当锁存端LD=1时,锁存器输出随数据输入端DCBA的变化而变化,当LD=0时,锁存器保存最近数据,并禁止锁存器接受数据。HEF4543还设置了显示开关信号BI。当BI=1时关闭显示。PH为驱动相位控制端,它连接驱动器中异或门的输入端,控制着驱动器输出的相位。 HEF4543原理框图 HEF4543的真值表和译码表 HEF4543只有背电极BP的同步信号输入端PH,为了实现静态驱动波形,PH需要外部振荡电路提供脉冲信号,液晶显示器件背电极BP所需的驱动脉冲序列也由此电路提供。
HEF4543驱动4位液晶显示器件的驱动电路 通常使用的液晶显示器件都是多位数字显示结构,比如4位液晶显示器件。这就需要多片HEF4543组成驱动器组 从图中可以看出: 555集成电路组成了振荡器,振荡频率在(32~200)Hz范围内调整。振荡器的输出经D触发器整形后产生出占空比为50%的脉冲序列。这个脉冲序列提供给HEF4543的PH和液晶显示器件的背电极BP,从而形成完整的静态液晶显示驱动系统。 由于HEF4543数据输入接口处具有数据锁存器,并有锁存信号LD控制,所以HEF4543可以直接挂在计算机的总线上,LD信号可以看成是显示数据的写入信号由地址线和写操作信号合成产生。
6.2.3 多路寻址液晶显示器件驱动应用电路 • 以下将介绍几种段型液晶显示器件的多路驱动器。这种IC电路的特点是驱动路数不大于4路。 • 1 动态段型液晶显示驱动控制器PCF8576C • PCF8576C是具有I2C总线接口的液晶显示驱动控制器 • PCF8576C为40路段驱动输出,最大能驱动40×4路共160段液晶显示器件。 • 可以级联以适应驱动较大规模的LCD 显示器。 • 不仅可以通过I2C总线接口与具有I2C总线接口的MCU 相连,也可以通过I2C 总线的模拟,与MCU 的通用I/O 口相连。其内部设置的显示RAM 以及子地址的自动增量和显示方式自动切换使其通讯控制量减少到最小。
1)引脚分布 • 液晶显示驱动控制器的应用原理(以PCF8576C为例) • 引脚定义: • SDA I2C总线数据输入/输出 • SCL I2C总线时钟输入/输出 • /SYNC 级联同步输入/输出 • CLK 外部时钟输入/输出 • VDD 电源正端 • OSC 振荡器输入 • A0、A1、A2 I2C总线器件的引脚地址端 • SA0 I2C总线从地址位0输入 • VSS 逻辑地 • VLCD LCD电源电压 • BP0~BP3 LCD背极输出(即COM输出) • S0~S39 LCD段输出(即SEG输出) PCF8576 的引脚分布
2)PCF8576的电路结构3)驱动能力 • 从PCF8576的原理图可知,PCF8576C具有4路背电极输出BP0~BP3,它们直接与LCD 相连,驱动方式可在静态、2路、3路或4路驱动之中选一。如果少于4 个背极输出时,不使用的背极可空出。 • 在三路驱动方式中,BP3与BP1的输出信号相同;在二路驱动方式中,BP0 和BP2、BP1和BP3 输出信号相同;在静态驱动方式中所有4个背极输出相同的信号。对于输出信号相同的背极可以并联起来,以增加LCD 的驱动能力。 • PCF8576C有40路段驱动输出S0~S39。它们应与LCD 直接相连。段输出信号是根据背极输出及显示锁存器中锁存的数据生成的。当少于40 段输出时,不用的段输出可空。 • PCF8576C最大可以驱动40×4段液晶显示器件。 • 显示偏压由液晶显示电压选择器提供,电压由VDD和VLCD提供,偏压方式由偏压发生器产生,可以生成静态、1/2偏压和1/3偏压三种。 PCF8576 的电路结构原理
4)PCF8576的显示存储器 • PCF8576的显示数据是通过输出单元选择器从显示存储器中取出,串行地移入移位寄存器内;移位寄存器将显示数据并行输出锁存入锁存器;再由锁存器输出给显示段驱动器。 • PCF8576C具有40×4位的显示存储器。它用于存储显示数据。存储单元与液晶显示段有着对应的关系。显示数据为“1”相当于液晶显示段为显示状态;显示数据为“0”相当于液晶显示段为不显示状态。显示存储器实为双端口存储器。 显示存储器的结构
显示数据写入BP0行的格式 • 显示数据的驱动输出由输出单元选择器选择同一背电极的显示位传送给显示数据移位寄存器内,然后锁存人数据锁存器内。输入单元选择器根据所设置的驱动方式将接收的显示数据写入显示存储器内。数据写入的顺序是一字节的最高位D7在先,最后为最低位D0。每写入一个字节的数据后,地址指针将按照所选的驱动方式的地址增值自动修正,以指定下一个字节数据的存储器单元。 • 在静态驱动方式下,仅有背电极BP0使用,显示数据仅可以传送给BP0行或BP2行的各位,地址指针增值为8。 静态驱动方式数据写入顺序
二路驱动方式数据写入顺序 • 在二路驱动方式下,背电极BP0、BPl使用,显示数据以先BP0后BPl的次序传送给BP0和BPl行的各位,或者以先BP2后BP3的次序传送给BP2和BP3行的各位,地址指针增值为4,图6-9给出显示数据写入BP0,BP1行的格式。 二路驱动方式数据写入顺序
三路驱动方式数据写入顺序 • 在三路驱动方式下,背电极BP0、BPl、BP2被使用,显示数据以先BP0,再BPl,后BP2的次序传送给BP0,BPl和BP2各行,地址指针增值为3,如图6-13所示。此时要注意的是8位数据的传输给BP2的第三位制造出一位的死位,这一位在下一字节传送时是不会补充的,所以在使用时要考虑段电极结构的设计和段电极驱动引线的连接。 三路驱动方式数据写入顺序
四路驱动方式数据写入顺序 • 在四路驱动方式下,背电极BP0~BP3都使用,显示数据依次BP0至BP3传送,地址指针增值为2,如图所示。 四路驱动方式数据写入顺序
5)PCF8576的时序 • PCF8576C内部具有振荡器和定时器,用以产生PCF8576C的工作时钟和显示脉冲序列。 • 振荡器由OSC端状态控制。在定时器上有两个输入/输出端,它们是时钟输入/输出端CLK和级联同步输入/输出端/SYNC,它们用在PCF8576C的级联上。当使用内部振荡器工作时,OSC端对地(Vss)端跨接一个电阻ROSC。CLK和/SYNC作为输出提供其他芯片的工作时钟和同步信号;当使用外部时钟时,将OSC接VDD停止内部振荡器的工作,接收从CLK输入的时钟信号。 • PCF8576C的时钟频率fCLK约为34M/Rosc(Hz 。为了允许I2C总线在最大传输速率100kHz工作,fCLK应大于125kHz。 • PCF8576C有正常运行方式和节电运行方式两种。在节电运行方式下时钟频率比正常运行方式要减至1/6。在这两种方式下要保持液晶显示驱动帧频64Hz不变,振荡器的电阻Rosc的取值为180kΩ和1.2MΩ。
6)PCF8576的接口 • PCF8576C的I2C总线接口由输入滤波器、I2C总线控制器和子地址计数器组成。输入滤波器为I2C总线接口的连接部,它有两个输入/输出端:SDA为总线数据输入/输出端,SCL为总线时钟输入/输出端,它们作为数据的传输接口类同串行接口。 • I2C总线控制器有一端SA0作为PCF8576C的总线从地址最低位的设置端。PCF8576C在I2C总线上的从地址被指定为011100A(7位),A=SA0,或为“1”,或为“0”,也就是说在I2C总线上给PCF8576C提供了两个从地址。 • 在子地址计数器中有三个输入端A0、A1、A2。这是PCF8576C作为级联使用时的子地址的设置端。这样在I2C总线上一个从地址上可以挂8个PCF8576C,一共可以使用16个PCF8576C。
7)PCF8576的级联工作 • 在大规模的LCD显示结构中,通过3位(A2、A1、A0)子地址和已编程的I2C总线从地址(SA0),I2C总线能识别16个PCF8576。因此PCF8576最多可级联16个。 • 当级联时,各个PCF8576是同步的,因此,级联中的PCF8576可从一个器件分享背极信号。这种布局对于大规模的LCD驱动控制是十分方便的,因为只需要一个器件输出背极驱动,级联中其他的PCF8576只分配其余的段驱动输出而断开其背极驱动,即用多个PCF8576实现显示段的扩展。 • 同步信号线/SYNC将保证所有级联的PCF8576间正确的同步。实际上在上电复位后就实现了同步,但是由于偶然因素(如噪声环境的破坏作用)失去同步时,需要通过/SYNC同步。/SYNC是输入输出引脚,其输出为带有内部上拉电阻的开漏驱动结构。一个PCF8576保证/SYNC线在有效背极信号最后开始并在所有的其他时间内监视SYNC线。当级联中的PCF8576 失去同步,将通过第一个PCF8576维持的SYNC 复原。
8)PCF8576的指令集 • PCF8576C具有五条简单的控制指令,每条指令的最高位C确定了下一传输的数据性质。C=1表示下一字节为指令代码,C=0表示下一字节为显示数据。 • ●方式选择指令(MODE SET) • 方式选择指令格式如下: M1、M0 驱动方式选择: B液晶驱动偏置电压选择: 0 1/3偏压 1 1/2偏压 E 显示状态控制: 0 显示禁止(暗) 1 显示允许 LP 工作方式选择: 0 正常工作方式 1 节电工作方式
●数据指示器装载指令(LOAD DATA POINTER) • 数据指示器装载指令格式如下: P5~P0取值在0~39(0~27H)范围内。 该数值写入地址指针内,用以确定显示存储器内40个单元之一。在读写显示数据操作后,地址指针将根据驱动方式自动修改。当地址指针修改已满,则自动修改子地址值,使下一显示数据写入级联的下一级的PCF8576C中。
●器件选择指令(DEVICE SELECT) • PCF8576多片使用时,器件选择指令用来选择0111000或0111001从地址中的8 个PCF8576地址,其格式如下: A2、A1、A0为三位二进制值(0~7),该三位(A2、A1、A0)立即数传送给子地址计数器以确认8个硬件子地址。每个从地址下级联的8片PCF8576C的识别是通过对各片子地址计数器的地址设置端A0~A2电平状态的判别来实现。该指令通过写入所需PCF8576C的子地址值与各片PCF8576C的子地址计数器的A2~A0的状态比较,相等值的PCF8576C即开始接收计算机下面发送的指令或数据。当单片使用时将A0~A2端电平置“0”,不需要使用这条指令。
●存贮体选择指令(BANK SELECT) • 存贮体选择指令用于选择输入存贮体和输出存贮体,在三路和四路驱动方式中该指令无效。指令格式如下: O 输出存贮体选择(LCD 显示数据的检索): 静态驱动方式下BP0为背电极驱动输出 0 显示区0 BP0行位 1 显示区l BP2行位 二路驱动方式下BP0、BPl为背电极驱动输出 0 显示区0 BP0、BPl行位 1 显示区l BP2、BP3行位 I 输入存贮体选择接收到的显示数据存放: 静态驱动方式下BP0为背电极驱动输出 0 显示区0 BP0行位 1 显示区1 BP2行位 二路驱动方式下BP0、BPl为背电极驱动输出 0 显示区0 BP0、BPl行位 1 显示区1 BP2、BP3行位 PCF8576C在静态驱动方式和二路驱动方式下可以将显示存储器分成两个显示区,显示数据的写入与显示都可以指定显示区,这与写入操作无关,也与显示扫描驱动无关,也就是说,当写数据时,数据写到何区仅与该指令的设置有关,至于何区的显示数据输出,也仅与该指令的设置有关,而背电极的驱动端不变。 该指令的意义在于可以制造出两个显示区用于选择显示或交替闪烁显示。
●闪烁选择指令(BLINK) • 闪烁选择指令用以选择闪烁频率及闪烁方式,指令格式如下: BF1、BF0 用以选择闪烁频率: BF1 BF0 0 0 不闪烁 0 1 2Hz频率闪烁 1 0 1Hz频率闪烁 1 1 0.5Hz频率闪烁 A 用以选择闪烁方式: 0 正常闪烁 1 交替闪烁,由显示RAM 体交替闪烁,在三路和四路驱动方式中不会出现。 显示控制器执行由指令译码器所识别的指令,它包括PCF8576 的状态寄存器并协调它们的作用。如有需要,显示控制器也能可靠地将显示数据按填充规则装载到显示RAM 中。
9)PCF8576与计算机的连接 • PCF8576C在与具有I2C总线的计算机连接时操作是非常容易的。但与不具备I2C总线控制的计算机而言就需要使用软件实现I2C总线的规范。 • 目前使用的比较广泛的51系列单片机一般不具有I2C总线,为了更好的说明PCF8576C的应用,首先将I2C总线的传输时序及有关规范简单地叙述下,如图所示。 I2C总线的数据传输格式
时序解释 • 起始信号S:是在SCL线是高电平时,SDA线从高电平向低电平切换,如图6-11所示。 • 数据传输:计算机以一字节为单位传输,最高位在先。 • 应答信号:在一字节数据传输完成后,计算机释放数据线SDA在SCL发送一个脉冲,从SDA线上读取电平信号。信号为“0”表示接收器已接收到所传输的数据,信号为“1”表示接收器正忙无法传输数据。 • 终止信号P:当SCL 是高电平时,SDA 线由低电平向高电平切换,如图6-12所示。 图6-11 I2C总线的起始信号S 图6-12 I2C总线的停止信号P I2C总线的传输频率为100kHz。 需要注意的是,I2C总线要求在数据线和时钟线上必须接上拉电阻。
10)上电复位 • 上电后,PCF8576复位到以下状态 • ● 所有背极及段输出为VDD • ● 选择1/3偏压四路驱动方式 • ● 闪烁开关断开 • ● 输入、输出存贮单元选择器为复位状态 • ● I2C总线接为初始化状态 • ● 数据指针和子地址控制器被清除 • 在PCF8576上电后的1ms期间内应避免进行I2C总线的数据传送,以完成复位过程。
11)PCF8576的使用 • 从上图中可以看出: • AT89C51的通用并行口P1.0和P1.1与PCF8576的I2C总线相连,P1.0连接SDA,P1.1连接SCL,同时按照I2C总线的规范设置上拉电阻。因为AT89C51不支持I2C总线,所以编写显示驱动程序的时候必须在时序上满足I2C总线的传输格式。 • 在OSC端上接180kΩ的振荡电阻。 • 在VLCD端接一个电位器用以调节液晶显示的对比度。 • A2、A1、A0与SA0直接接地,此应用中PCF8576的从地址为70H(0x70),器件的地址为A2A1A0=000。 PCF8576的典型应用
驱动显示 • 该典型应用中使用的液晶显示器件为四路驱动,使用了所有的段电极,可以实现160段的显示。即至少可以驱动显示20个7段数字字符,如图(a)所示。其电极连接、显示RAM装填顺序与发送的显示字节如图(b)所示。 图(a) 图(b) 根据上图所示,可以得到0~9这十个数的显示字模数据如表所示
12)显示驱动程序 • 当AT89C51接的晶振为12MHz时,指令周期为1μs。显示驱动程序要实现100kHz的传输速率。本显示驱动程序主要完成的功能就是如上图所示的20位数字的液晶显示模块从0~9的循环显示。谨供读者参考,读者可以自行修改源代码来实现更多的功能。
SDA EQU P1.0 • SCL EQU P1.1 • COUNT EQU 40h • ORG 0000h • LCALL Delay1ms • PCF8576SET: • LCALL START ;启动I2C总线 • MOV A,#70h ;送器件从地址0111 000 • ;写操作信号为0 • LCALL SentByte • MOV A,#0C8h ;工作方式选择 • ;四路驱动,1/3偏压,正常工作,开显示,下一数据为指令 • LCALL SentByte • MOV A,#0E0h ;器件选择 • LCALL SentByte • MOV A,#0F0h ;闪烁方式选择 • LCALL SentByte • LCALL STOP ;关闭I2C总线 • PCF8576Disp: • MOV DPTR,#TAB ;送字模表首址 • MOV B,#10 ;0~9,10个数 • LCALL START ;启动I2C总线
Disp1: • MOV A,#00h ;写入地址指针设置指令 • ;将地址指针设在00H上,下一数据为显示数据 • LCALL SentByte • MOV R4,#20 • Disp2: • MOV A,#00h • MOVC A,@A+DPTR • LCALL SentByte • DJNZ R4,Disp2 ;每个数字送20次 • LCALL STOP ;关闭I2C总线 • LCALL Delay200ms • LCALL Delay200ms • INC DPTR • DJNZ B,Disp1 • AJMP PCF8576Disp • SentByte: • MOV COUNT,#08H ;要传送的数据长度为8位 • SentB: • RLC A ;要发送的数据左移,发送位入C • JC Sent1 ;C为“1”,跳到发送“1”的子程序 • CLR SDA ;C为“0”,发送“0” • SJMP Sent • Sent1: • SETB SDA • NOP
Sent: • NOP • SETB SCL ;置时钟线为高通知被控器开始接收数据位 • NOP ;保证时钟高周期大于4us • NOP • NOP • NOP • NOP • CLR SCL ;钳住总线准备接收下一个数据位 • DJNZ COUNT,SentB ;8位没发送完继续发送 • NOP • SETB SDA ;8位发送完后释放数据线准备收应答位 • NOP • AckEnd: • SETB SCL ;开始接收应答信号 • NOP ;保证时钟高周期大于4us • NOP • NOP • NOP • NOP • JB SDA,AckEnd ;判断是否接收到应答信号 • CLR SCL ;发送结束钳住总线准备下一步 • RET
START: • SETB SDA ;发送起始条件的数据信号 • NOP • SETB SCL ;发送起始条件的时钟信号 • NOP ;起始条件建立时间大于4.7us • NOP • NOP • NOP • NOP • CLR SDA ;发送起始信号 • NOP ;起始条件锁定时间大于4us • NOP • NOP • NOP • NOP • CLR SCL ;钳住I2C 总线准备发送或接收数据 • RET • STOP: • CLR SDA ;发送停止条件的数据信号 • NOP • SETB SCL ;发送停止条件的时钟信号 • NOP ;起始条件建立时间大于4us • NOP • NOP • NOP • NOP • SETB SDA ;发送I2C 总线停止信号 • NOP • NOP • NOP • NOP • RET
Delay1ms: • MOV R7,#100 ;延时1ms左右 • D1: • MOV R6,#10 • D2: • DJNZ R6,D2 • DJNZ R7,D1 • RET • Delay200ms: • MOV R5,#200 ;延时200ms左右 • DJNZ R5,Delay1ms • RET • TAB: DB 0EDh,60h,0A7h,0E3h,6Ah,0CBh,4Fh,0E0h,0EFh,0EBh • END
2 动态段型液晶显示驱动控制器HT1621 • HT1621是台湾合泰(Holtek)公司推出的128点内存映象和多功能的LCD驱动控制器,目前,在段式液晶显示模块中得到了广泛的应用。因此,在本节中,将对HT1621的特性、功能和使用做一个介绍。 • (1)HT1621的概述 • HT1621是128点内存映象和多功能的LCD驱动器,HT1621的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示子系统。用于连接主控制器和HT1621的管脚只有4或5条,HT1621还有一个节电命令用于降低系统功耗。
(3)HT1621的电路结构(4)HT1621的驱动能力 • HT1621是一个128(32×4)点的LCD驱动器,它可由软件配置成1/2或1/3的LCD驱动器偏压和2、3或4个公共端口。这一特性使HT1621适用于多种LCD应用场合。
(5)HT1621的控制部 • 显示内存(RAM) • 静态显示内存(RAM)以32×4位的格式储存所显示的数据。RAM的数据直接映象到LCD驱动器,即显示数据为“1”相当于液晶显示段为显示状态;显示数据为“0”相当于液晶显示段为不显示状态。 图 RAM映射图
系统振荡器与声音输出 • 系统振荡器 • HT1621系统时钟用于产生时基/看门狗定时器(WDT)时钟频率、LCD驱动时钟和声音频率。片内RC振荡器(256KHz)、晶振(32.768KHz)或一个外接的由软件设定的256KHz时钟可以产生时钟源。当系统时钟停止工作时,LCD将显示空白,时基/看门狗定时器功能也将失效。 • 声音输出 • HT1621内嵌一个简单的声音发生器,可以在管脚BZ和/BZ上输出一对驱动信号,用于产生一个单音。管脚BZ和/BZ是声音输出管脚也是一对差动驱动管脚,用于驱动蜂鸣器。当系统失效或禁止声音输出时,管脚BZ和/BZ将保持低电平的输出。
(6)接口 • HT1621只有四根管脚用于接口。 • 管脚/CS用于初始化串行接口电路和结束主控制器与HT1621之间的通讯。管脚/CS设置为“1”时主控制器和HT1621之间的数据和命令无效并初始化。在产生模式命令或模式转换之前必须用一个高电平脉冲初始化HT1621的串行接口。 • 管脚DATA是串行数据输入/输出管脚,读/写数据和写命令通过管脚DATA进行。 • 管脚/RD是读时钟输入管脚。在/RD信号的下降沿时数据输出管脚DATA上,在/RD信号上升沿和下一个下降沿之间,主控制器应读取相应的数据。 • 管脚/WR是写时钟输入管脚。在/WR信号上升沿时,管脚DATA上的数据地址和命令被写入。
(8)HT1621的使用 从上图中可以看出: • 在VLCD端接一个电位器用以调节液晶显示的对比度。 • 该典型应用中使用的液晶显示器件为四路驱动,使用了所有的段电极,可以实现128段的显示。即至少可以驱动显示16个7段数字字符,可以参考HT1621的典型应用的说明。
(9)显示驱动程序 • 当AT89C51接的晶振为12MHz时,指令周期为1μs。本显示驱动程序主要完成的功能就是16位数字的液晶显示模块从0~9的循环显示。 • 驱动程序 CS EQU P1.0 W EQU P1.1 DAT EQU P1.2 COUNT EQU 40h ORG 0000h INIT: ;初始化总线 SETB CS SETB W SETB DAT CLR CS
HT1621INIT: • MOV A,80H • LCALL WR3 ;先送命令代码100 • MOV A,#01H ;打开系统振荡器 • LCALL WR8 • MOV A,80H • LCALL WR3 ;先送命令代码100 • MOV A,#18H ;片内RC振荡 • LCALL WR8 • MOV A,80H • LCALL WR3 ;先送命令代码100 • MOV A,#29H ;1/3偏压比,4个COM • LCALL WR8 • MOV A,80H • LCALL WR3 ;先送命令代码100 • MOV A,#03H ;打开LCD偏压发生器 • LCALL WR8 • SETB CS • NOP • CLR CS • HT1621Disp: • MOV DPTR,#TAB ;送字模表首址 • MOV B,#10 ;0~9,10个数
Disp1: • MOV A,#0A0H ;送数据代码101 • LCALL WR3 • MOV A,#00H ;将地址指针设在00H上 • LCALL WR6 • MOV R4,#16 • Disp2: • MOV A,#00h • MOVC A,@A+DPTR • LCALL WR8 • DJNZ R4,Disp2 ;每个数字送16次 • LCALL Delay200ms • LCALL Delay200ms • INC DPTR • DJNZ B,Disp1 • AJMP HT1621Disp • WR3: ;送代码 • MOV COUNT,#03H • WR3SENT: • CLR W • RLC A ;要发送的数据左移,发送位入C • JC WR3SENT1 ;C为“1”,跳到发送“1”的子程序 • CLR DAT ;C为“0”,发送“0” • SJMP WR3SENT2
WR3SENT1: • SETB DAT • WR3SENT2: • NOP • SETB W • NOP • DJNZ COUNT,WR3SENT ;3位没发送完继续发送 • RET • WR6: ;送代码 • MOV COUNT,#06H • WR6SENT: • CLR W • RLC A ;要发送的数据左移,发送位入C • JC WR6SENT1 ;C为“1”,跳到发送“1”的子程序 • CLR DAT ;C为“0”,发送“0” • SJMP WR6SENT2