在以單片機為核心的嵌入式測控系統(tǒng)中,單片機與顯示器件的接口是一個必不可少的環(huán)節(jié),具體工作包括選擇顯示的器件類型,接口采用串行或并行方式以及顯示驅(qū)動的確定等問題。典型的顯示器件是LED數(shù)碼管,其亮度高,適應于大多數(shù)應用場合。缺點是接口電路復雜,功耗高。液晶顯示器件是利用液晶的電光效應制作的,具有功耗低、接口控制方便等優(yōu)點[1],而且模塊的接口信號和操作指令具有廣泛的兼容性,并能直接與單片機接口,它還具有專用指令,可方便地實現(xiàn)各種不同的操作,同樣的顯示面積LCD其功耗比LED顯示器小幾百倍,所以它特別適宜與COMS電路直接相配,液晶顯示器件已成為當代高新技術產(chǎn)業(yè)(信息產(chǎn)業(yè)中最重要的信息處理手段之一,在各類測量及控制儀表中被廣泛的應用。
液晶顯示器件可分為波段式、字符式和點陣式。其中,點陣式液晶顯示器件不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實現(xiàn)分區(qū)開窗口、反轉(zhuǎn)、閃爍等動態(tài)顯示功能,當在點陣式LCD上顯示漢字時,應先取得漢字的點陣構成數(shù)據(jù),然后將其寫入點陣式LCD的顯示存儲器中進行顯示。本文介紹基于凌陽SPCE061A單片機的液晶顯示控制設計。
圖1 HS12864-1的結構
HS12864-1具有簡單而功能較強的指令集,可實現(xiàn)字符移動、閃爍等顯示功能,共有7 條指令,單片機只需通過D/I、R/W、DB0~DB7送入數(shù)據(jù)或指令便可顯示其指定內(nèi)容或顯示方式。表1為HS12864-1的指令一覽表。
指 令 |
指 令 碼
|
功能
|
|||||||||
|
R/W
|
D/I
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
|
顯示
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1/0
|
控制顯示器的開關,
|
起始行
|
0
|
0
|
1
|
1
|
顯示起始行(0····63)
|
指定開始顯示行
|
|||||
設置X地址
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
X:0···7
|
設置X地址
|
||
設置Y地址
|
0
|
0
|
0
|
1
|
Y地址(0···63)
|
設置地址(Y地址)
|
|||||
讀
狀
態(tài)
|
1
|
0
|
B
U
S
Y
|
0
|
ON/
OFF
|
R
S
T
|
0
|
0
|
0
|
0
|
讀取狀態(tài)RST 1:復位0:正常ON/OFF 1:顯示開 0:顯示關BUSY 0:READY 1:IN OPERATION
|
寫數(shù)據(jù)
|
0
|
1
|
顯示數(shù)據(jù)
|
數(shù)據(jù)寫入DDRAM
|
|||||||
讀數(shù)據(jù)
|
1
|
1
|
顯示數(shù)據(jù)
|
數(shù)據(jù)讀入DDRAM
|
3 HS12864-1與SPCE061A單片機的硬件接口設計
SPCE061A 是繼SPCE500A等之后凌陽科技推出的又一款16位結構的微控制器。CPU內(nèi)核采用凌陽最新推出的16位u nsp微處理器芯片,比MCS-51 8位機的MCU集成度更高,使用更加靈活方便,縮短了開發(fā)周期和成本。
采用RISC 的SPCE061A 比8位的MCS 51系列執(zhí)行效率高,速度更快,較寬的工作電壓,低功耗抗干擾的設計,使061A在電池供電的應用領域更具特色,其內(nèi)置2K字SRAM和32K FLASH,32位通用可編程輸入/輸出端口,具有WatchDog等功能,在儀器儀表、工業(yè)控制和通訊產(chǎn)品等方面應用日益廣泛。
在程序設計方面μ'nSP?單片機的匯編指令針對C語言進行了優(yōu)化,所以其匯編的指令格式很多地方直接類似于C語言。另外其開發(fā)仿真環(huán)境IDE也直接提供了C語言的開發(fā)環(huán)境,C函數(shù)和匯編函數(shù)可以方便地進行相互調(diào)用[2,3]。HS12864-1與SPCE061A單片機的硬件接口電路見圖2。
圖2中采用并行通信方式,單片機的IOA0-IOA7口與液晶模塊的DB0-DB7口相連作為數(shù)據(jù)輸入輸出用;即IOB0- IOB 4口與液晶模組的CS1、CS2、D/I、R/W、E相連作為單片機對液晶的控制口。
4 顯示程序設計
在液晶上顯示整屏字符或圖像有兩種方法:一種是將所要顯示的字模數(shù)據(jù)一次性發(fā)送到顯示數(shù)據(jù)RAM中;另外一種是在屏幕上指定位置進行單獨顯示[4]。兩種方法都要在控制器空閑的條件下進行操作,在操作之前都要先讀取忙標志,判斷控制器是否處于忙狀態(tài),在一般情況下,可以用延時等待的方法代替。
本系統(tǒng)程序主要包括主程序和幾個子程序塊: LCD初始化, 液晶顯示屏選擇,LCD顯示,還有若干個控制子程序。主程序分別調(diào)用這些子程序?qū)崿F(xiàn)對液晶顯示器操作控制。程序流程圖見圖3。
圖3 程序流程圖
凌陽單片機的編程語言常用的有二種:匯編語言和C語言。匯編語言的機器代碼生成效率很高但可讀性不強,而C語言在大多數(shù)情況下其機器代碼生成效率和匯編語言相當,但可讀性和可移植性卻遠遠超過匯編語言,而且C語言還可以嵌入?yún)R編來解決高時效性的代碼編寫問題。對于開發(fā)周期來說,用C語言的開發(fā)周期通常要小于匯編語言很多。綜合以上C語言的優(yōu)點,在設計時選擇了C語言。
這里給出右半屏送命令/數(shù)據(jù)程序,說明SPCE061A單片機程序設計中對IOA /IOB口的設置。凌陽單片機控制液晶顯示部分程序如下:
本系統(tǒng)調(diào)試采用的是凌陽61板(即SPCE061A EMU BOARD)和u'nSP IDE 集成開發(fā)環(huán)境。硬件調(diào)試較為簡單,只需調(diào)節(jié)好液晶的對比度和背光亮度即可;在軟件方面,使用凌陽u'nSP IDE 軟件來編譯調(diào)試液晶程序。
在調(diào)試中字模數(shù)據(jù)來自字模生成軟件Zimo3,其生成的字模數(shù)據(jù)在本程序中不能直接使用,運行結果會出現(xiàn)字體的上下部分顛倒,需要將其順序反轉(zhuǎn)。
調(diào)試效果達到了程序設計的要求。