《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 使用SPCE061A的ACM12864J液晶顯示模塊應(yīng)用設(shè)計(jì)
使用SPCE061A的ACM12864J液晶顯示模塊應(yīng)用設(shè)計(jì)
摘要: 介紹了ACM12864J液晶顯示模塊的特性與功能,提出ACM12864J與SPCE061A微控制器的硬件接口設(shè)計(jì),,以及在此設(shè)計(jì)基礎(chǔ)之上實(shí)現(xiàn)字符顯示,、漢字顯示、圖形與曲線顯示的方法與編程技巧。
Abstract:
Key words :

摘要:介紹了ACM12864J液晶顯示模塊的特性與功能,提出ACM12864J與SPCE061A微控制器的硬件接口設(shè)計(jì),,以及在此設(shè)計(jì)基礎(chǔ)之上實(shí)現(xiàn)字符顯示,、漢字顯示、圖形與曲線顯示的方法與編程技巧,。

0. 引言
    點(diǎn)陣式平板圖形液晶顯示器在各種便攜式產(chǎn)品中具有非常廣泛的應(yīng)用,。顯示器的核心液晶顯示器控制器品種繁多,各種控制芯片在控制電路邏輯,、控制指令、指標(biāo)參數(shù)等方面各有差異,。但是對(duì)于已經(jīng)帶有控制電路的平板點(diǎn)陣式圖形液晶顯示器,,使用者無(wú)需關(guān)心其控制核心的集成芯片,控制電路的幾個(gè)信號(hào),,就可以方便地利用它進(jìn)行開發(fā),。
1. ACM12864J液晶顯示模塊的特性

   ACM12864J是采用聯(lián)合電子公司生產(chǎn)的小型液晶顯示模塊,該模塊價(jià)格低,,數(shù)據(jù)可讀寫,,自帶負(fù)壓發(fā)生電路,單+5V供電,,帶背光,,可由各種微控制器器直接控制,數(shù)據(jù)讀寫操作不受外部時(shí)鐘控制,,不帶漢字庫(kù),,占空比為1/64,外部共有20條引腳來(lái)進(jìn)行外部接口,。
ACM12864J采用的數(shù)據(jù)傳送方式是縱向數(shù)據(jù)傳送方式,,64行共分為0~7頁(yè),每頁(yè)8行,,逐頁(yè)顯,。發(fā)送數(shù)據(jù)步驟:先發(fā)送第0頁(yè)第一列,高位在下,,為一個(gè)字節(jié),;再發(fā)送第二列,直到128行結(jié)束,;然后發(fā)送第2頁(yè)第一列,,依次類推,直到整屏數(shù)據(jù)發(fā)送完為止,。,。這種數(shù)據(jù)顯示方式利用字模提取軟件,采用"縱向8點(diǎn)下高位"輸出格式取模,不做任何修改,,就能很好的顯示,。其寫時(shí)序如圖1所示。  
2.ACM12864J液晶顯示模塊應(yīng)用的硬件設(shè)計(jì)


   ACM12864J數(shù)據(jù)為8位并行數(shù)據(jù)接口,,外加數(shù)根控制線,,若直接與單片機(jī)接口,占用口線太多,。而SPCE061A內(nèi)置有SIO接口,,通過(guò)74HC164進(jìn)行的串并轉(zhuǎn)換,可以用來(lái)傳送8位并行數(shù)據(jù),。這樣加上連背光燈控制信號(hào)線也不過(guò)占用8根I/O口,。倘若不進(jìn)行讀操作,可減至7根控制信號(hào)線,。SIO的接口共有四種接口方式,,即地址為8位、16位,、24位和無(wú)地址接口,,與ACM12864J的接口采用無(wú)地址方式傳送,設(shè)置好寄存器工作狀態(tài),,即可直接傳送數(shù)據(jù),,SPCE061A的SIO接口最高傳輸率可達(dá)5Mb/S。數(shù)據(jù)的讀寫控制線由單片機(jī)的I/O線控制,,LCD所需的時(shí)序延時(shí)由編好的位操作函數(shù)直接控制,,編程時(shí)不須考慮SPCE061A與ACM12864J接口的時(shí)間要求,簡(jiǎn)化了編程,。硬件電路如圖2所示,。
3. 軟件程序編制
3.1 SIO初始化及寫數(shù)據(jù)
    SPCE061A單片機(jī)是由臺(tái)灣凌陽(yáng)科技股份有限公司生產(chǎn)的具有SOC系統(tǒng)的微控制器,該控制器內(nèi)置A/D轉(zhuǎn)換,、SIO口等,。SPCE061A的串行外圍設(shè)備接口SIO在傳送數(shù)據(jù)之前,須對(duì)SIO口控制寄存器進(jìn)行初始化,。SIO口控制寄存器P_SIO_Ctrl主要設(shè)置SIO口通信的工作模式,,包括設(shè)備地址、傳輸速度,、讀寫設(shè)置,、功能設(shè)置等。SIO口數(shù)據(jù)寄存器P_SIO_Data主要負(fù)責(zé)讀寫過(guò)程中數(shù)據(jù)的接收與發(fā)送,。SIO口的啟動(dòng)控制寄存器P_SIO_Start,,又是狀態(tài)控制寄存器,,根據(jù)P_SIO_Start的狀態(tài),判斷數(shù)據(jù)接收或發(fā)送完畢,。
