<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

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

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

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

  unsigned  char  chinese[ ] [ 2 ] = {“中”“, 國”} ;

  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 ;/ / 把機內碼轉換成區位碼

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

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

  k = 0 ;

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

  data = read_exrom( i) ;

  buffer [ k ] = data ;

  k + + ; }}

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

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

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

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

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

  5  結語(yǔ)

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


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>