基于T6963C的LCD與ARM7的接口設計
//讀數(shù)據(jù)子函數(shù)完整源代碼
uint8 LCD_ReadData 0
{
uint8 data;
IO0DIR=IOODIR&(~DPT);//輸入數(shù)據(jù)
I01CLR=I01CLR | CD;//數(shù)據(jù)屬性
IO0SET=IO0SET | WR;
IO0SET=IO0SET | RD;
IO1SET=IO1SET | DIR;
//數(shù)據(jù)傳輸方向設定
IO0CLR=IO0CLR | CE;
IO0CLR=IO0CLR | RD;//讀有效
data=(IO0PINDPT)>>16;
//由引腳狀態(tài)寄存器讀出數(shù)據(jù)
IOOSET=IOOSET | RD;//讀無效
IO0SET=IO0SET | CE;
return (data);//返回值為讀取的數(shù)據(jù)
}
至于讀狀態(tài)和寫數(shù)據(jù)子函數(shù)的編寫,設計時可參照該子函數(shù)來完成。本文引用地址:http://www.ex-cimer.com/article/169438.htm
2.2 驅(qū)動層實現(xiàn)
接下來需要利用T6963C的指令來完成驅(qū)動層顯示功能的設置。其中部分基本指令的定義如表2所列。事實上,驅(qū)動層子函數(shù)的編寫都可通過調(diào)用寫命令、寫數(shù)據(jù)、讀狀態(tài)子函數(shù)來實現(xiàn)。
其液晶的初始化設置函數(shù)源代碼如下:
void LCD_Initialize(void)
{
LCD_WriteTCommand3(LCD_TXT_STP,0x00,0x00);//文本模式RAM起始地址
LCD_WriteTCommand3(LCD_TXT_WID, 30,0x00);//設置文本模式的寬度,寬度為N/6或N/8,N為寬度點數(shù),如240
LCD_WriteTCommand3(LCD_GRH_STP,0x00,0x00);//圖形方式RAM起始地址
LCD_WriteTCommand3(LCD_GRH_WID,30,0x00);//設置圖形模式的寬度,寬度為N/6或N/8,N為寬度點數(shù),如240
LCD_WriteTCommand 1(LCD_MOD_OR);//設置顯示方式為”或”
LCD_WriteTCommandl(LCD_DIS_SW |0x08);//設置純圖形顯示模式
}
2.3 漢字讀寫程序設計
初始化液晶后,就可設置顯示區(qū)域、顯示方式和顯示狀態(tài)。接下來應將待顯示字符的字模數(shù)據(jù)寫入顯示緩沖區(qū),以便實現(xiàn)顯示功能。對于文本方式,可先將字模數(shù)據(jù)寫入顯示緩沖區(qū)并建立CGRAM,再由數(shù)據(jù)存儲位置確定字符代碼,然后通過寫人對應代碼即可顯示字符;對于圖形顯示方式,則需將字模數(shù)據(jù)逐個字節(jié)的寫入圖形顯示緩沖區(qū)來實現(xiàn)顯示功能。二者相比各有特點,其中文本模式顯示速度快。且內(nèi)置CGROM中含128個ASCII字符,可直接調(diào)用,但需先建立CGRAM,而且容量有限,只能管理2K字節(jié)的數(shù)據(jù),比較適合于顯示字符不多的場合;而圖形模式顯示速度相對較慢,但無需建立CGRAM,用戶只需將字模數(shù)據(jù)以字節(jié)為單位寫入圖形顯示區(qū)即可,適用于所需顯示內(nèi)容較多的場合。在一般的工程應用中,漢字的顯示是比較重要的內(nèi)容,因此,本文主要介紹漢字顯示的程序設計。
評論