PIC16F877单片机的图形液显示模块接口技术
movlw 0xff
movwf TRISD ;设置D口输入方式
bcf STATUS,RP0
movf PORTD,0
movwf lcdflag ;读入状态并查询
btfsc lcdflag,5 ;是否确定打开
goto Disp
return
Disoff ;关E1显示
movlw 0xae ;控制命令入在W中
call Cwe
bsf PORTB,4 ;E1=1
bsf PORTB,1 ;R/W=1
bcf PORTB,0 ;A0=0
bsf STATUS,RP0
movlw 0xff
movwf TRISD
bcf STATUS,RP0
movf PORTD,0
movwf lcdfiag ;读入状态并查询
btfss lcdfiag,5 ;判是否关闭
gogo Disoff
return
Cler ;清屏
movlw 0xb8 ;设置页地址代码
movwf pageadd
movlw 0x04
movwf pagenum ;设置总页数
clr1 movf pageadd,0
call Cwe
movlw 0x50 ;设置总列数
movwf clmsum ;80或60列
movlw 0x00
movwf clmadd ;设置起始列
clr2 movlw 0x00
call Dwe ;写入00H
clar decfsz clmsum,1 ;本页未清完
goto pageadd,1 ;页号增1
decfsz pagenum,1 ;4页未清完
goto clr1 ;返回继续
return
有了以上的通用子程序,就可以构造出各种显示程序,如字符、汉字、曲线等。当然,在这些程序执行前必须对液晶进行初始化。初始化的顺序为:关显示→正常显示驱动设置→占空比设置→复位→ADC选择→清屏→开显示。程序如下:
初始化子程序
Lcdinit
call Disoff ;关显示
movlw 0xa4 ;静态显示驱动
call Cwe
movlw 0xe2 ;复位
call Cwe
movlw 0xa0 ;ADC选择正常输出
call Cwe
movlw 0x9 ;占空比为1/32
call Cwe
call Cler ;清零
call Disp ;开显示
return
对于字符、汉字和曲线显示的原理是类似的。它们都是以字节为单位进行显示。关键在于形成字模库时必须保证每个上字节数据的最高位是与每一列最下面一个点相对应,最低位与每一列最上面点相对应。当然,这可以用专门的软件来生成相应的代码,然后再将这些代码逐字节地写到相应的页和列。
结束语
PIC单片机与液晶模块的接口只在硬件上满足液晶模块的接口要求,软件上能够模拟出要求的时序,并且初始化正确后,就可以随心所欲地显示信息了。
以上接口电路和程序在PIC试验板上调试通过,可作为其他单片机与LCD接口的参考。