基于單片機的多路數據采集系統設計說明_第1頁
基于單片機的多路數據采集系統設計說明_第2頁
基于單片機的多路數據采集系統設計說明_第3頁
基于單片機的多路數據采集系統設計說明_第4頁
基于單片機的多路數據采集系統設計說明_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

..引言近年來,數據采集及其應用受到了人們越來越廣泛的關注,數據采集系統也有了迅速的發(fā)展,它可以廣泛的應用于各種領域。單片機作為微型計算機的一個重要分支,應用廣泛,對人類社會產生了巨大的影響。Intel公司生產的51系列單片機,由于具有集成度高、處理功能強、可靠性好、系統結構簡單、價格低廉、易于使用等優(yōu)點。在我國已經得到了廣泛的應用。特別是在智能儀器儀表、工業(yè)檢測控制等一些領域取得了令人矚目的成就?;趩纹瑱C的數據采集系統完全能夠滿足各種測控系統需要,實時性好,應用前景廣闊。對于本設計而言,其主要任務就是將0~5V的直流電壓進行測量并送到數碼管去顯示?;诠δ芘c價格的考慮,在這里選用了比較常見的逼近型ADC0809芯片,其在精度、速度和價格上都適中,可以滿足我們在這個設計的要求??紤]到本系統是由單片機供電,選用了低功耗的數碼管,以滿足顯示結果的要求。軟件設計方面,采用了功能模塊化的設計思想;鍵盤模數轉換控制采用了單片機外部中斷0與外部中斷1結合的方式來實現,大大提高了單片機的效率,實時處理能力。由于對匯編語言較為了解,所以采用匯編語言來編程。1設計任務及總體設計方案在本次課程設計中,要求設計一個基于單片機的的多路數據采集系統,這個課題和我們所學的課程聯系緊密、息息相關,涉及到很多的知識,是對我們所學知識的一次考察,利于我們對學過的知識復習一遍,加深理解。1.1設計任務與要求在本次設計中要求我們達到以下三點要求:〔1單片機控制A/D轉換器檢測多路電壓〔2檢測的結果送單片機處理并顯示〔3數碼管輪流顯示各路電壓或顯示指定的通道電壓1.2總體設計方案〔1選擇89S52作為主芯片,ISP下載線編程、方便靈活、功能強大,完全可以滿足本設計的性能要求,而且89S52是51系列中比較常用的芯片,好用〔2選擇ADC0809作為模數轉換器,就本設計的要求而言,ADC0809性價比相當的高,而且在很多的課程都學習過,比如:智能儀器、單片機等課程,對它的性能、結構都比較了解?!?選擇74LS74作為分頻器,從單片機的ALE輸出2MHZ的頻率,經過74LS74的4分頻作用,最終產生一個500KHZ的時鐘頻率給ADC0809,使ADC0809正常工作。〔4還有一些外圍電路,比如:ISP下載電路、單片機復位電路、數碼管顯示電路等,這樣才能組成一個完整的多路數據采集系統。其系統框圖如圖1-2-1所示74LS74分頻器ALE74LS74分頻器ALE89S52單片機數碼管顯示數碼管顯示CLKCLKADC0809圖1-2-1系統框圖2硬件設計數據采集,又稱數據獲取,是利用一種裝置,從系統外部采集數據并輸入到系統內部的一個接口。數據采集技術廣泛引用在各個領域。在該系統中需要將模擬量轉換為數據量,而A/D是將模擬量轉換為數字量的器件,需要考慮的指標有:分辨率、轉換時間、轉換誤差等等。而單片機是該系統的基本的微處理系統,它完成數據讀取、處理及邏輯控制,數據傳輸等一系列的任務。數據采集系統一般由信號調理電路,多路切換電路,采樣保持電路,A/D,單片機等組成。但是在本設計中直接就對輸入電壓進行A/D轉換,著重在模數轉換器的選擇和使用上。2.1單片機的選擇 單片機是一種面向大規(guī)模的集成電路芯片,是微型計算機中的一個重要的分支。此系統是由CPU、隨即存取數據存儲器、只讀程序存儲器、輸入輸出電路〔I/O口,還有可能包括定時/計數器、串行通信口、顯示驅動電路〔LCD和LED驅動電路、脈寬調制電路、模擬多路轉換器及A/D轉換器等電路集成到一個單塊芯片上,構成了一個最小但完善的計算機任務。單片機要使用特定的組譯和編譯軟件編譯程序,在用keiluvision4把程序下載到單片機內。 而本設計選用的是AT89S52.AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器,使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。其結構圖如下圖2-1-1所示圖2-1-189S52結構2.2模數轉換器的選擇A/D轉換器的種類很多,就位數來說,可以分為8位、10位、12位和16位等。位數越高其分辨率就越高,價格也就越貴。A/D轉換器型號很多,而其轉換時間和轉換誤差也各不相同。 <1>逐漸逼近式A/D轉換器:它是一種速度快、精度較高、成本較低的直接式轉換器,其轉換時間在幾微秒到幾百微秒之間。 <2>雙積分A/D轉換器:它是一種間接式的A/D轉換器,優(yōu)點是抗干擾能力強,精度比較高,缺點是數度很慢,適用于對轉換數度要求不高的系統。 <3>并行式A/D轉換器:它又被稱為flash〔快速型,它的轉換數度很高,但她采用了很多個比較器,而n位的轉換就需要2n-1個比較器,因此電路規(guī)模也極大,價格也很貴,只適用于視頻A/D轉換器等數度特別高的領域。 鑒于上面三種方案,在價格、轉換速度等多種標準考量下,在本設計選用的是逐漸逼近式A/D轉換器——ADC0809.2.3顯示部分LED數碼顯示管是一種由LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個LED顯示管,其中7個用于顯示字符,1個用來顯示小數點,故通常稱之為八段發(fā)光二極管數碼顯示器。對LED數碼顯示器的控制可以采用按時間向它提供具有一定驅動能力的位選和段選信號。LED數碼顯示有動態(tài)掃描顯示法和靜態(tài)顯示。在單片機中,為了節(jié)省硬件資源,多采用動態(tài)掃描顯示法。為了布線和做板的簡單,采用一個4位的共陰數碼管。2.4按鍵部分為實現顯示指定的通道電壓,需要用到單片機的外部中斷0和外部中斷1來實現跳轉,其原理圖如下圖2-4-1所示,Q11接到外部中斷0〔P3.2,Q12接到外部中斷1<P3.3>。當按下按鍵S3時,給P3.2低電平,啟動外部中斷0;當按下按鍵S3時,給P3.3低電平,啟動外部中斷1,編寫相應的中斷服務程序就可以實現功能。圖2-4-1按鍵原理圖3軟件設計3.1主程序設計主程序的設計的思路是:當沒有中斷的時候,就按順序從1通道輪流顯示到8通道。在外部中斷0<INTER0>的中斷服務程序中對寄存器R2加1,即進入外部中斷0時,R2就加1;在外部中斷1<INTER1>的中斷服務程序中對寄存器R0加1,即進入外部中斷0時,R0就加1。在主程序中對R2進行比較,當R2=1時就停止輪流顯示,即當外部中斷0第一次響應后,停止輪流顯示;當R2=2是將R0的值賦給R3,〔R3是通道輪流顯示的條件寄存器然后調用顯示子程序。其程序流程圖如下圖3-1-1所示開始P3.7=0?初始化開始P3.7=0?初始化 N開中斷 Y開中斷調用調用通道選擇子程序LPINCR3INCR3MOVR3,#01HR3=9?MOVR3,#01HR3=9? YR2=1? NR2=1?YR2=2? NR2=2?N將R0的值賦給R3將R0的值賦給R3 Y圖3-1-1程序流程圖3.2子程序設計子程序有4個,分別是通道選擇子程序LP,顯示子程序DISPLAY,延遲子程序D10ms,數據處理子程序CAI。<1>通道選擇子程序LP:LP: CJNER3,#01H,LP1;根據R3來選擇通道CLRP2.7 ;開通道CLRP2.6 CLRP2.5AJMPQIDLP1:...;有8個通道,格式一樣的,...LP7:SETBP2.7 ;8通道SETBP2.6 SETBP2.5QID:CLRP2.0;啟動ADC0809,給P2.0輸入一個正脈沖NOPNOPNOPSETBP2.0 NOP NOP NOP CLRP2.0 P2.1,$ ;判斷是否開始轉換 JNBP2.1,$ ;判斷轉換是否結束ACALLD10ms1 MOV44H,P0 ;將P0口的給44H ACALLCAI ;調用數據處理子程序YAN1:ACALLDISPLAY1 ;顯示通道數 ACALLDISPLAY ;顯示轉換結果DJNZR4,YAN1 ;延遲RET這個子程序的作用是根據R3的值來選擇通道,實現8路數據順序采集、輪流顯示,當這個子程序調用結束后,就會返回主程序,實行INCR3操作,并將R3與#09H比較?!?顯示子程序DISPLAY:DISPLAY: ;數碼顯示子程序MOVDPTR,#TAB MOVA,40HMOVCA,A+DPTR CLRP2.2 SETBP2.3 CLRP2.4 ADDA,#80HMOVP1,A ACALLD10ms1MOVDPTR,#TAB MOVA,41HMOVCA,A+DPTRCLRP2.2 CLRP2.3 SETBP2.4 MOVP1,AACALLD10ms1 RETDISPLAY1:MOVDPTR,#TAB MOVA,R3MOVCA,A+DPTR SETBP2.2CLRP2.4 CLRP2.3 MOVP1,A ACALLD10ms1 RET這個子程序的作用是:根據P2.2、P2.3、P2.4的不同賦值來選擇數碼管顯示,顯示的段碼分別存儲在40H,41H,而通道數段碼存儲在R3?!?延遲子程序D10ms:D10ms:MOVR5,#14HDL:MOVR6,#0FFHDL0:DJNZR6,DL0DJNZR5,DLRET這個子程序起到延遲的作用,因為在顯示的時候可能要用到延遲才能夠讓數碼管上的值顯示的清晰明了,這個是必不可少的?!?數據處理子程序CAI:CAI:MOVA,44H;數據處理子程序MOVB,#51DIVAB ;B為余數MOV40H,A;整數存入40HMOVA,B ;余數大于19H〔25時F0為1CLRF0SUBBA,#1AH ;判斷余數是否大于19〔25?MOVF0,C ;判斷溢出MOVA,#10MULAB ;余數擴大10倍MOVB,#51DIVABF0,LOOP7ADDA,#5;余數大于19H〔25時,結果加5LOOP7:MOV41H,A MOVA,BCLRF0SUBBA,#1AHMOVF0,CMOVA,#10MULABMOVB,#51DIVABF0,LOOP8ADDA,#5LOOP8:MOV42H,ARET因為A/D轉換輸出為2位16進制數,電壓顯示方式為十進制數,所以應進行數據轉換,所以需要調用這個數據處理子程序CAI,其轉換公式為:VCC[A/D轉換輸出〔十六進制]=FF〔十六進制X〔轉換后顯示為十進制值5V〔最大電壓值4硬件制作與調試當硬件制作完成后,在檢測沒有發(fā)生短路和斷路的情況下,就可以編寫程序進行調試可分成一下幾個步驟:〔1編寫一個小程序,然后燒寫到芯片里,有可能燒不進去,這可能是ISP下載口接反了或者是芯片的問題,一步一步的檢查?!?當小程序能夠燒寫進去并且能夠實現程序的功能以后,說明硬件應該沒什么問題,接著再編寫能夠實現更多功能的程序,并且能過實現為止,這樣循序漸進,由小到大,這樣編寫出來的程序就可以實現〔3可能存在這樣的問題:每個模塊的程序都能實現,但是當把它們集合在一起的時候就不行了,這就要檢查每個模塊之間的調用有沒有問題了,下面是具體的流程:4.1硬件制作硬件制作的流程如下:<1>畫出電路草稿圖,經過修改選擇,確定好方案。<2>根據電路圖,利用DXP2004,畫出原理圖。<3>編譯原理圖,確定無誤后導入PCB圖。<4>排版PCB圖,考慮好用單面還是雙面板來制板,然后連線。<5>據原理圖生成元件清單,買好所用器件及銅板。<6>打印PCB,進行印板腐蝕,打孔、焊接。<7>完成焊接之后,檢查電路,最后上電觀察電路是否正常。4.2調試在電腦上裝好keil編程軟件及下載器軟件progisp1.66,將編好的程序生成可執(zhí)行文件,文件名以.HEX為后綴。通過下載器,將仿真好的程序燒入單片機芯片。給電路上電,看硬件是否正常工作。以下是我調試的遇到的問題:<1>板子制作出來,發(fā)現下載器畫錯了,管腳接得不對。所以要燒入程序必須借助單片機最小系統版。<2>電路板上電,燒入程序,發(fā)現數碼管不亮。按下任何鍵都沒有反應,能確定的是板子復位電路不起作用。<3>上電檢查單片機每個管腳的電壓,沒有發(fā)現異常。再檢查各塊芯片,也能顯示正常。說明硬件部分沒有問題,只需考慮軟件部分了。<4>仔細的研究程序,覺得可能按鍵去抖沒有做好。在程序中添加了延時去抖,再次燒入單片機,電路能正常工作了,調試成功。調試儀器:數字萬用表〔1個,電源〔1個,下載器〔1個測量結果及誤差表如下:通道數Int1Int2Int3Int4Int5Int6Int7Int8萬用表測量電壓值2.8v0.0v5.0v3.9v3.0v2.0v1.0v0.0v數碼顯示值2.8v0.0v5.0v4.0v3.0v1.9v1.0v0.0v誤差0.0v0.0v0.0v0.1v0.0v0.1v0.0v0.0v從上表來對比看,采集到的電壓值很接近實際電壓。證明電路是對的,軟件程序處理沒有錯誤,硬件做得比較成功。5分析設計方案優(yōu)缺點5.1優(yōu)點本次課程設計,設計方案優(yōu)點有以下幾個:〔1硬件簡單,器件少,制作容易。〔2所用器件都是常用的,易買,而且價格便宜?!?采集各個通道的電壓因為電阻值不一致,在調試時易辨別是否為所采集通道的電壓值。〔4顯示部分用一個四位共陰數碼管。首先,采用集成數碼管最大的好處是減少了PCB制作的困難。第二,采用NPN9014三極管驅動而不使用芯片,節(jié)約了成本。5.2缺點方案設計存在的不足之處如下:硬件電路中采用了74LS74進行分頻出500KHz送至ADC0809的時鐘端。原則上ADC0809確實需要500KHz來驅動,不過正常情況下,1MHz是也是可以的。即采用6MHz的晶振,經單片機分頻從ALE端輸出的頻率為1MHz來驅動即可。所以分頻顯得多此一舉了。但為了保證ADC0809一定能正常工作,才會采取分頻?!?輸出數據沒有采取鎖存,顯示時數碼管雖然能顯示,但數據不夠穩(wěn)定。本次課程設計的目的是培養(yǎng)和鍛煉學生的實踐能力,同時希望學生能把所學到的東西應用至實際生活中。雖然之前的實驗做過多通道采集,但那只是軟件部分,根本不涉及硬件的設計,所以對硬件的組成原理是不深入了解的。另外,這次課題也能加強學生的自學能力。就像本次課程設計,用到了74LS74才自己上網去查資料,通過仿真確信可行才用于實踐中。還有單片機C語言編程,之前是有一定的基礎,可畢竟還不足,仍需要自己花時間去學習,邊學便用。為以后的工作做了一定的準備。6總結在本次設計中發(fā)現了不少的問題,也解決了很多的問題,學會了如何去發(fā)現問題、分析問題進而解決問題。特別是在調試的時候,在我制作完成硬件后,在將程序燒到芯片里的時候,沒有燒進去,不知道原因在哪里,我把電路檢測了一遍,沒有發(fā)生短路或斷路的情況,于是我懷疑是不是芯片的問題,把別人的芯片拿來試了一下,但還是燒不進去,只好再檢查一下電路,最后在檢查PCB的時候發(fā)現是ISP下載口接反了,將其重新焊接,再試接成功了。當然在程序調試的過程中不止這些問題,比如:燒寫程序進去后,數碼管沒有反映,檢查一下程序的邏輯有沒有錯,有時會陷入某個語句的死循環(huán),跳不出來;顯示的數字不同步,那有可能是在顯示時的延遲不夠,達不到要求等等一些問題。程序的調試是一件枯燥而持久的事情,所以要保持耐心和熱情,有的問題一時間找不到原因,那不妨換個思路,也許就會豁然開朗了。這不僅是在調試的時候需要,在編程的時候,乃至做什么事情的時候,在看似陷入絕境的時候,不妨換個思路、換個角度,當看問題的角度不同的時候,可能就會有一些新的想法。在這次設計中鍛煉了我將軟件和硬件結合起來的能力,加深了對以前學過的知識的記憶和理解。同時讓我站在一個新的角度去看問題,想實現某種功能并不只有一條途徑,切不可陷入固定的思維,認為只有這樣做才行,這樣可能到最后也解決不了問題。問題是多種多樣的,答案也不只有一種。謝辭在完成課程設計的時候,衷心的感謝我的指導老師黃源老師。在我遇到問題和困難的時候,他給了我很大的幫助,有了他的幫助,我的課程設計才能少走一點彎路,在這里道一聲真摯的感謝。當然也要感謝幫助過我的其他老師們,每當有問題去求教她們的時候,她們總是不厭其煩、耐心的給我指導。當有一些學過的知識記不起來時,她們總是慢慢的引導,直到將知識點記起來,最終把問題解決。在這里真的要謝謝她們,謝謝!8參考文獻[1]白駒珩、雷曉平.單片計算機及其應用〔二.高等教育出版社,2005.9[2]閻石.數字電子技術基礎[M].北京:高等教育出版社,2006.5[3]王選民.智能儀器原理及設計[M].北京:清華大學出版社,2008.2附錄元件清單:序號名稱數量單價備注1單片機89C521+1個DIP40底座2A/D轉換08091+1個DIP28底座34位共陰數碼管1410K精密電位器25按鍵3小61*40圓針插座27三極管32N30948電阻710K9電阻333010電阻1100K11電容227pf12電容110413晶振112MHZ141*40排針2151*8排線216ISP下載口12*517單面板1180mm*85mm程序:ORG0000HAJMPMAINORG0003HAJMPINTER0 ORG0013H AJMPINTER1 ORG0030H;----------------------------------------------------------MAIN:MOVR0,#01H ;初始化MOVR1,#00H MOVR3,#00H MOVR4,#02HMOV40H,#00HMOV41H,#00HJNBP3.7,LOOP ;P3.7作為開始鍵AJMPMAINLOOP:ACALLD10msJNBP3.7,START AJMPMAIN;----------------------------------------------------------START: SETBEA ;開中斷 SETBIT0 SETBIT1 SETBEX0 SETBEX1ACALLLPINCR3 CJNER3,#09H,ST1MOVR3,#01H;----------------------------------------------------------ST1:CJNER1,#01H,NEXT2 ;進行中斷變量的比較AJMPST1NEXT2:CJNER1,#02H,NEXT3MOVR1,#00H MOVA,R0 MOVR0,#00H MOVR3,A NEXT3:AJMPSTART;----------------------------------------------------------INTER0: ;中斷服務程序0 MOVR1,#01H CJNER0,#00H,N1 ACALLD10ms1 AJMPN2N1:MOVR1,#02HN2:RETIINTER1: ;中斷服務程序1INCR0 RETI;----------------------------------------------------------LP: CJNER3,#01H,LP1;根據R3來選擇通道CLRP2.7 ;開通道CLRP2.6 CLRP2.5AJMPQID ;LP1:CJNER3,#02H,LP2;2通道CLRP2.7CLRP2.6 SETBP2.5 AJMPQIDLP2:CJNER3,#03H,LP3;3通道CLRP2.7SETBP2.6 CLRP2.5 AJMPQIDLP3:CJNER3,#04H,LP4;4通道CLRP2.7SETBP2.6 SETBP2.5 AJMPQIDLP4:CJNER3,#05H,LP5;5通道SETBP2.7CLRP2.6 CLRP2.5 AJMPQIDLP5:CJNER3,#06H,LP6;6通道SETBP2.7CLRP2.6 SETBP2.5 AJMPQIDLP6:CJNER3,#07H,LP7;7通道SETBP2.7SETBP2.6 CLRP2.5 AJMPQIDLP7:SETBP2.7 ;8通道SETBP2.6 SETBP2.5QID:CLRP2.0;啟動ADC0809,給P2.0輸入一個正脈沖NOPNOPNOPSETBP2.0 NOP NOP NOP CLRP2.0 P2.1,$ ;判斷是否開始轉換 JNBP2.1,$ ;判斷轉換是否結束ACALLD10ms1 MOV44H,P0 ;將P0口的給44H ACALLCAI ;調用數據處理子程序YAN1:ACALLDISPLAY1 ;顯示通道數 ACALLDISPLAY ;顯示轉換結果DJNZR4,YAN1 ;延遲RET;----------------------------------------------------------CAI:MOVA,44H;數據處理子程序MOVB,#51DIVAB ;B為余數MOV40H,A;整數存入40HMOVA,B ;余數大于19H〔25時F0為1CLRF0SUBBA,#1AH ;判斷余數是否大于19〔25?MOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論