當(dāng)前位置:首頁 > 顯示光電 > 顯示光電
[導(dǎo)讀]給出了一種使用串行I2C方式的EEPROM 24Cxxx的漢字庫解決方案。該方案能在最節(jié)省硬件資源的情況下實(shí)現(xiàn)較多漢字字庫,并給出了相應(yīng)的C程序。

1 便攜式設(shè)備的常用設(shè)計(jì)方法
  一般的便攜式設(shè)備采用如圖1所示的電路框圖設(shè)計(jì)(根據(jù)需要可增可減)。在該系統(tǒng)中,用圖形點(diǎn)陣液晶模塊作為顯示,24C256用作漢字庫的存儲(chǔ),X1203用于日歷時(shí)鐘,鍵盤/觸摸屏作為輸入設(shè)備,RS232用于通訊,ISD系列語音芯片可以記錄語音及播放語音。這里只討論使用點(diǎn)陣液晶顯示漢字的情況以及漢字庫的設(shè)計(jì)方法。一般漢字庫有以下幾種方案實(shí)現(xiàn)。

 ?。?)使用程序空間做小字庫。這在漢字用量不大的情況下,是一種完美的解決方法。但若要用AT89C2051、AVR系列、PIC系列、430F11X系列等作為主控芯片,其主要程序空間就只有2K字節(jié)左右,這種方案是不可行的。以500個(gè)漢字為例,16×16點(diǎn)陣的字庫將需要500×32=16 000字節(jié)的ROM空間,如果使用12×12點(diǎn)陣的漢字,也需要500×24=12 000字節(jié)的ROM空間。所以,漢字庫的大小在500字已經(jīng)不能接受,設(shè)計(jì)小型的掌上設(shè)備,要使用引腳數(shù)較少的MCU時(shí)(如前所述),ROM空間已經(jīng)感到相當(dāng)緊張,再占用其空間做漢字庫更不能想像。
  
    (2)使用大容量的ROM芯片專門做漢字庫。用這種方式可以使用全部的國標(biāo)漢字,是一種較常用的方法。一般采用27C040芯片,但占用系統(tǒng)I/O數(shù)較多,占印刷板面積大,單是27C040就需要19根地址線,8根數(shù)據(jù)線,還有一些控制信號(hào),還可能需要一片地址鎖存芯片。這種方法在便攜式設(shè)備的設(shè)計(jì)時(shí)一般不采用。
   
    (3)使用自帶漢字庫的液晶模塊。這較為方便,但成本較為高昂,一般為固定規(guī)格的漢字,常用的是16×16點(diǎn)陣,使用不靈活。
 ?。?)使用I2C器件實(shí)現(xiàn)漢字庫的設(shè)計(jì)。下面將詳細(xì)討論這種方法。

2 設(shè)計(jì)綜述
  用串行I2C方式的EEPROM實(shí)現(xiàn)漢字庫設(shè)計(jì),這種方式下系統(tǒng)的構(gòu)成成本低廉,體積小巧,方便靈活。在圖1的設(shè)計(jì)中,使用128×64點(diǎn)陣規(guī)模的常用液晶模塊,可以顯示12×12點(diǎn)陣的漢字5排,每排10個(gè)漢字。使用了一片24C512做漢字庫,它有64K字節(jié)的存儲(chǔ)空間,可以存放64K/24=2 730個(gè)漢字的12×12點(diǎn)陣字模。如果采用壓縮的方法,每個(gè)12×12點(diǎn)陣的漢字占用18個(gè)字節(jié),則可存放64K/18=3 640個(gè)漢字。如果使用兩片則可以容納7 280個(gè)漢字,而使用多片時(shí)同樣占用兩根口線,且不額外占用資源,同時(shí)還可以連接其他的I2C器件,如日歷芯片、I2C方式的A/D、D/A等,如果24Cxxx還有空余空間,則可以作為記錄器,記錄數(shù)據(jù)。在實(shí)際應(yīng)用時(shí),我們使用尺寸小的液晶模塊(50 mm×40 mm×3 mm),這樣,整個(gè)電路除鍵盤外全蓋在液晶模塊的下面,如果使用液晶上的觸摸屏作為鍵盤,則所有電路的大小可以與液晶屏的尺寸一樣,整個(gè)系統(tǒng)相當(dāng)小巧,非常適合掌上設(shè)備或其他便攜式設(shè)備應(yīng)用。
  
    如果使用其他方式實(shí)現(xiàn)漢字庫,則體積將會(huì)較大:使用程序空間做字庫,則只能實(shí)現(xiàn)很少的漢字字模,而ROM尺寸小的芯片還不能實(shí)現(xiàn);若用27C040等則體積肯定大;使用帶字庫的模塊則厚度較大。
  
    24C512芯片與MCU接口只占用兩根I/O口線:SDA,SCL。因此,隨便使用89C51的I/O連接即可,見圖1(注意:需要10kΩ的上拉電阻),多片時(shí)只是在每一片的地址端加以區(qū)別,而不需要額外的I/O口線。

