a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 設計應用 > 圖形LCD模塊ACM19264ASB的漢字顯示

圖形LCD模塊ACM19264ASB的漢字顯示

作者: 時間:2008-06-30 來源:電子元器件應用 收藏

  1引言

本文引用地址:http://www.j9360.com/article/84995.htm

  在基于的智能系統中,漢字顯示模塊是很重要的一個組成部分,它應用廣泛、操作容易、調試簡便。

  然而,在也存在幾個問題。首先,資源有限,我們不能為了占用太多的資源;其次,漢字存儲讀取比較繁瑣,使用不方便;第三,漢字是通過顯示出來的,往往與寫入方式不一樣,這就得進行轉換和調整。

  值得注意的是,基于單片機的漢字顯示不能在字符上實現。使用圖形有很多優點,不僅能,而且可以實現漢字動態移動和上下滾屏,實現漢字與圖形的混合顯示,同時功耗低。

  2基于單片機的漢字顯示原理

  2.1

  漢字一般是以式存儲的,如16×16,24×24(即漢字的字模),每個漢字由32字節(16點陣)或72字節(24點陣)描述。根據漢字的不同字體,也可分為宋體字模、楷體字模、黑體字模等等。

  漢字的字模其實是漢字字形的圖形化。對于16點陣字模,就是把漢字寫在一個16×16的網格內,漢字的筆畫能過某網格時該網格就對應1,否則該網格對應0,這樣每一網格均對應1或0,把對應1的網格連起來看,就是這個漢字。漢字就是這樣通過字節表示點陣存儲在字庫中的。

  為了方便查找所需漢字的,每個漢字都與一個雙字節的內碼一一對應。通過漢字的內碼可以計算出它的點陣起始字節。現以16點陣為例說明。

  先由內碼計算出它在漢字庫中的區位碼,計算公式為:

  區碼=內碼第一字節-160

  位碼=內碼第二字節-160

  再由區位碼可以得到它在漢字庫中字模第一個字節的位置:
(區碼×94+位碼)×32 于是,可以向后連續讀出由32個字節組成的該字的點陣數據。

  2.2漢字顯示

  漢字占用資源太多(如16點陣,每個漢字就需32字節),因而通常把漢字庫放在EEPROM里,需要顯示某個漢字時,先算出它的區位碼,再求出點陣起始位置,從EEPROM中順序調出該字的點陣數據,存在緩沖區里,最后依次送往LCD顯示,描出該字。需要說明的是漢字存儲方式與LCD顯示方式有一定差別。

  本文使用另一種顯示方法,即事先將程序用到的漢字、符號和數碼(為了節省顯示空間,可以將數  碼壓成8×16點陣),編成一個文本文件,用一段小程序做出相應小的漢字庫,這個小字庫的漢字點陣數據取自于一般漢字庫。再經過轉換和調整,得到新的漢字庫,最后把新字庫固化在EEPROM中。單片機只需按序號讀出點陣字節,送往LCD即可顯示所需漢字。減輕了單片機的負擔,去除了繁瑣的查找內碼、求起始位置、轉換、調整等工作,提高了系統可靠性。

  表116點陣漢字字庫存儲方式
   

  3自定義小字庫的制作

  典型的漢字庫可選用UCDOS下的字庫,如16點陣字庫HZK16。需要256K空間,用了較大的EEPROM,又不方便讀取,而實際應用中需要的漢字又非常少,因而我們可以自己制作小的漢字庫,在這個小字庫里只包含系統需要的漢字。這樣,一方面節省讀取時間,另一方面大大地節省了資源。

  限于篇幅,這里僅僅給出流程圖(假定事先將所需漢字寫到了一個文本文件),如圖1所示。
 

  4圖形點陣液晶顯示模塊ACM19264ASB的結構與原理

  4.1技術參數和性能

  1)電源:+5V;
  2)顯示內容:192(列)×64(行)點陣,可顯示圖形,也可顯示12×4(16點陣)漢字;
  3)全屏幕點陣;
  4)7種指令;
  5)與CPU接口采用8位數據總線并行輸入輸出和8條控制線。

  4.2模塊主要外部接口
  
  1)VSS:地;
  2)D/I:高時表示DB7~DB0為顯示數據,低時表示為顯示指令數據;
  3)R/W:讀寫控制;
  4)E:使能信號;
  5)DB7~DB0:數據線;
  6)CS3~CS1:3組列驅動選擇器;
  7)RESET:復位控制;
  8)VEE:負電壓驅動。

  4.3指令說明,指令字為【R/W,D/I,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0】

  1)顯示開關控制【0,0,0,0,1,1,1,1,1,D】,D=1表示開顯示,可進行各種顯示操作;

  2)設置顯示起始行【0,0,1,1,A5,A4,A3,A2,A1,A0】,起始行地址可以是0~63的任意一行;

  3)設置頁地址(即X地址)【0,0,1,0,1,1,1,A2,A1,A0】,8行為一頁,模塊共64行即8頁,0~7可選;

  4)設置Y地址【0,0,0,1,A5,A4,A3,A2,A1,A0】,Y可從0~63選,對應CS3~CS1,各包含64列,Y可選擇其中一列作讀寫操作起始列,每操作一次Y自動加1;

  5)讀狀態【1,0,BF,0,ON/OFF,RST,0,0,0,0】,其中BF為忙標志,BF=1表示內部正進行操作,不接受外部指令,ON/OFF為顯示控制觸發器狀態,ON/OFF=1為開顯示,數據就顯示在屏幕上,RST=1表示內部正進行初始化,不接受任何指令和數據;

  6)寫顯示數據【0,1,D7,D6,D5,D4,D3,D2,D1,D0】,寫入顯示數據存儲單元進行顯示,Y地址指針自動加1;

  7)讀顯示數據【1,1,D7,D6,D5,D4,D3,D2,D1,D0】,讀出數據,Y自動加1。

  4.4模塊主要硬件構成說明

  圖形顯示LCD模塊ACM19264ASB的內部結構

  如圖2所示。IC4為行驅動器,IC3~IC1為列驅動器,各驅動器含有如下功能器件:指令寄存器(IR),數據寄存器(DR),忙標志(BF),顯示控制觸發器(DFF),XY地址計數器,顯示數據RAM(DDRAM),Z地址計數器(即行掃描計數器,掃完一行自動加1,0~63循環,故可實現滾屏顯示)。


 

  4.5顯示數據存儲單元地址表

