1 引言 隨著信息技術的發展,人們越來越頻繁地面對各種各樣的顯示裝置,其中液晶顯示(LCD)是一種最有前景的顯示裝置,目前已廣泛應用于移動通訊、儀器儀表、電子設備、家用電器等各方面。與傳統顯示模塊相比,采用 SED1335LCD液晶驅動器和 320×240點陣式圖形液晶顯示模塊,使顯示信息量增大、操作簡化、界面友好、外形美觀,不僅可以采用數字形式顯示信息數據,而且可以采用圖形畫面來顯示。 2 SED1335控制器 SED1335是 SEIKO EPSON公司出品的一種高性能的液晶顯示控制器。它具有較強的 I/O緩沖器,指令功能很豐富,并且四位數據并行發送,最大驅動能力為 640×256點陣。 SED1335硬件結構可分成 MPU接口部、內部控制部和驅動 LCM 的驅動部。硬件結構圖如圖1所示。 SED1335的 MPU接口部由指令輸入緩沖器、數據輸入緩沖區、數據輸出緩沖器和標志寄存器組成。作為微機的一種外圍接口芯片, SED1335通過數據總路線接收來自 CPU的指令和數據。它具有 2個通道,一個為指令口,用來接收 CPU的指令碼;另一個為數據口,用來接收和發送指令參數和顯示數據。系統共用數據總線,由 A0口來區分:高電平時,為指令碼,低電平時,為指令參數或顯示數據。 SED1335與 8031單片機的硬件連接如圖 1所示。在圖 1中,用 8031的 P2.7口作為 SED1335的片選信號,用 P2.0口與 SED1335的 A0口連接。這樣當 SED1335的指令地址為 8100H,數據地址為 8000H。 SED1335內部控制部是 SED1335的核心。它由振蕩器、功能邏輯電路、顯示 RAM管理電路、字符庫及其管理電路以及產生驅動時序的時序發生器等組成。振蕩器工作頻率可在 1M~10M Hz范圍內選擇。SED1335能在很高的工作頻率下迅速地解譯 MPU發來的指令代碼,將參數置入相應的寄存器內,并觸發相應的邏輯功能電路運行。其中最重要的特點是能分區管理 64k的顯示存儲器,可以同時管理 3個或 4個顯示區。顯示區可以根據數據的性質設置為圖形方式或文本方式。在圖形方式下,該顯示區的數據被認為是 8位的顯示數據而直接送到液晶顯示驅動系統顯示;在文本方式下,該顯示區的數據被認為是字符代碼。 SED1335 驅動部具有各顯示區的合成顯示能力傳輸數據的組織功能及產生液晶顯示模塊所需要的時序,向液晶顯示模塊傳輸數據的方式為4位并行方式。 3 SED1335軟件控制實現 SED1335有 13條指令,多數指令帶有參數,參數值由用戶根據所控制的液晶顯示模塊的特征和顯示的需要來設置。通過指令可以完成 LCD的初始化、光標、顯示合成方式和顯示數據的輸入輸出等。根據顯示屏的特點對 SED1335控制器的各參數進行設定,對于 320 ×240點陣式圖形液晶,在 Keil C51單片機軟件開發平臺中編寫的初始化程序如下: unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xef,0x28,0x00}; unsigned char SCRTAB[10]={0x00,0x00,0xEF,0x80,0x25,0xef,0x00,0x50,0x00,0x00}; …… outportb( LcdComPort, 0x40 ); for(i=0;i<8;i++) outportb( LcdDatPort, SYSTAB); //初始化,顯示窗口設置 ,共 8個參數 …… outportb( LcdComPort, 0x44 ); for(i=0;i<10;i++) outportb( LcdDatPort, SCRTAB); //設置顯示區域 ,共 10個參數 …… 在圖形方式下顯示漢字,其漢字庫是建立在系統程序內,由程序逐字節地向圖形顯示區相應單元寫入,然后在顯示屏上顯示出相應的漢字。首先在程序中定義漢字字庫數組: unsigned char HZ[][32] ={ /*-- 文字: 漢 --*/ /*-- 宋體 12; 此字體下對應的點陣為:寬 x高=16x16 --*/ 0x20,0x00,0x10,0x00,0x17,0xFC,0x02,0x08,0x82,0x08,0x49,0x10,0x49,0x10,0x11,0x10, 0x10,0xA0,0x20,0xA0,0xE0,0x40,0x20,0xA0,0x21,0x18,0x26,0x0E,0x28,0x04,0x00,0x00, /*-- 文字: 字 --*/ /*-- 宋體 12; 此字體下對應的點陣為:寬 x高=16x16 --*/ 0x02,0x00,0x01,0x00,0x3F,0xFC,0x20,0x04,0x40,0x08,0x1F,0xE0,0x00,0x40,0x00,0x80, 0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00, } 然后,將 16x16漢字點陣分為左右兩部分,分別驅動顯示: lcd_write_16_8( x0, y0, HZ[0], 16, 2,); lcd_write_16_8( x0+8, y0, &HZ[0][1], 16, 2); 其中,16 x8點陣顯示子程序如下: void lcd_write_16_8 ( int x, int y, unsigned char* hfont) { unsigned int Z, i,j; //計算光標位置 Z = (x >> 3) + y * 40; // 設置光標自動往下 outportb( LcdComPort, 0x4f ); // 設置液晶屏上的光標位置 outportb( LcdComPort, 0x46 ); outportb( LcdDatPort, Z ); outportb( LcdDatPort, Z>>8 ); // 將顯示數據發送到顯示緩沖區 outportb( LcdComPort, 0x42 ); for( i=0,j=0; i<16; i++ ) { outportb( LcdDatPort, hfont[j] ); j+=2; } } 最終顯示的漢字如圖 3所示: 4 結束語 在實際的單片機系統中,往往都需要良好的用戶界面,其中 LCD是被大量采用的顯示器件。通過 SED1335圖形液晶控制器,在單片機和 LCD之間加入一條雙向的快速通道,可以在不增加任何成本的情況下,大大提高單片機系統的顯示性能。 SED1335液晶顯示控制器是一種集控制與驅動于一身的顯示控制器件,其最大的特點是特別適合在光線不足的條件下實現圖文信息顯示。由于該模塊亮度高,可以滿足在光線較暗的環境中顯示的要求,而且性能可靠,價格適中。另外,它還具有接口方便、編程簡單等優點,可以被廣泛地應用在辦公自動化設備、工業控制儀器表、家用電器等各種領域中。 在作者實際參與的項目中充分利用了SED1335圖形液晶控制器,節約了項目投入的成本,并提高了系統的顯示性能,直接和間接經濟效益達200萬元。 本文作者創新點:研究了 SED1335液晶顯示控制器應用于單片機系統的顯示模塊中,同時提出了其在圖形方式下漢字顯示的軟件設計。 作者:楊洋 來源:《微計算機信息》2009年第1-2期 |