3 設(shè)計(jì)方法
3.1 漢字字模數(shù)據(jù)
  下面以“使用此漢字庫”為例說明字模點(diǎn)陣的形成情況。液晶屏的“使用此漢字庫”是按如圖2所示的方式一點(diǎn)一點(diǎn)地顯示的。圖中的每一點(diǎn)對(duì)應(yīng)液晶屏上的每一點(diǎn)。我們只須將所有的點(diǎn)陣數(shù)據(jù)寫入液晶模塊的緩沖區(qū)就可以了。




  常用的12864液晶模塊使用HD61202作液晶控制器,所以,該模塊是豎著取模的(由HD61202所決定),而且最高位在下面(請(qǐng)參見HD61201的詳細(xì)資料)。所以“漢”的字模數(shù)據(jù)為:

  
    這里,以“漢”為例,第一個(gè)數(shù)據(jù)088H是最左邊的上面第一豎排有點(diǎn)的位置所對(duì)應(yīng)的數(shù)據(jù),而且下面為高位。第二個(gè)數(shù)據(jù)091H為左邊的上面第二豎排有點(diǎn)的位置所對(duì)應(yīng)的數(shù)據(jù),依次類推,得到“漢”上半部分的前12個(gè)點(diǎn)陣數(shù)據(jù),同樣可以得到“漢”下半部分的后12個(gè)點(diǎn)陣數(shù)據(jù)??梢钥闯?,在下半部分的字模,實(shí)質(zhì)上只有一半數(shù)據(jù)有用,另一半全是0,故,可以采用壓縮的辦法,縮減字模數(shù)據(jù),即下半部分的點(diǎn)陣數(shù)據(jù)完全可以兩個(gè)數(shù)據(jù)縮減成一個(gè)數(shù)據(jù)。比如“漢”壓縮后的字模數(shù)據(jù)為,上半部分不變,前12個(gè)數(shù)據(jù)與原來相同,下半部分兩兩組合為一個(gè)字節(jié),后半部分只有6個(gè)字節(jié),這樣,一個(gè)漢字就只需要18個(gè)字節(jié),這樣可以大大節(jié)省存儲(chǔ)器的使用:
088H,091H,064H,018H,002H,01EH,062H,082H,062H,01FH,002H,000H,00FH,008H 084H,021H,024H,088H
  
    如果液晶模塊所使用的控制器是6963或1330/1335等,則必須橫著取字模,相應(yīng)的“漢”的字模數(shù)據(jù)為(每字節(jié)右邊為高位):
DB 000H,002H,0F2H,007H,024H,002H,029H,002HDB 02AH,002H,044H,001H,044H,001H,083H,000HDB 082H,000H,042H,001H,022H,002H,01AH,00CH
  
    壓縮算法與61202的不一樣,為左邊不變,右邊壓縮,數(shù)據(jù)組織上為奇數(shù)(對(duì)應(yīng)點(diǎn)陣的右半邊)壓縮,偶數(shù)不變。

3.2 漢字字模數(shù)據(jù)存放在24Cxxx中
  在一般情況下為自定義漢字庫,也有使用全漢字庫的情況。在全字庫的情況下,可以把現(xiàn)有的漢字庫直接存放在兩片24C512中(采用壓縮方法,每個(gè)漢字18字節(jié))。這兩片的地址分別是:0-0FFFFH,10000H-1FFFFH。
   
    漢字首地址=((區(qū)碼-1)×94+位碼-1)×18。
  
    大多數(shù)情況下使用漢字不會(huì)很多,一般用的是自定義漢字庫。用一片24C256芯片(見Atmel公司24C256技術(shù)手冊(cè))可以存放用戶常用漢字1 820(32K/18)個(gè),或1 365(32K/24)個(gè),剩余空間可以用作數(shù)據(jù)記錄,對(duì)一般用戶來說足夠了。但放在程序ROM里,將占用32K程序區(qū),對(duì)使用小ROM容量(比如89C2051,PIC系列,430F11x等)芯片的場合是不可能的,而用一片24Cxxx芯片就完全解決了,只占用兩根I/O口線!這么多數(shù)據(jù)怎么存放在24C256中呢?很簡單,使用編程器。大多數(shù)的編程器都支持24Cxxx的編程。先使用字模提取軟件得到你所需要的漢字的字模數(shù)據(jù),一般情況在購買液晶時(shí)會(huì)附送的。一般情況會(huì)用匯編的DB偽指令來定義,或使用C語言的數(shù)組來定義:unsigned char code hzdot〔24*xxxx〕={0x12,0x32,......}。得到這些數(shù)據(jù)后,用相應(yīng)的單片機(jī)編譯軟件得到編程器能用的.hex或.bin文件,再使用編程器燒寫。在用字模軟件取漢字模的時(shí)候,必須將漢字按照一定的順序進(jìn)行排列,使用此漢字庫的時(shí)候再按照這個(gè)順序就可以將漢字依次顯示出來。

