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

          新聞中心

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

          基于AVR單片機的VRAM型彩色液晶顯示模塊設計

          作者: 時間:2012-04-09 來源:網絡 收藏

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

          基于AVR單片機的VRAM型彩色液晶顯示模塊設計
          圖4 漢字“中”的點陣圖形

          基于AVR單片機的VRAM型彩色液晶顯示模塊設計

          讀AT29C040A的read_exrom函數可根據硬件設計編寫,這里不再給出。

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

          基于AVR單片機的VRAM型彩色液晶顯示模塊設計
          圖5 顯示一個漢字程序流程圖

          在本模塊中也實現了在屏幕上畫斜線、圓等功能,其具體實現過程就是在畫點函數的基礎上通過相應的算法來編寫這些函數。畫線和畫圓算法比較多,在這里畫線算法采用的是整數數字微分分析法,畫圓算法采用的是貝森海姆算法。

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

          5 結語

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


          上一頁 1 2 3 4 5 6 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();