基于51單片機(jī)的漢字LCD智能顯示模塊設(shè)計(jì)
引言
在電子產(chǎn)品設(shè)計(jì)中,人機(jī)交互顯示界面是必不可少的工作,目前一般使用的液晶顯示器均為七段筆劃式,只能顯示數(shù)字和少量字符,功能往往受到局限,對(duì)于較復(fù)雜的字符或圖形則無能為力。而lcd智能型顯示模塊則是一種低功耗、低損耗、低價(jià)值的顯示器件,它不但可以顯示各式各樣的字符、漢字和圖形,同時(shí)具有可編程能力,且與單片機(jī)接口方便,基于以上優(yōu)點(diǎn),lcd智能顯示模塊獲得了廣泛的應(yīng)用。
系統(tǒng)組成
本系統(tǒng)主要由三部分組成,分別為單片機(jī),lcd模塊和flash字庫,圖1所示是該系統(tǒng)的硬件原理框圖,由于顯示所需要占用的資源過多(本設(shè)計(jì)采用的是16×16點(diǎn)陣,每個(gè)漢字存儲(chǔ)需要32個(gè)字節(jié)),而單片機(jī)內(nèi)部ram資源及其有限,所以系統(tǒng)設(shè)計(jì)時(shí)有必要擴(kuò)展—flash存儲(chǔ)器,i2c接口主要負(fù)責(zé)通訊,該接口具有通訊速度較快,器件之間電氣部分設(shè)計(jì)較好等特點(diǎn),可以使接口部分達(dá)到設(shè)計(jì)標(biāo)準(zhǔn)。
漢字的顯示原理
漢字一般是以點(diǎn)陣式存儲(chǔ)的,如16×16,24×24點(diǎn)陣,漢字的字模其實(shí)是漢字字形的圖形化,所謂16點(diǎn)陣字模,就是把漢字寫在一個(gè)16×16的網(wǎng)格內(nèi),漢字的筆劃通過某網(wǎng)格時(shí)該網(wǎng)格就對(duì)應(yīng)1,否則該網(wǎng)絡(luò)對(duì)應(yīng)0,這樣,每一網(wǎng)絡(luò)均對(duì)應(yīng)1或0,把對(duì)應(yīng)1的網(wǎng)格連起來看,就是這個(gè)漢字,漢字就是這樣通過字節(jié)表示其點(diǎn)陣存儲(chǔ)在字符字庫中的,為了方便查找所需漢字的點(diǎn)陣,每個(gè)漢字都與一個(gè)雙字節(jié)的內(nèi)碼一一對(duì)應(yīng),通過漢字的內(nèi)碼可以計(jì)算出它的點(diǎn)陣起始字節(jié)?,F(xiàn)以16點(diǎn)陣為例來進(jìn)行說明,首先,可由內(nèi)碼計(jì)算出他在漢字庫中的區(qū)位碼,其計(jì)算公式為:
bq=bn1-160
bw=bn2-160
式中,bq表示區(qū)碼,bw為表示位碼,而bn1和bn2則分別表示內(nèi)碼的第一字節(jié)和內(nèi)碼的第二字節(jié)。
當(dāng)這些區(qū)位碼被計(jì)算出來之后,就可以用區(qū)位碼得到它在漢字庫中字模第一個(gè)字節(jié)的位置,即:
(bq×94+bw)×32
這樣,接下來就可以向連續(xù)讀出由32個(gè)字節(jié)組成的該字的點(diǎn)陣數(shù)據(jù)。
主要器件介紹
◇ 顯示模塊lm12864
lm12864是內(nèi)置了hd61202u控制器的128×64點(diǎn)陣式液晶顯示器,lm12864的顯示區(qū)域被分為左右兩個(gè)區(qū),均為64×64大小,左右區(qū)的選擇由csa和csb的組合來決定,當(dāng)csa、csb的組合為01時(shí),選擇左區(qū),當(dāng)二者的組合為10時(shí),選擇右區(qū),二者組合為00或11時(shí)均無效,lm12864內(nèi)置的hd61202u為一可編程器件,通過對(duì)hd61202u控制器的編程可以實(shí)現(xiàn)液晶顯示器的各種功能,所有顯示功能均可由指令控制實(shí)現(xiàn),本系統(tǒng)共有7條指令。
◇ flash存儲(chǔ)器
串行flash存儲(chǔ)器以其體積小、密度高、功耗低、操作易而備受青睞,本文簡單介紹了megawin公司生產(chǎn)的flash存儲(chǔ)器mm36sb020e,mm36sb020e為2m×8bit串行flash,大小為256kbyte,接線方式可采用2線和3線制,器件的忙判斷可以由內(nèi)部的狀態(tài)寄存器來判斷,也可以通過外部引腳busy來判斷,可以說,該flash不僅操作十分簡單,并且可以適用于多個(gè)設(shè)計(jì)方案。
通??梢园褲h字庫放在flash里,典型的漢字庫可選用ucdos下的字庫,(如16點(diǎn)陣字庫hzk16),但需要256kb空間,讀取也很不方便,鑒于實(shí)際應(yīng)用中需要的漢字非常少,因此可以自己制作小的漢字庫,在這個(gè)小字庫里只包含系統(tǒng)需要的漢字,
需要顯示某個(gè)漢字時(shí),先算出它的區(qū)位碼,再求出點(diǎn)陣起始位置,接著從flash中順序調(diào)出該字的點(diǎn)陣數(shù)據(jù)并存在緩沖區(qū)里,最后依次送往lcd顯示,以描出該字。
軟件設(shè)計(jì)
◇ 字庫制作和維護(hù)軟件設(shè)計(jì)
漢字庫可存儲(chǔ)在2線串行存儲(chǔ)器mm36sb020e中,該存儲(chǔ)器分為2048頁,每頁為128字節(jié)的存儲(chǔ)單元,且?guī)в?28個(gè)字節(jié)的緩沖區(qū),它有嚴(yán)格的時(shí)序和規(guī)定的命令格式,操作時(shí)可以通過其特有緩沖區(qū)(128字節(jié))對(duì)其內(nèi)部進(jìn)行讀或?qū)?,器件的智能顯示接口模塊通過i2c通訊接口從外部獲取漢字點(diǎn)陣庫的源數(shù)據(jù),并根據(jù)漢字的區(qū)位碼確定其點(diǎn)陣信息在漢字庫中的存放位置,接著把存儲(chǔ)器的點(diǎn)陣信息整頁讀出到緩沖區(qū)進(jìn)行修改,最后再寫入存儲(chǔ)器,操作結(jié)束時(shí),應(yīng)清除新指令標(biāo)志以免重復(fù)響應(yīng),字庫制作與維護(hù)的流程如圖2所示。
◇ 顯示軟件設(shè)計(jì)
lm12864中的顯示區(qū)共有64行,分為8頁,每頁8行,這樣就必須向兩頁中的對(duì)應(yīng)列送數(shù)據(jù),實(shí)際上,在寫每個(gè)漢字時(shí),一般先取字模的上16個(gè)字節(jié)并將其寫在一頁中,再將字模的下16個(gè)字節(jié)寫在下一頁中即可。共顯示流程如圖3所示。
結(jié)束語
本文所介紹的這種lcd智能顯示模塊不但能夠顯示數(shù)據(jù),也能夠顯示中文文字和圖形,其顯示效果遠(yuǎn)遠(yuǎn)超過數(shù)碼管;隨著其價(jià)格的不斷下降,該模塊無疑將被越來越多的智能系統(tǒng)所采用。
評(píng)論