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