3.3 字模數(shù)據(jù)在24Cxxx中的存放情況舉例
  用戶自定義的漢字庫已經(jīng)存放在24Cxxx中了,下面是字庫中的開始部分,漢字“使用此漢字庫……”的字模,取模方式為縱向、下為高位,其中地址列為在24C256中的片內(nèi)地址。

  從表1與圖2可以看出,漢字字模在24C256中的存放規(guī)則:第一個(gè)漢字的字模數(shù)據(jù)放在24C256中從0000H開始的24個(gè)單元,即0000-0017H。第二個(gè)放在24C256中從0018H開始的24個(gè)單元,即0018H-002FH……,依次類推。每個(gè)漢字在字庫中的第一個(gè)字模數(shù)據(jù)在24C256中的地址為:X×24+0,(X為用戶漢字庫中的第幾個(gè)漢字)第二個(gè)字模數(shù)據(jù)在24C256中的地址為:X×24+1,第三個(gè)字模數(shù)據(jù)在24C256中的地址為:X×24+2,……,依次類推,用戶漢字庫中的第X個(gè)漢字的第I個(gè)字模數(shù)據(jù)為:
  X×24+I(xiàn)。
  
    由此,我們?cè)谝壕辽巷@示漢字的時(shí)候依次寫出X×24+I(xiàn)(I為00-23)就可以了。24Cxxx為I2C總線方式的EEPROM存儲(chǔ)器,用作漢字庫時(shí),我們只需要掌握從中讀出數(shù)據(jù)的方法,寫入數(shù)據(jù)的工作就讓編程器去完成。下面介紹如何讀取漢字庫中的漢字信息。

4 24Cxxx漢字庫的使用
  所需要的漢字庫已經(jīng)存放在24Cxxx存儲(chǔ)器中了,只需要將它們?nèi)〕鰜盹@示在液晶屏上。下面舉例說明:在系統(tǒng)中需要1 300個(gè)漢字,使用24C256作為漢字庫,可以存放32 768/24=1 365個(gè)12×12點(diǎn)陣的漢字,能滿足要求。在使用中每一個(gè)漢字有一個(gè)唯一的編碼,序號(hào)從0000到1299。要寫某一個(gè)漢字在液晶屏上只需要給出它的編碼即可。

4.1 24C256的讀寫
  24C256的讀寫遵循I2C總線的規(guī)約,需進(jìn)行總線啟動(dòng)、數(shù)據(jù)讀寫、應(yīng)答信號(hào)查詢、總線停止等操作,這些子程序假設(shè)都已經(jīng)有了,在程序中聲明如下:


4.2 將器件中的數(shù)據(jù)讀取出來在液晶屏上顯示
  下面,我們?cè)?strong>液晶屏的的第2行的開始顯示“使用此漢字庫”。先讀取連續(xù)的24個(gè)漢字點(diǎn)陣數(shù)據(jù),程序如下:



  這六個(gè)漢字在漢字庫中的編碼依次為:
0000 0001 002 0003 0004 0005,
  
    則每一個(gè)漢字點(diǎn)陣數(shù)據(jù)的第一個(gè)位置分別為:
0000×24,0001×24,0002×240003×24,0004×24,0005×24
 
     以每一個(gè)漢字的第一個(gè)數(shù)據(jù)位置為起始地址依次讀取24個(gè)數(shù)據(jù)到顯示緩存,再調(diào)用顯示程序(寫顯示緩存的數(shù)據(jù)到液晶模塊中)……。相應(yīng)的程序如下:

參考文獻(xiàn)
1 胡漢才.單片機(jī)原理及其接口技術(shù).北京:清華大學(xué)出版社,1998
2 徐愛鈞.單片機(jī)高級(jí)語言C51應(yīng)用程序設(shè)計(jì).北京:電子工業(yè)出版社,1998

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