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