版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE21摘要進入21世紀,電子產(chǎn)品已經(jīng)開始應(yīng)用到每一個方面,當(dāng)人類向智能電子進軍,單片機由于其物美價廉而受到大家的歡迎,已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域。本文主要介紹了一個基于89S51單片機的測溫系統(tǒng),詳細描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,該系統(tǒng)可以方便的實現(xiàn)實現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。關(guān)鍵詞:單片機AT89S52DS18B20溫度傳感器數(shù)字溫度計AbstractInthe21stcentury,electronicallymachineshavebeenusedinanysideofourlive.Whenthehumanbeingsarecomingtoelectronicallyworld,SCMbecomesverypopularbecauseofitscheaperandhasgoodquantity.Andnowitisusedinourliving,work,scientificresearchandsoon.Itwillintroduceonethermometerwhichisbasedon89C51inthisessay.SoitwilldescribethedevelopmentofthethermometerwhichisusingDS18B20asitssensordetail.Thissystemcanbeusedconvenientlyfortemperaturecollectedandexpressed,andcanbemadethelimitationoftheupanddown.Duetoitisconvenient,accurate,widerange,highmicrodetector,littlevolumeandlesspowerandsoon.Soitissuitableforustouseinlivingandagriculturalproduct.Andalsoitcanbeusedasamoduleaddstoanyothersystem.Keywords:SCMAT89C51DS18B20TemperaturesensorDigitalthermometer目錄TOC\o"1-6"\h\u167211概述 3317451.1課程設(shè)計的意義 3103611.2設(shè)計的任務(wù)和要求 3170002系統(tǒng)總體方案及硬件設(shè)計 3142802.1數(shù)字溫度計設(shè)計方案論證 3272832.1.1方案一 3174412.1.2方案二 386002.2系統(tǒng)總體設(shè)計 3191982.3系統(tǒng)模塊 4186562.3.1主控制器 4252602.3.2顯示電路 556012.3.3溫度傳感器 624682.3.4報警溫度調(diào)整按鍵 663093系統(tǒng)軟件算法分析 7136843.1主程序流程圖 7101153.2讀出溫度子程序 8179333.3溫度轉(zhuǎn)換命令子程序 8250213.4計算溫度子程序 9267433.5顯示數(shù)據(jù)刷新子程序 9183923.6按鍵掃描處理子程序 931324實驗仿真 105PCB圖………………106元件清單……………1181687總結(jié)與體會 1226887查考文獻 12附1實物圖…………………1219764附2源程序代碼 14至21概述:1.1課程設(shè)計意義:本課程設(shè)計需要很多關(guān)于單片機等電子類的知識,需要通過查閱相關(guān)資料才可以完成,因此讓我在擴展知識的同時,也學(xué)會怎么去提出問題,發(fā)現(xiàn)問題,解決問題。同時,在制作的過程中也可以提高我的動手操作能力。1.2設(shè)計的任務(wù)及要求:根據(jù)設(shè)計要求,完成對單路溫度進行測量,并用數(shù)碼管顯示當(dāng)前溫度值系統(tǒng)硬件設(shè)計,并用電子CAD軟件繪制出原理圖,編輯、繪制出PCB印制版。要求:(1)原理圖中元件電氣圖形符號符合國家標(biāo)準(zhǔn);(2) 整體布局合理,注標(biāo)規(guī)范、明確、美觀,不產(chǎn)生歧義。(3) 列出完整的元件清單(標(biāo)號、型號及大小、封裝形式、數(shù)量)(4)圖紙幅面為A4。(4) 布局、布線規(guī)范合理,滿足電磁兼容性要求。(5) 在元件面的絲印層上,給出標(biāo)號、型號或大小。所有注釋信息(包括標(biāo)號、型號及說明性文字)要規(guī)范、明確,不產(chǎn)生歧義。2.編寫并調(diào)試驅(qū)動程序功能要求:(1)溫度范圍0-100℃。(2)溫度分辨率±1℃。(3)選擇合適的溫度傳感器。系統(tǒng)總體方案及硬件設(shè)計2.1數(shù)字溫度計設(shè)計方案論證2.1.1方案一由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,其中還涉及到電阻與溫度的對應(yīng)值的計算,感溫電路比較麻煩。而且在對采集的信號進行放大時容易受溫度的影響出現(xiàn)較大的偏差。2.1.2方案二進而考慮到用溫度傳感器,在單片機電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,電路簡單,精度高,軟硬件都以實現(xiàn),而且使用單片機的接口便于系統(tǒng)的再擴展,滿足設(shè)計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費用較低,可靠性高,軟件設(shè)計也比較簡單,故采用了方案二。2.2系統(tǒng)總體設(shè)計溫度計電路設(shè)計總體設(shè)計方框圖如圖1所示,控制器采用單片機AT89S51,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。AT89S51AT89S51LED顯示DS18B20溫度傳感器單片機復(fù)位時鐘振蕩報警溫度調(diào)整鍵蜂鳴器,指示燈圖2.2—1總體設(shè)計方框圖圖2.2—2系統(tǒng)仿真圖2.3系統(tǒng)模塊系統(tǒng)由單片機最小系統(tǒng)、顯示電路、按鍵、溫度傳感器等組成。2.3.1主控制器單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。晶振采用12MHZ。復(fù)位電路采用上電加按鈕復(fù)位。圖2.3.1—1晶振電路圖2.3.1—2復(fù)位電路圖2.3.1-3報警電路2.3.2顯示電路顯示電路采用4位共陰極LED數(shù)碼管,P0口由上拉電阻提高驅(qū)動能力,作為段碼輸出并作為數(shù)碼管的驅(qū)動。P2口的低四位作為數(shù)碼管的位選端。采用動態(tài)掃描的方式顯示。圖2.3.2——1顯示電路2.3.3溫度傳感器DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:1、獨特的單線接口僅需要一個端口引腳進行通信;2、多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能3、無須外部器件;4、可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;5、零待機功耗;6、溫度以9或12位數(shù)字;7、用戶可定義報警設(shè)置;8、報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;9、負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖4所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖2.3.3——1傳感器電路2.3.4報警溫度調(diào)整按鍵本系統(tǒng)設(shè)計三個按鍵,采用查詢方式,一個用于選擇切換設(shè)置報警溫度和當(dāng)前溫度,另外兩個分別用于設(shè)置報警溫度的加和減。均采用軟件消抖。圖2.3.4——1調(diào)整按鍵電路3、系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序,按鍵掃描處理子程序等。3.1主程序流程圖Y發(fā)DS18B20復(fù)位命令Y發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗9字節(jié)完?CRC校驗正?確?移入溫度暫存器結(jié)束NNY初始化初始化讀取溫度SET鍵是否按下讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令NY調(diào)用顯示子程序設(shè)置報警溫度圖3.1主程序流程圖圖3.2溫度子程序圖3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3.2示3.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖3.3所示發(fā)DS18B20復(fù)位命令發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束圖3.3溫度轉(zhuǎn)換3.4計算溫度子程序計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖3.4所示。3.5顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對分離后的溫度顯示數(shù)據(jù)進行刷新操作,當(dāng)標(biāo)志位位為1時將符號顯示位移入第一位。程序流程圖如圖3.5。開始開始溫度零下?溫度值取補碼置“1”標(biāo)志計算小數(shù)位溫度BCD值計算整數(shù)位溫度BCD值結(jié)束置“0”標(biāo)志NY溫度數(shù)據(jù)移入顯示寄存器溫度數(shù)據(jù)移入顯示寄存器分離顯示溫度分離顯示溫度NYNY標(biāo)志位為1?標(biāo)志位為1?YY最高位顯示“—”最高位顯示“—”最高為顯示分理出的數(shù)據(jù)結(jié)束圖3.4計算溫度流程圖圖3.5顯示數(shù)據(jù)刷新流程圖3.6按鍵掃描處理子程序按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為1時,顯示設(shè)置溫度,否則顯示當(dāng)前溫度。如下圖3.6示。SET鍵按下SET鍵按下ADD鍵是否按下DEC鍵是否按下顯示切換標(biāo)志位是否為“0”調(diào)用顯示子程序報警溫度加1報警溫度減1YNYNYN圖3.6按鍵掃描處理子程序4、實驗仿真進入protuse后,連接好電路,并將程序下載進去。將DS18B20的改為0.1,數(shù)碼管顯示溫度與傳感器的溫度相同。圖4—1溫度顯示仿真當(dāng)按下SET鍵一次時,進入溫度報警上線調(diào)節(jié),此時顯示軟件設(shè)置的溫度報警上線,按ADD或DEC分別對報警溫度進行加一或減一。當(dāng)再次按下SET鍵時,進入溫度報警下線調(diào)節(jié),此時顯示軟件設(shè)置的溫度報警下線,按ADD或DEC分別對報警溫度進行加一或減一。圖4—2溫度調(diào)試仿真當(dāng)?shù)谌伟聪耂ET鍵時,退出溫度報警線設(shè)置。顯示當(dāng)前溫度。5、PCB布圖圖5-——-1PCB圖6、元件清單7、總結(jié)體會通過這次單片機課程設(shè)計,充分提高我的單片機知識及操作能力。在設(shè)計中,下載的網(wǎng)絡(luò)程序有很多問題還符合實驗要求,比如:我們的溫度計精確到1度就可以,而網(wǎng)絡(luò)程序精確到0.1度,雖然越精確越好,不過現(xiàn)階段我覺得最好是符合我們的要求,因此對單片機程序中的讀數(shù)部分進行修改,刪除小數(shù)部分;又比如我剛開始用protus仿真時用的是共陽數(shù)碼管,出現(xiàn)的結(jié)果是亂碼,最后選擇使用共陰數(shù)碼管正常使用。從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。參考文獻:譚浩強《C程序設(shè)計》(第三版)清華大學(xué)出版社潘永雄沙河《電子線路CAD實用教程》(第三版)西安電子科技大學(xué)出版社楊忠煌黃博俊李文昌《單芯片8051實務(wù)與應(yīng)用》中國水利水電出版社(美)RandallHyde《匯編評議編程藝術(shù)》清華大學(xué)出版社附1實物圖附2源程序代碼 //DS18B20的讀寫程序,數(shù)據(jù)腳P2.7////溫度傳感器18B20匯編程序,采用器件默認的12位轉(zhuǎn)化////最大轉(zhuǎn)化時間750微秒,顯示溫度-55到+125度,顯示精度////為0.1度,顯示采用4位LED共陽顯示測溫值////P0口為段碼輸入,P34~P37為位選///***************************************************/#include"reg51.h"#include"intrins.h"http://_nop_();延時函數(shù)用#definedmP0//段碼輸出口#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^7;//溫度輸入口sbitw0=P2^0;//數(shù)碼管4sbitw1=P2^1; //數(shù)碼管3sbitw2=P2^2; //數(shù)碼管2sbitw3=P2^3; //數(shù)碼管1sbitbeep=P1^7;//蜂鳴器和指示燈sbitset=P2^6;//溫度設(shè)置切換鍵sbitadd=P2^4;//溫度加sbitdec=P2^5;//溫度減inttemp1=0;//顯示當(dāng)前溫度和設(shè)置溫度的標(biāo)志位為0時顯示當(dāng)前溫度uinth;uinttemp;ucharr;ucharhigh=35,low=20;ucharsign;ucharq=0;uchartt=0;ucharscale;//**************溫度小數(shù)部分用查表法***********//ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; //小數(shù)斷碼表ucharcodetable_dm[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//共陰LED段碼表"0""1""2""3""4""5""6""7""8""9""不亮""-"uchartable_dm1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//個位帶小數(shù)點的斷碼表uchardatatemp_data[2]={0x00,0x00};//讀出溫度暫放uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數(shù)據(jù),共4個數(shù)據(jù)和一個運算暫用/*****************11us延時函數(shù)*************************/voiddelay(uintt){for(;t>0;t--);}voidscan(){intj; for(j=0;j<4;j++) { switch(j) { case0:dm=table_dm[display[0]];w0=0;delay(50);w0=1;//xiaoshu case1:dm=table_dm1[display[1]];w1=0;delay(50);w1=1;//gewei case2:dm=table_dm[display[2]];w2=0;delay(50);w2=1;//shiwei case3:dm=table_dm[display[3]];w3=0;delay(50);w3=1;//baiwei // else{dm=table_dm[b3];w3=0;delay(50);w3=1;} } }}//***************DS18B20復(fù)位函數(shù)************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;delay(50);//550usDQ=1;delay(6);//66uspresence=DQ;//presence=0復(fù)位成功,繼續(xù)下一步}delay(45);//延時500uspresence=~DQ;}DQ=1;//拉高電平}/****************DS18B20寫命令函數(shù)************************///向1-WIRE總線上寫1個字節(jié)voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay(6);//66usval=val/2;//右移1位}DQ=1;delay(1);}/****************DS18B20讀1字節(jié)函數(shù)************************///從總線上取1個字節(jié)ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_nop_();_nop_();_nop_();_nop_();//4usif(DQ)value|=0x80;delay(6);//66us}DQ=1;return(value);}/*****************讀出溫度函數(shù)************************/read_temp(){ow_reset();//總線復(fù)位delay(200);write_byte(0xcc);//發(fā)命令write_byte(0x44);//發(fā)轉(zhuǎn)換命令ow_reset();delay(1);write_byte(0xcc);//發(fā)命令write_byte(0xbe);temp_data[0]=read_byte();//讀溫度值的第字節(jié)temp_data[1]=read_byte();//讀溫度值的高字節(jié)temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//兩字節(jié)合成一個整型變量。returntemp;//返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個//字節(jié)的二進制轉(zhuǎn)換為十進制后,就是溫度值的百、十、個位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進制后,就是溫度值的小數(shù)部分/********************************************************/work_temp(uinttem){ucharn=0;if(tem>6348)//溫度值正負判斷{tem=65536-tem;n=1;}//負溫度求補碼,標(biāo)志位置1display[3]=display[4]/100;//取百位數(shù)據(jù)暫存display[1]=display[4]%100;//取后兩位數(shù)據(jù)暫存display[2]=display[1]/10;//取十位數(shù)據(jù)暫存display[1]=display[1]%10;//個位數(shù)據(jù)r=display[1]+display[2]*10+display[3]*100;/////符號位顯示判斷/////if(!display[3]){display[3]=0x0a;//最高位為0時不顯示if(!display[2]){display[2]=0x0a;//次高位為0時不顯示}}if(n){display[3]=0x0b;}//負溫度時最高位顯示"-"}voidBEEP(){ if((r>=high&&r<129)||r<low) { beep=!beep; } else { beep=0; }}//*********設(shè)置溫度顯示轉(zhuǎn)換************//voidxianshi(inthorl){ intn=0; if(horl>128) { horl=256-horl;n=1; } display[3]=horl/100; display[3]=display[3]&0x0f; display[2]=horl%100/10; display[1]=horl%10; display[0]=0; if(!display[3]) { display[3]=0x0a;//最高位為0時不顯示 if(!display[2]) { display[2]=0x0a;//次高位為0時不顯示 } } if(n) { display[3]=0x0b;//負溫度時最高位顯示"-" }}//*********按鍵查詢程序****
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人健身教練合同:2024版專業(yè)輔導(dǎo)合同書版B版
- 2025年食堂節(jié)能環(huán)保設(shè)施改造承包協(xié)議9篇
- 2025年高新技術(shù)產(chǎn)業(yè)園區(qū)土地購置合同范本3篇
- 2025年度跨境電商供應(yīng)鏈融資擔(dān)保合同4篇
- 2025版企業(yè)綠化項目施工合同范本匯編4篇
- 二零二五版環(huán)保檢測技術(shù)服務(wù)合同標(biāo)準(zhǔn)范本3篇
- 2024年藥品研發(fā)與藥師合作契約3篇
- 個人投資合同及投資款支付借條(2024版)3篇
- 2025年度智慧安防系統(tǒng)承包意向書4篇
- 東莞市規(guī)范離婚合同書2024版樣本版
- 檢驗員績效考核
- 農(nóng)藥合成研發(fā)項目流程
- 機電安裝工程安全管理
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 信息技術(shù)部年終述職報告總結(jié)
- 理光投影機pj k360功能介紹
- 六年級數(shù)學(xué)上冊100道口算題(全冊完整版)
- 八年級數(shù)學(xué)下冊《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 小學(xué)五年級解方程應(yīng)用題6
- 年月江西省南昌市某綜合樓工程造價指標(biāo)及
評論
0/150
提交評論