2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論