基于at89s52單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計及基于at89s52單片機的二氧化碳濃度測量及播報系統(tǒng)設(shè)計_第1頁
基于at89s52單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計及基于at89s52單片機的二氧化碳濃度測量及播報系統(tǒng)設(shè)計_第2頁
基于at89s52單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計及基于at89s52單片機的二氧化碳濃度測量及播報系統(tǒng)設(shè)計_第3頁
基于at89s52單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計及基于at89s52單片機的二氧化碳濃度測量及播報系統(tǒng)設(shè)計_第4頁
基于at89s52單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計及基于at89s52單片機的二氧化碳濃度測量及播報系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

基于單片機的多路數(shù)據(jù)采集系統(tǒng)設(shè)計TheDesignOfMulti-channelDataAcquisitionSystemBasedOnSCM摘要本文介紹了基于單片機的數(shù)據(jù)采集的硬件設(shè)計和軟件設(shè)計,數(shù)據(jù)采集系統(tǒng)是模擬域與數(shù)字域之間必不可少的紐帶,它的存在具有著非常重要的作用。本文介紹的重點是數(shù)據(jù)采集系統(tǒng),而該系統(tǒng)硬件部分的重心在于單片機。數(shù)據(jù)采集與通信控制采用了模塊化的設(shè)計,數(shù)據(jù)采集與通信控制采用了單片機AT89S52來實現(xiàn),硬件部分是以單片機為核心,還包括A/D模數(shù)轉(zhuǎn)換模塊,顯示模塊,和串行接口部分。該系統(tǒng)從機負(fù)責(zé)數(shù)據(jù)采集并應(yīng)答主機的命令。8路被測電壓通過模數(shù)轉(zhuǎn)換器ADC0809進行模數(shù)轉(zhuǎn)換,實現(xiàn)對采集到的數(shù)據(jù)進行模擬量到數(shù)字量的轉(zhuǎn)換,并將轉(zhuǎn)換后的數(shù)據(jù)通過串行口MAX232傳輸?shù)缴衔粰C,由上位機負(fù)責(zé)數(shù)據(jù)的接受、處理和顯示,并用LED數(shù)碼顯示器來顯示所采集的結(jié)果。軟件部分應(yīng)用VC++編寫控制軟件,對數(shù)據(jù)采集系統(tǒng)、模數(shù)轉(zhuǎn)換系統(tǒng)、數(shù)據(jù)顯示、數(shù)據(jù)通信等程序進行了設(shè)計。關(guān)鍵詞:數(shù)據(jù)采集89C52單片機ADC0809MAX232AbstractThisarticledescribesthehardwaredesignandsoftwaredesignofthedataonwhichbasedonsignal-chipmicrocomputer.Thedatacollectionsystemisthelinkbetweenthedigitaldomainandanalogdomain.Ithasanveryimportantfunction.Theintroductivepointofthistextisadatatocollectthesystem.Thehardwareofthesystemfocusesonsignal-chipmicrocomputer.Datacollectionandcommunicationcontrolusemodulardesign.Thedatacollectedtocontrolwithcorrespondencetoadoptamachine8051tocarryout.Thepartofhardware’scoreisAT89S52,isalsoincludesA/Dconversionmodule,displaymodule,andtheserialinterface.Slavemachineisresponsiblefordataacquisitionandansweringthehostmachine.8roadsweremeasuredtheelectricvoltagetopasstheingeneralusemold-fewconversionofADC0809,therealizationcarriesontheconversionthatimitatestomeasurethenumeraltomeasuretowardsthedatathatcollect.ThensendthedatatothehostmachinethroughMAX232.thehostmachineisresponsiblefordataanddisplay,LEDdigitaldisplayisresponsibledisplaythedata.ThesoftwareispartlyprogrammedwithVC++.Thesoftwarecanrealizethefunctionofmonitoringandcontrollingthewholesystem.Itdesignsmuchprogramlikedata-acquisitiontreatment,data-displayanddata-communicationect.Keyword:dataacquisitionAT89C52ADC0809MAX232

