- 相關推薦
液晶顯示在嵌入式系統(tǒng)中的應用
摘要:介紹了液晶顯示在嵌入系統(tǒng)中的應用編程,給出了在液晶顯示與系統(tǒng)接口的應用層編程中,采用環(huán)形結構算法來達到快速、簡單地進行漢字代碼的編碼以及漢字的分頁和分行顯示的顯示應用程序。1 引言
在嵌入系統(tǒng)中,一個良好的人機界面必須提供友善的菜單,同時應能實現(xiàn)漢字和圖形顯示,并應提供英文、數(shù)字輸入和漢字輸入功能。筆者采用香港精電公司的128×64點陣顯示模塊在以MPC860作為主CPU并以Nuclus PLUS為嵌入式操作系統(tǒng)的系統(tǒng)中進行液晶顯示?取得了較為滿意的效果。圖1所示為其結構框圖。
香港精電公司的128×64點陣模塊內(nèi)部自帶液晶圖形顯示控制芯片T6963,其中C/D腳用于控制字與數(shù)據(jù),RD和WR分別為讀、寫使能端。當WR為低時,C/D為高為寫命令,C/D為低為寫數(shù)據(jù);而當RD為低時,C/D為高為讀狀態(tài)?C/D為低為讀數(shù)據(jù)。另外,CE為器件使能引腳,D0~D7為數(shù)據(jù)和地址復用總線引腳。
2 應用編程
利用MPC860嵌入式系統(tǒng)的快速性,可將顯示應用程序分為兩層,其中底層為硬件接口層,上層為應用層。硬件接口層主要是顯示液晶模塊自帶的ASCII函數(shù)和顯示漢字代碼函數(shù)。由于硬件各不相同,在此不作具體介紹。而上層應用層的主要功能是提供友善的菜單,同時實現(xiàn)漢字和圖形顯示,并提供英文、數(shù)字輸入和漢字輸入功能。由于硬件接口層的隔離作用,不同的系統(tǒng)具有一定的通用性,以下重點介紹應用層編程中的漢字代碼編碼方法和顯示編程的實現(xiàn)這兩部分。
2.1 漢字代碼編碼
一般西文為8×8點陣,因而顯示一個西文字需要8個字節(jié)?而每個漢字占4個西文字體,因此顯示一個漢字需要32個字節(jié)。漢字字庫表為一張數(shù)據(jù)表? 每個漢字在數(shù)據(jù)表中,通常由32個字節(jié)組成一個點陣圖形。由于ASCII碼編碼是由0X00-0X7F表示,因此?每個漢字可由兩個字節(jié)0Xxx和0Xyy來表示,每個字節(jié)為0X80~0XFF(區(qū)別于ASCII代碼)。第一漢字定義為0X80 0X80,依此類推直至0X80 0XFF ,0X81 0X80,……,……,0XFF 0XFF ,總計可以定義128×128=16384個漢字。
一個漢字代碼表可簡單表示為:
hz code table?INT?=?
//漢字“數(shù)”的32字節(jié)的點陣圖形代碼為?
0x08?0x49?0x2A?0x08?0xFF?0x19?0x2C?0x4A?
0x10?0xFE?0x22?0x22?0x14?0x18?0x25?0x42?
0x40?0x40?0x40?0x84?0xFE?0x08?0x88?0x88?
0x88?0x90?0x50?0x20?0x50?0x88?0x0E?0x04?
//漢字“據(jù)”的32字節(jié)的點陣圖形代碼為?
0x10?0x13?0x12?0x12?0xFF?0x12?0x16?0x1B?
0x32?0xD2?0x13?0x15?0x15?0x15?0x59?0x21?
0x04?0xFE?0x04?0x04?0xFC?0x20?0x24?0xFE?
0x20?0x24?0xFE?0x04?0x04?0x04?0xFC?0x04,
…
}
2.2 顯示編程
在系統(tǒng)顯示中,主要的顯示方式有頁處理和行處理兩種。系統(tǒng)可以根據(jù)按鍵來顯示某一頁。實際上,頁也是由相應行來顯示的。頁中的行可由按鍵來改變。一個頁能顯示8行ASCII碼或4行漢字代碼,帶有漢字的行一般要占有2個只有ASCII碼的行,而頁可以由任意多行組成。顯示時,通過按鍵可控制能顯示行,并可在行中輸入漢字或ASCII碼。
在設計中,所有的頁可組成一個環(huán)形隊列結構,頁中的行也可組成一個環(huán)形隊列結構,其關系如圖2所示。圖3所示是該系統(tǒng)的顯示流程。
下面給出一個行結構:
typedef struct lcdLine
{
struct lcdLine *previous? //前一行
struct lcdLine *next? //后一行
unsigned short lineId? //行特征字
unsigned char showflag? //是否顯示漢字
unsigned char start? //顯示行號 ,漢字一
定是奇數(shù)行如 1,3,5,7
unsigned char lcdseg?16??
//顯示的代碼如是ASCII碼,0X10顯示0,
0X3C顯示\ ?漢字為0X80 0X81 顯示漢字“據(jù)”
void ?*flcdLine??struct lcdLine * plcdLine??
//處理行函數(shù)
};
由于頁是由行組成的,所以頁結構的定義如下:
typedef struct lcdPage
{
struct lcdLine *firstLine? //該頁中的第一行
struct lcdPage *previous? //前一頁
struct lcdPage *next? //后一頁
unsigned short pageId? //頁特征字
} lcdPage?
【液晶顯示在嵌入式系統(tǒng)中的應用】相關文章:
Openprocess在熱網(wǎng)監(jiān)控系統(tǒng)中的應用06-04
探析Openprocess在熱網(wǎng)監(jiān)控系統(tǒng)中的應用05-29
談Openprocess在熱網(wǎng)監(jiān)控系統(tǒng)中的應用06-09
談智能決策支持系統(tǒng)及其在林業(yè)中的應用研究08-21
電氣自動化系統(tǒng)在石油化工行業(yè)中應用論文05-14
一個嵌入式系統(tǒng)的Petri網(wǎng)模型與CPLD實現(xiàn)05-29
智能控制及其在機電一體化系統(tǒng)中的應用(通用5篇)05-23
淺析貝葉斯網(wǎng)絡在自適應超媒體系統(tǒng)中應用研究05-29