LCD液晶显示驱动程序设计指引.docx
《LCD液晶显示驱动程序设计指引.docx》由会员分享,可在线阅读,更多相关《LCD液晶显示驱动程序设计指引.docx(13页珍藏版)》请在冰豆网上搜索。
LCD液晶显示驱动程序设计指引
美的集团制冷事业本部企业标准
QJ/MK03.056-2004
LCD液晶显示驱动程序设计指引
1适用范围
《LCD液晶显示驱动程序设计指引》主要对采用液晶驱动芯片HD1621(或此系列芯片)进行LCD液晶的驱动方法进行了分析,说明了驱动芯片的功能、软件编制方法和注意事项,并提供了程序范例,为以后的程序设计者提供类似的开发参考。
2引用资料
范例程序采用日本NEC公司的RA78K0S系列汇编语言编写,具体技术资料参照78K0S系列八位单片机UPD78F9177芯片的相关资料。
液晶驱动芯片参考资料:
具体见HT1621DATASHEET。
3定义
汇编语言:
是用于编写微处理器软件的最基本编程语言。
汇编程序包:
是一组程序的总称,用于把汇编语言的源程序文件转换成机器代码的程序,通常包括汇编程序﹑连接程序﹑目标码转换程序和其它库管理程序﹑表转换程序等。
LCD:
液晶显示器简称。
4HT162X驱动芯片资料介绍
4.1概述
HT162X系列芯片是由HOTEK公司开发生产的多功能LCD驱动器芯片,HT162X的软件配置特性使其适合于各种LCD的应用包括LCD模块和显示子系统,主控器与HT162X通信只需要3到4条线。
由于采用了电容型偏置电压充电泵使得HT1620的操作电流非常的小。
HT162X系列包括多款产品适合不同的应用,目前广泛应用于各种液晶驱动控制上。
4.2芯片特性
Ø操作电压2.4V~3.3V
ØLCD电压3.6V~4.9V可调
Ø可选择1/2或1/3偏置1/2,1/3或1/4占空比
Ø内部时基频率源
Ø片内电容型偏置充电泵
Ø读/写地址自动增加
Ø3线(或4线)串行接口
Ø软件配置特性
Ø两个可选的蜂鸣器频率2KHz或4KHz
4.3HT162X系列芯片选型表
HT162X
HT1620
HT1621
HT1622
HT16220
HT1623
HT1625
HT1626
公共端
4
4
8
8
8
8
16
段
32
32
32
32
48
64
48
片内振荡器
-
√
√
-
√
√
√
晶体振荡器
√
√
-
√
√
√
√
5HT1621芯片说明
HT1621为32*4位LCD驱动器,共有四种子型号,分别是HT1621-48SSO、HT1621B-48SSOP/DIP、HT1621D-28SKDIP,我们现在使用的为HT1621B-48SSOP,以下就以此芯片为例进行说明。
5.1HT1621B管脚定义图
5.2RAM单元对照
1621B的静态显示存储区RAM为324位用于保存显示数据RAM的内容直接映射到LCD驱动器的内容可使用READWRITE和READ-MODIFY-WRITE命令对RAM中的数据进行访问下面所示为RAM的映射图
RAM单元对照图
5.3HT1621B电路接口
主芯片与HT1621B接口只需4条线。
CS线用于初始化串行接口电路并终止主控芯片与HT1621B之间的通信,如果CS脚置为1主控器与HT1620之间的通信先被禁止,然后初始化。
在执行模式命令或进行模式切换时需要一个高电平的脉冲初始化HT1620的串行接口。
DATA线是串行数据输入/输出线,读写的数据和执行的命令都必须通过DATA线。
RD线是读时钟输入线,RAM中的数据在RD信号的下降沿输出输出的数据将会出现在DATA线上主控芯片应当在RD信号的上升沿和下一个下降沿之间读取正确的数据。
WR线是写时钟输入,DATA线上的数据地址和命令都在WR信号的上升沿输入HT1621。
5.4时序图(仅以写模式为例说明,其余见DATASHEET资料)
5.5命令格式
HT1621一个很重要地特色就是可由主控芯片通过软件地方式来完成自身地设定,有两种模式命令对HT1621进行配置和传输LCD显示数据。
HT1621的配置模式成为命令模式它的命令模式ID为100。
命令模式包含了系统配置命令、系统频率选择命令、LCD配置命令音调频率选择命令、定时器/WDT设定命令和操作命令。
而数据模式则包含读、写和读-修改-写操作,下表所列为命令模式ID和数据模式ID。
名称
模式
ID
READ
数据
110
WRITE
数据
101
READ-MODIFY-WRITE
数据
101
COMMAND
命令
100
模式命令应当在发送数据或命令之前执行。
如果执行连续的命令,命令模式ID可以省略。
当系统执行非连续命令或非连续地址数据模式时,CS脚应当置高电平,前一个操作模式将同时复位。
当CS脚返回到低电平时,应当首先执行新的操作模式ID。
HT1621具体命令模式详见HT1621产品DATASHEET文件,在此不作一一列举。
5.5在主芯片对HT1621发送显示内容前,应对使用到的HT1621内部资源(如时钟、偏置、蜂鸣器、LCD开关等)进行初始化设定,设定完毕后,才可进行正常的发送显示数据程序。
6采用HT1621B的液晶显示驱动硬件电路说明
显示驱动部分原理图如下图所示:
HT1621B显示驱动接口电路原理图
6.1该电路与主芯片共四个接口:
片选信号CS、读信号RD、写信号WR及数据信号DATA,一般我们使用CS、WR及DATA三个接口。
一般而言,主芯片和HT1621B中间要增加2K电阻,以做抗干扰和限流作用,如果显示板和主控板之间采用连接线连接,可以考虑在靠近1621芯片口的地方各增加一个102电容增强抗干扰能力,但以不影响通讯波形为前提。
6.2此例图及下程序为美的Q(R)型柜机的显示原理图,液晶驱动为4*14形式,其中SEG端口为了电路布线方便,未使用连续的SEG端口,而是间隔地使用。
6.3请注意芯片VLCD管脚,HD1621B芯片要求VLCD管脚电压必须低于VDD脚电压,在此VLCD通过电阻分压为4.5V。
6.4HD1621B多余的管脚(BUZZ、COM口和SEG口)可以悬空处理。
7程序设计说明
7.1RAM变量和标志说明
变量名称
变量类型
变量说明
Dispbuff
14字节
显示内容缓冲区
Disptime
1字节
显示时间变量
Dispstartf
1bit
发送数据使能标志,1=允许发送;0=不发送
7.2程序初始化说明
管脚定义:
P_1621CSEQUP0.0
P_1621WREQUP0.1
P_1621DAEQUP0.2
管脚初始化:
MOVP0,#B;上电输出1
MOVPM0,#B;0为输出,1为输入
7.3程序接口
子程序:
LCD1621INIT:
LCD初始化程序,在主程序初始化中调用
LCDSET:
LCD显示设定程序,在主程序循环中调用
LCDDISP:
LCD定时刷新程序,在主程序循环中调用
接口变量:
LCDBUF:
存放LCD显示内容缓冲区开始地址(根据实际应用的SEG口,最大为连续32个地址)
LCDCOUNT:
LCD显示内容RAM大小(最大为32)
LCDTIM:
LCD显示刷新时间(例程为100ms)
7.4程序常数定义(1621参数根据具体应用不同,可以进行修改)
READEQU0C0H;READ命令模式
WRITEEQU0A0H;WRITE命令模式
COMMANDEQU80H;COMMAND模式
RC256EQU18H;HT1621系统时钟选择:
片内时钟
SYSENEQU1;开系统时钟
LCDOFFEQU2;关闭LCD偏置发生器
LCDONEQU3;打开LCD偏置发生器
BIAS134EQU29H;选择LCD偏置:
1/3BIAS、4COMMONSOPTION
ADDR0EQU0;初始地址:
0
7.5参考程序
LCD1621INIT:
;LCD初始化程序,在主程序中调用
MOVA,#COMMAND;发送COMMAND命令
CALL!
SENDID
MOVA,#RC256;设置HT1621系统时钟
CALL!
SENDCOM
MOVA,#SYSEN;开系统时钟
CALL!
SENDCOM
MOVA,#LCDON;打开LCD
CALL!
SENDCOM
MOVA,#BIAS134;选择选择LCD偏置
CALL!
SENDCOM
MOVA,#WRITE;发送WRITE命令
CALL!
SENDID
MOVA,#ADDR0;设置初始地址为0
CALL!
SENDADR
MOVA,#0;试写一字节
CALL!
WRITEBYTE
RET
LCDSET:
;LCD显示设定程序,在主程序中调用
CMPPOWERUPTIM,#200;上电全部点亮2秒,以10ms为计时单位
BNC$LCDSET0RT
MOVPOWERUPTIM,#0
MOVWHL,#LCDBUF
MOVA,#0FFH
MOVB,#LCDCOUNT
LCDSET0:
MOV[HL],A
INCWHL
DBNZB,$LCDSET0
LCDSET0RT:
RET
LCDSET1:
;;;;其他显示设定程序
;;;;
RET
LCDDISP:
;LCD定时刷新程序,在主程序中调用
CMPLCDTIM,#10;LCD刷新频率,在此设为100ms(以10ms为计时单位)
BC$LCDDISPRT
MOVLCDTIM,#0
MOVA,#WRITE
CALL!
SENDID
MOVA,#ADDR0
CALL!
SENDADR
MOVWHL,#LCDBUF
MOVB,#LCDCOUNT
LCDDISP1:
MOVA,[HL]
CALL!
WRITEBYTE
INCWHL
DBNZB,$LCDDISP1
LCDDISPRT:
RET
SENDID:
;发送1621模式命令子程序,发送位数:
3
SET1P_1621CS
NOP
NOP
CLR1P_1621CS
MOVB,#3
SIDLOOP:
ROLCA,1
BNC$SENDID0
SET1P_1621DA
BR$SENDID1
SENDID0:
CLR1P_1621DA
NOP
SENDID1:
CLR1P_1621WR
NOP
NOP
SET1P_1621WR
DBNZB,$SIDLOOP
RET
SENDCOM:
;发送1621命令子程序,发送位数:
9
MOVB,#9
SCOMLOOP:
ROLCA,1
BNC$SENDCOM0
SET1P_1621DA
BR$SENDCOM1
SENDCOM0:
CLR1P_1621DA
NOP
SENDCOM1:
CLR1P_1621WR
NOP
NOP
SET1P_1621WR
DBNZB,$SCOMLOOP
RET
SENDADR:
;发送1621地址子程序,发送位数:
6
MOVB,#6
SADRLOOP:
ROLCA,1
BNC$SENDADR0
SET1P_1621DA
BR$SENDADR1
SENDADR0:
CLR1P_1621DA
NOP
SENDADR1:
CLR1P_1621WR
NOP
NOP
SET1P_1621WR
DBNZB,$SADRLOOP
RET
WRITEBYTE:
;往1621RAM写一字节子程序,发送位数:
8
MOVB,#8
WBYTELOOP:
ROLCA,1
BNC$WRITEBYTE0
SET1P_1621DA
BR$WRITEBYTE1
WRITEBYTE0:
CLR1P_1621DA
NOP
WRITEBYTE1:
CLR1P_1621WR
NOP
NOP
SET1P_1621WR
DBNZB,$WBYTELOOP
RET