为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > LCD显示原理

LCD显示原理

2010-09-12 22页 pdf 244KB 226阅读

用户头像

is_207910

暂无简介

举报
LCD显示原理 第 1 页 LCD Driver(液晶驱动器) 在单片机的应用中,人机界面占据相当重要的地位。人机界面主要包括事件 输入和结果指示,事件输入包括键盘输入,通讯接口,事件中断等,结果指示包 括 LED/LCD 显示、通讯接口、外围设备操作等。而在这些人机界面当中,LCD 显 示技术由于其具有界面友好,成本较低等特点而在很多应用场合得以广泛应用。 我们在第一章 SH6xxx 单片机分类中就介绍过,LCD 类单片机是 SH6xxx 单片机 产品线的一个重要类别。 0. LCD的显示原理 在讲解 L...
LCD显示原理
第 1 页 LCD Driver(液晶驱动器) 在单片机的应用中,人机界面占据相当重要的地位。人机界面主要包括事件 输入和结果指示,事件输入包括键盘输入,通讯接口,事件中断等,结果指示包 括 LED/LCD 显示、通讯接口、外围设备操作等。而在这些人机界面当中,LCD 显 示技术由于其具有界面友好,成本较低等特点而在很多应用场合得以广泛应用。 我们在第一章 SH6xxx 单片机分类中就介绍过,LCD 类单片机是 SH6xxx 单片机 产品线的一个重要类别。 0. LCD的显示原理 在讲解 LCD driver 之前,我们先就 LCD 的显示原理作一简单的介绍。 LCD(Liquid Crystal Display)是利用液晶分子的物理结构和光学特性进行显 示的一种技术。液晶分子的特性: ƒ 液晶分子是介于固体和液体之间的一种棒状结构的大分子物质; ƒ 在自然形态,具有光学各向异性的特点,在电(磁)场作用下,呈各向同性 特点; 下面以直视型简单多路 TN/STN LCD Panel(液晶显示面板)的基本结构介绍 LCD 的基本显示原理,示意图如图 1-1: 图 1-1 LCD 的基本显示原理 第 2 页 整个 LCD Panel 由上下玻璃基板和偏振片组成,在上下玻璃之间,按照螺旋 结构将液晶分子有规律的进行涂层。液晶面板的电极是通过一种 ITO 的金属化合 物蚀刻在上下玻璃基板上。如图所示,液晶分子的排列为螺旋结构,对光线具有 旋旋旋光性,上下偏振片的偏振角度相互垂直。在上下基板间的电压为 0时,自 然光通过偏振片后,只有与偏振片方向相同的光线得以进入液晶分子的螺旋结构 的涂层中,由于螺旋结构的的旋旋旋光性,将入射光线的方向旋转 90 度后照射到 另一端的偏振片上,由于上下偏振片的偏振角度相互垂直,这样入射光线通过另 一端的偏振片完全的射出,光线完全进入观察者的眼中,看到的效果就为白色。 而在上下基板间的电压为一交流电压时,液晶分子的螺旋结构在电(磁)场的作用 下,变成了同向排列结构,对光线的方向没有作任何旋转,而上下偏振片的偏振 角度相互垂直,这样入射光线就无法通过另一端的偏振片射出,光线无法进入观 察者的眼中,看到的效果就为黑色。这样通过在上下玻璃基板电极间施加不同的 交流电压,即可实现液晶显示的两种基本状态亮(On)和暗(Off)。 在实际的液晶模以驱动电压中,有几个参数非常关键: ƒ 交流电压,液晶分子是需要交流信号来驱动的,长时间的直流电压加在液 晶分子两端,会影响液晶分子的电气化学特性,引起显示模糊,寿命的减 少,其破坏性为不可恢复; ƒ 扫描频率,直接驱动液晶分子的交流电压的频率一般在 60~100Hz 之间, 具体是依据 LCD Panel 的面积和设计而定,频率过高,会导致驱动功耗的 增加,频率过低,会导致显示闪烁,同时如果扫描频率同光源的频率之间 有倍数关系,则显示也会有闪烁现象出现。 COM1COM1 ONE FRAME 1-2 帧频(Frame)示意图 ƒ 液晶分子是一种电压积分型材料,它的扭曲程度(透光性)仅仅和极板间电 压的有效值有关,和充电波形无关。电压的有效值用 COM/SEG 之间的电压 差值的均方根 VRMS 示: [ ] dttV T RMSV T 2 0 )(1)( ∫= LCD 显示黑白(透光和不透光)的电压有效值的分界电压称为开启电压 Vth,当 电压有效值超过 Vth,螺旋结构的旋光角度加大,透光率急剧变化,透明度急剧上 升。反之,则透明度急剧下降。光线的透射率与交流电压的有效值的关系如图 1-3: 第 3 页 100 90 10 0 Tr an sp ar en t D eg re e( R el at iv e) 90% 10% Voltage(Vrms) 2 4 6Vth V10 V90 Von(rms) Voff( rms) 图 1-3 光线的透射率与交流电压的有效值的关系图 LCD 类单片机内嵌的 LCD driver(液晶驱动器),正是通过系统的控制,按照 用户定义的显示图案,产生点亮 LCD(Liquid Crystal Display,液晶)所需的模拟 驱动波形,接到 LCD Panel(液晶显示屏)上点亮对应的像素而达到显示的效果。 ƒ 占空比(Duty) 该项参数一般也称为 Duty 数或 COM 数。由于 STN/TN 的 LCD 一般是采用时分 动态扫描的驱动模式,在此模式下,每个 COM 的有效选通时间与整个扫描周 期的比值即占空比(Duty)是固定的,等于 1/COM 数。 ƒ 偏置(Bias) LCD 的 SEG/COM 的驱动波形为模拟信号,而各档模拟电压相对于 LCD 输出的最 高电压的比例称为偏置,而一般来讲,Bias 是以最低一档与输出最高电压的 比值来表示,如图 1-4 所示(1/4 Duty,1/3 Bias): SEGn V3 COM4 - SEGn SEGn+1 0 COM4 COM3 COM2 COM1 COM4 COM3 COM2 COM1 V2 V1 V3 0 V2 V1 V3 0 V2 V1 V3 0 V2 V1 V3 0 V2 V1 V 0 V2 V1 V3 0 V V1 -V3 -V2 -V1 SEGn+1 SEGn Select COMX Light SEGX Unselect Unlight Unlight UnlightSEGX V3 V2 V1 0 V3 V2 V1 0 V3 V2 V1 0 Select Unselect One Frame 图 1-4 LCD driver 驱动波形图 该图对应的是 1/4 duty,1/3 bias 的液晶驱动波形,COM 数为 4,每个 COM 第 4 页 的有效选通时间与整个扫描周期的比值(Duty)=1/4,驱动波形的模拟电压共 分 3档,V3 位输出最高电压,V2,V1 为输出中间电压,并且 V1/V3=1/3,所 以上述波形图对应的 Duty=1/4,Bias=1/3。 一般而言,Bias 和 Duty 之间是有一定关系的,duty 数越多,每根 COM 对应 的扫描时间变短,而要达到同样的显示亮度和显示对比度,VON 的电压就要提 高,选电平和非选电平的差异需要加大,即 Bias 需要加大,Duty 和 Bias 间 有一经验公式,即 )1Duty/(1Bias += 0. LCD驱动器的电源 液晶驱动波形为由若干档直流电平组合而成的模拟波形,各档直流电平的比 例关系反映驱动波形的 Bias 比例关系,各档电平的具体幅值取决于 LCD Panel 的 液晶特性和 Duty 数的多少。图 1-5 为一 LCD 驱动电源部分的示意图: Contrast Adjust LCD common driver LCD segment driver COM1~COMn SEG1~SEGn VDD Power Regulator Vn,Vn-1...V0, 0Bias Voltage Generator 图 1-5 LCD 驱动电源部分的示意图 电源调整器部分(Power Regulator): 产生 LCD 驱动所需的最高直流电平,一般分为三种: a) LCD 驱动所需的最高直流电平等于外部输入电源 VDD 的,此部分就直接 将 VDD 输入至后续电路; b) LCD 驱动所需的最高直流电平大于外部输入电源 VDD,且不需要稳压输出 的,如固定等于 1.5VDD 或 2.0VDD,此部分通常做法是将外部输入电源 VDD 通过升压电路(pump)升至所需的电压,输入至后续电路; c) LCD 驱动所需的最高直流电平大于外部输入电源 VDD,且需要稳压输出的, 即驱动所需的最高直流电平不随 VDD 的变化而变化的,如要求 VDD =2.4~ 5.5V 全电压范围里,VLCD 的输出电压都保持不变,此部分通常做法是首 先产生一个误差范围符合要求的电压基准源,然后将此电压基准源比例放 大至所需的电压,同时外部输入电源 VDD 通过升压电路(pump)升至一定的 电压,如 2VDD,作为比例放大部分的电源。如图 1-6: 第 5 页 Reference Voltage VDD Pump Amplifier n*VDD Vref VLCD 图 1-6 电源调整器部分结构示意图 对比度/亮度调整部分(Contrast Adjustment): 通过对比度/亮度控制寄存器,调节输出的 LCD 驱动电压。 设置此部分的目的有三个: ) 同一颗单片机适配的 LCD Panel 的选择余地较大,LCD panel 的工作电压(额 定电压)处于 LCD 驱动器输出的最高电压和最低电压之间即可; ) 可以有效的消除 LCD Panel 在制作过程中工作电压的偏移,特别是 TN/STN 等对成本要求较严格的 LCD Panel,其最佳工作电压与设计工作电压间的偏 移较大; ) 有些产品的 LCD driver 无电源调整电路,其 LCD 输出的最高电压(VLCD)与 外部输入电源跟随变化。在实际产品中,特别是使用电池作为电源的应用 场合,外部输入电源随着使用时间的加长会慢慢降低,LCD 输出的电压和 LCD Panel 的对比度也会随之降低,这时保持 LCD Panel 的对比度不变,就 可以通过调节对比度/亮度控制寄存器进行调节。 此部分依据每颗单片机产品的定位不同,有所差异,有些产品无部分,包含 此部分的在调节档数或调节精度上也有所差异。 偏置电压产生部分(Bias Voltage Generator): LCD driver 输出的最高电压通过偏置电压产生电路,根据选择的偏置设置, 产生LCD交流驱动波形所需要的其它几档偏置电压(VLCD,Vn,Vn-1,…V1,V0), 提供给后续的 COM/SEG 波形产生电路。 此部分的实现方式一般分为两种: ) 电阻分压结构,即依据 Bias 的设置,选择合适的分压电阻,产生需要的 直流分压电平,如图 1-7; 第 6 页 V3=5/6*VLCD VLCD VLCD V1=2/3*VLCD V0=1/3*VLCD 1/3 Bias R R R VLCD VLCD V2=3/4*VLCD V1=2/4*VLCD V0=1/4*VLCD 1/4 Bias R R R R VLCD VLCD V3=4/5*VLCD V2=3/5*VLCD V1=2/5*VLCD V0=1/5*VLCD 1/5 Bias R R R R R VLCD VLCD V2=4/6*VLCD V1=2/6*VLCD V0=1/6*VLCD 1/6 Bias R R 2R R R 图 1-7 电阻分压结构的偏压电路示意图 ) 电容结构,这是一种较为特殊的 LCD driver 的电源结构,在这种结构下, 电压调整部分和电压偏置部分是整合在一起的,电源升压部分是直接按照 Bias 的设置产生 LCD driver 需要的直流分压电平,如图中,VP2 是 2 倍 的 VDD,VP1 是 3 倍的 VDD。 在此结构下,如图 1-8 所示的外接电容一般情况是必须要的,否则仅仅依 靠芯片内的电容,其驱动能力较差。 图 1-8 电容分压结构的偏压电路示意图 COM/SEG 驱动波形产生部分(COM/SEG driver): 此部分的结构示意如图 1-9: 第 7 页 Data /Scan counter Data /Scan counter Data /Scan counter Data /Scan counter COM/SEG pad COM/SEG pad COM/SEG pad COM/SEG pad VLCD Vx Vy GND COM/SEG Driver 图 1-9 COM/SEG 驱动波形产生示意图 COM/SEG driver 可以看作一组多路选择开关,COM driver 依据扫描计数器的 值,SEG driver 依据显示数据 RAM 对应的值,从输入的直流分压电平中进行选 择并从相应的 COM/SEG 引脚加以输出。这样从整个 LCD 扫描周期来讲,从 COM/SEG 引脚上就输出了驱动 LCD Panel 所需要的模拟电压波形。 直流分压电平的选择关系如表 1-1 及图 1-10: 项目 1/3Bias 1/4Bias 1/5Bias 1/7Bias 直流分压电平 VLCD V1=2/3VLCD V2=1/3VLCD GND VLCD V1=3/4VLCD V2=2/4VLCD V3=1/4VLCD GND VLCD V1=4/5VLCD V2=3/5VLCD V3=2/5VLCD V4=1/5VLCD GND VLCD V1=6/7VLCD V2=5/7VLCD V3=2/7VLCD V4=1/7VLCD GND 选电平 VLCD VLCD VLCD VLCD COM driver 非选电平 V2 V3 V4 V4 选电平 GND GND GND GND 前半扫 描周期 SEG driver 非选电平 V1 V2 V2 V2 选电平 GND GND GND GND COM driver 非选电平 V1 V1 V1 V1 选电平 VLCD VLCD VLCD VLCD 后半扫 描周期 SEG driver 非选电平 V2 V2 V3 V3 表 1-1 直流分压电平的选择关系表 第 8 页 SELECT UNSELECT COM SELECT UNSELECT SEG 1/5 BIAS1/4 BIAS SELECT UNSELECT VLCD V1 V2 COM V3 GND SELECT UNSELECT V1 SEG V2 V3 V4 VLCD V4 GND VLCD V1 V2 V3 GND VLCD V1 V2 V3 GND SEG COM3 COM2 COM1 VLCD V1 V2 V3 GND VLCD V1 V2 V3 GND VLCD V1 V2 V3 GND VLCD V1 V2 V3 GND Selected Unselected 图 1-10 SEG/COM 波形图 第 9 页 0. LCD显示RAM(LCD Display RAM) 用户对 LCD Driver 的操作一方面是通过操作 LCD driver 的控制寄存器,来 设置 LCD driver 的工作模式(包括 Duty/Bias/Contrast/扫描频率/LCD 开关等的 设置),另一方面 LCD Panel 上显示所需的内容是通过读写 LCD 显示 RAM 来实现。 LCD RAM 的结构不同于其它 Data RAM,它是一个双口 RAM(Dual Port)的结构,一 边为 CPU 的读写接口,另外一边是与 LCD driver 的读接口。 LCD RAM 的字节排列顺序是与 LCD 输出的 COM/SEG 阵列相对应的。 如表 1-2: Bit3 Bit2 Bit1 Bit0 Address COM4 COM3 COM2 COM1 $300 SEG1 SEG1 SEG1 SEG1 $301 SEG2 SEG2 SEG2 SEG2 $302 SEG3 SEG3 SEG3 SEG3 $303 SEG4 SEG4 SEG4 SEG4 $304 SEG5 SEG5 SEG5 SEG5 $305 SEG6 SEG6 SEG6 SEG6 $306 SEG7 SEG7 SEG7 SEG7 $307 SEG8 SEG8 SEG8 SEG8 $308 SEG9 SEG9 SEG9 SEG9 $309 SEG10 SEG10 SEG10 SEG10 $30A SEG11 SEG11 SEG11 SEG11 $30B SEG12 SEG12 SEG12 SEG12 $30C SEG13 SEG13 SEG13 SEG13 $30D SEG14 SEG14 SEG14 SEG14 $30E SEG15 SEG15 SEG15 SEG15 … … … … … 表 1-2 LCD RAM 分配表 举例,如果要将 COM2 与 SEG3 交点处的点点亮,只需将 LCD RAM $302 的 Bit1 置 1 即可,其余的工作由 LCD driver 的硬体自动完成。 0. LCD COM/SEG的复用功能 SH6xxx 产品线中,有些产品的 LCD COM/SEG 正常情况下用作 LCD driver 的 COM/SEG 信号的输出线,但依据实际应用情况,如 LCD 扫描线有空余,输入输出端 口有所不够,在这个时候,就可以讲这些扫瞄线设置为输入输出端口,当作通用 第 10 页 的输入输出端口来使用,当然有些可能设置为输出端口,具体的功能和设置请参 考相应的产品说明书。 例如:在 SH67P54 中,SEG1~8 的第二功能为输入输出端口 PORTC 和 PORTD, SH67K(P)93 中,SEG36~50 的第二功能为 PORTF,PORTE,PORTD 和 PORTC,SEG24~ 35 的第二功能为输出端口。 LCD COM/SEG 复用为输入输出端口(I/O),输出端口(Output) LCD 扫描与键盘扫描复用 LCD COM/SEG 的第二功能设置为输入输出端口时,其可以作为通用的端口使用,设 置为输出端口时,其仅可以作为输出端口使用。在后一种情况下,LCD 与键盘扫描 扫描线复用是一种最常见的应用,下面就这一应用进行讨论。 下图为 LCD 扫描与键盘扫描复用时的示意图(以 3x3 键盘为例): SEGa SEGb SEGc LCD Panel Px Py Pz AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 COM/SEG COM/SEG SEGa~c SH66xx 图 1-11 LCD 扫描与键盘扫描复用时的示意图 如图 1-11 中,SEGa~c 的第二功能为输出扫描口,同时接到键盘矩阵和 LCD Panel 上,Px,Py,Pz 为三根输入输出端口,用作键盘扫瞄输入线,其内部上拉电阻打 开,或外接上拉电阻,图中二极管的作用为防止双键或多键按下时,按键对 LCD 显示产生影响。SEG/COM 用作输出口时,对应的数据位一般为一独立的数据寄存器。 如 SH67P90 中 SEG24~35: 第 11 页 Addr Bit 3 Bit 2 Bit 1 Bit 0 R/W Remarks $15 - O/S2 O/S1 O/S0 R/W LCD control register1 $3C8 SCAN35 SCAN34 SCAN33 SCAN32 R/W Data Register of LCD SEG35 - 32 when SEG35 - 32 shared as output port. $3C9 SCAN31 SCAN30 SCAN29 SCAN28 R/W Data Register of LCD SEG31 - 28 when SEG20 - 17 shared as output port. $3CA SCAN27 SCAN26 SCAN25 SCAN24 R/W Data Register of LCD SEG27 - 24 when SEG16 – 13 shared as output port. $15 为 SEG24~35 第一/第二功能选择控制寄存器,$3C8~3CA 为 SEG24~35 用作 输出端口时的数据寄存器。 程序操作流程如图 1-12: SEGa=0,SEGb=1,SEGc=1 SEGa~c switch to output port Read Px~Py status SEGa~c switch to LCD SEG judge AN1~AN3 is pressed SEGa=1,SEGb=0,SEGc=1 SEGa~c switch to output port Read Px~Py status SEGa~c switch to LCD SEG judge AN4~AN6 is pressed SEGa=1,SEGb=0,SEGc=1 SEGa~c switch to output port Read Px~Py status SEGa~c switch to LCD SEG judge AN7~AN9 is pressed Key scan start Key scan start 图 1-12 LCD 扫描与键盘扫描复用程序流程图 在上述流程中有几点非常重要: ƒ COM/SEG 用作键盘扫描线的时间越快越好,这样才能最大程度的避免键盘 扫瞄对 LCD 显示带来的影响。 1) 切换到键盘扫描线之前,先将扫描输出端口数据寄存器数据设置好,设置 好后再行切换; 2) 键盘扫描线输出后,立即读取键盘输入端口的状态,并将 COM/SEG 切换回 LCD COM/SEG 输出,再行处理键盘扫瞄数据; 3) 键盘扫瞄的频率不宜太快,否则即使每次扫描的时间很短,但同一时间内 第 12 页 扫描次数太多,结果是对 LCD 显示仍然产生较大的影响,同键盘扫瞄频率 较慢,但每次扫描时间较长的产生的影响一样。一般键盘扫瞄的频率限制 在 2~3Hz 以下,由于存在按键数量差异,液晶扫描频率不同,液晶面板 的大小/电压/段码差异,此值依据具体的案例会有所不同。 ƒ 上述流程只是提供一种思路,并未涉及如消抖等细节问题,具体应用中仅 供参考。 0. LCD应用实例 在使用带 LCD 驱动模块的中颖单片机来驱动 LCD 的时候,在电路接口设计上 是非常简单的。 首先要先查看所要驱动的LCD共有多少个COMMON口和SEGMENT口,根据COMMON 口和 SEGMENT 口的数目来挑选所要匹配的单片机上的 LCD 驱动口。由于有些单片 机的 LCD 驱动口是与 I/O 口复用的,所以在考虑这一点的时候还要考虑一下 I/O 口是否够用。比如作用 SH66P51 来驱动一片有 4个 COMMON 口、12 个 SEGMENT 口的 LCD,且 I/O 口的使用上使用到了 PORTC 和 PORTD,这样先根据 LCD 有 4 个 COMMON 口,所以SEG29/COM4的引脚必须选择作为COM4使用,而SEG27/COM6和 SEG28/COM5 就可以选择为 SEG27 和 SEG28 使用(由于这块 LCD 只有 12 个 SEGMENT 口,所以最 终单片机的 SEG27 和 SEG28 也是没用到)。单片机由于被使用到了 PORTC 和 PORTD 的 I/O 口,所以 SEG1~SEG8 就不能再使用了,LCD 上的 SEGMENT1~SEGMENT12 就 只好依次接到单片机的 SEG9~SEG20,剩下的 SEG21~SEG28 不使用,可以悬空。 „ LCD 显示软件模块 现在以 SH66P51 为例讲述一下一个 4个 COMMON 口,8个 SEGMENT 口的显示时 间的 LCD 的驱动。 LCD 平面显示图如图 1-13 所示: 图 1-13 LCM 平面显示图 这块 LCD 共有 12 个引脚,包括 4个 COMMON 口和 8个 SEGMENT 口,显示 12 小 时制的时钟和分钟。 这里,我们可以看一下这块 LCD 的 SEGMENT 图与 COMMON 图: 第 13 页 图 1-14 LCD SEG/COM 走线图 „ 电路原理图 由于系统设计中并没有要求要使用到 PORTC 和 PORTD 的 I/O 口,所以将 PORTC 和 PORTD 与 SEG1~8 这八个复用引脚设置为 SEG1~8 来使用。LCD 有 4 个 COMMON 口,SEG29/COM4 设置为 COM4 使用。 SH66P51 内部有自带的 RESET 引脚上拉电阻,所以在搭建电路时可以省去外部 RESET 电路中的上拉电阻,只需在烧写 IC 的时候打开 RESET 引脚上拉电阻即可。使 用 32.768KHz 晶振作为主振荡器,LCD 驱动的时锺来源于晶振的振荡时锺。 第 14 页 SW1 32768HZ Y1 12P C9 12P C8 0.1uF C5 0.1uF C4 0.1uF C1 0.1uF C3 0.1uF C2 0.1uF C7 VCC 47K R1 0.1uF C6 VCC 3 3 4 4 5 5 6 6 2 2 1 1 7 7 8 8 9 9 10 10 11 11 12 12 * CUP1 17 VSUB 18 VP1 19 VP2 20 VP3 21 COM1 22 CUP2 16 /RESET 15 TEST 14 REM 13 VDD 12 PA .0 6 G N D 7 O SC X O /P E .1 8 O SC X I/ PE .0 9 O SC O 10 O SC I 11 PB .1 1 PB .0 2 PA .3 3 PA .2 4 PA .1 5 SE G 21 28 SE G 22 27 SE G 23 26 C O M 4/ SE G 29 25 C O M 3 24 C O M 2 23 SE G 20 29 SE G 19 30 SE G 18 31 SE G 17 32 SE G 16 33 SEG4/PC.339 SEG3/PC.240 SEG2/PC.141 SEG1/PC.042 PB.343 PB.244 SEG5/PD.038 SEG6/PD.137 SEG7/PD.236 SEG8/PD.335 SEG1534 SH 66 P5 1 U1 com 4 com 3 com 2 com 1 SE G 8 SE G 7 SE G 6 SE G 5 SE G 4 SE G 3 SE G 2 SE G 1 LCD 图 1-15 LCD 显示实例原理图 „ 程序设计 软件将设计一个 LCD 显示模块作为例子供写 LCD 显示程序的程序员参考一下 而已。 为了方便说明 LCD 显示,所以挑选了一个时间的显示作为例子,在程序中也 就写进去一个时间跳动的小程序,目的只是作为 LCD 显示模块调试用而已。时间 从 AM12:00 开始,循环运行。 当上电时,由于 LCD 驱动寄存器的值是不定的,若在这个时候打开 LCD 的话, 就会导致 LCD 显示一些乱的点,所以在上电未打开 LCD 的时候要先对用于 LCD 显 示的寄存器进行清零,以避免出现上电乱显示。 在写 LCD 显示程序之前,要先对 LCD 进行分析,由显示的段和 SEGMENT 线与 COMMON 线的关系列出 LCD 的矩阵表,得到如下表: 第 15 页 REGISTER LCD COM4 COM3 COM2 COM1 $300 SEG1 MIN_L_d MIN_L_c MIN_L_b MIN_L_a $301 SEG2 CIRH MIN_L_e MIN_L_g MIN_L_f $302 SEG3 MIN_H_d MIN_H_c MIN_H_b MIN_H_a $303 SEG4 CIRL MIN_H_e MIN_H_g MIN_H_f $304 SEG5 HOU_L_d HOU_L_c HOU_L_b HOU_L_a $305 SEG6 AM HOU_L_e HOU_L_g HOU_L_f $306 SEG7 HOU_H_d HOU_H_c HOU_H_b HOU_H_a $307 SEG8 PM HOU_H_e HOU_H_g HOU_H_f 表 1-3 LCD 显示矩阵表 得到矩阵表之后,可对矩阵表进行分析,找出最方便写出显示程序的规律。 比如上面这张表,我们可以看出 LCD 中的每个 7 段码的排列是有规律的:都是从 高到低为 d 段、c 段、b 段和 a 段依次存在同一个寄存器中,e 段、g 段和 f 段又 是从高到低放在同一个寄存器的低三位。这样就方便了建表,具体的建表方法请 参看程序。 例 6-1 以时间 LCD 显示为例带有 LCD 显示模块的程序 LIST P=66P51 ROMSIZE=2048 ;************************************************ ; 系统寄存器(BANK0) ;************************************************ IE EQU 00H ;中断使能标志 IRQ EQU 01H ;中断请求标志 BTM EQU 03H ;基本定时器模式寄存器 LCDON EQU 07H ;位 2:设置打开 LCD TBR EQU 0EH ;查表寄存器 INX EQU 0FH ;间接寻址伪索引寄存器 DPL EQU 10H ;INX 数据指针低四位 DPM EQU 11H ;INX 数据指针中三位 DPH EQU 12H ;INX 数据指针高三位 OSDUTY EQU 15H ;位 1-0:选择 LCD 占空比, 位 2:设置 PORTC 作为 SEG1-4, 位 3:设置 ;PORTD 作为 SEG5-8 WDT EQU 1EH ;位 2-0:看门狗定时控制寄存器, 位 3:看门狗溢出标志 ;************************************************ ; 系统寄存器 BANK6(LCD) ;************************************************ 第 16 页 SEG1 EQU 00H ;SEG1 寄存器 SEG2 EQU 01H ;SEG2 寄存器 SEG3 EQU 02H ;SEG3 寄存器 SEG4 EQU 03H ;SEG4 寄存器 SEG5 EQU 04H ;SEG5 寄存器 SEG6 EQU 05H ;SEG6 寄存器 SEG7 EQU 06H ;SEG7 寄存器 SEG8 EQU 07H ;SEG8 寄存器 ;************************************************ ; 用户定义寄存器 (BANK0) ;************************************************ AC_BAK EQU 28H ;AC 值备份寄存器 TMP EQU 29H ;临时寄存器 FLAG1 EQU 2AH ;位 0=1, 已计一次 0.5 秒 ;位 1=1 为 PM, 位 1=0 为 AM SEC_L EQU 2BH ;秒钟低位寄存器 SEC_H EQU 2CH ;秒钟高位寄存器 MIN_L EQU 2DH ;分钟低位寄存器 MIN_H EQU 2EH ;分钟高位寄存器 HOU_L EQU 2FH ;时钟低位寄存器 HOU_H EQU 30H ;时钟高位寄存器 ;************************************************ ; 程序 ;************************************************ ORG 0000H JMP RESET RTNI RTNI JMP BASETIMER ;基准定时器中断服务程序入口 RTNI ;******************************************* ; 子程序: BASETIEMR 中断服务程序 ;******************************************* BASETIMER: STA AC_BAK,00H ;备份 AC 值 ANDIM IRQ,1101B ;清基准定时器中断请求标志 BASETIMER_END: LDI IE,0010B ;打开基准定时器中断 第 17 页 LDA AC_BAK,00H ;取出 AC 值 RTNI ;******************************************* ; 上电程序 ;******************************************* RESET: NOP LDA WDT,00H ;重置 WDT ;-------------------------------------- ;先清用户寄存器 POWER_RESET: LDI DPL,08H LDI DPM,02H LDI DPH,00H POWER_RESET_1: LDI INX,00H ADIM DPL,01H LDI TBR,00H ADCM DPM,00H BA3 POWER_RESET_2 JMP POWER_RESET_3 POWER_RESET_2: ADIM DPH,01H ANDIM DPM,0111B POWER_RESET_3: SBI DPH,01H BNZ POWER_RESET_1 SBI DPM,02H BNZ POWER_RESET_1 SBI DPL,08H BNZ POWER_RESET_1 ;-------------------------------------- ;上电时,先对驱动 LCD 的寄存器进行清零,以免打开 LCD 时出现乱点 CLR_LCD: LDI DPL,00H LDI DPM,00H LDI DPH,06H CLR_LCD_1: 第 18 页 LDI INX,00H ADIM DPL,01H CLR_LCD_2: SBI DPL,08H BNZ CLR_LCD_1 ;-------------------------------------- ;初始化系统寄存器 SYSTEM_INITIAL: ;初始化基准定时器 LDI BTM,1010B ;设置基准定时器预分频为/8, 中断定时为 0.5s ;初始化 LCD 驱动模块 LDI OSDUTY,1100B ;设置 PORTC 作为 SEG1-4, 设置 PORTD 作为 SEG5-8, ;1/4 占空比, 1/3 偏压, SEG29/COM4 作为 COM4 使用 LDI LCDON,0100B ;打开 LCD ;初始化 WDT LDI WDT,0001B ;设置看门狗定时为 1s ;-------------------------------------- ;初始化用户寄存器 USER_INITIAL: LDI HOU_H,01H ;设置初始时间为 AM12:00 LDI HOU_L,02H LDI MIN_H,00H LDI MIN_L,00H ;-------------------------------------- MAIN_PRE: LDI IRQ,00H LDI IE,0010B ;打开基准定时器中断 ;********************************* MAIN: NOP HALT ;进入 HALT 模式,等待中断唤醒,不影响 LCD 显示 NOP NOP ;********************************* TIME: LDA WDT,00H ;重置 WDT LDA FLAG1,00H BA0 TIME_ADDS ;之前已计一次 0.5s,应该加上 1s 第 19 页 ORIM FLAG1,0001B ;置 "已计一次 0.5s"标志 JMP TIME_END TIME_ADDS: ANDIM FLAG1,1110B ;清"已计一次 0.5s" ADIM SEC_L,01H ;秒数加一 DAA SEC_L LDI TBR,00H ADCM SEC_H,00H SBI SEC_H,06H BAZ TIME_ADDM ;满 60 秒,分钟应该加一 JMP TIME_END TIME_ADDM: LDI SEC_H,00H ;清秒钟为 00 ADIM MIN_L,01H ;分钟加一 DAA MIN_L LDI TBR,00H ADCM MIN_H,00H SBI MIN_H,06H BAZ TIME_ADDH ;满 60 分,时钟应该加一 JMP TIME_END TIME_ADDH: LDI MIN_H,00H ;清分钟为 00 SBI HOU_H,01H BNZ TIME_ADDH_2 SBI HOU_L,02H BNZ TIME_ADDH_2 ;时钟不是 12 点,跳转 ;时钟为 12 点,下一个小时应该是 1点,设置时钟为 01 TIME_ADDH_1: LDI HOU_H,00H LDI HOU_L,01H JMP TIME_END TIME_ADDH_2: ADIM HOU_L,01H ;时钟加一 DAA HOU_L LDI TBR,00H ADCM HOU_H,00H SBI HOU_H,01H BNZ TIME_END 第 20 页 SBI HOU_L,02H BNZ IME_END ;加完时钟后不是 12 点,跳转 ;加完之后时钟为 12 点,该转换 AM 和 PM EORIM FLAG1,0010B ;转换 AM/PM 标志 TIME_END: ;************************************** ; 模块: LCD 显示模块 ; 输入变量: FLAG1,MIN_L,MIN_H,HOU_L,HOU_H ; 使用变量: TBR,TMP ; 输出变量: SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8 ;************************************** DISP: LDI TBR,1000B EORM SEG2,06H LDI TBR,1000B EORM SEG4,06H ;每 0.5 秒,改变":"的亮/灭,达到闪烁 ":",周期为 1秒 DISP_AMPM: LDA FLAG1,00H BA1 DISP_PM ;PM,跳转 DISP_AM: LDI TBR,0111B ANDM SEG8,06H ;清"PM"显示 LDI TBR,1000B ORM SEG6,06H ;显示"AM" JMP DISP_M DISP_PM: LDI TBR,0111B ANDM SEG6,06H ;清"AM"显示 LDI TBR,1000B ORM SEG8,06H ;显示"PM" DISP_M: LDI TBR,0FH LDA MIN_L,00H CALL 07FAH ;查表得显示数据 STA SEG1,06H ;显示分钟低位的 dcba 四段 LDI TMP,1000B ANDM SEG2,06H LDA TBR,00H 第 21 页 ORM SEG2,06H ;显示分钟低位的 egf 三段 LDI TBR,0FH LDA MIN_H,00H CALL 07FAH ;查表得显示数据 STA SEG3,06H ;显示分钟高位的 dcba 四段 LDI TMP,1000B ANDM SEG4,06H LDA TBR,00H ORM SEG4,06H ;显示分钟高位的 egf 三段 DISP_H: LDI TBR,0FH LDA HOU_L,00H CALL 07FAH ;查表得到显示数据 STA SEG5,06H ;显示时钟低位的 dcba 四段 LDI TMP,1000B ANDM SEG6,06H LDA TBR,00H ORM SEG6,06H ;显示时钟低位的 egf 三段 LDA HOU_H,00H BAZ DISP_H_1 ;时钟高位若为 0, 不显示高位,跳转 LDI TBR,0FH LDA HOU_H,00H CALL 07FAH ;查表得到显示数据 STA SEG7,06H ;显示时钟高位的 dcba 四段 LDI TMP,1000B ANDM SEG8,06H LDA TBR,00H ORM SEG8,06H ;显示时钟高位的 egf 三段 JMP DISP_END DISP_H_1: LDI TBR,00H STA SEG7,06H LDI TBR,1000B ANDM SEG8,06H ;清时钟高位显示 DISP_END: ;************************************** 第 22 页 JMP MAIN ;************************************************ ;LCD 显示数据表:根据 LCD 的矩阵表定出数据表是按 egf,dcba 来建立的 ORG 07F0H ;0egf, dcba RTNW 0101B,1111B ;0 RTNW 0000B,0110B ;1 RTNW 0110B,1011B ;2 RTNW 0010B,1111B ;3 RTNW 0011B,0110B ;4 RTNW 0011B,1101B ;5 RTNW 0111B,1101B ;6 RTNW 0000B,0111B ;7 RTNW 0111B,1111B ;8 RTNW 0011B,1111B ;9 ORG 07FAH TJMP END
/
本文档为【LCD显示原理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索