版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 物理與電子工程學(xué)院</b></p><p><b> 《嵌入式系統(tǒng)設(shè)計》</b></p><p><b> 課程小論文</b></p><p> 課題題目 基于ARM的多通道儀表數(shù)據(jù)采集 </p><p&
2、gt; 系 別 物理與電子工程學(xué)院 </p><p> 年 級 10級 </p><p> 專 業(yè) 電子科學(xué)與技術(shù) </p><p>
3、學(xué) 號 050210220 </p><p> 學(xué)生姓名 王軍 </p><p> 指導(dǎo)老師 浦瑋 </p><p> 日 期 2
4、013.05.31 </p><p><b> 目 錄</b></p><p> 引言---------------------------------------------------------------------------------------------------------------
5、--------2</p><p> 第一章 課題要求3</p><p> 1.1 課題內(nèi)容及目的3</p><p> 1.2 運行環(huán)境3</p><p><b> 第二章 正文4</b></p><p> 2.1 課題分析4</p><p>
6、 2.2 系統(tǒng)設(shè)計4</p><p> 2.3 代碼分析、技術(shù)實現(xiàn)問題8</p><p> 第三章 實驗結(jié)果13</p><p> 第四章 實驗總結(jié)15</p><p><b> 參考文獻 16</b></p><p> 設(shè)計性實驗報告成績:
7、 指導(dǎo)教師簽名:17</p><p><b> 引言</b></p><p> 隨著工業(yè)自動化與信息化的不斷發(fā)展,數(shù)據(jù)采集已經(jīng)成為了計算機與外部物理世界連接的橋梁。數(shù)據(jù)采集系統(tǒng)廣泛地應(yīng)用于工業(yè)生產(chǎn)中設(shè)備工作狀況的監(jiān)測、控制領(lǐng)域中的閉環(huán)控制系統(tǒng)及仿真領(lǐng)域的半實物仿真系統(tǒng)。 </p><p> 傳統(tǒng)的數(shù)據(jù)采集裝置通常由單片機及采
8、集卡組成, 其采集通道數(shù)較少、單任務(wù)的軟件結(jié)構(gòu)及實時性差等不足之處已無法滿足人們的需求。ARM ( Advanced RISC Machines) 是基于RSIC 架構(gòu)的數(shù)據(jù)寬為32 位可嵌入操作系統(tǒng)的微處理器。由于其體積小、價格低、可靠性高、低功耗等特點在工業(yè)自動化、國防、運輸?shù)阮I(lǐng)域得到了廣泛的應(yīng)用。 </p><p> 本次設(shè)計是基于ARM的多通道實時數(shù)據(jù)采集系統(tǒng);該系統(tǒng)由下位機系統(tǒng)及上位機軟件組成,下位
9、機硬件主要基于ARM工控開發(fā)平臺、數(shù)據(jù)采集板及模擬量輸出板,采用μC/OSⅡ?qū)崟r多任務(wù)操作系統(tǒng),實現(xiàn)多通道數(shù)據(jù)的采集、數(shù)據(jù)存儲及模擬量的輸出,并將采集數(shù)據(jù)實時傳送至上位計算機;上位機軟件接收數(shù)據(jù)進行監(jiān)控,圖形化顯示數(shù)據(jù)變化,并控制下位機的模擬量輸出功能;通過實驗驗證,下位機系統(tǒng)能夠?qū)崿F(xiàn)多通道數(shù)據(jù)的采集、存儲及模擬量的輸出,μC/OSⅡ操作系統(tǒng)完成多任務(wù)的實時調(diào)度,上位機軟件成功進行模擬量數(shù)據(jù)的采集監(jiān)控及數(shù)據(jù)變化的圖形顯示,整個系統(tǒng)具有良
10、好的實時性。采用多任務(wù)編程方法,每個任務(wù)監(jiān)視一路AD 轉(zhuǎn)換, 每一路AD 的轉(zhuǎn)換結(jié)果在液晶屏上用一個條形圖的長短來表示,直觀地顯示每路模擬輸入電壓的大小??梢酝ㄟ^文本框給每路AD 設(shè)置警戒值,某路輸入超出警戒線之后條形圖中超出的部分會以閃動的方式顯示。</p><p><b> 第一章 課題要求</b></p><p> 1.1 課題內(nèi)容及目的</p>
11、<p> 采用多任務(wù)編程方法,每個任務(wù)監(jiān)視一路AD 轉(zhuǎn)換, 每一路AD 的轉(zhuǎn)換結(jié)果在液晶屏上用一個條形圖的長短來表示,直觀地顯示每路模擬輸入電壓的大小??梢酝ㄟ^文本框給每路AD 設(shè)置警戒值,某路輸入超出警戒線之后條形圖中超出的部分會以閃動的方式顯示。并在數(shù)碼管上對應(yīng)的某通道的數(shù)值顯示當(dāng)超過警戒線數(shù)值時,數(shù)字閃爍顯示。</p><p> 在此基礎(chǔ)上,利用實驗箱中的數(shù)碼管顯示每一路的電壓采樣值,并能
12、在超出警戒值的情況下閃爍顯示,在LCD屏上對應(yīng)條形圖的頂部顯示具體的電壓值。</p><p><b> 1.2 運行環(huán)境</b></p><p> 硬件:ARM嵌入式開發(fā)平臺、用于ARM7TDMI的JTAG仿真器、PC機Pentium100以上。</p><p> 軟件:PC機操作系統(tǒng)Win98、Win2000或WinXP、ARM SDT
13、2.51或ADS1.2集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。</p><p><b> 正文</b></p><p><b> 2.1 課程分析</b></p><p> 數(shù)據(jù)采集系統(tǒng)置于被監(jiān)控的設(shè)備處,通過傳感器對設(shè)備的電壓或者電流信號進行采樣、保持,并送入A/D轉(zhuǎn)換器變成數(shù)字信號,然后將該信號送到FIF
14、O中。當(dāng)FIFO中存放的數(shù)據(jù)到了一定數(shù)目時,由ARM7從FIFO中讀出,然后通過ARM7的以太網(wǎng)接口送給上位機。多路采集通道經(jīng)過模擬開關(guān)后再進入A/D轉(zhuǎn)換器。CPLD是整個系統(tǒng)的控制核心,它控制采集通道的切換、A/D轉(zhuǎn)換器的啟/停、轉(zhuǎn)換后的數(shù)據(jù)在FIFO中的存放地址發(fā)生器、產(chǎn)生中斷請求以通知ARM7讀取存放在FIFO中的數(shù)據(jù)等。</p><p><b> 2.2 系統(tǒng)設(shè)計</b></
15、p><p> 1.編寫OnKey()函數(shù),響應(yīng)鍵盤消息。流程圖如圖1所示。</p><p> 1) 這里設(shè)置了兩個文本框,用來輸入通道編號和該通道的警戒值,在鍵盤消息響應(yīng)函數(shù)里針對兩個文本框分別作出處理,只處理回車鍵和取消鍵,其他鍵由控件本身處理。程序里用變量EditNumber 指示當(dāng)前要編輯的文本框控件;用變量input 指示該文本框控件是否處于輸入編輯狀態(tài)。以此決定回車鍵應(yīng)該執(zhí)行的功
16、能。 </p><p> 2)當(dāng)文本框控件不是編輯狀態(tài)時,第一次回車將使其進入編輯狀態(tài),在程序里用SetWndCtrlFocus( )函數(shù)將焦點轉(zhuǎn)移到該控件并用SetTextCtrlEdit() 函數(shù)設(shè)置為編輯狀態(tài);當(dāng)文本框正處于編輯狀態(tài)時,第二次回車將使其退出編輯狀態(tài),并將要編輯的文本框切換到另一個文本框控件,取消鍵的處理和這種情況類似。 當(dāng)在實現(xiàn)按鍵實現(xiàn)通道的選擇時,我我在void Main_Task(vo
17、id *Id) 里添加了如下代碼:</p><p><b> if(flag){</b></p><p> switch(pMsg->WParam)</p><p><b> {</b></p><p> case 15:Key_val=0;break;</p><
18、p> case 11:Key_val=1;break;</p><p> case 12:Key_val=2;break;</p><p> case 13:Key_val=3;break; </p><p> case 8:Key_val=4;break; </p><p><b> }</b>&l
19、t;/p><p> 時通過按鍵的掃描碼來改變變量Key_val的值,最后來控制通道的選擇以及后面添加的數(shù)碼管的顯示位置。在之前添加一個變量flag是為了在文本焦點時,柱狀圖和通道不會改變。</p><p> 3) 如果當(dāng)前要編輯的文本框是警戒值輸入框,在編輯狀態(tài)中回車確定后,所輸入的通道編號以及警戒值就會保存在數(shù)組WarnningData 中,代碼如下: </p>&
20、lt;p> WarnningData[ Unicode2Int(pChannelTextCtrl->text)]=Unicode2Int(pValueTe xtCtrl->text); </p><p><b> 圖1</b></p><p> 2.編寫繪圖顯示任務(wù)Display_Task, 繪制文本框和柱狀圖等,并實現(xiàn)文本框編輯程序和超過警戒
21、值后的顯示,其流程圖為圖2所示。</p><p><b> 圖2</b></p><p> 程序中用TextOut()函數(shù)顯示文本框的提示信息,用數(shù)組edit 記錄兩個文本框是否處于編輯狀態(tài),用變量IsEdit 指示提示信息是否顯示。在此次的實驗中,我是利用一個disp_en來控制是否在柱狀圖上的文本框內(nèi)顯示電壓值,而這一使能的控制是在觸摸屏上的點擊實現(xiàn)的,只有在
22、單擊觸摸屏的時候才會被觸發(fā)。if(disp_en){ Int2Unicode((int)result_AD0,result_AD0_16);TextOut(pdc,110,(int)(210-result_AD0*20/3.3)-10,result_AD0_16,TRUE, FONTSIZE_SMALL);}在實際上,IsEdit這個變量在顯示任務(wù)循環(huán)一次就改變一次狀態(tài),當(dāng)IsEdit==1 時將提示信息擦掉,否則保持顯示不變。
23、這就是閃爍顯示的原理,表示AD 轉(zhuǎn)換結(jié)果的條形圖超出警戒值的部分的閃爍也是這樣實現(xiàn)的,隨著任務(wù)的循環(huán)隔次的改變狀態(tài)。 </p><p> 2)warnning[x]是條形圖閃爍的指示變量。當(dāng)某路AD 轉(zhuǎn)換的結(jié)果result_ADx 大于對應(yīng)通道的警戒值Warnni ngData[x]時,根據(jù)warnning[x] 的值決定條形圖的長度是和result_ADx 對應(yīng)還是和W arnningData[x]對應(yīng),這樣
24、看起來條形圖的長度是變化的,效果就是超過警戒線的那部分在閃爍。 而我在這里做出了修改與控制,是在鍵盤按鍵響應(yīng)才觸發(fā)這警告值。而按鍵的響應(yīng)式依靠之前的鍵盤的掃描碼的值來控制的Key_val變量。于是在此添加了一段語句:if(Key_val==0||Key_val==4)。</p><p> 5、編寫數(shù)碼管顯示代碼。通過改變模擬電壓的值來控制數(shù)碼管上的顯示值。并且是在此基礎(chǔ)上在添加一個控制,當(dāng)有按鍵時同時也控制的數(shù)
25、碼管的顯示位。</p><p> 2.3代碼分析、技術(shù)實現(xiàn)問題</p><p> ?。?)數(shù)碼管顯示及閃爍顯示的代碼</p><p><b> // 0通道顯示</b></p><p> if(Key_val==0||Key_val==4){ //是在按鍵響應(yīng)的同時對數(shù)碼管的位顯示也進行控制 </p>
26、;<p> ZLG7289_ENABLE();//使zlg7289占有同步串口</p><p> Delay(5);//延時</p><p> WriteSDIO(ZLG7289_CMD_DATA1|6);//數(shù)碼管以方式1譯碼,第一個數(shù)碼管亮</p><p> WriteSDIO(((int)(result_AD0))%10);//顯示個位&
27、lt;/p><p> Delay(1);//延時</p><p> if((int)((result_AD0))>9)//鍵值大于9顯示十位</p><p><b> {</b></p><p> WriteSDIO(ZLG7289_CMD_DATA1|7);//發(fā)送十位數(shù)據(jù)</p><p
28、> WriteSDIO(((int)(result_AD0))/10);</p><p><b> Delay(1);</b></p><p> WriteSDIO(ZLG7289_CMD_HIDE);//使一、二、三這三位數(shù)碼管顯示</p><p> WriteSDIO( 0xff);</p><p>&
29、lt;b> }</b></p><p> else//鍵值小于10不顯示十位</p><p><b> {</b></p><p> WriteSDIO(ZLG7289_CMD_HIDE);//使個位數(shù)碼管顯示</p><p> WriteSDIO(0x7f);</p><
30、p><b> }</b></p><p><b> a=0xff;</b></p><p> if(result_AD0>WarnningData[0])</p><p><b> a=0x3f;</b></p><p><b> Delay(1
31、);</b></p><p> WriteSDIO(ZLG7289_CMD_FLASH);//閃爍</p><p> WriteSDIO(a);</p><p><b> }</b></p><p> 這是通道0的數(shù)碼顯示及閃爍,只需將通道0中的輸入值和警戒值改成對應(yīng)通道的值就可以實現(xiàn)。</p&
32、gt;<p> ?。?)在LCD屏條形圖中超出部分閃爍顯示的代碼</p><p> if(result_AD0<=WarnningData[0])</p><p><b> {</b></p><p> FillRect(pdc,110,(int)(210-result_AD0*20/3.3),130,210,GRAP
33、H_MODE_NORMAL, COLOR_BLACK);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(warnning[0]==1)</p><p&g
34、t;<b> {</b></p><p> FillRect(pdc, 110, (int)(210-result_AD0*20/3.3), 130, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);</p><p> warnning[0]=0;</p><p><b> }</b><
35、;/p><p><b> else</b></p><p><b> {</b></p><p> warnning[0]=1;</p><p> FillRect(pdc, 110, (int)(210-WarnningData[0]*20/3.3), 130, 210, GRAPH_MODE
36、_NORMAL,COLOR_BLACK);</p><p><b> }</b></p><p><b> }</b></p><p> 這是通道0的代碼,通道1、2、3的代碼與之像似,只要改變相應(yīng)的輸入值和警戒值即可。</p><p> ?。?)觸摸屏及按鍵的控制:</p>&
37、lt;p> void Main_Task(void *Id) //Main_Test_Task</p><p><b> {</b></p><p> POSMSG pMsg;</p><p> //flag=TRUE;</p><p> struct point{</p&g
38、t;<p><b> int x;</b></p><p><b> int y;};</b></p><p> struct point scrpoint;</p><p> flag=TRUE;</p><p> init_ADdevice(20,ADCCON_SLEEP
39、);</p><p><b> for(;;)</b></p><p><b> {</b></p><p> POS_Ctrl pCtrl;</p><p> pMsg=WaitMessage(0);</p><p> if(pMsg->pOSCtrl)&l
40、t;/p><p><b> {</b></p><p> if(pMsg->pOSCtrl->CtrlMsgCallBk)</p><p> (*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg);</p><p><b> }</b></p&g
41、t;<p><b> else</b></p><p><b> {</b></p><p> switch(pMsg->Message)</p><p><b> {</b></p><p> case OSM_TOUCH_SCREEN:
42、 //觸摸屏的控制</p><p> switch(pMsg->LParam) </p><p><b> {</b></p><p> case TCHSCR_ACTION_CLICK: //響應(yīng)觸摸屏單擊控制</p><p> disp_en=TRUE; //單擊觸發(fā)文本框電壓
43、顯示</p><p><b> break;</b></p><p> case TCHSCR_ACTION_DBCLICK: //響應(yīng)觸摸屏雙擊控制</p><p> disp_en=FALSE;</p><p><b> break;</b></p><p>
44、;<b> }</b></p><p><b> break;</b></p><p> case OSM_KEY: //按鍵響應(yīng)</p><p> pCtrl=GetCtrlfromID(NULL, GetWndCtrlFocus(NULL));</p><p>
45、if(pCtrl->CtrlType==CTRLTYPE_WINDOW)</p><p><b> {</b></p><p> if((((PWnd)pCtrl)->style&WND_STYLE_MODE)==WND_STYLE_MODE)</p><p><b> {</b></p&g
46、t;<p> //焦點是有模式窗口,消息直接傳遞過去</p><p> OSOnSysMessage(pMsg);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p&g
47、t;<p> if(onKey(pMsg->WParam,pMsg->LParam) )</p><p><b> break;</b></p><p> Uart_Printf("key=%d\n",pMsg->WParam);</p><p> if(flag){
48、 //變量flag在之前的觸摸屏單雙擊控制時響應(yīng)是否成立</p><p> switch(pMsg->WParam)</p><p><b> {</b></p><p> case 15:Key_val=0;break;</p><p> case 11:Key_val=1;b
49、reak;</p><p> case 12:Key_val=2;break;</p><p> case 13:Key_val=3;break; </p><p> case 8:Key_val=4;break; </p><p><b> }</b></p><p><b&g
50、t; }</b></p><p><b> default:</b></p><p> OSOnSysMessage(pMsg);</p><p><b> break;</b></p><p><b> }</b></p><p>
51、;<b> }</b></p><p> DeleteMessage(pMsg);</p><p> OSTimeDly(200);</p><p><b> }</b></p><p><b> }</b></p><p><b>
52、 實驗結(jié)果</b></p><p> 將生成的文件編輯下載到開發(fā)平臺并運行,通過四個旋鈕來改變相應(yīng)通道的電壓值,當(dāng)輸入的電壓值超過警戒值時,對應(yīng)的數(shù)碼管顯示的數(shù)值也會閃爍顯示,同時在LCD屏上的條形圖的超過部分也會閃爍,條形圖的頂端會顯示相應(yīng)的電壓值(數(shù)值與數(shù)碼管顯示的值相同)。也可在通過按鍵來直接控制是否閃爍顯示。哪怕電壓值再高,超過警告值也不閃爍。在LCD屏上設(shè)置了兩個文本框,一個是控制的通道
53、的,另一個是改變警戒值的。當(dāng)enter鍵按下時,選中了通道文本框,按鍵響應(yīng)后,在文本框內(nèi)顯示所按下的值,再按下enter后,柱狀圖跳到該值對應(yīng)的通道。并且在觸摸屏上單擊就可以顯示柱狀圖上的電壓值,雙擊后,電壓值消失。實驗結(jié)果實物圖如下:</p><p><b> 實驗總結(jié)</b></p><p> 嵌入式實驗,從第一次到最后一次,我?guī)缀醵际沁x擇的ARM7的實驗,所
54、以對ADS實驗比較熟悉,可是在實驗中還是遇到了形形色色的問題,因為一個人想把一個設(shè)計性的實驗完全做完,是不太容易的,之前的實驗都是按照老師的視頻做的,而且也是最多實現(xiàn)一個現(xiàn)象而已,沒有什么要細細斟酌考慮要實現(xiàn)的話該怎么做?而這次是自己想實現(xiàn)什么樣的現(xiàn)象,什么樣的特色都要自己去發(fā)現(xiàn)、去理解,所以面對一大堆代碼時,很是傷腦筋。所以我必須要將前面所掌握的知識融會貫通,并靈活運用,這樣才能把這次實驗做完。</p><p>
55、; 首先按照的實驗要求,我開始在網(wǎng)上找資料,以及結(jié)合之前老師講的實驗資料,然后和做這個實驗的同學(xué)討論,終于有了一個比較的明確的思路,也想出了自己想要的效果。可是真正做的時候并不是那么簡單的,總是遇到這樣那樣的問題,遇到問題就要解決,這就要自己的實力,終于經(jīng)過自己不懈的努力,終于把程序中的錯誤都改正過來了。</p><p> 這次實驗使我明白了很多,光會有理論知識是不行的,我們要把理論知識和實踐結(jié)合起來,這樣才
56、發(fā)揮了理論知識的用途。雖然這次實驗我經(jīng)歷了整整七個小時的艱苦奮斗,這樣的堅持不懈終于最后有了自己想要的成效。所以我知道也深深地體會到做實驗的時候不能太急躁,要慢慢來,凡事都不能一氣呵成的,都要經(jīng)歷一定的過程,途中總會遇到一些問題,遇到問題我們不能退縮,要勇敢面對,用自己的實力解決他,這樣我們才會成長。</p><p><b> 參考文獻</b></p><p>
57、[1] 田澤. 嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M] . 北京:北京航空航天大學(xué)出版社,2005.3</p><p> [2] 周立功. ARM 嵌入式系統(tǒng)基礎(chǔ)教程[M] . 北京:北京航空航天大學(xué)出版社,2005.</p><p> [3] 吳明暉. 基于ARM 的嵌入式系統(tǒng)開發(fā)與應(yīng)用[M] . 北京:人民郵電出版社,2004.</p><p> [4] 金建設(shè).
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm多通道儀表數(shù)據(jù)采集實驗
- 基于arm的多通道儀表數(shù)據(jù)采集實驗
- 基于arm7多通道儀表數(shù)據(jù)采集
- 基于arm7多通道儀表數(shù)據(jù)采集實驗
- 基于DSP+ARM的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計.pdf
- 基于ARM9多通道快速數(shù)據(jù)采集系統(tǒng)的設(shè)計研究.pdf
- 基于ARM的多通道數(shù)據(jù)采集器的設(shè)計與實現(xiàn).pdf
- 基于ARM的多通道測控儀表的研究與開發(fā).pdf
- 基于ARM11的LXI多通道數(shù)據(jù)采集器的研究與實現(xiàn).pdf
- 基于USB的多通道同步數(shù)據(jù)采集系統(tǒng).pdf
- 開題報告---基于labview的多通道數(shù)據(jù)采集系統(tǒng)
- 基于proteus的多通道數(shù)據(jù)采集系統(tǒng)仿真設(shè)計
- 基于FPGA的多通道數(shù)據(jù)采集系統(tǒng)設(shè)計.pdf
- 基于arm的數(shù)據(jù)采集系統(tǒng)
- 基于USB的大容量多通道數(shù)據(jù)采集系統(tǒng).pdf
- 基于labview的多通道數(shù)據(jù)采集系統(tǒng)(畢業(yè)論文)
- 基于ARM11的多通道數(shù)據(jù)采集記錄儀軟件系統(tǒng)設(shè)計與實現(xiàn).pdf
- 基于LabVIEW的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計.pdf
- 多通道數(shù)據(jù)采集存儲與通道校正.pdf
- 基于DSP的多通道同步數(shù)據(jù)采集系統(tǒng)的研制.pdf
評論
0/150
提交評論