表2示出顯示數據存儲單元地址。


  表2圖形顯示LCD模塊ACM19264ASB的DDRAM地址表

 

  5漢字庫到LCD的調整與轉換

  從表1和表2可以看出,漢字庫點陣需要經過調整和轉換才能顯示在LCD上。具體地講,需要先從行點陣轉換到列點陣,再翻轉180°。相應程序如下:

  先將#include加到頭文件中,然后設置數組:

  unsignedintfarHzLib[16*1000];轉換前的漢字庫點陣數組,雙字節寫入unsignedintfarHzXLib[8*2000];轉換后的漢字庫點陣數組,單字節寫入 這里,轉換前的漢字庫數組每次按雙字節寫入16位點陣數據,快捷方便,轉換后的漢字庫數組按單字節寫入。 最后把轉換子程序函數加到主程序后面即可。轉換子程序如下:voidHZ_TZH(){

  inti,j,k,GetBit;for(k=0;k{for(i=0;i<16;i++);先轉換低16字節{for(j=7;j>=0;j--){GetBit=(HzLib[16*k+j]>>(15-i))-(HzLib[16*k+j]>>(16-i))*2;取每個字節的相同位,實現行到列的轉換HzXLib[i+32*k]+=GetBit<時,高低位順序倒轉180°}}for(i=16;i<32;i++);再轉換高16字節{for(j=15;j>=8;j--){GetBit=(HzLib[16*k+j]>>(31-i))-(HzLib[16*k+j]>>(32-i))*2HzXLib[i+32*k]+=GetBit<<(j-8)}}}}

  6漢字顯示應用舉例

  圖3示出漢字顯示的典型應用框圖。

  CPLD用來擴展I/O口,單片機通過CPLD讀取漢字庫EEPROM點陣數組,緩存到SRAM中,然后依次寫入LCD顯示出來,鍵盤用來輸入指令與改變數據。

  使用過程中應注意幾個問題:

  1)LCD分3個區CS1~CS3分別選中寫入,確定顯示位置后,先選中對應區CS再寫入;
  2)該型號LCD每行只能顯示24個漢字,到邊界時注意加一個判斷程序,防止顯示位置出錯;
  3 )程序中可能用到數碼,為了節省顯示空間,可以事先將數碼壓成8×16點陣,添加到EEPROM漢字庫后面。 本系統在信號源產生系統中,已成功使用,速度快,程序簡捷,沒有出現誤碼等問題。



評論


相關推薦

技術專區

關閉