液晶顯示器的漢字顯示方法
摘 要: 研究了圖形液晶模塊的漢字顯示方法, 以8051 單片機為基礎, 介紹了液晶模塊與單片機的典型接口電路, 描述了通過外擴的EEPROM 存儲漢字字模數(shù)據(jù), 將其作為外部數(shù)據(jù)存儲器進行尋址, 通過C51 程序詳細介紹了使用方法。對于程序存儲器和數(shù)據(jù)存儲器分開尋址的單片機, 該方式能起到節(jié)省程序存儲器, 擴大程序容量的作用。
本文引用地址:http://butianyuan.cn/article/167451.htm1 引 言
液晶顯示器件( LCD) 獨具的低壓、微功耗特性使它可以直接與大規(guī)模集成電路結(jié)合開發(fā)出一系列具有便攜顯示功能的產(chǎn)品。這些產(chǎn)品不僅改變了人類生活甚至也改變了社會。例如, 液晶顯示的電子表、電子計算器已成為生活必需品, 而液晶顯示的移動通訊已成為人類社會活動的必備工具。
常用的液晶顯示模塊分為數(shù)顯液晶模塊、點陣字符液晶模塊和點陣圖形液晶模塊。圖形液晶模塊在我國應用較為普及, 因為中文不能像西文字符那樣用字符模塊即可顯示, 要想顯示中文必須用圖形模塊。
使用圖形液晶模塊可以顯示漢字和圖形。以DG12864( 128×64) 液晶模塊為例, 其內(nèi)置的液晶顯示驅(qū)動控制器為日本東芝公司的T6963C, 在液晶屏上橫向8 個點為1 個字節(jié)數(shù)據(jù), 每個字節(jié)在顯示緩沖區(qū)內(nèi)有對應的地址, 液晶屏幕的左上角橫向8 個點對應液晶模塊顯示緩沖區(qū)的首地址。采用圖形顯示方式, 在液晶顯示器上漢字用點陣來顯示, 最常用的是16×16 的漢字, 一個16×16 的漢字用32 個字節(jié)表示, 這32 個字節(jié)存放方式如下所示:
而一個24 ×24 的漢字則需72 個字節(jié), 存放方式如下:
其他規(guī)格的漢字存放方式依此類推。在液晶顯示器上需顯示漢字時, 只要將要顯示的漢字的點陣按其存放方式依次寫入液晶控制器的顯示緩沖區(qū)即可。
通過單片機將已提取的漢字的字模輸入液晶控制器, 即可按設定在液晶模塊顯示屏上顯示漢字。常見的做法是事先通過字模提取軟件提取要顯示的漢字的字模, 將其作為常量數(shù)組存放在單片機的程序存儲區(qū)內(nèi)。以C 語言格式建立包含合和肥兩字的漢字字模常量數(shù)組, 如下:
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} ;
每個漢字字模由32 個字節(jié)組成, 單片機通過接口電路, 根據(jù)規(guī)定的時序, 將要顯示的漢字字模的所有字節(jié)按液晶控制器規(guī)定的方式, 按預定位置寫入液晶控制器顯示緩沖區(qū)即可。這種方式適用于程序不大或單片機無外部擴展數(shù)據(jù)存儲區(qū)功能的情況。
采用哈佛結(jié)構(gòu)的單片機, 如8051 單片機及其派生產(chǎn)品, 程序存儲器( ROM) 和數(shù)據(jù)存儲器( RAM) 可分別尋址, 8051 單片機ROM 和RAM最大的尋址空間均為64 K.通常來說, 對于中型的嵌入式系統(tǒng), 尤其是帶液晶模塊的單片機系統(tǒng),64 K 的程序空間并不富裕, 而將漢字字模作為常量數(shù)組會大大占用ROM 的空間。而相對來說,數(shù)據(jù)存儲器只需幾K 就夠用了, 剩下很多空間可用于功能芯片的擴展。將提取的漢字字模數(shù)據(jù)存放在EPROM 或EEPROM 內(nèi)作為擴展的數(shù)據(jù)存儲器供CPU 調(diào)用, 則只要設定該芯片的片選地址, 并知道每個漢字字模數(shù)據(jù)在該芯片的存儲位置, 通過程序計算出偏移地址, 即可實現(xiàn)同樣的顯示功能。
3 單片機通過EEPROM 調(diào)用漢字字模的方法
圖1 是DG12864 液晶模塊與8051 單片機的接口電路。在電路中, 地址線A13??A15 通過GAL16V8 譯碼得到外擴芯片的片選信號, 其中液晶模塊的譯碼地址為0xE000, 將地址線A0 與液晶模塊控制口的C/ D 相連。當A0 為低時液晶控制器接收數(shù)據(jù), A0 為高時液晶控制器接收命令碼。因此液晶模塊數(shù)據(jù)端口地址為0xE000, 液晶模塊命令端口為0xE001.采用Keil C51 進行程序設計, 在程序中可進行如下定義:
# define XBYTE ( ( unsigned char volat ile x data* ) 0)
# def ine LCD-Data XBYT E[ 0xE000]/ / 液晶模塊數(shù)據(jù)端口
# def ine Lcd-Code XBYT E[ 0xE001]/ / 液晶模塊命令端口
存放漢字字模數(shù)據(jù)的EEPROM 芯片2864的片選地址為0x 9000, 則通過程序定義:
# def ine Hz-Dot 0x 9000
# define VBYTE ( unsigned char volatile x data* )
圖1 51 單片機與液晶模塊接口電路
編制16 ×16 漢字顯示子函數(shù)Wr ite-Hz.其中要調(diào)用另外兩個子函數(shù)Lcd-Wait 和Disp-address.Lcd-Wait 為讀取液晶控制器是否忙函數(shù), 而Disp-address 為液晶控制器顯示緩沖區(qū)地址設置函數(shù), 可根據(jù)液晶控制器資料編制。根據(jù)液晶控制器T 6963 的操作方法, 每次對液晶控制器進行讀寫時, 應執(zhí)行Lcd-Wait 函數(shù)判斷液晶控制器是否忙, 在將漢字字模數(shù)據(jù)寫入液晶控制器顯示緩沖區(qū)前, 應根據(jù)漢字在液晶屏上的顯示位置設定寫入數(shù)據(jù)的液晶控制器顯示緩沖區(qū)地址, 具體Write-Hz 如下:
void Write-Hz( Uchar x ,U char y, Uint p) // 寫漢字
// x , y 為漢字在液晶屏的顯示位置坐標,
// p 為要顯示的漢字在數(shù)組中的下標。
{
Uchar i, low-ad, hig h??ad;
Uint addr ess, tp;
address= ( Uint) x * Wide+ y ; / / * *
led顯示器相關(guān)文章:led顯示器原理
存儲器相關(guān)文章:存儲器原理
評論