圖形點陣式液晶顯示器MSP-G320240在高速處
關鍵詞:液晶顯示器;DSP;接口;SED1335;MSP-G320240
1 引言
各種儀器儀表無論是測量型的儀器儀表,還是信號源型的儀器儀表,或大或小都有一個顯示子系統,這使得液晶顯示器(LCD)的應用尤為廣泛。由于液晶顯示器具有體積小、外形薄、功耗低、重量輕、工作驅動電壓低、無輻射,特別是視域寬、顯示信息量大等優點,因此,隨著現代測控技術的日益發展,液晶顯示器已經成為測量顯示結果和人機對話的重要工具。本文介紹了內嵌SED1335控制器的液晶顯示器MSP-G320240的工作原理,給出了它與DSP的接口方法及相應的C語言程序應用設計。
SED1335是日本SEIKO EPSON公司出品的液晶顯示控制器,它具有I/O緩沖器、指令功能豐富、能混合顯示圖形和文本、4位數據可并行發送、并可最大驅動640256點陣等特點。
2?。停樱校牵常玻埃玻矗昂喗?/B>
MSP-G320240是TRULY SEMICONDUCTORS公司生產的圖形點陣式液晶顯示器,圖1為其具體的電路結構。
從圖1可知,MSP-G320240的最大點陣為320240?且帶有背光功能,能夠在很寬的溫度范圍內工作(0~50℃)?內部有SED1335液晶顯示控制器。SED1335的硬件結構可分成MPU接口部分、內部控制部分和LCD驅動部分。
SED1335的接口部分由指令輸入緩沖器、數據輸入緩沖器、數據輸出緩沖器和標志寄存器組成。通過引腳的電平設置可選擇適配8080系列和M6800系列MPU的等兩種操作時序電路。
SED1335的控制部分由振蕩器、功能邏輯電路、顯示RAM管理電路、字符庫及其管理電路以及產生驅動時序的時序發生器等組成。振蕩器工作頻率可在1~10MHz內選擇,而SED1335也可在很高的工作頻率下迅速解譯由MPU發來的各類代碼。
SED1335可以管理64kB顯示RAM,同時可以管理內藏的字符發生器、外擴字符發生器CGRAM或外部CGRAM。64kB顯示RAM可分為文本顯示區、圖形顯示區和字符顯示區等三種顯示特性區。其中文本顯示區專用于文本方式顯示,區中每個字節的數據都認為是字符代碼。SED1335使用該字符代碼確定字符首地址,然后將相應的字模數據傳送出去,以在液晶屏上顯示該字符的88點陣塊;圖形顯示區用于圖形方式顯示,區中每個字節的數據直接被送出,每個位的電平狀態決定顯示屏上一個點的顯示狀態,“1”為顯示,“0”為不顯示;SED1335內的字符發生器CGROM固化了160種57點陣字符的字模;此外,SED1335還能外擴字符發生器,其代碼范圍是80H~9FH和E0H~FFH共64種。
SED1335的驅動部分具有各顯示區的合成顯示能力、傳輸數據的組織功能及產生液晶顯示模塊所需時序的功能。SED1335用4位并行方式向液晶顯示器傳輸數據。
一般來講,使用內置SED1335控制器的液晶顯示器時,設計者無需了解SED1335對液晶屏的顯示驅動、點陣掃描、顯示存儲器管理等操作,這一切都會由SED1335自動進行?因此只需清楚SED1335的各種數據指令格式、顯示存儲器的區間劃分和接口引腳的功能定義即可。
該液晶顯示器同微處理器的接口也很簡單,只要按液晶顯示器的引腳功能定義將其分別連接于微處理器的相應管腳即可。微處理器對液晶顯示器的操作有四類、共13條指令:第一類是系統控制指令(2條),用于設置SED1335的軟件初始化和顯示驅動電源狀態;第二類是顯示操作指令(7條),該類指令用于設置顯示的數據起始地址、區域、方式以及光標的顯示方式、形狀和光標地址指針的移動方向等;第三類是繪制操作指令(2條),該指令專用于對液晶屏上的像素(點)進行操作;第四類是存儲操作指令(2條),該指令用于將顯示數據寫入顯示區并把光標地址確定的數據送到緩沖區。SED1335的多數指令都帶有參數,這些參數值可根據所控制的液晶顯示器的具體特征和顯示的需要來進行設置,其指令集如表1所列。
表1 SED1335的指令集
功 能 | 指 令 | 操作碼 | 說 明 | 參數量 |
系統控制 | SYSTEM SET | 40H | 初始化,顯示窗口設置 | 8 |
SLEEP IN | 53H | 空閑操作 | - | |
顯示操作 | DISP ON/OFF | 59H/58H | 設置顯示方式 | 1 |
SCROLL | 44H | 設置顯示區域,卷動 | 10 | |
CSRFORM | 5DH | 設置光標形狀 | 2 | |
CGRAM ADR | 500H | 設置CGRAM起始地址 | 2 | |
CSRDIR | 4CH~4FH | 設置光標移動方向 | - | |
HDOT SCR | 5AH | 設置點單元卷動位置 | 1 | |
OVLAY | 5BH | 設置合成顯示方式 | 1 | |
繪制操作 | CSRW | 46H | 設置光標地址 | 2 |
CSRR | 47H | 讀出光標地址 | 2 | |
存儲操作 | MWRITE | 42H | 數據寫入顯示緩沖區 | 若干 |
MREAD | 43H | 從顯示緩沖區讀數據 | 若干 |
3?。停樱校牵常玻埃玻矗巴模樱械慕涌?/B>
TI公司的16-bit定點DSP TMS320F206是一種低功耗的DSP器件,它采用改進的哈佛結構,有1條程序總線和3條數據總線。該DSP采用流水線操作,同時具有高度并行32-bit算術邏輯單元、1616bit并行硬件乘法器、片內存儲器、片內外設和高度專業化的指令集,特別適合于信號處理,可用于工業控制領域和各類儀器儀表的開發設計。液晶顯示器MSP-G320240有8位數據線、3個電源線和5個控制線,當TMS320F206外接16MHz晶振,且工作時鐘控制模式選為1時,可以把液晶顯示器MSP-G320240的讀寫信號線同TMS320F206的讀寫信號線直接相連。圖2所示是液晶顯示器與TMS320F206的典型接口電路。
4 C語言程序設計
TMS320F206的用戶可以用匯編語言或C語言進行源程序的編寫,因為用C語言開發出的系統易于維護,可靠性高,可移植性好。下面是用C語言編寫的液晶顯示器MSP-G320240的初始化及清屏程序:
ioport unsigned int port1ff1; /*定義片選地址*/
ioport unsigned int port1ff0;
#define Lcd_wc port1ff1 /*LCD寫指令*/
#define Lcd_wd port1ff0 /*LCD寫參數*/
#define Lcd_rs port1ff0
#define Lcd_rd port1ff1
#define SYSTEM_SET 0x40 /*初始化設置*/
#define SCROLL 0x44 /*顯示域設置*/
#define SLEEP_IN 0x53 /*休閑模式設置*/
#define DISP_ON 0x59 /*顯示狀態設置顯示開*/
#define DISP_OFF 0x58 /*顯示關*/
#define OVLAY 0x5b /*顯示合成設置*/
#define HDOT_SCR 0x5a /*點位移設置*/
#define CSRFORM 0x5d /*光標形狀設置*/
#define CGRAM_ADR 0x5c /*CGRAM首址設置*/
#define CSRDIR_RG 0x4c /*光標移動方式設置光標右移*/
#define CSRDIR_LF 0x4d /*光標左移*/
#define CSRDIR_UP 0x4e /*光標上移*/
#define CSRDIR_DW 0x4f /*光標下移*/
#define CSRW 0x46 /*光標指針設置*/
#define CSRR 0x47 /*讀取光標指針*/
#define MWRITE 0x42 /*數據寫入設置*/
#define MREAD 0x43 /*數據讀取設置*/
#define Lcd AP 0x28 /*顯示屏一行所占字節數*/
#define wait() while((Lcd_rs&0x0040)==0x0040)/*等待*/
void Clear(unsigned int Add1,unsigned int Add2,unsigned int Data)
{unsigned int Counter;
Lcd_wc=CSRDIR_RG;wait();?/*Add1: 顯示區首址*/
Lcd_wc=CSRW; wait();/*Add2: 顯示區末址 */
Lcd_wd=0x00; wait(); /*Data: 顯示數據*/
Lcd_wd=0x00;wait();?
Lcd wc=MWRITE; wait();
{for_Counter=Add1;Counter<Add2;Counter++)
{Lcd_wd=Data;wait();}?
Lcd_wc=CSRDIR_DW; wait();}
void Lcd_Init( void) /*初始化液晶子程序*/
{unsigned int i; Lcd_wc=SYSTEM_SET; wait();
for(i=0;i<8;i++)/* Systab[]=0x30,0x87,
0x07,0x27,0x42,0xf0,0x28,0*/
{ Lcd_wd=Systab[i];wait();}Lcd_wc=
SCROLL; wait();
for(i=0;i<10;i++) /*Scrtab[]=0,0,
0xf0,0,0x40,0xf0,0,0x80,0,0x00*/
{Lcd_wd=Scrtab[i];wait(); Lcd_wc=
HDOT_SCR; wait(0;
Lcd_wd=0x00; wait();Lcd_wc=OVLAY;
wait();Lcd_ wd=0x08;wait();
Lcd_Clear(0,0x8000,0x00); /* 清顯示區子程序*/
Lcd_wc=DISP_ON; wait();Lcd_wd=
0x54;wait(); /*0x54*/
Lcd_wc=CSRFORM;wait();Lcd_wd=0x07;
wait();
Lcd_wd=0x87;wait();
Lcd_wc=CSRDIR_DW;wait();
評論