基于STC89C52和HT1621D的液晶显示系统的设计
扫描二维码
随时随地手机看文章
液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄、可视面积大,画面效果好、分辨率高,抗干扰能力强等许多其他显示器无法比拟的优点,近几年来被广泛应用于单片机控制的智能仪器、仪表和低功耗电子系统中。在以单片机为核心的微控制系统中,单片机与显示器件的接口是一个必不可少的环节,具体工作包括选择显示器件的类型,接口采用串行方式还是并行方式等问题。本文针对单片机控制的智能化工业设备对人机对话接口简单、便捷的要求,详细讨论段式液晶模块HT1621D与单片机STC89C52的一种硬件接口电路和软件编程方法。
1 HT1621液晶模块与STC89CS2单片机
HT1621是128点内存映像和多功能的LCD驱动器,HT1621的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示子系统。静态显示内存RAM以32×4位的格式储存所显示的数据。RAM的数据直接映像到LCD驱动器,可以用READ,WRITE和READ-MODIFY-WRITE命令访问。HT1 621D引脚图如图1所示。
图1 HT1621D引脚图
各引脚功能如下:
COM0~COM2:LCD公共输出口。
SEG1~SEG31:LCD段输出口。
:片选输入,接一上拉电阻。当为为高电平,读写HT1621的数据和命令无效,串行接口电路复位;当为低电平和作为输入时,读写HT1621的数据和命今有效。
:READ脉冲输入,接一上拉电阻。在信号的下降沿,HT1621内存的数据被读到DATA线上,主控制器可以在下一个上升沿时锁存这些数据。
:WRITE脉冲输入,接一上拉电阻。在信号的上升沿,DATA线上的数据写到HT1621。
DATA:外接上拉电阻的串行数据输入/输出。
VSS:负电源;地。
VLCD:LCD电源输入。
VDD:正电源。
:时基或看门狗定时器溢出标志,NMOS开漏输出。 BZ:声音频率输出。
STC89C52是一种低功耗、高性能CMOS 8位单片机,最突出的优点是片内集成了8 KB可重复编程的FLASH程序存储器。具有ISP功能,可直接通过串口下载用户程序,方便调试程序,内部8 KB的FLASH E2PROM使用户编制的程序及需要显示的字母、数字、汉字和图形都可以存储在里面,免去了扩展外部存储器的麻烦,使以STC89C52单片机为核心的控制系统电路更简单,十分适用于液晶显示,在智能仪器、仪表和低功耗电子产品中被广泛选用。
2 硬件电路设计
考虑到单片机的外围扩展电路尽可能少,硬件结构越简单越好。如果液晶显示器的8位数据线与单片机采用并行接口的话,数据线就占用了8位,再加上其他的一些控制线,将占用较多的I/O口线,因此在很多仪器仪表的应用中,将液晶显示器的8位数据线与单片机通过串行输入并行输出器件进行串行接口,实现实用准确的数据传输方式。HT1621与微控制器之间只需三根线进行连接,即将HT1621的三个管脚,DATA和分别与单片机的P3.4,P3.3和P3.5相连。
HT1621D只有四根管脚用于接口,管脚用于初始化串行接口电路和结束主控制器与HT1621之间的通讯。管脚设置为“1”时,主控制器和HT1621之间的数据和命令无效并初始化。在产生模式命令或模式转换之前,必须用一个高电平脉冲初始化HT1621的串行接口。管脚DATA是串行数据输入/输出管脚,读/写数据和写命令通过管脚DATA进行。管脚是读时钟输入管脚,在信号的下降沿时,数据输出到管脚DATA上,在信号上升沿和下一个下降沿之间,主控制器应读取相应的数据。管脚是写时钟输入管脚,在信号上升沿时,管脚DATA上的数据、地址和命令被写入HT1621。可选的管脚可用作主控制器和HT1621之间的接口,可用软件设置作为定时器输出或WDT溢出标志输出。主控制器与HT1621的相连接后,可以实现时基或WDT功能。其硬件电路如图2所示。
图2 LCD显示电路
3 软件设计
3.1 LCD驱动器相关命令
HT1621可以用软件设置。两种模式的命令可以配置HT1621和传送LCD所显示的数据。HT1621的配置模式称为命令模式,命令模式类型码为100。命令模式包括一个系统配置命令,一个系统频率选择命令,一个LCD配置命令,一个声音频率选择命令,一个定时器设置命令和一个操作命令。数据模式包括READ,WRITE和READ-MODIFY-WRITE操作,数据和命令模式类型如下:
模式命令应在数据或命令传送前运行。如果执行连续的命令,命令模式代码即100,将被忽略。当系统在不连续命令模式或不连续地址数据模式下,管脚应设为“1”,而且先前的操作模式将复位。当管脚返回“0”时,新的操作模式类型码应先运行。
3.2 工作时序
只看掌握和熟悉了HT1621的工作时序图才能更好地进行软件编程。HT1621的命令模式时序图如图3所示,写模式的时序图如图4所示。
图3 命令模式时序图
图4 WRITE模式的时序图
WRITE101
a5 a4 a3 a2 a1 a0 d0 d1 d2 d3写数据到RAM
a5~a0 RAM地址;d3~d0 RAM数据
3.3 LCD显示程序的编写
要正确的编写出LCD显示程序,需要知道HT1621的段与液晶显示屏的对应情况。RAM的数据直接映像到LCD驱动器,RAM可看成是由SEG1~SEG31和COM0~COM2对应组成的映像图。HT1621的RAM段码映射如表1所示。
表1 HT1621的RAM段码映射表
液晶显示屏上要显示的每一个符号都对应于RAM中的一位,要显示哪位只需将该位对应的单元即SEG和COM相交的地方置“1”就可以了,若不要显示则将该位送“0”。对于0~9的数字显示是采用七段码来显示的。在编写显示程序时可以将要显示内容的显示代码放在一个表中,然后在程序中可以通过查表的方式根据此显示代码查出对应要显示的内容。LCD显示子程序流程如图5所示。
图5 LCD显示子程序流程图
4 结语
本文详细地介绍了段式液晶显示模块HT1621与单片机STC89C52的一种实用的硬件接口电路和软件编程方法,该设计不但硬件电路简单可靠,可方便显示汉字、字符和图形,而且节约了单片机的口线,使系统资源得到了充分利用,实现了交互式显示和图文并茂的人机界面效果,并且已成功应用在多种家用电器和工业设备中,有很好的实用价值。