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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的VRAM型彩色液晶顯示模塊設(shè)計(jì)

          基于單片機(jī)的VRAM型彩色液晶顯示模塊設(shè)計(jì)

          作者: 時(shí)間:2011-10-14 來源:網(wǎng)絡(luò) 收藏

          4. 3  顯示漢字和其他功能的實(shí)現(xiàn)

            在屏幕上顯示16 ×16 點(diǎn)陣漢字的基本步驟是:首先取得該漢字的32 個(gè)字節(jié)的點(diǎn)陣數(shù)據(jù),再確定屏幕上顯示的位置,利用畫點(diǎn)函數(shù)即可顯示該漢字。因本使用了硬件漢字庫(kù)技術(shù),所以漢字的點(diǎn)陣數(shù)據(jù)是從漢字庫(kù)中獲取的。

            在計(jì)算機(jī)漢字系統(tǒng)中,漢字是用機(jī)內(nèi)碼的形式存儲(chǔ)的,將漢字機(jī)內(nèi)碼減去0A0A0H 就得到該漢字的區(qū)位碼,通過區(qū)位碼就可以找到該漢字點(diǎn)陣數(shù)據(jù)在漢字庫(kù)中的位置。例如:漢字“中”的機(jī)內(nèi)碼是十六進(jìn)制的“D6D0”,其中前兩位“D6”表示機(jī)內(nèi)碼的區(qū)碼,后兩位“D0”表示機(jī)內(nèi)碼的位碼。所以“中”的區(qū)位碼為0D6D0H - 0A0A0H =3630H ,將區(qū)碼和位碼分別轉(zhuǎn)換為十進(jìn)制,得漢字“中”的區(qū)位碼為“5448”。即“中”的點(diǎn)陣位于第54區(qū)的第48 個(gè)字的位置,在文件HZK16 中的位置為第32 ×[(54 - 1)×94 + (48 - 1)] = 160928D以后的32 個(gè)字節(jié)為“中”的點(diǎn)陣數(shù)據(jù),用SUPER2PRO25 編程器讀入文件HZK16 后利用其編輯功能中的緩沖區(qū)編輯查找到274A0H (160928D 的十六進(jìn)制表示) 開始的32 個(gè)字節(jié): 01H , 00H ,01H , 00H , 01H , 04H , 7FH , FEH , 41H , 04H ,41H , 04H , 41H , 04H , 41H , 04H , 7FH , FCH ,41H , 04H , 01H , 00H , 01H , 00H , 01H , 00H ,01H ,00H ,01H ,00H ,01H ,00H。這些數(shù)據(jù)與其點(diǎn)陣圖形的對(duì)應(yīng)關(guān)系如圖4 所示,圖中黑色方格表示二進(jìn)制位“1”,即對(duì)應(yīng)該顯示的點(diǎn),白色方格表示二進(jìn)制位“0”,即不該顯示的點(diǎn)。因此要在液晶屏幕上顯示16 ×16 點(diǎn)陣的漢字,首先應(yīng)找到該漢字在硬件漢字庫(kù)中的位置,取出其后的32 個(gè)字節(jié)數(shù)據(jù)。取這32 個(gè)字節(jié)數(shù)據(jù)的函數(shù)如下:

          圖4  漢字“中”的點(diǎn)陣圖形

            unsigned  char  chinese[ ] [ 2 ] = {“中”“, 國(guó)”} ;

            unsigned  char  buffer [32 ] ;

            void  LCD_ readdata ( unsigned char num2

            ber) {

            unsigned  char  temp1 ,temp2 , k ;

            unsigned  long  address , i ;

            temp1 = chinese  [ number ] [ 0 ] - 0xA0 ;/ / 把機(jī)內(nèi)碼轉(zhuǎn)換成區(qū)位碼

            temp2 = chinese  [ number ] [ 1 ] - 0xA0 ;

            address = 32 3 ( ( (long) temp1 - 1) 3 94 +( (long) temp2 - 1) ) ;  / / 計(jì)算該漢字在漢字庫(kù)中的首地址

            k = 0 ;

            for ( i = address ; i address + 32 ; i + + ) {

            data = read_exrom( i) ;

            buffer [ k ] = data ;

            k + + ; }}

            讀A T29C040A 的read_exrom 函數(shù)可根據(jù)硬件編寫,這里不再給出。

            取得這32 個(gè)字節(jié)數(shù)據(jù)后,下面的程序就比較容易了,這里只給出程序流程(如圖5 所示) ,具體函數(shù)可根據(jù)此流程編寫。其中( X , Y) 是該漢字顯示的起始點(diǎn), color 是該漢字的顯示顏色,number 是該漢字在chinese 數(shù)組中的位置。顯示英文和數(shù)字的函數(shù)可根據(jù)顯示漢字的函數(shù)稍加改造后即可得到,這里不再詳細(xì)分析。

          圖5  顯示一個(gè)漢字程序流程圖

            在本中也實(shí)現(xiàn)了在屏幕上畫斜線、圓等功能,其具體實(shí)現(xiàn)過程就是在畫點(diǎn)函數(shù)的基礎(chǔ)上通過相應(yīng)的算法來編寫這些函數(shù)。畫線和畫圓算法比較多,在這里畫線算法采用的是整數(shù)數(shù)字微分分析法,畫圓算法采用的是貝森海姆算法。

            鑒于篇幅所限,這里不再具體分析。由于YD2502是點(diǎn)陣式器, 還可以通過移植嵌入式GUI(如μC/ GUI) 軟件,使其顯示多種曲線,各種窗口對(duì)象,如按鈕、編輯框、滑動(dòng)條等更加豐富靈活的圖形界面。

            5  結(jié)語(yǔ)

            以上程序均在ICCAVR 編譯器里調(diào)試通過,實(shí)現(xiàn)了在液晶屏幕上正常顯示各種顏色的漢字、英文、數(shù)字及簡(jiǎn)單的圖形功能。在筆者參與開發(fā)的油田探測(cè)爆炸機(jī)設(shè)備中,采用了本液晶,達(dá)到了顯示穩(wěn)定,顯示色彩豐富,人機(jī)界面友好的較理想的顯示效果。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(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); })();