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