目錄第一章緒論 。在0x010~0x013存放讀音“0”,以此類推“9”存放在0x034~0x034,“萬”存放在0x038~0x03B,“十”存放在0x044~0x047。-通過以下判斷順序可以正確報數(shù)值:先判斷數(shù)字位數(shù),然后從最高位播起,每播一位追加單位播報;數(shù)字播報可以用每一位數(shù)字本身做偏移量,尋址播放;單位在最初判斷數(shù)字位后,設(shè)定起始單位地址,然后逐一增加。開始開始播放buffer [i]播放buffer [i]數(shù)字壓入buffer數(shù)字壓入buffer播放單位播放單位確定數(shù)字位數(shù)d確定數(shù)字位數(shù)di++i++i=0i=0d--d--Buffer[i]為終止符?Buffer[i]為終止符?結(jié)束結(jié)束圖3.5數(shù)字播報流程圖4調(diào)試過程整個調(diào)試過程包括硬件調(diào)試、軟件調(diào)試和系統(tǒng)測試三部分。每個模塊在功能上相互聯(lián)系又各自獨立,所以在每個部分調(diào)試的過程中也要分模塊進行。這樣做的好處是,可以將出現(xiàn)的問題進行具有針對性的處理,避免出現(xiàn)問題時找不到真正原因。調(diào)試過程是對原理進一步理解和對原理中的不足改進的重要步驟。4.1硬件調(diào)試硬件正常是整個系統(tǒng)正常運轉(zhuǎn)的基礎(chǔ),所以硬件調(diào)試就格外重要。硬件調(diào)試主要是對制版的電氣特性進行檢測,逐個排查電路布線問題,使器件在能正常工作。前期的電路特性檢查必須十分耐心,硬件電路的細小問題都可能對軟件的工作是否正常產(chǎn)生影響。硬件的調(diào)試主要經(jīng)行了以下測試:第一,對于電路布線中容易短路和斷路的地方進行檢測。因為在印制板子的過程中難免出現(xiàn)細微問題,比如布線比較近的地方就可能出現(xiàn)短路,然后在焊接好以后,對容易焊接短路的地方進行檢測。這部分檢測較為容易用萬用表測量短路檔來檢測即可。第二,在焊好板子后先不安裝芯片上電。檢測芯片底座供電電壓是否正常。如果不正常,由于已經(jīng)排除掉焊接短路、斷路的問題,可以重點懷疑電路原理的問題。第三,安裝芯片分模塊檢測電路是否正常,這時先檢測單片機是否正常工作,然后通過單片機向各模塊發(fā)送一些簡單命令測試模塊是否能正常工作。4.1.1單片機硬件電路檢測單片機最小系統(tǒng)檢測主要是檢測單片機是否能正常啟動。方法為用示波器檢測單片機30腳,即ALE管腳是否有方波輸出,且方波的頻率因為晶振的1/6,即2M(晶振使用的是12M的)。檢測到2M方波,說明單片機能正常啟動。4.1.2液晶模塊調(diào)試液晶模塊檢測主要是檢測能否正常顯示字符。利用前面提到的送字符串顯示測試。當(dāng)然首先要保證液晶初始化程序和子程序都是正確的,在此前提下查看液晶的硬件電路連接。注意要保證對比度適合。開始測試沒有看到字符,就是因為對比度調(diào)節(jié)不合適。4.1.3ADC0809和語音電路調(diào)試檢測ADC0809首先要檢測ADC0809的時鐘是否正確。本系統(tǒng)采用500Hz,可以用示波器加以檢測。語音芯片保留了按鍵部分用來測試芯片是否正常工作和芯片電源供電是否正常。工作正常后,可以通過控制端口模擬SPI時序,用示波器觀測各控制端是否有正常信號輸出。在檢測語音芯片控制端的時候發(fā)現(xiàn)信號有異常,不能對芯片進行控制,最后發(fā)現(xiàn)P2口的上拉排阻裝反了。4.1.4放大電路檢測放大電路主要是對傳感器信號的放大。檢測放大電路主要是檢測放大電路能不能調(diào)零。將差分輸入端同時接地,然后調(diào)整調(diào)零電阻,看是否能調(diào)零。放大電路放大倍數(shù)產(chǎn)生的誤差也是主要要考慮的。為后面的數(shù)據(jù)處理可能導(dǎo)致較大誤差。4.2軟件調(diào)試本系統(tǒng)軟件部分采用C語言編寫,系統(tǒng)硬件電路比較簡單,主要通過軟件來實現(xiàn)各個模塊之間的協(xié)調(diào)運作。由于軟件運行的基礎(chǔ)是硬件,所以在調(diào)試軟件的過程中如果發(fā)現(xiàn)問題,應(yīng)該同時考慮軟件和硬件的問題。調(diào)試可以通過使用偉福仿真器來仿真調(diào)試。4.2.1液晶顯示程序調(diào)試液晶顯示在開始測試電路是否正常時,通過送字符串可以正常顯示。但實際系統(tǒng)要求要顯示的濃度值是動態(tài)變化的。開始曾想過,整個顯示內(nèi)容分段顯示,數(shù)字單獨顯示,發(fā)現(xiàn)程序比較繁瑣。所以想到如果可以將這個顯示的內(nèi)容看做一個整體的字符串,而其中的數(shù)字可以動態(tài)改變就可以了。通過使用scanf函數(shù)就可以達到目的。4.2.2語音播報程序調(diào)試語音播報主要是模擬SPI時序傳輸命令與數(shù)據(jù)。主要出現(xiàn)問題是開始播報數(shù)字,用每位數(shù)字作偏移量尋址播報,所播數(shù)字與實際不符。用編譯器仿真查看程序中變量,發(fā)現(xiàn)問題為當(dāng)數(shù)字量轉(zhuǎn)化成字符放到字符串中時,值就轉(zhuǎn)化成其對應(yīng)的ASCⅡ碼。因此想用數(shù)字做便宜量,要對其處理,即減掉30H即可。同時在分段播放時,沒次播放前都要加入判斷是否播放完畢,這樣才能正常運行。調(diào)試初期,沒有加入判斷語句,導(dǎo)致分段播放混亂。還有要注意的是,當(dāng)使用SPI模式不按照嚴(yán)格要求進行錄音的時候,按鍵模式無效,此時不能通過按鍵來判斷芯片是否正常。4.2.3其他程序調(diào)試模數(shù)轉(zhuǎn)化程序比較簡單,就是模擬其時序即可。數(shù)據(jù)處理部分,根據(jù)其線性關(guān)系可以得到求值公式,但是其斜率和輸出的電壓隨溫度變化,沒能得到很好的解決,可以通過多次求值求平均值來減小誤差,但室內(nèi)空氣檢測,要求不是很精確,只要誤差范圍在允許范圍內(nèi)即可。4.3系統(tǒng)測試在各個模塊軟件功能基本實現(xiàn)的時候,其實也就是硬件與軟件能配套實現(xiàn)的過程。在各個模塊程序?qū)崿F(xiàn)功能的時候,在整合整個系統(tǒng)的軟件時要注意不要出現(xiàn)死循環(huán)。各功能單獨測試時,可以實現(xiàn)并不意味著這個系統(tǒng)的功能可以正常實現(xiàn)。在軟件上根據(jù)流程圖,合理設(shè)置個功能的連接方式十分重要。以上調(diào)試經(jīng)過以后可以,進行系統(tǒng)整體測試。由于傳感器正常輸出信號需要預(yù)熱一個小時,系統(tǒng)在一個小時候才能正常測量。傳感器預(yù)熱后可以看到,液晶屏能夠顯示二氧化碳濃度。由于沒有標(biāo)準(zhǔn)的二氧化碳濃度檢測儀進行比較,沒法進行自行標(biāo)定。只能根據(jù)傳感器芯片中所標(biāo)定來處理傳感器輸出信號。所得濃度與實際值存在一些偏差,但是公共場合二氧化碳濃度測量本身精度要求并不高,只要偏差范圍不是太大即可。然后可以經(jīng)行按鍵功能測試。按設(shè)置菜單建,可以進入設(shè)置菜單,按一次是進行報警值的設(shè)置,按兩次是進入報警間隔時間的設(shè)置。其他兩個按鍵可以對數(shù)值進行增減設(shè)置。在顯示濃度時,按下語音播放鍵,可以對濃度進行語音播報。在設(shè)置菜單時不能通過按鍵播放語音,這時播放按鍵用來經(jīng)行設(shè)置相應(yīng)數(shù)值。系統(tǒng)整體設(shè)計功能基本能夠?qū)崿F(xiàn),能夠?qū)Χ趸紳舛冗M行實時顯示和語音播報。5結(jié)論本系統(tǒng)設(shè)計過程中遇到一些問題,有些已經(jīng)解決有些還有待改善。系統(tǒng)中主要應(yīng)用了AT89S52單片機,ADC0809模數(shù)轉(zhuǎn)化芯片,液晶LCD1602以及語音芯片1720。各個芯片在應(yīng)用的過程中應(yīng)該注意一些問題。對于AT89S52單片機,應(yīng)用已經(jīng)相當(dāng)普及和廣泛。由于其本身沒有像類似凌陽單片機集成其他多種功能,在組建系統(tǒng)時只能起到中心控制器的作用,其他功能需要依靠其他芯片來組建相應(yīng)的功能電路。盡管本身功能不是強大,但具有很強的靈活型,根據(jù)不同的需求來配合外部電路來實行控制。ADC0809經(jīng)典的電路接口是利用單片機讀寫口和P2.0通過與非門來控制芯片啟動。本系統(tǒng)中通過I/0口來模擬啟動時序。在實現(xiàn)啟動AD0809的程序調(diào)試中,在最開始的時候,通過簡單的將ALE端置高電平,沒能成功。最后通過對時序圖的重新認(rèn)識,才發(fā)現(xiàn)時邊沿觸發(fā)。這使我發(fā)現(xiàn)對與芯片的使用首先要讀懂其時序圖,很要的一點就是邊沿觸發(fā)還是電平觸發(fā)。這一點在ADC1720的使用上也有體會。液晶LCD1602雖然不能顯示漢字,但已經(jīng)可以滿足系統(tǒng)要求。在系統(tǒng)中對LCD的應(yīng)用較為簡單,僅是現(xiàn)實字符串。通過對LCD的命令字的了解,可以自行設(shè)置顯示效果,例如可以通過控制顯示模式達到字符滾動顯示,由于本系統(tǒng)不涉及,就不再討論。語音芯片ISD1720的使用是本系統(tǒng)中難度最大的部分。本芯片使用不單純是一個放音電路,還含有其他的控制。因此程序首先要能完成指定地址的放音工作,還要配合其他的功能程序。在調(diào)試液晶和語音芯片的過程中,要從易道難逐步調(diào)試。開始就想實現(xiàn)整體功能較為困難。液晶的功能實現(xiàn)先由實現(xiàn)顯示字符串內(nèi)容開始,然后實現(xiàn)顯示內(nèi)容的切換,在實現(xiàn)現(xiàn)實內(nèi)容的變動。而語音芯片則是先實現(xiàn)按鍵播放錄音,然后實現(xiàn)SPI控制的錄放音,最后實現(xiàn)分段播錄功能的實現(xiàn)。語音電路的設(shè)計要注意,在線路布線的時候要注意電容要靠近指定管腳,可以提高錄放音的質(zhì)量。語音程序的應(yīng)用一定要注意每執(zhí)行完一跳語句要進行是否執(zhí)行完畢的判斷,在初步調(diào)試程序時發(fā)現(xiàn)沒有判斷將使得有的語句沒有執(zhí)行不能按預(yù)期的方式播放。也可以用足夠的延時來代替完畢判斷,但建議使用語句判斷較為合理。系統(tǒng)的整體功能實現(xiàn),不是簡單的各個模塊的功能實現(xiàn)的。尤其在軟件編寫方面格外突出,系統(tǒng)軟件中各個功能程序的合理調(diào)用對最后系統(tǒng)的影響十分重要。系統(tǒng)的功能基本實現(xiàn),但還有一些不足。從制作工藝上來看,布線還有待提高,有些進一步完善;從功能上看,由于室內(nèi)測量的精度要求不是是特別高,所以本系統(tǒng)對傳感器的信號處理的精度不是很高,如果要具有更廣泛的應(yīng)用,信號的處理部分要加以改善。本系統(tǒng)作為二氧化碳播報系統(tǒng),建立了基本架構(gòu),根據(jù)不同場合需求可以對不同的功能模塊加以改善從而達到要求。YY謝辭參考文獻[1]王為青、程國鋼.單片機KeilCx51應(yīng)用開發(fā)技術(shù)[M].人民郵電出版社.[2]譚浩強.C程序設(shè)計[M].清華大學(xué)出版社,2005,104~106.[3]白駒珩,雷曉平.單片計算機及其應(yīng)用.高等教育出版社&電子科技大學(xué)出版社,2005.[4]康華光等.電子技術(shù)基礎(chǔ)模擬部分(第五版).高等教育出版社,2005.[5]馬忠梅.單片機的C語言應(yīng)用程序設(shè)計[M].北京航空航天大學(xué)出版社,1999.[6]勞五一,勞佳編著.模擬電子電路分析、設(shè)計與仿真[M].清華大學(xué)出版社,2007.5.[7]王秋爽,曾昭龍著.單片機開發(fā)基礎(chǔ)與經(jīng)典設(shè)計實例.機械工業(yè)出版社,2008[8]松井邦彥.傳感器應(yīng)用技巧(梁瑞林)[M].科學(xué)出版社,2006,16~18[9]Digitallogiccircuitanalysisanddesign.VictorP.Nelson[et.al.]1995byPrenticeHall,Inc.[10]田立,田清著,51單片機C語言程序設(shè)計快速入門.人民郵電出版社出版發(fā)行,2007.附錄附錄一:電路原理圖附錄二:程序清單主函數(shù)程序:voidmain(void){LCD_init();ISD_PU();time0_int();temp2=0;temp3=0;delay(10);alarm=0;time=10;while(1){AD0809_ST=0;AD0809_ST=1;delay(10); AD0809_ST=0;while(!AD0809_EOC); AD0809_OE=1; DigitalData=GetResult();DigitalData=DigitalData*100;DigitalData=(534-DigitalData)/65;temp1=pow(10,DigitalData);sprintf(buffer,"co2:%uppm",temp1); LCD_Disp();while(!BACK){while(!BACK);alarm=showmenu1();time=showmenu2();}while(!DOWN){bfnd();}if(temp3>time*6){EA=0;bfnd();temp2=0;EA=1; }if(temp1>alarm){SetPLAY(0x00,0x56,0x00,0x70);SetPLAY(0x00,0x80,0x00,0x8F);}}}主要子函數(shù):voidtime0_int(){TMOD=0X22;TH0=0X06;TL0=0X06;ET0=1;EA=1;TF0=0;TR0=1;}//****************定時中斷程序**********888voidTimer0_Overflow()interrupt1using0{ET0=0;temp2=temp2+1;if(temp2==40000){temp3++;temp2=0;}ET0=1;}voidbfnd(){SetPLAY(0x00,0x56,0x00,0x70);sprintf(buffer,"%u",temp1);bfsz(temp1);SetPLAY(0x00,0x70,0x00,0x7F);}//AD數(shù)據(jù)獲取函數(shù)floatGetResult(){floattemp;floatVOLT;temp=ADData_BUS;VOLT=5*temp/255;returnVOLT;}//菜單設(shè)置子程序****************************************************intshowmenu1(void){inti,a,b,c,sum;LCD_init();sum=alarm;sprintf(string1,"alarmmunber:");LCD_Showstring(0,string1);sprintf(string1,"%dppm",alarm);LCD_Showstring(1,string1);while(BACK){if(!UP)i=0;elseif(!DOWN)i=1;elsei=3;switch(i){case0:;alarm=100+sum;sum=alarm;break;case1:;alarm=sum-100;sum=alarm;break;default:break;}sprintf(string1,"%dppm",alarm);LCD_Showstring(1,string1);}while(!BACK);return(alarm);}intshowmenu2(void){inti,a,b,c,sum;LCD_init();sum=time;sprintf(string1,"alarmtime:");LCD_Showstring(0,string1);sprintf(string1,"%dmin",time);LCD_Showstring(1,string1);while(BACK){if(!UP)i=0;elseif(!DOWN)i=1;elsei=3;switch(i){case0:;time=10+sum;sum=time;break;case1:;time=sum-10;sum=time;break;default:break;}sprintf(string1,"%dmin",time);LCD_Showstring(1,string1);}while(!BACK);LCD_init();return(time);}voidbfsz(uinta){ucharb,i,j;uintc;i=0j=pdwei(temp1);for(i=0;buffer[i]!='\0';i++){b=buffer[i]-0x30;SetPLAY(0x00,0x10+b*7,0x00,0x17+b*7);bfwei(j);j++;}}voidbfwei(uinti){switch(i){case0:SetPLAY(0x00,0x42,0x00,0x47);break;case1:SetPLAY(0x00,0x47,0x00,0x4C);break;case2:SetPLAY(0x00,0x4C,0x00,0x51);break;case3:SetPLAY(0x00,0x51,0x00,0x56);break;default:break;}}uintpdwei(uintnum){uinti;if(num>10000)i=0;elseif(num>1000)i=1;elseif(num>100)i=2;elseif(num>10)i=3;else;returni;}ganemploymenttribunalclaiEmploymenttribunalssortoutdisagreementsbetweenemployersandemployees.Youmayneedtomakeaclaimtoanemploymenttribunalif:youdon'tagreewiththedisciplinaryactionyouremployerhastakenagainstyouyouremployerdismissesyouandyouthinkthatyouhavebeendismissedunfairly

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論