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