液晶顯示器的漢字顯示方法
摘 要: 研究了圖形液晶模塊的漢字顯示方法, 以8051 單片機為基礎, 介紹了液晶模塊與單片機的典型接口電路, 描述了通過(guò)外擴的EEPROM 存儲漢字字模數據, 將其作為外部數據存儲器進(jìn)行尋址, 通過(guò)C51 程序詳細介紹了使用方法。對于程序存儲器和數據存儲器分開(kāi)尋址的單片機, 該方式能起到節省程序存儲器, 擴大程序容量的作用。
本文引用地址:http://dyxdggzs.com/article/167451.htm1 引 言
液晶顯示器件( LCD) 獨具的低壓、微功耗特性使它可以直接與大規模集成電路結合開(kāi)發(fā)出一系列具有便攜顯示功能的產(chǎn)品。這些產(chǎn)品不僅改變了人類(lèi)生活甚至也改變了社會(huì )。例如, 液晶顯示的電子表、電子計算器已成為生活必需品, 而液晶顯示的移動(dòng)通訊已成為人類(lèi)社會(huì )活動(dòng)的必備工具。
常用的液晶顯示模塊分為數顯液晶模塊、點(diǎn)陣字符液晶模塊和點(diǎn)陣圖形液晶模塊。圖形液晶模塊在我國應用較為普及, 因為中文不能像西文字符那樣用字符模塊即可顯示, 要想顯示中文必須用圖形模塊。
使用圖形液晶模塊可以顯示漢字和圖形。以DG12864( 128×64) 液晶模塊為例, 其內置的液晶顯示驅動(dòng)控制器為日本東芝公司的T6963C, 在液晶屏上橫向8 個(gè)點(diǎn)為1 個(gè)字節數據, 每個(gè)字節在顯示緩沖區內有對應的地址, 液晶屏幕的左上角橫向8 個(gè)點(diǎn)對應液晶模塊顯示緩沖區的首地址。采用圖形顯示方式, 在液晶顯示器上漢字用點(diǎn)陣來(lái)顯示, 最常用的是16×16 的漢字, 一個(gè)16×16 的漢字用32 個(gè)字節表示, 這32 個(gè)字節存放方式如下所示:

而一個(gè)24 ×24 的漢字則需72 個(gè)字節, 存放方式如下:

其他規格的漢字存放方式依此類(lèi)推。在液晶顯示器上需顯示漢字時(shí), 只要將要顯示的漢字的點(diǎn)陣按其存放方式依次寫(xiě)入液晶控制器的顯示緩沖區即可。
通過(guò)單片機將已提取的漢字的字模輸入液晶控制器, 即可按設定在液晶模塊顯示屏上顯示漢字。常見(jiàn)的做法是事先通過(guò)字模提取軟件提取要顯示的漢字的字模, 將其作為常量數組存放在單片機的程序存儲區內。以C 語(yǔ)言格式建立包含合和肥兩字的漢字字模常量數組, 如下:
Code const char Hz-Dot [ ] = {0x01, 0x01, 0x02, 0x04, 0x08, 0x 10, 0x 2F,0xC0, / / 合0
0x00, 0x1F, 0x 10, 0x10, 0x10, 0x 10, 0x1F, 0x10,0x00, 0x00, 0x 80, 0x40, 0x 20, 0x10, 0xEE, 0x 04,0x10, 0xF8, 0x 10, 0x10, 0x10, 0x 10, 0xF0, 0x10,0x04, 0x 7F, 0x 45, 0x45, 0x45, 0x7D, 0x 45,0x45, / / 肥0x 20
0x45, 0x7D, 0x 45, 0x45, 0x 45, 0x45, 0x 54, 0x 88,0x04, 0xFE, 0x 24, 0x24, 0x 24, 0x24, 0x 24, 0xFC,0x04, 0x 00, 0x 00, 0x02, 0x02, 0x02, 0xFE,0x00} ;
每個(gè)漢字字模由32 個(gè)字節組成, 單片機通過(guò)接口電路, 根據規定的時(shí)序, 將要顯示的漢字字模的所有字節按液晶控制器規定的方式, 按預定位置寫(xiě)入液晶控制器顯示緩沖區即可。這種方式適用于程序不大或單片機無(wú)外部擴展數據存儲區功能的情況。
采用哈佛結構的單片機, 如8051 單片機及其派生產(chǎn)品, 程序存儲器( ROM) 和數據存儲器( RAM) 可分別尋址, 8051 單片機ROM 和RAM最大的尋址空間均為64 K.通常來(lái)說(shuō), 對于中型的嵌入式系統, 尤其是帶液晶模塊的單片機系統,64 K 的程序空間并不富裕, 而將漢字字模作為常量數組會(huì )大大占用ROM 的空間。而相對來(lái)說(shuō),數據存儲器只需幾K 就夠用了, 剩下很多空間可用于功能芯片的擴展。將提取的漢字字模數據存放在EPROM 或EEPROM 內作為擴展的數據存儲器供CPU 調用, 則只要設定該芯片的片選地址, 并知道每個(gè)漢字字模數據在該芯片的存儲位置, 通過(guò)程序計算出偏移地址, 即可實(shí)現同樣的顯示功能。
3 單片機通過(guò)EEPROM 調用漢字字模的方法
圖1 是DG12864 液晶模塊與8051 單片機的接口電路。在電路中, 地址線(xiàn)A13??A15 通過(guò)GAL16V8 譯碼得到外擴芯片的片選信號, 其中液晶模塊的譯碼地址為0xE000, 將地址線(xiàn)A0 與液晶模塊控制口的C/ D 相連。當A0 為低時(shí)液晶控制器接收數據, A0 為高時(shí)液晶控制器接收命令碼。因此液晶模塊數據端口地址為0xE000, 液晶模塊命令端口為0xE001.采用Keil C51 進(jìn)行程序設計, 在程序中可進(jìn)行如下定義:
# define XBYTE ( ( unsigned char volat ile x data* ) 0)
# def ine LCD-Data XBYT E[ 0xE000]/ / 液晶模塊數據端口
# def ine Lcd-Code XBYT E[ 0xE001]/ / 液晶模塊命令端口
存放漢字字模數據的EEPROM 芯片2864的片選地址為0x 9000, 則通過(guò)程序定義:
# def ine Hz-Dot 0x 9000
# define VBYTE ( unsigned char volatile x data* )

圖1 51 單片機與液晶模塊接口電路
編制16 ×16 漢字顯示子函數Wr ite-Hz.其中要調用另外兩個(gè)子函數Lcd-Wait 和Disp-address.Lcd-Wait 為讀取液晶控制器是否忙函數, 而Disp-address 為液晶控制器顯示緩沖區地址設置函數, 可根據液晶控制器資料編制。根據液晶控制器T 6963 的操作方法, 每次對液晶控制器進(jìn)行讀寫(xiě)時(shí), 應執行Lcd-Wait 函數判斷液晶控制器是否忙, 在將漢字字模數據寫(xiě)入液晶控制器顯示緩沖區前, 應根據漢字在液晶屏上的顯示位置設定寫(xiě)入數據的液晶控制器顯示緩沖區地址, 具體Write-Hz 如下:
void Write-Hz( Uchar x ,U char y, Uint p) // 寫(xiě)漢字
// x , y 為漢字在液晶屏的顯示位置坐標,
// p 為要顯示的漢字在數組中的下標。
{
Uchar i, low-ad, hig h??ad;
Uint addr ess, tp;
address= ( Uint) x * Wide+ y ; / / * *
led顯示器相關(guān)文章:led顯示器原理
存儲器相關(guān)文章:存儲器原理
評論