<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的漢字LCD智能顯示模塊設(shè)計(jì)

          基于51單片機(jī)的漢字LCD智能顯示模塊設(shè)計(jì)

          ——
          作者:李子鍵 東華理工學(xué)院電子與機(jī)械工程學(xué)院 時(shí)間:2007-01-26 來(lái)源:《電子元器件應(yīng)用》 收藏


          引言

          在電子產(chǎn)品設(shè)計(jì)中,人機(jī)交互顯示界面是必不可少的工作,目前一般使用的液晶顯示器均為七段筆劃式,只能顯示數(shù)字和少量字符,功能往往受到局限,對(duì)于較復(fù)雜的字符或圖形則無(wú)能為力。而lcd智能型顯示則是一種低功耗、低損耗、低價(jià)值的顯示器件,它不但可以顯示各式各樣的字符、漢字和圖形,同時(shí)具有可編程能力,且與單片機(jī)接口方便,基于以上優(yōu)點(diǎn),lcd智能顯示獲得了廣泛的應(yīng)用。

          系統(tǒng)組成

          本文引用地址:http://www.ex-cimer.com/article/21534.htm

          本系統(tǒng)主要由三部分組成,分別為單片機(jī),lcd和flash字庫(kù),圖1所示是該系統(tǒng)的硬件原理框圖,由于顯示所需要占用的資源過(guò)多(本設(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)陣字模,就是把漢字寫(xiě)在一個(gè)16×16的網(wǎng)格內(nèi),漢字的筆劃通過(guò)某網(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)格連起來(lái)看,就是這個(gè)漢字,漢字就是這樣通過(guò)字節(jié)表示其點(diǎn)陣存儲(chǔ)在字符字庫(kù)中的,為了方便查找所需漢字的點(diǎn)陣,每個(gè)漢字都與一個(gè)雙字節(jié)的內(nèi)碼一一對(duì)應(yīng),通過(guò)漢字的內(nèi)碼可以計(jì)算出它的點(diǎn)陣起始字節(jié)?,F(xiàn)以16點(diǎn)陣為例來(lái)進(jìn)行說(shuō)明,首先,可由內(nèi)碼計(jì)算出他在漢字庫(kù)中的區(qū)位碼,其計(jì)算公式為:

          bq=bn1-160

          bw=bn2-160

          式中,bq表示區(qū)碼,bw為表示位碼,而bn1和bn2則分別表示內(nèi)碼的第一字節(jié)和內(nèi)碼的第二字節(jié)。

          當(dāng)這些區(qū)位碼被計(jì)算出來(lái)之后,就可以用區(qū)位碼得到它在漢字庫(kù)中字模第一個(gè)字節(jié)的位置,即:

          (bq×94+bw)×32

          這樣,接下來(lái)就可以向連續(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的組合來(lái)決定,當(dāng)csa、csb的組合為01時(shí),選擇左區(qū),當(dāng)二者的組合為10時(shí),選擇右區(qū),二者組合為00或11時(shí)均無(wú)效,lm12864內(nèi)置的hd61202u為一可編程器件,通過(guò)對(duì)hd61202u控制器的編程可以實(shí)現(xiàn)液晶顯示器的各種功能,所有顯示功能均可由指令控制實(shí)現(xiàn),本系統(tǒng)共有7條指令。

          ◇ flash存儲(chǔ)器

          串行flash存儲(chǔ)器以其體積小、密度高、功耗低、操作易而備受青睞,本文簡(jiǎn)單介紹了megawin公司生產(chǎn)的flash存儲(chǔ)器mm36sb020e,mm36sb020e為2m×8bit串行flash,大小為256kbyte,接線方式可采用2線和3線制,器件的忙判斷可以由內(nèi)部的狀態(tài)寄存器來(lái)判斷,也可以通過(guò)外部引腳busy來(lái)判斷,可以說(shuō),該flash不僅操作十分簡(jiǎn)單,并且可以適用于多個(gè)設(shè)計(jì)方案。

          通??梢园褲h字庫(kù)放在flash里,典型的漢字庫(kù)可選用ucdos下的字庫(kù),(如16點(diǎn)陣字庫(kù)hzk16),但需要256kb空間,讀取也很不方便,鑒于實(shí)際應(yīng)用中需要的漢字非常少,因此可以自己制作小的漢字庫(kù),在這個(gè)小字庫(kù)里只包含系統(tǒng)需要的漢字, 需要顯示某個(gè)漢字時(shí),先算出它的區(qū)位碼,再求出點(diǎn)陣起始位置,接著從flash中順序調(diào)出該字的點(diǎn)陣數(shù)據(jù)并存在緩沖區(qū)里,最后依次送往lcd顯示,以描出該字。

          軟件設(shè)計(jì)

          ◇ 字庫(kù)制作和維護(hù)軟件設(shè)計(jì)

          漢字庫(kù)可存儲(chǔ)在2線串行存儲(chǔ)器mm36sb020e中,該存儲(chǔ)器分為2048頁(yè),每頁(yè)為128字節(jié)的存儲(chǔ)單元,且?guī)в?28個(gè)字節(jié)的緩沖區(qū),它有嚴(yán)格的時(shí)序和規(guī)定的命令格式,操作時(shí)可以通過(guò)其特有緩沖區(qū)(128字節(jié))對(duì)其內(nèi)部進(jìn)行讀或?qū)?,器件的智能顯示接口模塊通過(guò)i2c通訊接口從外部獲取漢字點(diǎn)陣庫(kù)的源數(shù)據(jù),并根據(jù)漢字的區(qū)位碼確定其點(diǎn)陣信息在漢字庫(kù)中的存放位置,接著把存儲(chǔ)器的點(diǎn)陣信息整頁(yè)讀出到緩沖區(qū)進(jìn)行修改,最后再寫(xiě)入存儲(chǔ)器,操作結(jié)束時(shí),應(yīng)清除新指令標(biāo)志以免重復(fù)響應(yīng),字庫(kù)制作與維護(hù)的流程如圖2所示。

          ◇ 顯示軟件設(shè)計(jì)

          lm12864中的顯示區(qū)共有64行,分為8頁(yè),每頁(yè)8行,這樣就必須向兩頁(yè)中的對(duì)應(yīng)列送數(shù)據(jù),實(shí)際上,在寫(xiě)每個(gè)漢字時(shí),一般先取字模的上16個(gè)字節(jié)并將其寫(xiě)在一頁(yè)中,再將字模的下16個(gè)字節(jié)寫(xiě)在下一頁(yè)中即可。共顯示流程如圖3所示。

          結(jié)束語(yǔ)

          本文所介紹的這種lcd智能顯示模塊不但能夠顯示數(shù)據(jù),也能夠顯示中文文字和圖形,其顯示效果遠(yuǎn)遠(yuǎn)超過(guò)數(shù)碼管;隨著其價(jià)格的不斷下降,該模塊無(wú)疑將被越來(lái)越多的智能系統(tǒng)所采用。



          關(guān)鍵詞: 模塊

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();