《武汉工程大学学报》  2011年11期 83-86   出版日期:2011-11-30   ISSN:1674-2869   CN:42-1779/TQ
STC单片机的液晶显示方案设计与实现


0引言电子技术的发展,使液晶显示在实际应用中不尽相同,产生如文献[1]中提出的解决仪器仪表的液晶显示方案以及文献[2]中的倒车雷达液晶显示方案,也有如文献[3]中提出的基于MSP430和内置T6963C的液晶显示方案.基于显示方案的不同需求,设计一种微控制器和HTG9626C01液晶的显示方案,用以解决生产生活中的应用需求.1硬件设计1.1STC12LE5408AD单片机特点STC12LE5408AD单片机由宏晶公司生产,是高速且低功耗的新一代8051单片机,指令代码完全兼容传统8051;其工作电压为3 V(依据系列的不同其工作电压也有5 V可选);工作频率范围0~35 MHz;用户应用程序空间为8 K字节;工作温度范围工业级的是-40~+85 ℃,商业级的则是0~75 ℃[4].1.2HTG9626C01型号液晶HTG9626C01型号液晶由洪泰公司设计和生产,其控制液晶显示的控制器(LCM)采用的是ST7549.ST7549是驱动和控制图形点阵液晶显示系统的一种逻辑器件.它包含102段极与68公共极的驱动电路,芯片可直接连接到微处理器,接受3线或4线串行外设接口(SPI),或8位并行接口.其显示数据可以在一个片上显示存储数据的RAM为68×102位,且在显示数据RAM的读/写操作,无需外部时钟操作,可最大限度地减少功率消耗[5].HTG9626C01型号液晶是将ST7549封装于玻璃上(COB),并有电源供给电路,驱动器,以及液晶显示存储器组成.其点阵数为96@26,显示效果为白底黑字或蓝底白字,而工作电压受ST7549的影响为2.4~3.3 V(一般设计为3 V).1.3硬件电路设计根据液晶和单片机的特点,电路图连接如图1,单片机的P2.1位连接液晶显示模块的Resb,P2.0位连接液晶显示模块的A0,P1.7位连接液晶显示模块的D0,P1.5位连接液晶显示模块的D1,P1.4位连接液晶显示模块的CSB.本次设计中液晶和单片机的工作电压都是3 V,不需要额外的电压转换电路.硬件功能的整体设计目标是:当按下开关K时,两个LED灯分别点亮和熄灭,液晶屏出现程序中设定好的字符(包含汉字和英文字母)同时蜂鸣器发出短暂的声音.在图1中,VT1和VT2可选用S9013或C8050的NPN管,VT3可选用S9015或C8550的PNP管;C1与C2的理论设计值则应小于33 PF,而外部晶振可选用6 MHz(在单片机工作范围内,当晶体振荡器丫的信号输入到STC单片机内的时钟发生器上,而时钟发生器一般都具有分频功能,将所输入的信号分解成CPU所需的时钟信号.这样,单片机所需的工作频率就初步具备了);电阻R1、R3、R5、R8可采用100 Ω的电阻,R2、R4、R6选用10 kΩ的电阻,R7则选用4.7 MΩ的电阻;蜂鸣器(BL)可采用市场常用的JHT1700.图1硬件电路图
Fig.1Hardware circuit2软件设计基于STC12LE5408AD单片机与51单片有相同的指令系统,且实现的功能相对简单,软件设计部分采用汇编语言实现,软件开发环境采用星研集成环境软件5.10版本.(该软件有如下优点:a.功能强大的项目管理功能.b.简洁清晰的软件操作界面.c.支持多种文件格式.c.丰富的调试信息.d.提供软件模拟仿真.)2.1主程序流程设计主程序流程如图2所示,当手动按下开关K时程序开始运行,进行初始化,初始化主要包括对各寄存器的状态和液晶进行初始化,针对ST7549驱动的液晶,其初始化内容一般需要设定以下参数:系统偏差(System Bias)、显示格局(Display configuration)、设定VOP值(Set VOP value)、设定VLCD范围(Set VLCD range)、设定起始显示线(Set Start line)以及显示控制(Display Control).其中显示格局依靠设置DO来实现,当DO等于1时,数据位纵向显示时MSB(最高有效位)在上面,横向显示时MSB在左边;当DO等于0时,数据位纵向显示时MSB在下面,横向显示时MSB在右边(也可表述为:数据位纵向显示时LSB(最低有效位)在上面,横向显示时LSB在左边).而VOP值的设定值决定VLCD的大小,其计算公式是:VLCD=a+VOP*b
式中b的值为0.03 V,a值的大小则由VLCD范围来确定,当PRS等于1时,a的值为6.75 V;当PRS等于0时,a的值为2.94 V.一般情况下显示控制设置为“正常显示(Normal Display)”即可.图2主程序流程图
Fig.2Flow diagram of main program初始化完成后通过清零或拉高来控制LED灯的亮灭,再调用液晶显示程序来显示需要显示的字符,最后调用蜂鸣器发声程序.至此,程序完成并结束.2.2液晶显示程序设计在液晶显示时,需要前期的初始化,还需要在显示在过程中进行一些设置和选择,液晶显示的流程图如图3所示.图3液晶显示流程图
Fig.3Flow diagram of LCD display用SPI接口向液晶写入控制信息,获取对液晶的显示控制,在第一次显示时,液晶未准备好,需要对显示的内容进行分类,如显示的内容是数字或者英文或者是汉字.确定需要显示内容的类别后,作相应的显示前准备,再调用液晶显示的控制端口,本次设计采用串口传输数据的方式实现数据的传输,数据传输后即可按设定好的格局显示在液晶屏上,显示计数器主要起两个作用,需要显示的字符个数是否显示完成,第二个是是否需要换页.换页与否由程序设定的计数器来决定,而需要显示的字符个数则是在程序编写过程赋值的.当两个判断都为真的时候表示液晶显示完成并结束程序.第11期伍儒彬,等:STC单片机的液晶显示方案设计与实现
武汉工程大学学报第33卷
需要注意的是液晶显示过程,也是单片机端口向液晶模块传输数据的过程,采用DPTR来定位需要显示字符的表或者库,也就是一个查表的过程,其常用的命令是:MOVC A,@A+DPTR 此时,DPTR作为基址寄存器,将DPTR的内容与累加器A的内容相加得到变址地址,从而找到存放显示字符的表或库.2.3汉字字体显示设计鉴于本次设计实现的功能较简单,采用自定义的字模库.参考图4,一个汉字占用16@16个点,数字则占用16@8个点,英文字符占用8@8个点(参考图5).HTG9626C01是96@26的点阵液晶屏,按前所述,可显示6个汉字的同时显示12个英文字符;或者同时显示12个数字和12个英文字符.以汉字“你”为例,字模的输出格式约定为从左到右,从上到下;取模方式为纵向8点上高位.其最终的32字节字模表如下:db 0Ch, 18h, 3Fh, 7Fh,0E0h, 1Ch, 38h, 70hdb 0F0h, 37h, 37h, 30h, 34h, 3Ch, 38h, 30hdb  00h, 00h,0FEh,0FEh, 00h, 30h, 60h,0C4hdb  02h,0FEh,0FEh, 00h,0C0h, 60h, 30h, 00h ;“你”图4汉字字模
Fig.4Chinese character font图5数字与英文字母字模
Fig.5Digital and english alphabet fonts2.4实验验证按前面所述的流程和字模库、用汇编语言编程实现,在开发环境中进行编辑和装载,若编译完成后无错误提示或发生,可将编译器生成的*.HEX文件通过烧录器烧录到单片机中,按硬件电路连接好电子器件.按下开关K,验证液晶屏显示是否正常(如图6所示),其它功能是否正常.经过测试验证,预期设计目标均已达到.图6显示效果图
Fig.6Effect diagram of display2.5系统的扩展性可将该显示方案应用于手持终端设备上,具体方法如下:a.将单片机中未使用的引脚作为手持设备的按键,通过电源连接必要的上拉(或下拉)电阻.b.添加程序中对应的单片机位操作代码,同时添加必要的字库,再修改程序中按键所需要的代码,如有需求,可修改声音部分的程序代码.也可将该显示方案应用于车载终端上用以记录货物运输的基本信息.但对信息量要求较多的需求则有一定的局限性.另外,亦可将方案进行简单的器件更换,对程序进行适当的修改,使产品具有防拆卸功能.具体如下:将总个方案形成某个具体的产品,并将开关K固定好,一旦将产品强行脱离原来固定的位置,程序跳转到报警程序(亦可启动保护模式程序)或使产品失效(无法正常工作).3结语基于STC12LE5408AD单片机与HTG9626C01液晶的特点,设计和实现了一种简单的液晶显示方案,此方案可应用于一些简单(主要在显示字符数量上要求不多)的设备上,例如车载电子标签,物流手持终端设备.与现有的成熟方案相比:其实现的成本相对低廉,同时此方案不需要像文献[6]中对LCD显示原理进行深入学习和了解,也不需要担心文献[7]中提到的单片机速度与液晶显示的匹配问题,适合初学者学习液晶显示部分的一些基本知识.但是,方案也有不可忽略的局限性.限于单片机的容量,可容纳的数据与代码有限.另外,采用汇编语言编写,使其在通用性上不具备优势.因此,在采用该显示方案形成最终产品时,可将单片机进行适当的升级并采用C/C++语言进行编程实现.参考文献: