版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
#4.2.3DS18B20讀字節(jié)子程序總線控制器發(fā)起讀時(shí)序時(shí),DS18B20僅被用來傳輸數(shù)據(jù)給控制器。因此,總線控制器在發(fā)出讀暫存器指令[BEh]或讀電源模式指令[B4h]后必須立刻開始讀時(shí)序,DS18B20可以提供請(qǐng)求信息。除此之外,總線控制器在發(fā)出發(fā)送溫度轉(zhuǎn)換指令[44h]或召回EEPROM指令[B8h]之后讀時(shí)序,所有讀時(shí)序必須最少60us,包括兩個(gè)讀周期間至少lus的恢復(fù)時(shí)間。當(dāng)總線控制器把數(shù)據(jù)線從高電平拉到低電平時(shí),讀時(shí)序開始,數(shù)據(jù)線必須至少保持lus,然后總線被釋放。在總線控制器發(fā)出讀時(shí)序后,DS18B20通過拉高或拉低總線上來傳輸1或0。當(dāng)傳輸邏輯0結(jié)束后,總線將被釋放,通過上拉電阻回到上升沿狀態(tài)。從DS18B20輸出的數(shù)據(jù)在讀時(shí)序的下降沿出現(xiàn)后15us內(nèi)有效。因此,總線控制器在讀時(shí)序開始后必須停止把1/O腳驅(qū)動(dòng)為低電平15us,以讀取I/O腳狀態(tài)。DS18B20讀字節(jié)子程序如圖4.4所示。ucharread_zi(void){uchari,u=0;for(i=0;i<8;i++)圖4.4DS18B20ucharread_zi(void){uchari,u=0;for(i=0;i<8;i++)/*從DS18B20讀出字節(jié)子程序*/{DQ=0;u>>=1;DQ=1;if(DQ==1)u|=0x80;delay(4);}return(u);}4.2.4溫度顯示子程序溫度顯示子程序主要完成溫度的讀出和顯示的功能。當(dāng)溫度為零下是顯示為“—”號(hào);當(dāng)溫度為零上時(shí)消隱。當(dāng)測(cè)定溫度低于設(shè)定溫度下限值時(shí),第1、2、4、5、6、7個(gè)發(fā)光二極管點(diǎn)亮;當(dāng)測(cè)定溫度高于設(shè)定溫度上限值時(shí),第1、3、4、5、6、7個(gè)發(fā)光二極管亮。起到報(bào)警作用。溫度顯示子程序流程圖如圖4.5所示。圖4.5溫度顯示子程序
floatWL=-10.0,WH=30.0;voidshowT(void){ucharidatatem[4];floatwd=0;intm;for(;;){floatWL=-10.0,WH=30.0;voidshowT(void){ucharidatatem[4];floatwd=0;intm;for(;;){wd=cewen();if(wd<0){wd=-wd;tem[0]=16;}elsetem[0]=17;tem[1]=wd/10;m=wd*10;tem[2]=m%100/10;tem[3]=m%10;display(tem+3);deng=0x02;if(wd<=WL)deng=0x7B;/*溫度顯示子程序*//*wd為采集的溫度值*//*判斷溫度是否為正*//*溫度為負(fù)值,數(shù)碼管第1位顯示負(fù)號(hào)*//*溫度為正值,數(shù)碼管第1位不顯示*//*將溫度值各位分離出來*//*顯示溫度,第1個(gè)發(fā)光二極管亮*//*低于溫度下限,第1、2、4、5、6、7個(gè)發(fā)光二極管亮*/if(wd>=WH)deng=0x7E;/*高于溫度上限,第1、3、4、5、6、7個(gè)發(fā)光二極管亮*/if(wd>=WH)deng=0x7E;4.2.5溫度采集子程序流程圖程序在采集溫度時(shí),測(cè)量?jī)纱稳∑骄?,已達(dá)到精確的目的。溫度采集子程序流程圖如圖4.6所示。圖4.6溫度采集子程序流程圖
floatcewen(void){/*采集溫度子程序*/{ucharam,bm;/*am,bm分別是從DS18B80讀取的溫度低8位和高8位值*/intwendz=0,i;floatduzhi=0;/*wemdz是單次溫度采集值*/for(i=0;i<2;i++)/*采集兩次溫度值*/{RST18B20();/*DS18B20初始化*/write_zi(0xCC);/*跳過DS18B20片內(nèi)ROM*/write_zi(0x44);RST18B20();/*進(jìn)行溫度轉(zhuǎn)換*/write_zi(0xCC);write_zi(0xBE);am=read_zi();/*DS18B20暫存器值*/bm=read_zi();wendz=bm;wendz<<=8;wendz|=am;duzhi+=wendz;}duzhi/=2;/*取兩次采集溫度平均值*/duzhi*=0.0625;/*將采集溫度值轉(zhuǎn)換為十進(jìn)制數(shù)*/duzhi+=0.05;/*將采集溫度值四舍五入,精確到0.1*/return(duzhi);}4.2.6顯示子程序顯示子程序是對(duì)數(shù)碼管進(jìn)行逐位掃描,顯示先從顯示緩沖區(qū)取出要顯示的數(shù)據(jù),再根據(jù)該數(shù)據(jù)從table表中取出相應(yīng)的段碼完成顯示。顯示子程序流程圖如圖4.7所示。圖4.7顯示子程序voiddisplay0(ucharidata*p)/*不顯示數(shù)碼管左起第4位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfe)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay1(ucharidata*p)/*不顯示數(shù)碼管左起第3位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfd)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay2(ucharidata*p)/*不顯示數(shù)碼管左起第2位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfb)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay3(ucharidata*p)/*不顯示數(shù)碼管第1位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xf7)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplayQ(ucharidata*p)/*數(shù)碼管小數(shù)點(diǎn)全顯示,用于自檢子程序*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table1[*p];wei=sel;delay(100);wei=0xff;p--;sel=~sel;sel=sel<<1;}}4.2.6按鍵子程序流程圖程序利用K1,K2,K3三個(gè)按鍵設(shè)定溫度上、下限值。按鍵子程序流程圖如圖4.8所示。圖4.8按鍵子程序流程圖floatwl,wh;floatwl,wh;ucharidatadis_buf[4];TR0=1;delay(500);if(INT1==0)for(;;){while(INT1==0);wl=WL;if(wl<0.0){dis_buf[0]=16;wl=-wl;}elsedis_buf[0]=17;a=wl*10;dis_buf[1]=a/100;dis_buf[2]=(a%100)/10;dis_buf[3]=(a%100)%10;display(dis_buf+3);deng=0x03;if(dx==0){if(dx==0){while(dx==0);voidint1_srv(void)interrupt2using0{inttiao=0,n=0,j=0,m=l,k,d;/*n為K2鍵的按鍵次數(shù),k,d為溫度下限、上限的標(biāo)志位*/inta,b;/*a,b,wl.wh為下限、上限溫度處理的中間變量*//*用于存放上、下限溫度分離后的各位數(shù)值和標(biāo)志位*//*開啟定時(shí)器TO中斷*//*K1鍵第1次按下*//*對(duì)下限溫度進(jìn)行分離處理*//*顯示下限溫度,第1、2個(gè)發(fā)光二極管亮*//*K2鍵按下*/wl=WL;if(wl<O.O){dis_buf[O]=16;wl=-wl;k=1;}else{dis_buf[O]=17;k=O;}a=wl*1O;b=WH*1O;dis_buf[1]=a/1OO;dis_buf[2]=(a%1OO)/1O;dis_buf[3]=(a%1OO)%1O;for(;;){if(ds==0)/*K3鍵按下*/{if(ds==0){while(ds==0);switch(n)/*設(shè)置下限溫度各位的數(shù)值*/{case0:if(dis_buf[3]<9){dis_buf[3]++;break;}else{dis_buf[3]=0;break;}case1:if(dis_buf[2]<9){dis_buf[2]++;break;}else{dis_buf[2]=0;break;}case2:if(dis_buf[1]<5){dis_buf[1]++;break;}else{dis_buf[1]=0;break;}case3:if(m==0){dis_buf[0]=17;m++;k=0;break;}else{dis_buf[0]=16;m=0;k=1;break;}}}}if(TF0)/*每隔100ms顯示一次下限溫度*/{j++;if(j==2){display(dis_buf+3);j=0;}TH0=-(50000/256);TL0=-(50000%256);TF0=0;}elseswitch(n){case0:display0(dis_buf+3);deng=0x09;break;/*K2鍵按第1次,第4位數(shù)碼管不顯示*/case1:display1(dis_buf+3);deng=0x11;break;/*K2鍵按第2次,第3位數(shù)碼管不顯示*/case2:display2(dis_buf+3);deng=0x21;break;/*K2鍵按第3次,第2位數(shù)碼管不顯示*/case3:display3(dis_buf+3);deng=0x41;break;/*K2鍵按第4次,第1位數(shù)碼管不顯示*/}if(dx==0){if(dx==0){while(dx==0);if(n<4)n++;}}if(n==4)/*K2鍵按第5次,將設(shè)置的溫度值存入上、下溫度變量*/{if(k==0)a=dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100;if(k==1)a=-(dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100);n=0;if(b>(a+5))/*如果設(shè)置的溫度下限值低于上限值0.5°C以上,則存儲(chǔ)設(shè)置的值*/{WL=a;WL/=10;WH=b;WH/=10;}break;}}}}if(INT1==0)/*K1鍵第2次按下*/for(;;){while(INT1==0);wh=WH;/*對(duì)上限溫度進(jìn)行分離處理*/if(wh<0){dis_buf[0]=16;wh=-wh;}elsedis_buf[0]=17;b=wh*10;dis_buf[1]=b/100;dis_buf[2]=(b%100)/10;dis_buf[3]=(b%100)%10;display(dis_buf+3);/*顯示上限溫度,第1、3個(gè)數(shù)碼管亮*/deng=0x06;if(dx==0)/*K2鍵按下*/{if(dx==0){while(dx==0);wh=WH;if(wh<0){dis_buf[0]=16;wh=-wh;d=1;}else{dis_buf[0]=17;d=0;}a=WL*10;b=wh*10;dis_buf[1]=b/100;dis_buf[2]=(b%100)/10;dis_buf[3]=(b%100)%10;for(;;){if(ds==0)/*K3鍵按下*/{if(ds==0){while(ds==0);switch(n)/*設(shè)置上限溫度各位數(shù)值*/{case0:if(dis_buf[3]<9){dis_buf[3]++;break;}else{dis_buf[3]=0;break;}case1:if(dis_buf[2]<9){dis_buf[2]++;break;}else{dis_buf[2]=0;break;}case2:if(dis_buf[1]<5){dis_buf[1]++;break;}else{dis_buf[1]=0;break;}case3:if(m==0){dis_buf[0]=17;m++;d=0;break;}else{dis_buf[0]=16;m=0;d=1;break;}}}}if(TFO)/*每隔100ms顯示一次上限溫度*/{j++;if(j==2){display(dis_buf+3);j=0;}TH0=-(50000/256);TL0=-(50000%256);TF0=0;}elseswitch(n){case0:display0(dis_buf+3);deng=0x0C;break;/*K2鍵按第1次,第4位數(shù)碼管不顯示*/case1:display1(dis_buf+3);deng=0x14;break;/*K2鍵按第2次,第3位數(shù)碼管不顯示*/case2:display2(dis_buf+3);deng=0x24;break;/*K2鍵按第3次,第2位數(shù)碼管不顯示*/case3:display3(dis_buf+3);deng=0x44;break;/*K2鍵按第4次,第1位數(shù)碼管不顯示*/}if(dx==0){if(dx==0){while(dx==0);if(n<4)n++;}}if(n==4)/*K2鍵按第5次,存儲(chǔ)設(shè)置的數(shù)值*/{if(d==0)b=dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100;if(d==1)b=-(dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100);n=0;if(b>(a+5))/*如果設(shè)置的溫度上限值高于下限值0.5°C以上,則存儲(chǔ)設(shè)置的值*/{WL=a;WL/=10;WH=b;WH/=10;}break;}}}}tiao=1;if(INT1==0){if(INT1==0)break;}}while(INT1==0);if(tiao==1)break;}}4.2.7發(fā)送脈沖子程序流程圖程序設(shè)置在K4鍵按下后每?jī)蓚€(gè)小時(shí)開啟電機(jī)0.5s,已達(dá)到加熱的目的。發(fā)送脈沖子程序流程圖如圖4.9所示。圖4.9發(fā)送脈沖子程序流程圖#include<intrins.h>#include<absacc.h>#include<reg52.h>#definedengXBYTE[0x7FFF]intcoun=0,con=0;/*coun和con分別是定時(shí)器T2和T1的中斷次數(shù)計(jì)數(shù)變量*/voidT1_zd(void)interrupt3using0/*定時(shí)器T1中斷子程序*/{con++;if(con==10)/*定時(shí)0.5秒到*/{con=0;TR1=0;/*關(guān)閉定時(shí)器T1*/deng=0x01;}TH1=(65536-50000)/256;TL1=(65536-50000)%256;}voidT2_zd(void)interrupt5using0/*定時(shí)器T2中斷子程序*/{coun++;TF2=0;if(coun==200000)/*定時(shí)2小時(shí)到*/{coun=0;deng=0x02;TR1=1;/*啟動(dòng)定時(shí)器T1*/}}voidint1_zd(void)interrupt2using0/*外部中斷INT1*/{TR2=1;/*啟動(dòng)定時(shí)器T2*/ET2=1;ET1=1;}main(){T2CON=0x00;TH2=(65536-36000)/256;TL2=(65536-36000)%256;TMOD=0X10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;IT1=1;/*設(shè)INT1為跳變沿觸發(fā)中斷*/EX1=1;EA=1;deng=0x40;while(1){};5智能溫度控制系統(tǒng)可靠性和精度分析傳統(tǒng)的A/D轉(zhuǎn)換器大多采用積分式或逐次比較式轉(zhuǎn)換技術(shù),其噪聲容限低,抑制混疊噪聲及量化噪聲的能力比較差。課題采用了高性能的工一△式A/D轉(zhuǎn)換器,它能以很高的采樣速率和很低的采樣分辨力將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再利用過采樣、噪聲整形和數(shù)字濾波技術(shù),來提高有效分辨力。工一△式A/D轉(zhuǎn)換器不僅能濾除量化噪聲,而且對(duì)外圍元件的精度要求低;由于采用了數(shù)字反饋方式,因此比較器的失調(diào)電壓及零點(diǎn)漂移都不會(huì)影響溫度的轉(zhuǎn)換精度。這種智能溫度傳感器兼有抑制串模干擾能力強(qiáng)、分辨力高、線性度好、成本低等優(yōu)點(diǎn)。系統(tǒng)將轉(zhuǎn)換精度控制字R1和R0配置為“1”,將精度達(dá)到最高為0.0625°C,在測(cè)量時(shí)測(cè)量?jī)纱?,再將兩次測(cè)得值求平均,四舍五入。已達(dá)到高精度測(cè)量。結(jié)論在基于單片機(jī)的智能溫度控制系統(tǒng)的研究和設(shè)計(jì)過程中,借鑒已有的一些設(shè)計(jì)經(jīng)驗(yàn)和設(shè)計(jì)理論,使系統(tǒng)主要具有以下特點(diǎn):采用AT89S52單片機(jī)作為系統(tǒng)的核心單元,在開發(fā)上省去了很多精力,并且功能強(qiáng)大,方便用戶操作,成本上比專用DSP芯片要低得多。利用DS18B20做傳感器,測(cè)溫范圍為一55°C?+125°C,測(cè)溫度精度可達(dá)到0.0625°C。由于傳送的是串行放大器和A/D轉(zhuǎn)換器可以統(tǒng)統(tǒng)被省卻,因而這種測(cè)溫方式大大提高了各種溫度測(cè)控系統(tǒng)的可靠性,降低了成本,縮小了體積。系統(tǒng)顯示電路設(shè)計(jì)采用LED數(shù)碼管動(dòng)態(tài)驅(qū)動(dòng)顯示,使結(jié)構(gòu)簡(jiǎn)單,單片機(jī)CPU開銷小,能顯著降低顯示器的功耗。系統(tǒng)每?jī)尚r(shí)發(fā)送0.5秒的脈沖。溫度會(huì)隨著時(shí)間下降,每2個(gè)小時(shí)啟動(dòng)一次電機(jī),自動(dòng)修正溫度?,F(xiàn)今,智能溫度控制系統(tǒng)在測(cè)溫精度、分辨力和測(cè)試功能有所提高。測(cè)溫精度越來越高、分辨力越來越強(qiáng)、測(cè)試功能越來越多。比如:美國DALLAS半導(dǎo)體公司新研制的DS1624型高分辨力智能溫度傳感器,能輸出13位二進(jìn)制數(shù)據(jù),其分辨力高達(dá)0.03125°C,測(cè)溫精度為±0.2°C。為了提高多通道智能溫度傳感器的轉(zhuǎn)換速率,也有的芯片采用高速逐次逼近式A/D轉(zhuǎn)換器。以AD7817型5通道智能溫度傳感器為例,它對(duì)本地傳感器、每一路遠(yuǎn)程傳感器的轉(zhuǎn)換時(shí)間分別僅為27us、9us。新型智能溫度傳感器的測(cè)試功能也在不斷增強(qiáng)。DS1629型單線智能溫度傳感器增加了實(shí)時(shí)日歷時(shí)鐘(RTC),使其功能更加完善oDS1624還增加了存儲(chǔ)功能,利用芯片內(nèi)部256字節(jié)的EEPROM存儲(chǔ)器,可存儲(chǔ)用戶的短信息。致謝在論文完成之際,回顧大學(xué)的成長(zhǎng)道路,我在學(xué)業(yè)和生活上得到了眾多老師、同學(xué)和朋友們的熱心幫助和大力支持。在此,我要向你們表示我最誠摯的謝意!本論文是在刁彥華老師的悉心指導(dǎo)下完成的,在此我首先對(duì)刁老師表示誠摯的謝意。在我的整個(gè)學(xué)習(xí)階段,無論在專業(yè)學(xué)習(xí),還是在課題研究和論文撰寫上,老師都給予了極大的關(guān)心、指導(dǎo)和鼓勵(lì)。刁老師求真務(wù)實(shí)的治學(xué)精神、淵博的知識(shí)、豐富的實(shí)踐經(jīng)驗(yàn)、勇于開拓的科學(xué)精神和平易近人的態(tài)度,是我終身難忘,并將深深影響我以后的工作和學(xué)習(xí),再次感謝老師對(duì)我不倦的栽培。在畢業(yè)設(shè)計(jì)期間,教研組的所有老師都給予我非常大的關(guān)心和指導(dǎo),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版網(wǎng)絡(luò)直播平臺(tái)主播聘用合同標(biāo)準(zhǔn)模板
- 《高考導(dǎo)航》2022屆新課標(biāo)數(shù)學(xué)(理)一輪復(fù)習(xí)-第二章-第5講-二次函數(shù)與冪函數(shù)-輕松闖關(guān)
- 2021成都龍泉驛區(qū)高考英語閱讀類、信息匹配課外自練(11)及答案
- 2024版合資公司協(xié)議書范本
- 2021濟(jì)南市高考英語(四月)完形填空、閱讀理解小練(9)答案
- 2024年砂洲場(chǎng)地租賃標(biāo)準(zhǔn)合同版B版
- 二零二五年度10kv配電工程施工及配件供應(yīng)合同2篇
- 全國電子工業(yè)版初中信息技術(shù)第一冊(cè)第1單元1.2活動(dòng)2《了解IP地址》說課稿
- 二零二五年度基質(zhì)原料采購與市場(chǎng)推廣合同6篇
- 2024版室內(nèi)外花卉租賃協(xié)議條款集合版
- 2024-2030年撰寫:中國汽車半軸行業(yè)發(fā)展趨勢(shì)及競(jìng)爭(zhēng)調(diào)研分析報(bào)告
- 北疆文化全媒體傳播體系的構(gòu)建與實(shí)踐
- 2025屆福建省廈門市重點(diǎn)中學(xué)高三第二次聯(lián)考語文試卷含解析
- OpenCV計(jì)算機(jī)視覺基礎(chǔ)教程(Python版)教學(xué)教案
- 2024年度二人合伙光伏發(fā)電項(xiàng)目投資合同3篇
- 《涉江采芙蓉》 課件高中語文統(tǒng)編版必修上冊(cè)
- 管道護(hù)理小組工作總結(jié)
- 北京市西城區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 幼兒園繪本故事《三只小豬蓋房子》教學(xué)課件全文
- 人臉識(shí)別項(xiàng)目施工方案方案
- 北京市房山區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末語文試題(解析版)
評(píng)論
0/150
提交評(píng)論