王斯帆,馬江凱,姜赫謙禧,王穎(指導(dǎo)老師)
(大連理工大學(xué)城市學(xué)院,遼寧大連,116000)
科技飛速發(fā)展、電子產(chǎn)品不斷更新?lián)Q代的時(shí)代,ARM的應(yīng)用極為廣泛。嵌入式系統(tǒng)是應(yīng)用極為廣泛的一種專用計(jì)算機(jī)系統(tǒng),通常由嵌入式微處理器、嵌入式操作系統(tǒng)、應(yīng)用軟件及外圍設(shè)備接口的嵌入式計(jì)算機(jī)系統(tǒng)和被控對象組成,具有系統(tǒng)內(nèi)核小、系統(tǒng)精簡和專用性強(qiáng)等特點(diǎn)。LCD(Liquid Crystal Display)液晶顯示屏具有體積小、功耗小、顯示信息量大和無電磁輻射等特點(diǎn),并且在工業(yè)發(fā)展中得到大量使用,如工業(yè)化自動產(chǎn)品上、醫(yī)療設(shè)備中等;在日常生活中的應(yīng)用也十分廣泛,如筆記本電腦、電視機(jī)、監(jiān)視器等。所以對于研究利用ARM嵌入式來控制液晶顯示屏上圖案的顯示極有意義。
嵌入式系統(tǒng)是一種完全嵌入于受控器件內(nèi)部,為特定應(yīng)用設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng),它只針對于一項(xiàng)特殊任務(wù),它的工作核心是由一個(gè)或多個(gè)預(yù)先編寫好的程序來執(zhí)行少數(shù)任務(wù)。ARM2410s是SAMSUNG公司推出的基于ARM9 的RISC微處理器,集成LCD、UART、IIC、SPI、IIS、USB、SD控制器等片內(nèi)外圍接口,支持ROM和NAND Flash引導(dǎo);LCD控制器的信號線經(jīng)過驅(qū)動電路后即可連接LCD模塊,LCD控制器負(fù)責(zé)把顯存中的LCD圖形數(shù)據(jù)傳輸?shù)絃CD驅(qū)動器上,并產(chǎn)生必須的LCD控制信號,從而控制和完成圖像的顯示、翻轉(zhuǎn)、疊加、或縮放等一系列復(fù)雜的圖像顯示功能。LCD的顯示面板薄膜被分為很多小柵格,每個(gè)小柵格由一個(gè)電極控制,通過改變柵格上電極的電壓狀態(tài)控制柵格內(nèi)液晶分子排列,從而控制光路通斷,再利用光的三基色不同比例的混合顯示不同的色彩。
本次設(shè)計(jì)是要在LCD顯示屏上顯示一個(gè)剛果民主共和國國旗的圖案。該顯示系統(tǒng)的硬件電路部分由640×480像素的顯示屏ARM2410s和外圍電路組成。設(shè)計(jì)思路就是,以顯示屏的一個(gè)角作為坐標(biāo)原點(diǎn),將顯示屏分為640×480個(gè)小單元,建立二維直角坐標(biāo)系,再將國旗以同樣的比例將顏色對應(yīng)到這些小單元中,寫出函數(shù)式子劃分不同顏色覆蓋區(qū)域。程序?qū)崿F(xiàn)部分的思路為:先確定五角星的位置,完成五角星形狀和顏色的部分,之后再以藍(lán)色為底色進(jìn)行底色填充,最后在藍(lán)色的底色之上重復(fù)覆蓋上黃色和紅色的底色。進(jìn)入開發(fā)環(huán)境,利用編寫的程序?qū)﹂_發(fā)板和LCD初始化,并且將像素點(diǎn)點(diǎn)亮,從而達(dá)到實(shí)現(xiàn)最終要求的目的。總體來說就是圖像經(jīng)過預(yù)處理后可將圖片分為顯示屏對應(yīng)像素?cái)?shù)量的數(shù)組,將其編入程序中,賦予相應(yīng)的色彩,再經(jīng)過ARM處理器將其傳給LCD屏,就可以在LCD液晶屏上顯示圖像。
圖1 S3C2410A內(nèi)部結(jié)構(gòu)方框圖
圖2 軟件部分設(shè)計(jì)思路
下面代碼為實(shí)現(xiàn)在LCD上填充色彩,顯示出一個(gè)剛果民主共和國國旗的主程序。本次設(shè)計(jì)用的是像素為640×480的LCD顯示屏,在設(shè)計(jì)程序時(shí)以左上角的頂點(diǎn)為原點(diǎn)建立一個(gè)二維直角坐標(biāo)系,首先用一個(gè)圓周及公式;i=0,1,2,3,4]輔助確定五角星的五個(gè)像素點(diǎn)的位置,根據(jù)確定好的五個(gè)點(diǎn)坐標(biāo)兩兩確定一條斜線,寫出其斜線線方程,畫出五角星的邊緣斜線,用C語言語句實(shí)現(xiàn)出來,組成一個(gè)五角星,再將五角星中的每個(gè)像素點(diǎn)用“ LCDBufferII2[j][i]=0x0000fcf8”語句賦予黃色,即可得到黃色五角星;同樣的方式,底色的顯示可通過計(jì)算出國旗中其余四條線的斜線方程,用if...else...的嵌套語句,劃分出不同顏色的區(qū)域,然后給每區(qū)域賦上對應(yīng)的顏色。
每一幀圖像由多行組成,每行有多個(gè)像素點(diǎn)組成,相當(dāng)于一個(gè)二維直角坐標(biāo)。軟件部分通過C語言劃分顏色顯示模塊,顯示屏根據(jù)程序化分模塊以左上角的頂點(diǎn)為原點(diǎn),點(diǎn)亮第一個(gè)像素點(diǎn),在接收到LCD控制器發(fā)出的CLK信號移動到下一個(gè)像素點(diǎn)繼續(xù)點(diǎn)亮,在完成一行像素點(diǎn)點(diǎn)亮工作后,與LCD相連的HSYNC信號線發(fā)出一次脈沖,即可跳到下一行。重復(fù)完成這樣的步驟點(diǎn)亮640×480個(gè)像素點(diǎn)后,在LCD顯示屏上就可以顯示出圖像。由于圖像的顯示是一個(gè)一個(gè)像素點(diǎn)點(diǎn)亮的過程,所以圖像的顯示與顯卡將顯示信號輸出刷新的速度有關(guān)。硬件部分用到了ARM開發(fā)實(shí)驗(yàn)箱,運(yùn)行操作步驟:首先運(yùn)行ADS1.2集成開發(fā)環(huán)境,在src目錄下添加程序代碼,對其代碼進(jìn)行編譯,編譯檢查無誤后,接著在Windows環(huán)境下打開“arm”,進(jìn)入超級終端,按下回車使終端進(jìn)入vivi,輸入“l(fā)oad flash ucos x”命令后回車,點(diǎn)擊超級終端的“傳送”菜單,查找并進(jìn)入編譯生成的映象文件夾,打開system.bin文件,通過傳送system.bin文件,將文件下載到flash中。輸入bootucos命令,回車運(yùn)行ucos程序。運(yùn)行結(jié)果如圖4所示。
圖3 實(shí)現(xiàn)步驟
圖4 運(yùn)行結(jié)果
本設(shè)計(jì)是基于ARM2410s的LCD繪圖的設(shè)計(jì),通過對圖像進(jìn)行預(yù)處理,再把顏色賦給每個(gè)像素點(diǎn)從而在LCD上顯示出圖像。經(jīng)過設(shè)計(jì)結(jié)果顯示,這樣的方法在LCD上顯示出靜態(tài)圖像是成功的,但目前設(shè)計(jì)只適用于靜態(tài)圖像的現(xiàn)實(shí),接下來可以通過C語言強(qiáng)大的功能并通過配合硬件顯示顏色更多的圖案,甚至是動畫。