1 引言
由于LCD液晶显示器具有功耗低、体积小、重量轻、超薄等诸多其他显示器无法比拟的优点,已广泛应用于各种智能型仪表和低功耗电子产品中。点阵式或图形式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下滚动、动画、闪烁、文本特征显示等功能,用途十分广泛。
2 键盘设计原理
采用美国Microchip Technology公司的8位PIC16F877单片机,利用RB口电平变化中断来实现参数修改,通过查表方式可以选择两百多种起动方式以及选定起动方式下两百多个参数值输入,其最大的选择值取决于寄存器N和M的上限值,如图1所示。
读RB口状态要进行软件消抖处理,即读入RB口状态,然后软件延时大约50ms再读入RB口状态,两次状态相同说明状态正确,防止抖动引起误操作。
3 中文液晶显示器LCM12832ZK与单片机PIC16F877硬件接线
本设计单片机PIC16F877与中文液晶显示器LCM12832ZK采用模拟串行通信方式,单片机RD5引脚接液晶显示器串行时钟线E,单片机RD6引脚接液晶显示器数据线RW,单片机RD7引脚接液晶显示器串行选通线RS。
如图2所示,R1用来调节液晶显示器背光源亮度,R2用来调整液晶显示器中文字幕的辉度。调节电位器R2到适当值对字幕显示来说很重要,当R2过大液晶显示器黑屏;当R2过小,液晶显示器过亮,看不到字体显示。
RB口要设置为弱上拉。利用RB口电平变化中断,通过查表方式找到相应的中断服务子程序,最多有两百多种参数可选择,操作简单方便。
4 中文液晶显示器LCM12832ZK的串行及并行接口
4.1 LCM12832ZK引脚及其功能如表(1)所示:
4.2 LCM12832ZK液晶显示基本功能
LCM12832ZK可两行显示,每行可显示8个汉字。其字型ROM内含8192个中文字型和128个半宽的字母符号字型,另外绘图显示画面提供一个绘图区域GDRAM,而且内含CGRAM 提供4组软件可编程的点阵造字功能。
LCM12832ZK与单片机等微控器的接口界面灵活,三种模式并行8位/4位及串行3线/2线,还可实现汉字、ASCII码和点阵图
表(1):
形的同屏显示,以及具有上/下/左/右移动当前显示屏幕及清除屏幕的命令,具有光标显示/闪烁控制命令及液晶睡眠/唤醒/关闭显示命令预留多种控制线,如复位/串并选择/亮度调整供用户灵活使用。
4.3 并/串接口模块设置
4.4 串行接口数据传输
本设计采用串行模式,即将模块背面S/P的短路电阻在“S”侧。在串行模式下将使用二条传输线作串行资料的传送,主控制系统将配合传输同步时钟(SCLK)与接收串行数据线(SID),来完成串行传输的动作。
串行接口在传输数据时,片选CS先置为1。当时钟SCLK上升缘到达时,传输一个数据。从一个完整的串行传输流程来看,一开始先传输起始位,它需先接收到五个连续的“1”(同步位串)在起始位元组,此时传输计数将被重置并且串行传输将被同步,再跟随的二个BIT 分别指定传输方向位(RW)及暂存器选择位(RS),RW:RS为0:0时写命令到LCD的RAM中,RW:R
S为0:1时写数据到LCD的RAM中,最后第八位则为“0”。
在接收到起始位元组后,每个指令/数据将分为二组接收到:较高4位元(DB7~DB4)的指令资料将会被放在第一组的LSB部分,而较低4位元(DB3~DB0)的指令资料则会被放在第二组的LSB 部分,至于相关的另四位则都为0,具体如图4所示。
5 中文液晶显示器LCM12832ZK的串行接口程序设计
5.1 PIC16F877单片机串行端口设定
#DEFINE CS PORTD,7 ;CS是片选,工作时为1
#DEFINE SCLK PORTD,5 ;SCLK是时钟线,上升沿动作
#DEFINE SID PORTD,6 ;SID是数据线
5.2 中文液晶显示器LCM12832ZK的初始化过程
MOVLW .40
CALL DELAY_2
MOVLW B‘00110000’ ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00110000’ ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00001100’ ;显示状态开/关
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00000001’ ;清除显示
MOVWF DAT
CALL W_COMMOND
MOVLW .10
CALL DELAY_2
MOVLW B‘00000110’ ;进入点设定
MOVWF DAT
CALL
W_COMMOND
5.3 中文液晶显示器LCM12832ZK字型显示子程序
单片机的数据和指令是以串行输送的方式发给中文液晶显示器LCM12832ZK模块,每次输1个字节。输送时,LCM12832ZK中文液晶显示器有固定的传输模式,本设计在软件上是采用循环的方式每次输送24个位元,具体的时序如图4所示,其实现的程序如下:
MOVLW 0XB2 ;显示“参”字子程序
MOVWF DATH ;其中“B2CE”为“参”字字库代码
MOVLW 0XCE
MOVWF DATL
MOVLW B‘10000000’ ;80H为“参”字显示位址
CALL DISPLAY
DISPLAY &nb
sp; ;显示通用子程序
MOVWF DAT
CALL W_COMMOND ;调用写命令子程序
CALL DELY_1 ;调用延时100μs子程序
BSF RWRS,0 ;RWRS的1位和0位为命令与数据判断位
BCF RWRS,1 ;bit1-bit0: 00 传输命令
MOVF DATH,W ;bit1-bit0: 01 传输数据
MOVWF DAT
CALL WRITE_1 ;调用写数据子程序
MOVF DATL,W
MOVWF DAT
CALL WRITE_1
RETURN
6 结束语
采用PIC16F877单片机控制LCM12832ZK中文液晶显示器以及多参数键盘输入编程方法,具有实用、低价、指令小、功能强和简单易学的特点,而且外部接线简单灵活,软件修改方便。采用的LCM12832ZK中文液晶显示器有强大的字库和图形编辑功能,适用于各种低压电器智能化液晶显示部分。