液晶顯示器漢字字模存儲(chǔ)方法
出處:yigaohui 發(fā)布于:2007-09-28 09:16:33
1 液晶模塊顯示漢字方法
使用圖形液晶模塊以點(diǎn)陣形式來(lái)顯示漢字和圖形,每8個(gè)點(diǎn)組成1個(gè)字節(jié),每個(gè)點(diǎn)用一個(gè)二進(jìn)制位表示,存1的點(diǎn)顯示時(shí)在屏上顯示一個(gè)亮點(diǎn),存0的點(diǎn)則在屏上不顯示,常用的16×16的漢字點(diǎn)陣由32個(gè)字節(jié)組成。
以在我國(guó)應(yīng)用較為普及的液晶顯示驅(qū)動(dòng)控制器T6963C為例,在液晶屏上橫向8個(gè)點(diǎn)為1個(gè)字節(jié)數(shù)據(jù)。
其他規(guī)格的漢字存放方式以此類(lèi)推。
2 液晶控制器典型接口電路
通過(guò)單片機(jī)將已提取的漢字的字模輸入液晶控制器,即可按設(shè)定的液晶模塊顯示屏上現(xiàn)實(shí)需要的漢字。
液晶模塊與單片機(jī)的接口電路,在圖中選用我國(guó)應(yīng)非常廣泛的8051單片機(jī)作為MCU,采用DG12864(128×64)液晶模塊,其內(nèi)置的液晶顯示驅(qū)動(dòng)控制器為日本東芝公司的T6963C。
在電路中,地址線A12-A15和WR,RD信號(hào)通過(guò)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 volatile xdata* )0)
#define Lcd_Data XBYTE[0xE000] //液晶數(shù)據(jù)端口
#define Lcd_Code XBYTE[0xE001] //液晶命令端口
單片機(jī)的數(shù)據(jù)線通過(guò)74HC245雙向緩沖器與液晶控制器的數(shù)據(jù)口相連,用液晶控制器的片選信號(hào)/LCD_CS作為74HC245的使能信號(hào),單片機(jī)的寫(xiě)信號(hào)/WR控制數(shù)據(jù)傳送方向。/WR為低時(shí),單片機(jī)數(shù)據(jù)寫(xiě)入液晶控制器;/WR為高時(shí),CPU讀取液晶控制器的數(shù)據(jù)和狀態(tài);
3 漢字字模存儲(chǔ)及提取方法
在單片機(jī)系統(tǒng)中對(duì)字模的存儲(chǔ),根據(jù)單片機(jī)的程序存儲(chǔ)容量和其尋址空間情況,可采取3種方式。
?。?)將提取的漢字字模數(shù)據(jù)作為常量數(shù)組存放在程序存儲(chǔ)區(qū)內(nèi),這種方法較為常用,針對(duì)程序不大或單片機(jī)無(wú)外部擴(kuò)展數(shù)據(jù)存儲(chǔ)區(qū)功能的情況。
如下面程序所示,將提取的要顯示漢字的字模數(shù)據(jù)定義成常量數(shù)組,如要顯示合肥”兩字。
![]() |
|---|
再編制漢字顯示子函數(shù)Write_Hz。其中要調(diào)用另外兩個(gè)子函數(shù)Lcd_wait和Disp_address。Lcd_wait為讀取液晶控制器是否忙函數(shù),而Disp_address為液晶控制器顯示緩沖區(qū)地址設(shè)置函數(shù),可根據(jù)液晶控制器資料編制[1]。
![]() |
|---|
![]() |
|---|
函數(shù)Write_Hz的參數(shù)x和y對(duì)應(yīng)液晶屏幕的顯示位置,其與液晶控制器顯示緩沖區(qū)中的地址通過(guò)行**可計(jì)算出,該行中的Wide為事先定義的液晶屏每行字節(jié)數(shù),對(duì)于DG12864液晶而言,Wide為16。
函數(shù)Write_Hz根據(jù)16×16點(diǎn)陣漢字液晶控制器顯示緩沖區(qū)的存放形式,依次改變顯示地址,先將左半部1-16個(gè)字節(jié)寫(xiě)入顯示緩沖區(qū),再寫(xiě)入右半部17-32個(gè)字節(jié)。若要液晶顯示“合肥”兩字,只要在程序中帶顯示地區(qū)參數(shù)調(diào)用該函數(shù)即可。如:
write_Hz(0,4,0);//合
write_Hz(0,10,0x20);//肥
?。?)將提取的漢字字模數(shù)據(jù)存放在EPROM或E2PROM內(nèi),作為擴(kuò)展的數(shù)據(jù)存儲(chǔ)器供單片機(jī)調(diào)用[2]。
采用哈佛結(jié)構(gòu)的單片機(jī),如8051單片機(jī)及其派生產(chǎn)品,程序存儲(chǔ)器(ROM)和數(shù)據(jù)存儲(chǔ)器(RAM)可分別尋址,51單片機(jī)ROM和RAM的尋址空間均為64K,通常來(lái)說(shuō),對(duì)于中型的嵌入式系統(tǒng),尤其是帶液晶的單片機(jī)系統(tǒng),64k的程序空間并不富裕,而將漢字字模作為常量數(shù)組會(huì)大大占用ROM的空間,而相對(duì)來(lái)說(shuō),數(shù)據(jù)存儲(chǔ)器只需幾k就夠用了,剩下很多空間可用于功能芯片的擴(kuò)展。
將提取的漢字字模數(shù)據(jù)存放在EPROM或E2PROM內(nèi),并設(shè)定該芯片的片選地址,則只要知道某個(gè)漢字字模數(shù)據(jù)在該芯片的存儲(chǔ)位置,通過(guò)程序計(jì)算出偏移地址,即可實(shí)現(xiàn)顯示功能,例如:設(shè)存放漢字字模數(shù)據(jù)的E2PROM的片選地址為0x9000,則通過(guò)程序定義:
#define Hz_Dot 0x9000
#define VBYTE (unsigned char volatile xdata*)
若要編制漢字顯示子函數(shù)Write_Hz,只要將上面Write_Hz函數(shù)中
***行換成Lcd_Data=*(VBYTE(Hz_Dot+p+i));
****行換成Lcd_Data=*(VBYTE(Hz_Dot+p+16+i);
(3)將整個(gè)漢字字庫(kù)存放在EPROM或E2PROM內(nèi),程序根據(jù)要顯示漢字的機(jī)內(nèi)碼來(lái)調(diào)用漢字字模[3]。
某些高端單片機(jī),如Motorola的M68300系列32位單片機(jī),尋址范圍可達(dá)8M,液晶顯示常用的16×16漢字庫(kù)二進(jìn)制數(shù)據(jù)文件為兩百多k,將漢字字庫(kù)存入大容量的E2PROM,通過(guò)地址線可尋址到漢字庫(kù)中的每一個(gè)漢字。
在計(jì)算機(jī)中對(duì)漢字的識(shí)別是通過(guò)機(jī)內(nèi)碼來(lái)實(shí)現(xiàn)的,漢字標(biāo)準(zhǔn)機(jī)內(nèi)碼為兩字節(jié)代碼。漢字在漢字庫(kù)中是按照區(qū)位來(lái)排列的,每一區(qū)中有94個(gè)漢字,每個(gè)漢字都對(duì)應(yīng)的區(qū)號(hào)和在本區(qū)的位號(hào),漢字輸入法中就有區(qū)位碼方法,實(shí)際上,漢字機(jī)內(nèi)碼和區(qū)位碼有標(biāo)準(zhǔn)的對(duì)應(yīng)關(guān)系,某個(gè)漢字在字庫(kù)中的區(qū)號(hào)加上0xa0等于其機(jī)內(nèi)碼的高字節(jié),位號(hào)加上0xa0等于其機(jī)內(nèi)碼的低字節(jié),因此很容易通過(guò)程序計(jì)算出要顯示的漢字在漢字庫(kù)中的區(qū)位號(hào),即得到了其在漢字庫(kù)中的偏移地址。
由于E2PROM中存儲(chǔ)了整個(gè)漢字庫(kù),只須在硬件上設(shè)定存放漢字庫(kù)的存儲(chǔ)器片選地址,直接將漢字作為字符數(shù)組付給漢字顯示函數(shù),通過(guò)機(jī)內(nèi)碼計(jì)算出區(qū)號(hào)和位號(hào),即可方便地對(duì)漢字字模進(jìn)行調(diào)用了。與前兩種方法相比,無(wú)須事先提取字模和設(shè)定其地址用于程序調(diào)用,因此在進(jìn)行程序升級(jí),涉及到漢字顯示時(shí),不用更改漢字字模數(shù)據(jù)。
4 結(jié)語(yǔ)
本文介紹了圖形液晶的漢字顯示方法,并以8051單片機(jī)為基礎(chǔ),結(jié)合液晶模塊與單片機(jī)的典型接口電路,介紹了3種存放漢字字模的方法,并給出C51程序例子,具有很強(qiáng)的使用指導(dǎo)性。
?。?FONT face=Verdana>黃海宏1,黃長(zhǎng)杰2,王海欣1)
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹(shù)莓派?一文快速了解樹(shù)莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測(cè)量的低通濾波器設(shè)計(jì)與本振凈化技術(shù)
- MOSFET在高頻開(kāi)關(guān)中的EMI問(wèn)題
- 電源IC在便攜式設(shè)備中的設(shè)計(jì)要點(diǎn)
- 連接器結(jié)構(gòu)設(shè)計(jì)常見(jiàn)問(wèn)題分析












