摘 要:本文在簡介中文液晶顯示器LCM12832ZK的結(jié)構(gòu)、功能的基礎(chǔ)上,介紹PIC16F877單片機(jī)與LCD液晶顯示器接口通訊和軟件編程特點,以及電機(jī)軟起動參數(shù)修改。
關(guān)鍵字:單片機(jī) PIC16F877 液晶顯示器 LCM12832ZK 中文字庫
1 引言
由于LCD液晶顯示器具有功耗低、體積小、重量輕、超薄等諸多其他顯示器無法比擬的優(yōu)點,已廣泛應(yīng)用于各種智能型儀表和低功耗電子產(chǎn)品中。點陣式或圖形式LCD不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實現(xiàn)屏幕上下滾動、動畫、閃爍、文本特征顯示等功能,用途十分廣泛。
2 鍵盤設(shè)計原理
采用美國Microchip Technology公司的8位PIC16F877單片機(jī),利用RB口電平變化中斷來實現(xiàn)參數(shù)修改,通過查表方式可以選擇兩百多種起動方式以及選定起動方式下兩百多個參數(shù)值輸入,其最大的選擇值取決于寄存器N和M的上限值,如圖1所示。
讀RB口狀態(tài)要進(jìn)行軟件消抖處理,即讀入RB口狀態(tài),然后軟件延時大約50ms再讀入RB口狀態(tài),兩次狀態(tài)相同說明狀態(tài)正確,防止抖動引起誤操作。
3 中文液晶顯示器LCM12832ZK與單片機(jī)PIC16F877硬件接線
本設(shè)計單片機(jī)PIC16F877與中文液晶顯示器LCM12832ZK采用模擬串行通信方式,單片機(jī)RD5引腳接液晶顯示器串行時鐘線E,單片機(jī)RD6引腳接液晶顯示器數(shù)據(jù)線RW,單片機(jī)RD7引腳接液晶顯示器串行選通線RS。
如圖2所示,R1用來調(diào)節(jié)液晶顯示器背光源亮度,R2用來調(diào)整液晶顯示器中文字幕的輝度。調(diào)節(jié)電位器R2到適當(dāng)值對字幕顯示來說很重要,當(dāng)R2過大液晶顯示器黑屏;當(dāng)R2過小,液晶顯示器過亮,看不到字體顯示。
RB口要設(shè)置為弱上拉。利用RB口電平變化中斷,通過查表方式找到相應(yīng)的中斷服務(wù)子程序,最多有兩百多種參數(shù)可選擇,操作簡單方便。
4 中文液晶顯示器LCM12832ZK的串行及并行接口
4.1 LCM12832ZK引腳及其功能如表(1)所示:
4.2 LCM12832ZK液晶顯示基本功能
LCM12832ZK可兩行顯示,每行可顯示8個漢字。其字型ROM內(nèi)含8192個中文字型和128個半寬的字母符號字型,另外繪圖顯示畫面提供一個繪圖區(qū)域GDRAM,而且內(nèi)含CGRAM 提供4組軟件可編程的點陣造字功能。
LCM12832ZK與單片機(jī)等微控器的接口界面靈活,三種模式并行8位/4位及串行3線/2線,還可實現(xiàn)漢字、ASCII碼和點陣圖形的同屏顯示,以及具有上/下/左/右移動當(dāng)前顯示屏幕及清除屏幕的命令,具有光標(biāo)顯示/閃爍控制命令及液晶睡眠/喚醒/關(guān)閉顯示命令預(yù)留多種控制線,如復(fù)位/串并選擇/亮度調(diào)整供用戶靈活使用。
表(1):
4.3 并/串接口模塊設(shè)置
4.4 串行接口數(shù)據(jù)傳輸
本設(shè)計采用串行模式,即將模塊背面S/P的短路電阻在“S”側(cè)。在串行模式下將使用二條傳輸線作串行資料的傳送,主控制系統(tǒng)將配合傳輸同步時鐘(SCLK)與接收串行數(shù)據(jù)線(SID),來完成串行傳輸?shù)膭幼鳌?
串行接口在傳輸數(shù)據(jù)時,片選CS先置為1。當(dāng)時鐘SCLK上升緣到達(dá)時,傳輸一個數(shù)據(jù)。從一個完整的串行傳輸流程來看,一開始先傳輸起始位,它需先接收到五個連續(xù)的“1”(同步位串)在起始位元組,此時傳輸計數(shù)將被重置并且串行傳輸將被同步,再跟隨的二個BIT 分別指定傳輸方向位(RW)及暫存器選擇位(RS),RW:RS為0:0時寫命令到LCD的RAM中,RW:RS為0:1時寫數(shù)據(jù)到LCD的RAM中,最后第八位則為“0”。
在接收到起始位元組后,每個指令/數(shù)據(jù)將分為二組接收到:較高4位元(DB7~DB4)的指令資料將會被放在第一組的LSB部分,而較低4位元(DB3~DB0)的指令資料則會被放在第二組的LSB 部分,至于相關(guān)的另四位則都為0,具體如圖4所示。
5 中文液晶顯示器LCM12832ZK的串行接口程序設(shè)計
5.1 PIC16F877單片機(jī)串行端口設(shè)定
#DEFINE CS PORTD,7 ;CS是片選,工作時為1
#DEFINE SCLK PORTD,5 ;SCLK是時鐘線,上升沿動作
#DEFINE SID PORTD,6 ;SID是數(shù)據(jù)線
5.2 中文液晶顯示器LCM12832ZK的初始化過程
MOVLW .40
CALL DELAY_2
MOVLW B‘00110000‘ ;功能設(shè)定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00110000‘ ;功能設(shè)定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00001100‘ ;顯示狀態(tài)開/關(guān)
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B‘00000001‘ ;清除顯示
MOVWF DAT
CALL W_COMMOND
MOVLW .10
CALL DELAY_2
MOVLW B‘00000110‘ ;進(jìn)入點設(shè)定
MOVWF DAT
CALL W_COMMOND
5.3 中文液晶顯示器LCM12832ZK字型顯示子程序
單片機(jī)的數(shù)據(jù)和指令是以串行輸送的方式發(fā)給中文液晶顯示器LCM12832ZK模塊,每次輸1個字節(jié)。輸送時,LCM12832ZK中文液晶顯示器有固定的傳輸模式,本設(shè)計在軟件上是采用循環(huán)的方式每次輸送24個位元,具體的時序如圖5所示,其實現(xiàn)的程序如下:
MOVLW 0XB2 ;顯示“參”字子程序
MOVWF DATH ;其中“B2CE”為“參”字字庫代碼
MOVLW 0XCE
MOVWF DATL
MOVLW B‘10000000‘ ;80H為“參”字顯示位址
CALL DISPLAY
DISPLAY ;顯示通用子程序
MOVWF DAT
CALL W_COMMOND ;調(diào)用寫命令子程序
CALL DELY_1 ;調(diào)用延時100μs子程序
BSF RWRS,0 ;RWRS的1位和0位為命令與數(shù)據(jù)判斷位
BCF RWRS,1 ;bit1-bit0: 00 傳輸命令
MOVF DATH,W ;bit1-bit0: 01 傳輸數(shù)據(jù)
MOVWF DAT
CALL WRITE_1 ;調(diào)用寫數(shù)據(jù)子程序
MOVF DATL,W
MOVWF DAT
CALL WRITE_1
RETURN
6 結(jié)束語
采用PIC16F877單片機(jī)控制LCM12832ZK中文液晶顯示器以及多參數(shù)鍵盤輸入編程方法,具有實用、低價、指令小、功能強(qiáng)和簡單易學(xué)的特點,而且外部接線簡單靈活,軟件修改方便。采用的LCM12832ZK中文液晶顯示器有強(qiáng)大的字庫和圖形編輯功能,適用于各種低壓電器智能化液晶顯示部分。
參考文獻(xiàn)
[1] 劉和平,等譯.PIC16F87X數(shù)據(jù)手冊[M].北京:北京航空航天大學(xué)出版社,2001.6
[2] 劉和平,等編.PIC16F87X單片機(jī)實用軟件與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2002.3
[3]LCMXXXXZK使用說明書[M].北京:北京青云創(chuàng)新科技有限公司,2003
[4]Microchip CDROM.美國:Microchip company,2002