SPCE061A不提供位操作指令,,對(duì)位進(jìn)行操作時(shí),要不影響其他位的狀態(tài),,可采用"讀---改---寫"的辦法,,即:先讀出某一位的的值,經(jīng)邏輯與,、邏輯或運(yùn)算,,再回寫到當(dāng)前字節(jié),即改變了I/O口的狀態(tài),。為此,,編寫位操作函數(shù)Set_IOA_Bit(n,dir,attrib,buffer,data)、Set_IOB_Bit(n,dir,attrib,buffer,data)解決上述問(wèn)題,,該函數(shù)的參數(shù)定義如下:n-位操作的位數(shù);dir,,attrib,,buffer-位操作的屬性;data-位操作的數(shù)據(jù),;,。其傳送數(shù)據(jù)的程序如下:

3.2 ASCII字符的顯示

                               
    最常用的辦法是采用字模提取軟件提取字模,這種方法在資源比較少的條件下是適宜的,。缺點(diǎn)是比較麻煩,,要來(lái)回改動(dòng),且不好尋址,。一種比較實(shí)用的方法是制作好一個(gè)ASCII字模表,,定義為一個(gè)一維數(shù)組的形式。程序中若出現(xiàn)數(shù)字變量的操作,,須把變量轉(zhuǎn)化為字符顯示時(shí),。因此,先判斷顯示的是字符還是數(shù)字,,若是數(shù)字,,先應(yīng)轉(zhuǎn)化為字符。然后再把ASCII值減去32得到索引值,根據(jù)索引值直接查表,,查得8*16的點(diǎn)陣字模,,送出顯示。在程序中可以用變量直接表示數(shù)字并進(jìn)行運(yùn)算,,顯示時(shí)只送變量,。對(duì)于SPCE061A,內(nèi)置有32K字的flash ROM,而表格又不大,,在數(shù)組前加入"const"即可把數(shù)組存到內(nèi)部的flash ROM中,。在ACM12864J中,取每個(gè)ASCII字模為8*16,,每個(gè)ASCII字模占16個(gè)字節(jié),,按ASCII從小到大的順序排列,便于查找,。
3.3 漢字的顯示
    漢字在ACM12864J上一般采用兩種取模方式:一種為12*12點(diǎn)陣,,可顯示5行漢字,缺點(diǎn)是編程較為困難,;一種為16*16點(diǎn)陣,,可顯示4行漢字,編程比較簡(jiǎn)單,。以16*16點(diǎn)陣為例來(lái)說(shuō),,每個(gè)漢字占用32個(gè)字節(jié),根據(jù)LCD顯示的要求,,利用字模提取軟件,,采用"縱向8點(diǎn)下高位"能滿足要求。
在進(jìn)行中文菜單設(shè)計(jì)時(shí),,每行可顯示8個(gè)漢字,,有個(gè)"焦點(diǎn)"問(wèn)題,編程時(shí)可設(shè)置一個(gè)"焦點(diǎn)指針",,處于焦點(diǎn)之下的反白顯示,,其他的正常顯示。這樣可把每行顯示編成一個(gè)函數(shù)的形式,,控制好焦點(diǎn),,顯示時(shí)調(diào)用一次顯示行子函數(shù)。漢字顯示程序如下(fb=1,,反白顯示):

3.4 圖形及動(dòng)畫的顯示
    圖形及動(dòng)畫的顯示一般是整屏操作的,,字模的選取可以先用windows下的畫筆工具。新建一幅128*64像素的圖片,,編完圖片后,,保存為黑白圖象。然后在字模軟件中打開,,提取出字模來(lái),。每幅圖片占用128*8個(gè)字節(jié)的空間,根據(jù)圖片數(shù)據(jù)存儲(chǔ)的特點(diǎn),,提取的鄰近字模數(shù)據(jù)相同,。若是圖片比較多或者進(jìn)行動(dòng)畫顯示,,最好進(jìn)行壓縮保存,節(jié)省控制器寶貴的資源,,讀取時(shí)編寫控制器軟件解壓縮,。
3.5 曲線的顯示與繪制
    點(diǎn)是組成曲線的基本單位,畫曲線也就是多次調(diào)用點(diǎn)函數(shù)進(jìn)行顯示的,。點(diǎn)函數(shù)編制思想也就是根據(jù)橫坐標(biāo)X(1<=X<=128),,縱坐標(biāo)Y(1<=Y<=64)來(lái)確定某一點(diǎn),而在畫函數(shù)時(shí),,X坐標(biāo)從左往右,,正好符合人的習(xí)慣。但Y坐標(biāo)從上到下依次增大,,與人相反,,故必須校正。以畫兩個(gè)周期的正弦函數(shù)為例,,可包含頭文件"math.h",,調(diào)用庫(kù)函數(shù)y=sinf(x),其中x為浮點(diǎn)數(shù)弧度顯示,,y的值介于-1與1之間,。要滿屏顯示,須加1變?yōu)檎?,放?1倍;x坐標(biāo)為128點(diǎn),,取步進(jìn)量為0.1弧度,,可參考以下程序:


    本文介紹了不帶中文字庫(kù)的ACM12864J與SPCE061A的接口技術(shù),提出了技巧性的編程解決辦法,。采用ACM12864J液晶顯示模塊,,可以顯示字符、中文漢字,、圖形與動(dòng)畫等,,提高了系統(tǒng)的可視化界面,在工業(yè)儀器儀表中得到了廣泛的應(yīng)用,。凌陽(yáng)公司生產(chǎn)的SPCE061A具有不僅具有一般控制器的功能,,加上其獨(dú)具特色的語(yǔ)音處理功能,可以開發(fā)出許多智能化的產(chǎn)品,。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。