|
来源:单片机及嵌入式系统应用 作者:赵 昕 李维祥 孙桂玲 |
摘要:介绍如何应用HD66421液晶板制成通用液晶显示模块;结合Fantasy Studio的AVRISP开发板,给出HD66421在单片机系统中的应用实例。
关键词:灰度液晶屏 通用液晶显示模块 HD66421
20世纪90年代以来,小型测控系统和手持设备的显示部分大多由液晶显示屏担当,它具有体积小、功耗低等特点。特别值得一提的是点阵液晶屏的使用,可以实现汉字和简单单色图形的显示,使手持设备更具人性化界面,操作更简便直观。随着液晶显示器件技术的不断发展,现在出现了灰度、伪彩、全彩的液晶显示屏,使手持设备成为都市的绚丽亮点。
1 硬件设计
对于小型测控系统和低成本手持设备而言,灰度及彩色液晶模块的价格还是有些高。本文介绍的HD66421是1/4VGA分辨率(160×100)的4级灰度液晶屏单元,售价只有100元,包括HD66421控制器及160×100的显示屏并封装在一起。加上本文中设计的电路板至少许元件可以构成同现在通用液晶显示模块(如:HY1602、HY12864)接口兼容的一个灰度显示模块。下面详细介绍这个显示模块。
HD66421是Hitach出品的显示控制芯片,具有片内30Kb的显示内存,最大支持160×100的4级PWM方式灰度显示;适用于低电压应用2.2~5.5V需要外部18V的LCD驱动电压,具MPU接口。要想把它做成通用的显示模块,要解决2个问题:通用接口的转换、18位的LCD驱动电压产生,如图1所示。

现在最常用的液晶显示模块有字符显示的HY1602、点阵显示的HY12864,它们的接口基本兼容。
对于字节显示屏:
1 GND 电源地
2 Vcc 数字电源+
3 Vee 对比度控制电压
4 RS 寄存器选择
5 R/W 读写控制
6 EN 读写使能
7~14 DB0~7 数据总线
15 A 背光电源+
16 K 背光电源-
对于点阵显示屏:
1 GND 电源地
2 Vcc 数字电源+
3 Vee 对比度控制电压
4 D/I 寄存器选择
5 R/W 读写控制
6 EN 读写使能
7~14 DB0~7 数据总线
15 CS1 芯片1的片选
16 CS2 芯片2的片选
17 RST 复位
18 Vlcd 液晶驱动电压
19 A 背光电源+
20 K 背光电源-

可见,如不考虑字符液晶接口的背光控制15、16脚,两种接口的数字部分是兼容的;而HD66421所需的接口如图1所示,于是设计出兼容接口:
1 GND 电源地
2 Vcc 数字电源+
3 NC(Vout) 空脚(输出电压)
4 RS 寄存器选择
5 WR 写选通
6 CS 片选
7~14 DB0~7 数据总线
15 RD 读选通
16 BLCS 背光使能
17 RST 复位
18 NC(Vlcd) 空脚(液晶驱动电压)
19 A 背光电源+
20 K 背光电源-
HD66421的接口时序如图2所示。
根据HD66421的数据手册,在显示模块的板子上加入如图1的液晶驱动电压分配电路;同时为方便使用,还加入了LCD驱动电压的产生电路,使用MAX1878芯片产生15V的液晶驱动电压(也可以从18脚直接输入Vlcd),还可以产生一个低压输出,可从3脚输出Vout给外部系统。因为HD66421具有内部数字调节LCD偏置电压的功能,所以外接的Vlcd可以接一固定值,无需调节单元。另外,在板上还有1片用于驱动3只白色LED作为背光源的MAX1916。它由16脚VLCS控制点亮,19、20脚是直接驱动3只白色LED的接线;以后还希望能加上用IMP803驱动的EL背光板。图3是显示模块的部分原理图。

