PIC16F877單片機的液晶顯示模塊接口技術(shù)
Disp ;開(kāi)E1顯示
movlw 0xal ;將控制命令放在W中
call Cwe
bsf PORTB,4 ;E1=1
call Ste ;判是否忙
bsf STATUS,RP0
clrf TRISD ;設置D口輸出方式
bcf STATUS,RP0
bsf PORTB,4 ;E1=1
bsf PORTB,1 ;R/W=1
bcf PORTB,0 ;A0=0
bsf STATUS,RP0
movlw 0xff
movwf TRISD ;設置D口輸入方式
bcf STATUS,RP0
movf PORTD,0
movwf lcdflag ;讀入狀態(tài)并查詢(xún)
btfsc lcdflag,5 ;是否確定打開(kāi)
goto Disp
return
Disoff ;關(guān)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 ;讀入狀態(tài)并查詢(xún)
btfss lcdfiag,5 ;判是否關(guān)閉
gogo Disoff
return
Cler ;清屏
movlw 0xb8 ;設置頁(yè)地址代碼
movwf pageadd
movlw 0x04
movwf pagenum ;設置總頁(yè)數
clr1 movf pageadd,0
call Cwe
movlw 0x50 ;設置總列數
movwf clmsum ;80或60列
movlw 0x00
movwf clmadd ;設置起始列
clr2 movlw 0x00
call Dwe ;寫(xiě)入00H
clar decfsz clmsum,1 ;本頁(yè)未清完
goto pageadd,1 ;頁(yè)號增1
decfsz pagenum,1 ;4頁(yè)未清完
goto clr1 ;返回繼續
return
有了以上的通用子程序,就可以構造出各種顯示程序,如字符、漢字、曲線(xiàn)等。當然,在這些程序執行前必須對液晶進(jìn)行初始化。初始化的順序為:關(guān)顯示→正常顯示驅動(dòng)設置→占空比設置→復位→ADC選擇→清屏→開(kāi)顯示。程序如下:
初始化子程序
Lcdinit
call Disoff ;關(guān)顯示
movlw 0xa4 ;靜態(tài)顯示驅動(dòng)
call Cwe
movlw 0xe2 ;復位
call Cwe
movlw 0xa0 ;ADC選擇正常輸出
call Cwe
movlw 0x9 ;占空比為1/32
call Cwe
call Cler ;清零
call Disp ;開(kāi)顯示
return
對于字符、漢字和曲線(xiàn)顯示的原理是類(lèi)似的。它們都是以字節為單位進(jìn)行顯示。關(guān)鍵在于形成字模庫時(shí)必須保證每個(gè)上字節數據的最高位是與每一列最下面一個(gè)點(diǎn)相對應,最低位與每一列最上面點(diǎn)相對應。當然,這可以用專(zhuān)門(mén)的軟件來(lái)生成相應的代碼,然后再將這些代碼逐字節地寫(xiě)到相應的頁(yè)和列。
結束語(yǔ)
PIC單片機與液晶模塊的接口只在硬件上滿(mǎn)足液晶模塊的接口要求,軟件上能夠模擬出要求的時(shí)序,并且初始化正確后,就可以隨心所欲地顯示信息了。以上接口電路和程序在PIC試驗板上調試通過(guò),可作為其他單片機與LCD接口的參考。
評論