摘 要: 在以計算機為核心的應用系統中,人機界面必不可少。為解決人機界面設計中存在的用戶操作的便捷性、工程造價、硬/軟件操作的簡便性、壓縮硬/軟件規模等難題,采用字符型液晶模塊設計了以MCS?51系列微控制器為CPU的人機界面的顯示部分。給出了硬件接口的詳實設計以及軟件設計;并對用字符型液晶模塊設計人機界面過程中常見的問題進行分析,給出解決方法。由于字符型液晶模塊具有性價比高、硬件接口簡單、軟件操作靈活方便、顯示內容豐富、體積小、低功耗等特點,特別適合袖珍儀器、儀表或便攜式設備等規模不大的中、小型應用系統的開發與研制。
關鍵詞: 字符型液晶模塊; 人機界面設計; 硬件接口設計; 軟件設計
中圖分類號: TN710?34 文獻標識碼: A 文章編號: 1004?373X(2013)15?0149?04
Application of character type LCD module in human?computer interface design
YU Cheng?jun, XU Bin, CAO Guo?qiang, CHEN Yun?jia, LI Xin?jun
(Unit 93534 of PLA, Tianjin 301716, China)
Abstract: Human?Computer interface is indispensable in the application system with computer as the core. In order to solve the problems of the convenience of user operation, the engineering costs, the convenience of hardware/software operation and control the scale of hardware/software in the design of human?computer interface. The character type LCD module is used to design display part of the man?machine interface which use the MCS?51 microcontroller as CPU. The detail design of the hardware interface and the software design is provided, and the common problems during the design of the human?computer interface with character type LCD module is analyzed and the solution is given out. The character type LCD module has the advantages of high cost effective, simple hardware interface, flexible and convenient software operation, rich display content, small volume and low power consumption. For this reason, it is very appropriate for the development of the small and medium application system, such as pocket instrument and portable equipment.
Keywords: character type LCD module; human?computer interface design; hardware interface design; software design
0 引 言
當今時代,計算機技術正以迅猛發展的勢頭,滲透到人們的學習、工作和生活的諸多領域,甚至國民經濟和國防工業的方方面面。陸續誕生了許多智能化的儀器、儀表,還有許多以計算機為基礎、以應用為中心的各種嵌入式系統。這給人們帶來了更高的工作效率、更高的生活質量。縱觀這些花樣繁多的設備,只要是以計算機為核心的應用系統,人機界面必不可少。人機界面的規模和樣式五花八門,但功能和作用不外乎以下兩點:一是用來顯示應用系統運行時產生的各種數據,為用戶了解系統的運行狀態提供必要的信息;二是讓用戶輸入系統運行時必要的各類參數,以此決定或調整系統的不同運行狀態,來協助用戶完成不同的任務。從人機界面的具體構成形式看,從發光二極管到各類數碼管以至各種液晶顯示屏,再配以由一定數量按鍵組成的鍵盤構成人機界面。有許多因素決定了在設計應用系統時選擇什么樣的人機界面。諸如用戶操作的便捷性、應用系統的總造價以及器件硬/軟件操作的簡便性,甚至應用系統的硬/軟件規模有時也能決定選擇什么樣的人機界面[1]。
液晶顯示模塊一經問世,便以其性能穩定可靠、結構緊湊、體積小巧、顯示內容豐富、硬件接口簡單、軟件操作靈活方便、性價比高等特點迎得了人們的喜愛。液晶顯示模塊是將LCD控制器、顯示數據RAM、字符ROM、點陣控制器和LCD顯示器用PCB連接到一起構成的[2]。液晶顯示模塊有字符方式和圖形方式兩類。它是前些年國內外發展很快的一項新興產業,近年來趨于成熟,性能更穩定、硬/軟件操作更簡便、成本更低廉。愈來愈多的應用系統的人機界面都采用了液晶顯示模塊。
本文以實例的方式給出了基于字符型液晶模塊與MCS?51系列微控制器為CPU的人機界面顯示部分的硬件接口詳實設計以及軟件設計與實現方法[3]。
1 字符型液晶模塊簡介
字符型液晶模塊上排列著若干個5×7或5×10點陣的字符顯示位,每個顯示位可顯示一個字符,從規格上分為每行8,16,24,40,80位,有一行、二行和四行三類。字符ROM中包括英文大小寫字母,數字(均采用與ASCII碼一致的編碼)和書寫符號等,有的甚至還支持由用戶定義的若干個字符。目前,各公司生產的相同規格的字符型液晶模塊,硬、軟件操作大體相同。本實例選用了一款通用的字符型液晶模塊。它有二個顯示行、每行16個字符位,共有32個字符位。PCB上有16個引線端,如表1所示。
表1 16×2字符型液晶模塊引腳分配表
[引腳號\符號\電平
類型\功能描述\1\VSS\??\電源\地(0 V)\2\VDD\??\+5 V\3\VEE\?-\LCD驅動\4\RS\H/L\寄存器選擇信號
H:數據寄存器,L:指令寄存器\5\R/W\H/L\H:數據讀(液晶模塊→CPU)
L:數據寫(CPU→液晶模塊)\6\E\H,H→L\使能信號\7~14\DB0~DB7\H/L\數據總線\15\LED+\--\背光LED電源\16\LED-\]
CPU通過向字符型液晶模塊的指令寄存器或數據寄存器中寫入數據即可控制顯示。對寄存器的尋址由寄存器選擇信號RS和R/W信號來完成,見表2。
字符型液晶模塊(控制器為KS0066或兼容控制器。)的指令系統共11種[4],如表2所示。
下面對每條指令進行介紹。
(1)清屏:清屏顯示和DDRAM、光標回原點。
(2)光標回原點:將光標返回到原點,移位顯示也回到初始位置,DDRAM內容保持不變。
(3)輸入模式設置:設定光標和顯示的工作模式。對液晶模塊讀/寫數據時:I/D=1,AC自動增1;I/D=0,AC自動減1。S=1,顯示移位;S=0,光標移位。
(4)顯示開/關控制:設置顯示(D)開/關、光標(C)開/關、光標位置字符閃爍(B)開/關。
(5)光標/顯示移位:在不改變DDRAM內容的條件下,光標移動或顯示移位。S/C=1:顯示移位;S/C=0:光標移動。R/L=1:向右移位;R/L=0:向左移位。
(6)功能設置:設置接口數據寬度(DL)、顯示行數(N)以及字體點陣(F)類別。DL=1:8位數據;DL=0:4位數據。N=1:兩行顯示;N=0:一行顯示。F=1:5×10點陣;F=0:5×7點陣。
(7)CGRAM地址設置:設置CGRAM地址。
(8)DDRAM地址設置:設置DDRAM地址。
(9)讀取忙標志BF和地址計數器AC:讀取BF(DB7位)和AC(低7位DB6~DB0)。BF=1:內部正執行操作;BF=0:可進行讀/寫操作。
(10)向CGRAM或DDRAM寫數據。
(11)從CGRAM或DDRAM讀數據。
表2 字符型液晶模塊指令系統表
[指令
序號\指令編碼\指令最大
執行時間
[Fosc]=
250 kHz\RS\R/W\DB7\DB6\DB5\DB4\DB3\DB2\DB1\DB0\1\0\0\0\0\0\0\0\0\0\1\1.64 ms\2\0\0\0\0\0\0\0\0\1\*\1.64 ms\3\0\0\0\0\0\0\0\1\I/D\S\40 μs\4\0\0\0\0\0\0\1\D\C\B\40 μs\5\0\0\0\0\0\1\S/C\R/L\*\*\40 μs\6\0\0\0\0\1\DL\N\F\*\*\40 μs\7\0\0\0\1\ACG\40 μs\8\0\0\1\ADD\40 μs\9\0\1\BF\AC\0 μs\10\1\0\WRITE DATA\40 μs\11\1\1\READ DATA\40 μs\]
注:DDRAM(Display Data RAM):顯示數據RAM;CGRAM(Character Generator RAM):字符產生器RAM;ACG(CGRAM Address):CGRAM地址;*:不必關心其值;ADD(DDRAM Address):DDRAM地址,與光標地址一致;AC(Address Counter):地址計數器,用于DDRAM和CGRAM。
字符液晶模塊顯示位與DDRAM地址關系見表3。
表3 字符型液晶模塊顯示位與DDRAM地址對應表
[顯示位\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\DDRAM
地址(H)\第一行\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\第二行\40\41\42\43\44\45\46\47\48\49\4A\4B\4C\4D\4E\4F\]
2 字符型液晶模塊與MCS?51 CPU接口設計
因為MCS?51系列微控制器的P0口是分時復用的地址/數據總線,所以在進行I/O設備擴展時,必須用地址鎖存器將地址信號從地址/數據總線中分離出來。本文選用74LS373作為地址鎖存器 [5]。鎖存器的控制端G與MCS?51系列微控制器的鎖存信號ALE相連,ALE在下降沿進行地址鎖存。字符型液晶模塊與MCS?51 CPU接口電路如圖1所示。
圖1 字符型液晶模塊與MCS?51 CPU接口電路圖
在I/O端口地址譯碼設計中,采用了全地址譯碼法,即將低位地址線(P0口)作為器件的片內地址,用3?8譯碼器對高位地址線(P2口)進行譯碼[6],與設計地址對應的譯碼輸出與CPU的讀、寫信號一起產生字符型液晶模塊的使能信號。根據圖1的地址設計,得到表4所示的字符型液晶模塊寄存器端口地址[7]。
表4 字符型液晶模塊寄存器端口地址表
[寄存器名稱\名稱
簡寫\地址選擇線\端口
地址\P2.7\P2.6\…\P0.1\P0.0\(A15\A14\…\A1\A0)\寫指令寄存器\CPORTW\1 0 0 * * * * * * * * * * * * 0 0\8000H\寫數據寄存器\DPORTW\1 0 0 * * * * * * * * * * * * 0 1\8001H\讀狀態寄存器\SPORTR\1 0 0 * * * * * * * * * * * * 1 0\8002H\讀數據寄存器\DPORTR\1 0 0 * * * * * * * * * * * * 1 1\8003H\]
因為字符型液晶模塊不具有中斷請求線,所以CPU以查詢方式與液晶屏交換數據、指令。字符型液晶模塊的VEE端連接了10 kΩ電位計,用來調節液晶顯示屏的對比度。
3 軟件設計與實現
對字符型液晶模塊操作的軟件設計采用模塊化設計[8?9]。在字符型液晶模塊執行一條指令期間,不能接收新的指令。字符型液晶模塊的控制器設有忙標志位(BF)。BF=1時,字符型液晶模塊控制器不能接收CPU的任何信息;BF=0時,CPU可對字符型液晶模塊控制器進行讀/寫操作。因此,CPU在向字符型液晶模塊控制器發出指令或交換數據前,應先判斷BF。BF可直接從狀態寄存器的DB7位讀出。
示例程序以從左至右逐字顯示方式進行演示[10]。
CPORTW EQU 8000H
DPORTW EQU 8001H
SPROTR EQU 8002H
DPORTR EQU 8003H
COM EQU 20H
ORG 0000H
START: JMP BEGIN
ORG 0500H
BEGIN: ACALL INILCM
BEGIN0: LCALL DL100MS
LCALL WRDAT
JMP BEGIN0
INILCM: MOV DPTR,#CPORTW ;液晶模塊初始化子程序
MOV R2,#03H
MOV A,#30H
INI: MOVX @DPTR,A ;此循環不可省
LCALL DL10MS
DJNZ R2,INI
MOV COM,#38H
;功能設置:8位數據接口;2行;5×7點陣
LCALL WRCOM
MOV COM,#08H ;關閉顯示
LCALL WRCOM
MOV COM,#01H ;清顯示屏
LCALL WRCOM
MOV COM,#06H ;顯示不移位,AC為自增方式
LCALL WRCOM
MOV COM,#0CH ;開屏幕顯示,關光標
LCALL WRCOM
RET
WRDAT: MOV COM,#01H
;寫顯示數據子程序,顯示26個大寫字母
LCALL WRCOM ;清顯示屏
MOV COM,#81H ;設置ADD值:第一行第二個顯示位
LCALL WRCOM
MOV R3,#02H
MOV A,#41H ;字符“A”的ASCII碼
SENDAT0:MOV R2,#0DH
MOV DPTR,#DPORTW
SENDAT: LCALL F_BUSY
MOVX @DPTR,A
INC A
LCALL DL10MS
DJNZ R2,SENDAT
MOV COM,#0C1H
;設置ADD值:第二行第二個顯示位
LCALL WRCOM
DJNZ R3,SENDAT0
LCALL DL100MS
RET
WRCOM: PUSH DPH ;寫指令代碼子程序
PUSH DPL
PUSH A
LCALL F_BUSY
MOV A,COM
MOV DPTR,#CPORTW
MOVX @DPTR,A
POP A
POP DPL
POP DPH
RET
F_BUSY: PUSH DPH ;檢查忙標志并等待子程序
PUSH DPL
PUSH PSW
PUSH A
LOOP: MOV DPTR,#SPORTR
MOVX A,@DPTR
JB ACC.7,LOOP
POP A
POP PSW
POP DPL
POP DPH
RET
DELAY: MOV R6,#0F9H ;延時子程序
LOOP2: NOP
NOP
DJNZ R6,LOOP2
DJNZ R7,DELAY
RET
DL10MS: MOV R7,#0EH ;延時約10 ms
LCALL DELAY
RET
DL100MS: MOV R7,#7FH ;延時約100 ms
LCALL DELAY
RET
4 需注意的問題
時序匹配的問題:MCS?51系列微控制器與字符型液晶模塊的讀/寫時序波形一致。但要注意微控制器晶振頻率的選取,因為這決定了有效數據在總線上維持的時間、讀/寫信號、寄存器選擇信號、使能信號的有效時機,以及它們的相對關系。本例中選取12 MHz的晶振作為微控制器的工作時鐘源。可正常實現對字符型液晶模塊的讀/寫操作。
若字符型液晶模塊顯示不正常時,通過調節VEE端連接的10 kΩ電位計,來改變液晶屏的對比度。
字符型液晶模塊為低速器件,向其寫指令或交換數據前,要確認字符型液晶模塊是否處于忙狀態。
盡管字符型液晶模塊是低速器件,由于人眼有視覺暫留現象,用戶仍無法跟上字符型液晶模塊的顯示刷新速度,所以在顯示數據或清屏時,要結合具體情況,采取適當的延時措施,用戶才能看清顯示的信息。
5 結 語
字符型液晶模塊硬件接口簡單、軟件操作靈活方便,大大減小了開發應用系統時在人機界面上的開銷;其顯示內容豐富,大大改善了人機界面的性能;另外,由于字符型液晶模塊具有極低功耗的特點,在袖珍式儀器、儀表或便攜式應用系統的開發領域具有更為廣闊的應用前景。字符型液晶模塊克服了圖形方式液晶模塊軟件操作復雜、造價高等弊端,可大幅提高應用系統的簡潔性、可靠性、性價比以及用戶操作的便捷性。字符型液晶模塊特別適合規模不大的中、小型計算機應用系統的開發與研制。近年來,串行接口的液晶模塊也日趨成熟,它與CPU的硬件接口更簡單。這給廣大的計算機愛好者以及從事開發研制應用系統的人員帶來了福音。
參考文獻
[1] 李學干,蘇東莊.計算機系統結構[M].西安:西安電子科技大學出版社,1998.
[2] 清達光電技術有限公司.點陣字符液晶模塊使用手冊[M].杭州:清達光電技術有限公司,2010.
[3] 郁成軍,曹國強.RS 232型多串行通道單纖光端機的設計與實現[J].現代電子技術,2012,35(17):100?106.
[4] SAMSUNG ELECTRONICS. KS0066U—16COM/40SEG driver controller for dot matrix LCD [EB/OL]. [2011?05?20]. http://www.datsi.fi.upm.es/docencia/Micro_C/lcd/ks0066u.pdf.
[5] 李華.MCS?51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,2003.
[6] 藍江橋.數字系統與邏輯設計[M].武漢:湖北科學技術出版社,1997.
[7] 白中英.計算機組成原理[M].北京:科學出版社,1999.
[8] 譚浩強.C程序設計[M].北京:清華大學出版社,1996.
[9] KRUSE R L, RYBA A. DATA structures and program design in C++ [M]. New Jersey, USA: Prentice Hall, 1998.
[10] 何立民.單片機高級教程:應用與設計[M].北京:北京航空航天大學出版社,2000.