2 应用实例
下面结合Fantasy Studio的AVRISP开发板,用HD66421来显示4级灰度图像。AVRISP开发板上带有通用的液晶显示模块接口,可以把我们的模块直接插在上面,但是应注意把3、18脚置为NC。在这个应用中,先在PC机上处理一幅160×100的4级灰度图像,使用串口调试工具发送到AVRISP开发板,图像被保存到板上的24C64串行非易失存储器中(每幅图像4KB),通过AVRISP板上的按键接制可以显示出刚下载的图像。
AVR单片机对HD66421的控制访问是通过通用液晶显示模块接口实现的。AVRISP开发板的连接是如下定义的:
PC0→RS寄存器选择;
PC1→WR写选通;
PC2→CS片选;
PA0~7→BD0~7数据总线;
PC6→RD读选通;
PC7→BLCS背光使能;
PC5→RST复位。
按照HD66421文档的描述:首先,是上电复位;然后,R0寄存器PWM、AMP位置位(打开外部Vlcd和内部运放的电源),根据实际情况设置R0、R1寄存器中CNF、ADC、DTY1、DTY0、INC位,写数据到其它控制参数寄存器和显存;最后,设置R0中的DISP位,打开显示、HD66421的所寄存器如表1所示。
表1
CS
RS |
索引位 |
|
寄存器名称 |
R/W |
数据位 |
4
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1
- |
- |
- |
- |
- |
- |
|
|
- |
|
|
|
|
|
|
|
|
0
0 |
- |
- |
- |
- |
- |
IR |
索引寄存器 |
W |
|
|
|
IR4 |
IR3 |
IR2 |
IR1 |
IR0 |
0
1 |
0 |
0 |
0 |
0 |
0 |
R0 |
控制寄存器1 |
W |
RMW |
DISP |
STBY |
PWR |
AMP |
REV |
HOLT |
ADC |
0
1 |
0 |
0 |
0 |
0 |
1 |
R1 |
控制寄存器2 |
W |
BIS1 |
BISO |
WLS |
GFAY |
DTY1 |
DYT0 |
INC |
BLK |
0
1 |
0 |
0 |
0 |
1 |
0 |
R2 |
X地址寄存器 |
W |
|
|
XA5 |
XA4 |
XA3 |
XA2 |
XA1 |
XA0 |
0
1 |
0 |
0 |
0 |
1 |
1 |
R3 |
Y地址寄存器 |
W |
|
YA6 |
YA5 |
YA4 |
YA3 |
YA2 |
TA1 |
YA0 |
0
1 |
0 |
0 |
1 |
0 |
0 |
R4 |
显存控制寄存器 |
R/W |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0
1 |
0 |
0 |
1 |
0 |
1 |
R5 |
起始行寄存器 |
W |
|
ST6 |
ST5 |
ST4 |
ST3 |
ST2 |
ST1 |
ST0 |
0
1 |
0 |
0 |
1 |
1 |
0 |
R6 |
闪烁起始寄存器 |
W |
|
BSL6 |
BSL5 |
BSL4 |
BSL3 |
BSL2 |
BSL1 |
BSL0 |
0
1 |
0 |
0 |
1 |
1 |
1 |
R7 |
闪烁终止寄存器 |
W |
|
BEL6 |
BEL5 |
BEL4 |
BEL3 |
BEL2 |
BEL1 |
BEL0 |
0
1 |
0 |
1 |
0 |
0 |
0 |
R8 |
闪烁寄存器1 |
W |
BK0 |
BK1 |
BK2 |
BK3 |
BK4 |
BK5 |
BK6 |
BK7 |
0
1 |
0 |
1 |
0 |
0 |
1 |
R9 |
闪烁寄存器2 |
W |
BK9 |
BK9 |
BK10 |
BK11 |
BK12 |
BK13 |
BK14 |
BK15 |
0
1 |
0 |
1 |
0 |
1 |
0 |
R10 |
闪烁寄存器3 |
W |
|
|
|
|
BK16 |
BK17 |
BK18 |
BK19 |
0
1 |
0 |
1 |
0 |
1 |
1 |
R11 |
局部显示模块寄存器 |
W |
|
|
|
CLE |
PB3 |
PB2 |
PB1 |
PB0 |
0
1 |
0 |
1 |
1 |
0 |
0 |
R12 |
灰度色盘1 |
W |
|
|
|
GP14 |
GP13 |
GP12 |
GP11 |
GP10 |
0
1 |
0 |
1 |
1 |
0 |
1 |
R13 |
灰度色盘2 |
W |
|
|
|
GP24 |
GP23 |
GP22 |
GP21 |
GP20 |
0
1 |
0 |
1 |
1 |
1 |
0 |
R14 |
灰度色盘3 |
W |
|
|
|
GP34 |
GP33 |
GP32 |
GP31 |
GP30 |
0
1 |
0 |
1 |
1 |
1 |
1 |
R15 |
灰度色盘4 |
W |
|
|
|
GP44 |
GP43 |
GP42 |
GP41 |
GP40 |
0
1 |
1 |
0 |
0 |
0 |
0 |
R16 |
对比度控制寄存器 |
W |
|
CM1 |
CM0 |
CC |
CC |
CC |
CC |
CC |
0
1 |
1 |
0 |
0 |
0 |
1 |
R17 |
屏选择寄存器 |
W |
|
|
|
|
|
MON |
DSEL |
PSEL |
0
1 |
1 |
0 |
0 |
1 |
0 |
R18 |
以下保留 |
- |
|
|
|
|
|
|
|
|
在整个操作中,特别要注意如下几个寄存器。索引寄存器(1R)
用来存放寄存器索引号,从18个寄存器中选取1个操作。
控制寄存器1(R0)
RWM读写方式选择
1:仅在写操作后地址自动加1;0:读写操作后地址都自动1加。
1:开显示;0:关显示。
STBY待机开关
1:进入待机方式;0:普通方式。
PWR外部Vlcd控制
1:打开Vlcd;0:关闭Vlcd。
AMP内部运放电源
1:打开;0:关闭。
REV翻转显示
1:翻转;0:普通。
HOLT挂起
1:内部操作停止;0:内部操作开始。
ADC左右翻转
1:翻转;0:普通。
控制寄存器2(R1)
BIS1、BIS0 液晶偏置电压选择(1/8对应较低Vlcd,1/11则对应较高的Vlcd)
11:1/8偏置电压;10:1/9偏置电压;01:1/10偏置电压;00:1/11偏置电压。
VLS数据宽度
1:6BIT;0:8BIT。
GRAY灰度选择
1:4级固定灰度;0:4个灰度值可从32级灰度中选择。
DTY1、DTY0显示行数(应该选择100行)
11:8行;10:64行;01:80行;00:100行
INC 自增1选择
1:X地址自增1;0:Y地址自增1。
BLK使用闪烁功能
1:打开;0:关闭。
对比度控制(R16)
CM1、CM0 LCD交替驱动周期(影响不大)
11:Frame;10:7Lines;01:11Lines;00:13Lines
CC4~CC0 对比度级别(数值越小需要Vlcd越低,应选择中间值)
00000:0/31;
00001:1/31;
.
.
.
11110:30/31;
11111;31;
如果以上几个寄存器设置不当,就无法显示出图像。
使用VC在PC上编写了一个处理图像的小程序,把160×100的真彩BMP图像经过误差分散算法处理,生成用于下载二进制数据的文件,用串口调试软件的文件发送功能传送到AVRISP开发板,由AT90S8515芯片内的服务程序接收数据,并转存到24CXX串行存储器上(应使用24CXX存储器的PAGE模式来提高数据写入速度)。因为使用了24C256,这样可以存储8张图像,显示效果很理想。AVRISP开发板的ISP编程接口也非常易用,配合CVAVR C编译软件,调试起来非常方便。希望和大家交流,我的邮箱zhao_xin@eyou.com。
HD66421应用程序包见网络补充版。(使用CVAVRC编译器)。
3 总结
本文详细介绍了用HD66421液晶板制成通用液晶显示模块的方法,并且实例具体说明了以HD66421为核心的4级灰度液晶显示模块的应用,为小型测控仪器和手持设备提供了一个较为廉价的灰度图像显示解决方案。文中的HD66421液晶板可以从http://www.21icsearch.com/TMC.HTM(中国电子网特买场)购得;有关AVRISP开发板请参考http://51kaifa.diy.163.com/avr/avr.html。 ()