引言
嵌入式設(shè)備憑借其與使用者之間的親和力,、自然的人機(jī)交互界面,得到了迅速的發(fā)展,,滲透到生活中的各個(gè)角落,。本文介紹的設(shè)計(jì)方法是以高性能的8位單片機(jī)C8051F120作為核心處理器,,SRAM作為系統(tǒng)的顯存,,FPGA實(shí)現(xiàn)時(shí)序轉(zhuǎn)換,構(gòu)建低溫(-10℃)下嵌入式顯示系統(tǒng),。通過(guò)PC機(jī)鍵盤和觸摸屏實(shí)現(xiàn)界面操作,,最終在液晶顯示器上顯示國(guó)標(biāo)一/二級(jí)漢字,、ASCII字符和65 536色的彩色圖形和圖片,并制作了簡(jiǎn)單的操作界面,。
1 系統(tǒng)工作原理
顯示漢字,、英文字符和彩色圖形的過(guò)程就是將字符和圖形信息轉(zhuǎn)換成液晶顯示器可以顯示的點(diǎn)陣信息。為了顯示字符,,可以將ASCII碼字符點(diǎn)陣字庫(kù)和按區(qū)位碼排列的漢字點(diǎn)陣字庫(kù)存儲(chǔ)在單片機(jī)外接的Flash ROM中(構(gòu)成點(diǎn)陣數(shù)據(jù)區(qū)),,并且將程序中用到的字符以機(jī)內(nèi)碼的形式存儲(chǔ)在Flash ROM中(構(gòu)成文本數(shù)據(jù)區(qū))。顯示時(shí),,單片機(jī)將漢字機(jī)內(nèi)碼從文本數(shù)據(jù)區(qū)讀出,,轉(zhuǎn)換成FlashROM中點(diǎn)陣數(shù)據(jù)區(qū)的字庫(kù)地址,通過(guò)該地址讀出字符的點(diǎn)陣數(shù)據(jù),,進(jìn)一步轉(zhuǎn)換成液晶顯示器可顯示的數(shù)據(jù)并送給后續(xù)電路處理和顯示,。這樣在操作過(guò)程中可以顯示包括國(guó)標(biāo)一/二級(jí)漢字、大小寫英文字符,、標(biāo)點(diǎn)和數(shù)字等多種字符,。顯示彩色圖形的時(shí)候,由于圖片的存儲(chǔ)空間要求比較大,,系統(tǒng)中沒(méi)有足夠的空間,,可以將PC機(jī)內(nèi)bmp格式的彩色圖片經(jīng)過(guò)格式轉(zhuǎn)化以后,通過(guò)串口送給單片機(jī)實(shí)時(shí)處理并顯示,。
液晶顯示器工作頻率為4.5~6.8MHz,,并且需要復(fù)雜的工作時(shí)序??紤]到單片機(jī)的工作速度和液晶顯示器的工作頻率,,一方面,液晶顯示器在工作頻率下不斷刷新才能工作,,需要傳送大量的顯示數(shù)據(jù)和控制信息,;另一方面,單片機(jī)要完成許多處理工作,,即使工作在100MHz,,也將成為系統(tǒng)運(yùn)行速率的瓶頸。為了解決這個(gè)問(wèn)題,,再次加入一塊SRAM作為顯存,,加入一塊FPGA實(shí)現(xiàn)時(shí)序轉(zhuǎn)換并控制和刷新液晶顯示器。FP GA分時(shí)地讀/寫SRAM,,F(xiàn)PGA在時(shí)鐘的作用下,,一半時(shí)間內(nèi)(時(shí)鐘信號(hào)為高電平時(shí))從SRAM中讀出數(shù)據(jù),不斷刷新液晶顯示器,;另一半時(shí)間內(nèi)(時(shí)鐘信號(hào)為低電平時(shí)),,如果單片機(jī)有送來(lái)要顯示的數(shù)據(jù)時(shí),,將此數(shù)據(jù)寫入SRAM中。分時(shí)操作的使用,,能在不間斷地刷新液晶顯示器的同時(shí),,接收并存儲(chǔ)單片機(jī)的數(shù)據(jù),使兩方面的工作互不影響,,不僅減輕單片機(jī)的工作負(fù)擔(dān),,而且充分發(fā)揮了FPGA的性能。
選擇附有觸摸屏的液晶顯永器,,將觸摸屏外接手寫識(shí)別控制器,,就可以增加手寫識(shí)別功能,可提供友好的人機(jī)交互界面,。由上述分析可以畫出系統(tǒng)框圖,,如圖1所示。
2 系統(tǒng)硬件設(shè)計(jì)
在本嵌入式顯示系統(tǒng)中,,采用了夏普公司型號(hào)為L(zhǎng)Q0357DH01的液晶顯示器,,工作溫度范圍在-10~70℃,最低工作溫度相對(duì)更低一些,。
顯示模塊由一個(gè)彩色主動(dòng)點(diǎn)陣式LCD模塊和無(wú)定形硅TFT構(gòu)成,,因此可稱為AD-TFT(Advanced TFT)。它由彩色TFT-LCD面板,、IC驅(qū)動(dòng),、FPC、背光,、電阻式觸摸屏和背部密封盒組成,,但是模塊不包括控制電路。顯示屏工作頻率為4.5~6.8 MHz,,分辨率為240×320像素,,色彩位深為18位。圖形和文本能以262 11 4種顏色顯示在240x 320點(diǎn)陣的顯示屏上,。但是考慮單片機(jī)的數(shù)據(jù)總線寬度為8位,,為了簡(jiǎn)化操作過(guò)程,可將色彩深度確定為16位,,單片機(jī)分兩次發(fā)送每個(gè)像素的顏色數(shù)據(jù),。這樣的簡(jiǎn)化操作也可以滿足顯示65 536色彩色圖形的要求。
為了提高整個(gè)系統(tǒng)的運(yùn)行速度,,采用型號(hào)為C8051F120的高性能8位單片機(jī)作為處理器,。C8051F120使用Silicon Labs公司的專利CIP-51微控制器內(nèi)核。CIP-51與MCS-51指令集完全兼容,可以使用標(biāo)準(zhǔn)803x/805x的匯編器和編譯器進(jìn)行軟件開發(fā),。C8051F120可穩(wěn)定工作的最大系統(tǒng)時(shí)鐘頻率為100 MHz,峰值性能達(dá)到100MIPS,。
Flash采用的是M29W400BB(512K×8位),,它是一種可讀、可擦除,、可重復(fù)編程的Flash,。FPGA采用Xilinx公司Spartan-II系列產(chǎn)品XC2S1 00。XC2S100是一款具有10萬(wàn)系統(tǒng)門的FPGA,,在邏輯門數(shù)上能為系統(tǒng)提供足夠的邏輯電路,,144引腳封裝形式的XC2S100可提供103個(gè)I/O端口,為系統(tǒng)器件提供足夠的I/O口資源,。
關(guān)于SRAM的選擇,,考慮到液晶顯示器的分辨率為240×320像素,每個(gè)像素點(diǎn)可顯示65 536色(16位),,因此顯存的大小至少為240×320× 2B=150 KB,。加入一塊512 KB的SRAM CY7C1041BV33作為顯存即可。CY7C1041BV33可以工作在字(word)操作模式下,,方便顯示數(shù)據(jù)的存取,,刷新液晶的過(guò)程中可將SRAM中的每個(gè)字與液晶的每個(gè)像素對(duì)應(yīng)。
手寫識(shí)別采用型號(hào)為ePH1200AQ的手寫識(shí)別微控制器,。ePH1200AQ硬件上集成了8位RISC微控制器,、觸摸屏驅(qū)動(dòng)器、接口UART,、4 KB SRAM,、32K字編程ROM和512K字?jǐn)?shù)據(jù)ROM;軟件上則包含手寫識(shí)別內(nèi)核,、字符集和筆跡收集軟件,。當(dāng)微控制器與外部觸摸屏相連接的時(shí)候,就可以組成手寫識(shí)別應(yīng)用產(chǎn)品,,比如SMS,、移動(dòng)電話或者手寫輸入設(shè)備。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件包括單片機(jī)和FPGA兩個(gè)部分,。本文主要介紹單片機(jī)部分的軟件設(shè)計(jì),。
單片機(jī)完成的功能包括循環(huán)查詢兩個(gè)串口是否接收到新的數(shù)據(jù),當(dāng)某個(gè)串口接收到新的數(shù)據(jù)時(shí),,便采取相應(yīng)含義的操作,。顯示字符時(shí),讀出Flash ROM中的點(diǎn)陣數(shù)據(jù),,進(jìn)行轉(zhuǎn)換和處理后送給FPGA,;顯示圖形時(shí),,按照沒(méi)定的圖形軌跡畫出點(diǎn)。
單片機(jī)在主程序中循環(huán)查詢兩個(gè)串口是否接收到新的數(shù)據(jù),,當(dāng)任意一個(gè)串口產(chǎn)生中斷時(shí),,根據(jù)串口接收到數(shù)據(jù)的含義,采取相應(yīng)的操作,。主函數(shù)流程如圖2所示,。
3.1 字符顯示原理
UCDOS軟件中的文件HZK16與文件ASC16分別為1 6×1 6的國(guó)標(biāo)漢字點(diǎn)陣文件和8×1 6的ASCII碼點(diǎn)陣文件,以二進(jìn)制格式存儲(chǔ),。在文件HZK 16中,,按漢字區(qū)位碼從小到大依次存有國(guó)標(biāo)區(qū)位碼表中的所有漢字,每個(gè)漢字占用32個(gè)字節(jié)(16×16的漢字點(diǎn)陣),,每個(gè)區(qū)為94個(gè)漢字,。在文件ASC16中按ASCII碼從小到大依次存有8×1 6的ASCII碼點(diǎn)陣,每個(gè)ASCII碼占用1 6個(gè)字節(jié),。
在PC機(jī)的文本文件中,,漢字是以機(jī)內(nèi)碼的形式存儲(chǔ)的,每個(gè)漢字占用兩個(gè)字節(jié),。第一個(gè)字節(jié)為區(qū)碼,,為了與ASCII碼區(qū)別,范圍從十六進(jìn)制的0A1H開始(小于80H的為ASCII碼字符),,對(duì)應(yīng)區(qū)位碼中區(qū)碼的第一區(qū),;第二個(gè)字節(jié)為位碼,范圍也是從0A1H開始,,對(duì)應(yīng)某區(qū)中的第一個(gè)位碼,。這樣,將漢字機(jī)內(nèi)碼減去0A0A0H就得該漢字的區(qū)位碼,。例如漢字“我”的機(jī)內(nèi)碼為十六進(jìn)制的“CED2”,,其中“CE”表示區(qū)碼,“D2”表示位碼,。所以“我”的區(qū)位碼為0CED2H-0A0A0H=2E32H,。將區(qū)碼和位碼分別轉(zhuǎn)換為十進(jìn)制得漢字“我”的區(qū)位碼為“4650”,即“房”的點(diǎn)陣位于第46區(qū)的第50個(gè)字的位置,,相當(dāng)于在文件HZK16中的位置為第32×[(46-1)×94+(50-1)]=67136 B以后的32個(gè)字節(jié)為“我”的顯示點(diǎn)陣,。
依次讀出每個(gè)字節(jié),每讀出一個(gè)字節(jié),,并提取該字節(jié)中的每一位,,如果某位是“1”,則給該位數(shù)據(jù)對(duì)應(yīng)的像素點(diǎn)送入兩個(gè)字節(jié)的字體顏色數(shù)據(jù),如(0x0000,,黑色),;如果某位是“0”,則給該位數(shù)據(jù)對(duì)應(yīng)的像素點(diǎn)送入兩個(gè)字節(jié)的底色數(shù)據(jù),,如(0xffff,,白色)。當(dāng)發(fā)送完32個(gè)字節(jié)的點(diǎn)陣數(shù)據(jù)后(總共發(fā)送的顏色數(shù)據(jù)為32B×8dot×2B=512 B)液晶屏上便會(huì)顯示底色為白色,,字體顏色為黑色的漢字。漢字“我”的顯示結(jié)果如圖3所示,。
液晶顯示器的色彩深度為16位,,每個(gè)像素可顯示65 536色。SRAM工作在字(word)操作模式下,,將SRAM中的每個(gè)字與液晶顯示器的每個(gè)像素對(duì)應(yīng),。比如將液晶顯示器第一行第一列的點(diǎn)與SRAM的0x0000地址對(duì)應(yīng),第一行第二列的點(diǎn)與0x0001地址對(duì)應(yīng),,依次類推,。
3.2 通過(guò)PC機(jī)鍵盤進(jìn)行界面操作
通過(guò)PC機(jī)鍵盤進(jìn)行界面操作時(shí),使用電腦軟件將鍵盤的操作鍵值通過(guò)PC機(jī)串口發(fā)送給單片機(jī)串口0,,單片機(jī)串口0每中斷一次接收到一個(gè)字節(jié)的數(shù)據(jù),,接收到的數(shù)據(jù)可分為3種情況:數(shù)值大于0xA0時(shí),說(shuō)明該字節(jié)是某漢字兩字節(jié)數(shù)據(jù)中的一個(gè)字節(jié),;數(shù)值為0x20~0x7f時(shí),,表示該字節(jié)是可打印的ASCII碼字符;數(shù)值小于0x20時(shí),,表示該字節(jié)是不可打印的數(shù)值,,可用這36個(gè)數(shù)值作為界面操作的控制命令字節(jié)。連續(xù)接收完兩個(gè)數(shù)值大于0xA0數(shù)據(jù)時(shí),,就可以轉(zhuǎn)換成某個(gè)漢字,;每接收到一個(gè)數(shù)值為0x20~0x7f的數(shù)據(jù)時(shí),就可以轉(zhuǎn)換成某個(gè)ASCII碼字符,;每接收到一個(gè)數(shù)值小于0x20的數(shù)據(jù)時(shí),,就可以翻譯成某個(gè)操作命令,進(jìn)行相應(yīng)的控制操作,。圖4為鍵盤接口操作中斷流程,。
3.3 通過(guò)觸摸屏進(jìn)行界面操作
通過(guò)觸摸屏進(jìn)行界面操作時(shí),手寫識(shí)別微控制器ePH1200AQ將手寫的軌跡封包后發(fā)送到單片機(jī)的串口1,。操作過(guò)程中的數(shù)據(jù)主要包括輸入漢字時(shí),,識(shí)別輸入的筆畫,向單片機(jī)發(fā)送候選字;畫圖時(shí),,實(shí)時(shí)發(fā)送屏幕觸點(diǎn)的坐標(biāo),;觸控時(shí),發(fā)送觸控點(diǎn)的坐標(biāo),。ePH1200AQ的通信協(xié)議命令格式如表1所列,。
表1中的識(shí)別型態(tài)命令(0x10)的識(shí)別型態(tài)定義值定義了可以識(shí)別的字集,包括漢字一/二級(jí)字庫(kù),、大小寫英文字母,、數(shù)字、符號(hào),、預(yù)設(shè)手勢(shì),、平假名和片假名。
ePH1200AQ與單片機(jī)串口1通信,,發(fā)送的是命令封包,,需要考慮封包的幀定位,確定封包的包頭和包尾,。表1中的命令格式中,,封包長(zhǎng)度最長(zhǎng)的命令為“發(fā)送候選字陣列”命令(命令代碼為0x18),ePH1200AQ發(fā)送的候選字個(gè)數(shù)最多為10個(gè),,每個(gè)候選字為兩個(gè)字節(jié)的數(shù)據(jù),,該命令的最大長(zhǎng)度為25字節(jié),可創(chuàng)建一個(gè)具有25個(gè)元素的數(shù)組(uartl_RX_buffer[25])作為命令緩存,。
結(jié)語(yǔ)
本文設(shè)計(jì)了一種以C8051F120作為核心處理器的嵌入式彩色圖形顯示系統(tǒng),,其突出的優(yōu)點(diǎn)是實(shí)時(shí)性強(qiáng)、接口電路簡(jiǎn)單,、可擴(kuò)展性強(qiáng),。該系統(tǒng)集成度高,攜帶方便,,實(shí)用性強(qiáng),,在很多領(lǐng)域都具有應(yīng)用性,具有一定的研究和應(yīng)用價(jià)值,。