- 相關(guān)推薦
EFD圖像數據傳輸系統設計論文
在此計以STM32系列處理器作為控制器,利用uCGUI進(jìn)行圖形界面設計,利用循環(huán)移位算法將黑白圖像定制成符合TFT?EFD顯示的數據格式,實(shí)現了靜態(tài)EFD圖像的通信,可以根據實(shí)際要求傳輸不同靜態(tài)EFD圖像,后期如果需要可以升級成傳輸數據流來(lái)支持動(dòng)態(tài)顯示。
1 設計原理
本設計采用的單色TFT?EFD顯示屏的分辨率是320×240,行線(xiàn)連接著(zhù)晶體管的柵極,控制著(zhù)晶體管的打開(kāi)與關(guān)閉,列線(xiàn)連接著(zhù)晶體管的源極,控制著(zhù)數據的傳輸,整體的結構如圖1所示。
圖1 EPD Panel
基于EFD的圖像顯示經(jīng)歷了圖像采集,圖像傳輸,圖像顯示等步驟。EFD目前只支持黑白圖像顯示,因此圖像采集利用Processing軟件對圖片進(jìn)行一次加工,轉換成黑白圖像。數據生成之后需要進(jìn)行傳輸,傳遞給微控制器進(jìn)行處理,這時(shí)需要對數據進(jìn)行二次加工,變成滿(mǎn)足TFTEFD顯示屏驅動(dòng)芯片要求的格式,之后通過(guò)DMA方式傳遞給外部的SRAM。FPGA讀取SRAM的數據,根據相應的時(shí)序控制驅動(dòng)芯片輸出數據,從而實(shí)現圖像顯示。如果控制好時(shí)序,能在1 s內刷新25幀以上,那么就可以實(shí)現圖像的動(dòng)態(tài)顯示。
數據的傳輸是整個(gè)過(guò)程的中間階段,需要進(jìn)行不斷的測試來(lái)找到最優(yōu)的傳輸數據時(shí)序,構造出相對完善的波形序列來(lái)實(shí)現動(dòng)態(tài)顯示。因此搭建數據傳輸系統來(lái)顯示不同的圖像,測試其顯示效果,對于實(shí)現穩定的動(dòng)態(tài)顯示有積極的作用。本設計利用uCGUI構造圖形控制界面,可以傳輸不同的EFD圖像數據給SRAM,FPGA讀取其中的數據就可以進(jìn)行圖像顯示,并且系統界面簡(jiǎn)單直觀(guān),操作起來(lái)也相對簡(jiǎn)便。
2 系統設計
2.1 硬件設計
利用STM32F103ZET6微處理器作為主控芯片,SD卡作為存儲設備,SRAM作為轉換數據的輸送目的地,TFT?LCD用作顯示與觸摸控制,各個(gè)硬件相互配合構建起一個(gè)完整的數據傳輸系統。系統框圖如圖2所示。
圖2 系統結構
顯示模塊采用2.8寸ALIENTEK TFTLCD模塊,利用ILI9320控制器作為驅動(dòng)芯片進(jìn)行驅動(dòng)。ILI9320液晶控制器自帶顯存,其顯存總大小為172 820 b(240×320×[1818])。并且ALIENTEK TFTLCD模塊自帶電阻式觸摸屏,可以實(shí)現觸控的功能。ALIENTEK TFTLCD模塊自帶的觸摸屏控制芯片為XPT2046,內部含有12位分辨率125 kHz轉換速率逐步逼近型A/D轉換器,是一款4導線(xiàn)制觸摸屏控制器。
由于數據量比較大,將大量數據儲存在SD卡中[1],SD卡的配置使用SPI驅動(dòng),最高通信速度可達18 Mb/s,每秒可傳輸數據2 MB以上,可以滿(mǎn)足一般的應用需求。SRAM采用的是IS62WV51216芯片,存儲容量為1 MB,采用STM32的FSMC接口對其進(jìn)行配置。FSMC是靈活的靜態(tài)存儲控制器,能夠與同步或異步存儲器、16位PC存儲器卡接口,STM32的FSMC接口支持包括SRAM,NAND FLASH,NOR FLASH等存儲器。本設計使用FSMC的BANK1區域3來(lái)控制IS62WV51216芯片。
2.2 軟件設計
FATFS文件系統:FATFS是一個(gè)完全免費開(kāi)源的FAT文件系統模塊,專(zhuān)門(mén)為小型的嵌入式系統而設計。它用標準C 語(yǔ)言編寫(xiě),一般只需要修改2個(gè)文件,即ffconf.h和diskio.c,之后進(jìn)行簡(jiǎn)單配置就可以移植到單片機上,進(jìn)而可以對SD卡和FLASH進(jìn)行文件的讀、寫(xiě)操作。
uCGUI移植:uCGUI 是一種小型化的嵌入式圖形界面接口,該接口獨立于處理器和LCD 控制器種類(lèi),對系統的要求很低[2]。它設計用于為任何使用LCD圖形顯示的應用提供高效的獨立于處理器和LCD控制器的圖形用戶(hù)接口[3],它適用單任務(wù)或是多任務(wù)系統環(huán)境,并且在任意LCD控制器和CPU下進(jìn)行任何尺寸的真實(shí)顯示或虛擬顯示。
本設計依靠uCGUI進(jìn)行界面設計,設計比較直觀(guān)的按鍵和列表來(lái)控制圖像傳輸和圖像顯示。使用uCGUI也需要做移植的工作,移植的工作包括顯示屏和觸摸屏兩個(gè)部分。
顯示屏:首先,TFT?LCD顯示屏的底層驅動(dòng)函數需要事先寫(xiě)好,保證單線(xiàn)程程序中正常顯示。
其次,向工程中加入uCGUI程序包。
再次,根據自己的顯示屏規格配置LcdConf.h GuiConf.h
GuiTouchConf.h文件
最后,修改LcdDriver使uCGUI與你的LCD驅動(dòng)相互關(guān)聯(lián)。
觸摸屏:若要在uCGUI 中使用觸摸屏, 則必須將GUI_SUPPORT_TOUCH (Config 目錄下GUIConf.h中定義的宏)設置為1[4]。同時(shí)要編寫(xiě)底層的觸摸屏源驅動(dòng)函數,對gui_TouchConf.h文件中進(jìn)行配置,然后在GUI_X_Touch.c文件中進(jìn)行函數的改動(dòng)。
具體的移植過(guò)程可以參考uCGUI使用手冊,這里不再贅述。
數據轉換算法?循環(huán)移位:顯示屏里每一個(gè)像素格里有一滴彩色油墨,油墨在加電時(shí)會(huì )收縮,在不加電時(shí)會(huì )平鋪。下極板是一層反光隔膜,里邊每一個(gè)像素格里有一個(gè)TFT晶體管作為電壓開(kāi)關(guān),上極板是玻璃板,當在上下極板間加入適當電壓,像素格里的油墨就會(huì )打開(kāi),用光照射就顯示出明亮狀態(tài),當不加電時(shí)就會(huì )平鋪顯示出的是油墨的顏色。EFD?Panel的微觀(guān)結構如圖3所示。
圖3 EPD Panel微結構
由于EFD是國內新型顯示技術(shù),有著(zhù)自身的圖像數據格式,需要定制符合其顯示格式的數據來(lái)實(shí)現圖像顯示?刂朴湍蜷_(kāi)與關(guān)閉的芯片要求一個(gè)像素格有兩位進(jìn)行控制,即“01”代表打開(kāi),“10”代表關(guān)閉,因此需要對原始圖像數據進(jìn)行二次加工來(lái)滿(mǎn)足要求。EPD Panel 的規格是320×240,即240行,320列,由于驅動(dòng)芯片的數據輸出位數是8位,因此先定義一個(gè)字符型的二維數組data[240][80],然后利用內存管理單元開(kāi)辟相應的區域來(lái)存放最終數據。利用FATFS模塊的f_read函數從文本文檔里讀取數據,根據文檔中每一個(gè)數據的內容是‘1’還是‘0’,分別對二維數組內的元素進(jìn)行0x01或0x02的賦值操作,如果移位次數沒(méi)有達到4次則進(jìn)行左移兩位操作,否則讀取下一個(gè)數據重新進(jìn)行判斷。這樣每4個(gè)數據構成二維數組里的一個(gè)元素值。接下來(lái)的工作就是判斷列數與行數是否小于預先設定數值,如果列數超出設定值,則行數加1,從新的一行開(kāi)始讀取數據,如果行數超出設定值,則循環(huán)結束,所有數據均被轉換完。
算法流程圖如圖4所示。
圖4 圖像轉換算法
在Keil集成開(kāi)發(fā)環(huán)境下利用C語(yǔ)言編寫(xiě)數據格式轉換代碼,實(shí)現圖像轉換的重要代碼片段如下:
if(*(num++)=='1')
{
if((x%4==0)&&(x!=0))j++;
data[i][j]|=0x01;
if(x!=(3+4*j))data[i][j]<<=2;
}
else
{
if(x==320||x==321)continue;
if((x%4==0)&&(x!=0))j++;
data[i][j]|=0x02;
if(x!=(3+4*j))data[i][j]<<=2;
}
界面設計部分:進(jìn)行完所有的移植工作之后,就可以進(jìn)行界面的設計,具體的界面程序流程圖如圖5所示。
圖5 主程序流程圖
整個(gè)系統分成了3個(gè)界面,界面之間可以實(shí)現相互的切換。第一個(gè)界面是進(jìn)入界面,第二個(gè)界面是控制界面,第三個(gè)界面是數據列表界面。具體實(shí)現方法是建立了非模態(tài)對話(huà)框,以第一個(gè)界面為例,其對話(huà)框建立代碼為: GUI_CreateDialogBox(_aDialogCreate1,GUI_COUNTOF(_aDialogCreate1),
&_cbCallback1, 0, 0, 0);
構造的ENTER按鍵用來(lái)控制界面的交換。第二個(gè)界面構造了三個(gè)按鍵來(lái)實(shí)現不同的控制,包括Begin Button,Exit Button,List Button,利用掃描方式來(lái)檢測按鍵的觸摸,從而執行不同的功能函數,代碼片段如下:
switch(GUI_GetKey())
{
case GUI_ID_BUTTON0: datacopy(col); //控制數據傳送
break;
case GUI_ID_BUTTON1: LED0=1; //界面轉換標志置位
break;
case GUI_ID_BUTTON2: GUI_Clear();
BUTTON_Delete(hButton[0]);
BUTTON_Delete(hButton[1]);
BUTTON_Delete(hButton[2]);
GUI_CreateDialogBox(ImagelistDialog, GUI_COUNTOF(ImagelistDialog), &listCallBack, 0, 0, 0); //界面轉換
break;
default:break;
}
第三個(gè)界面是圖像名稱(chēng)的列表,是將對話(huà)框與列表結合顯示出存儲在SD卡中圖像名稱(chēng),進(jìn)而來(lái)控制傳輸不同的圖像。三個(gè)界面的顯示效果如圖6所示。
3 結 語(yǔ)
本設計可以作為EFD圖像顯示的測試裝置來(lái)進(jìn)行使用,通過(guò)顯示不同的圖像來(lái)找到合適的波形圖來(lái)輔助動(dòng)態(tài)圖像顯示,同時(shí)實(shí)現了信息的可視化顯示[5],后期可以進(jìn)行程序上的修改,對系統進(jìn)行改進(jìn)與升級,以數據流的形式傳輸數據,和終端的FPGA進(jìn)行配合來(lái)實(shí)現動(dòng)態(tài)顯示。
【EFD圖像數據傳輸系統設計論文】相關(guān)文章:
圖像處理技術(shù)論文07-29
FPGA數據采集與回放系統設計論文04-24
《選擇圖像》教學(xué)設計07-04
基于系統設計的科研管理論文09-22
《圖像的選取及合成》教學(xué)設計07-02
解析科技競賽賽務(wù)系統的設計與實(shí)現論文04-19
綜合布線(xiàn)系統設計項目教學(xué)模式應用論文07-12