




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的溫度控制器設(shè)計(jì)1引言1.1設(shè)計(jì)目的1.溫度顯示的根本范圍-55℃—128℃;2.精度誤差等于0.1℃;3.所測溫度值由四位數(shù)碼管顯示;4.可以任意設(shè)定溫度的上下限報警功能。1.2設(shè)計(jì)要求設(shè)計(jì)一個溫度控制電路,用AT89C51作為溫度測試控制系統(tǒng)設(shè)計(jì)的核心器件,用數(shù)字溫度傳感器DS18B20實(shí)現(xiàn)溫度的測量,用數(shù)碼管顯示對應(yīng)的溫度。通過指示燈和報警器完成溫度上下限的報警指示功能,并通過對電風(fēng)扇和電熱絲的操作,使其恢復(fù)到要求的范圍內(nèi)。設(shè)計(jì)加、減按鈕以及設(shè)置按鈕實(shí)現(xiàn)上下限溫度的任意設(shè)定。2系統(tǒng)方案設(shè)計(jì)該方案使用了AT89C51單片機(jī)作為控制核心,以智能溫度傳感器DS18B20為溫度測量元件,對各點(diǎn)溫度進(jìn)行檢測,設(shè)置溫度上下限,超過其溫度值就報警指示,并通過控制使溫度恢復(fù)到要求的范圍內(nèi)。顯示電路采用4位共陰極LED數(shù)碼管顯示。使用三極管,電阻,指示燈和蜂鳴器組成的報警指示電路,設(shè)計(jì)溫度控制器,實(shí)現(xiàn)溫度的測量、控制、報警、顯示、設(shè)置等功能??傮w設(shè)計(jì)方框圖如圖1所示:圖1總體設(shè)計(jì)方框圖3硬件設(shè)計(jì)3.1溫度傳感器與單片機(jī)的連接用AT89C51作為溫度控制系統(tǒng)設(shè)計(jì)的核心器件。AT89C51是一種低損耗、高性能、CMOS八位微處理器。DS18B20與單片機(jī)的接口電路非常簡單,DS18B20只有三個引腳,一個接地,一個接電源,一個數(shù)字輸入輸出引腳接單片機(jī)I/O口。測量溫度范圍在-55℃到+128℃之間,數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇,內(nèi)部有溫度上、下限告警設(shè)置??偩€上傳輸?shù)乃袛?shù)據(jù)和命令都是以字節(jié)的低位在前。DS18B20在使用時,一般都采用單片機(jī)來實(shí)現(xiàn)數(shù)據(jù)采集。溫度傳感器的單總線與單片機(jī)的P3.7連接,單片機(jī)與溫度傳感器的連接圖如圖2所示:圖2單片機(jī)與溫度傳感器的連接圖3.2報警溫度調(diào)整按鍵本系統(tǒng)設(shè)計(jì)三個按鍵,采用查詢方式,一個用于選擇切換設(shè)置報警溫度和當(dāng)前溫度,另外兩個分別用于設(shè)置報警溫度的加和減。按鍵電路圖如圖3所示:圖3按鍵電路圖3.3單片機(jī)與報警控制電路系統(tǒng)中的報警電路是由三極管,蜂鳴器,發(fā)光二極管和限流電阻組成,并與單片機(jī)的P1.5~P1.7端口連接??刂齐娐酚苫瑒幼冏杵?,電熱絲〔電燈泡〕和電風(fēng)扇〔電動機(jī)〕組成,與單片機(jī)的P1.3~P1.4端口連接。報警控制電路圖如圖4所示:圖4報警控制電路圖3.4顯示電路顯示電路采用4位共陰極LED數(shù)碼管,P2端口是一個內(nèi)部帶上拉電阻的8位雙向I/O,作為段碼輸出。P3口的低四位作為數(shù)碼管的位選端。采用動態(tài)掃描的方式顯示。數(shù)碼管顯示電路圖如圖5所示:圖5數(shù)碼管顯示電路圖4系統(tǒng)軟件設(shè)計(jì)系統(tǒng)程序主要包括主程序,顯示數(shù)據(jù)程序,讀出溫度程序,按鍵掃描程序等。4.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值,其程序流程見圖6所示:圖6主程序流程圖4.2顯示數(shù)據(jù)程序顯示數(shù)據(jù)刷新程序主要是對別離后的溫度顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)標(biāo)志位為1時將符號顯示位移入第一位。程序流程圖如圖7所示:圖7顯示數(shù)據(jù)程序流程圖4.3讀出溫度程序讀出溫度程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8所示:圖8程序流程圖4.4按鍵掃描程序按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為1時,顯示設(shè)置溫度,否那么顯示當(dāng)前溫度。按鍵掃描程序流程圖圖如圖9所示:圖9按鍵掃描程序流程圖5系統(tǒng)仿真及實(shí)際調(diào)試進(jìn)入Proteus界面后,連接好電路,并將程序下載進(jìn)去。將DS18B20精度的改為0.1,數(shù)碼管顯示溫度與傳感器的溫度相同,溫度顯示仿真圖如圖10所示:圖10溫度顯示仿真圖當(dāng)按下SET鍵一次時,進(jìn)入溫度報警上線調(diào)節(jié),此時顯示軟件設(shè)置溫度報警上線,按ADD或DEC時,分別對報警溫度進(jìn)行加1或減1;當(dāng)再次按下SET鍵時,進(jìn)入溫度報警下線調(diào)節(jié),此時顯示軟件設(shè)置溫度報警下線,按ADD或DEC時,分別對報警溫度進(jìn)行加1或減1;當(dāng)?shù)谌伟聪耂ET鍵時,退出溫度報警線設(shè)置,顯示當(dāng)前溫度。溫度調(diào)試仿真圖如圖11所示:圖11溫度調(diào)試仿真當(dāng)溫度超過設(shè)定的上限溫度時,報警器開始報警且指示燈〔紅燈〕開始閃爍,同時,電動機(jī)帶動電風(fēng)扇轉(zhuǎn)使溫度降低;當(dāng)溫度超過設(shè)定的下限溫度時,報警器開始報警且指示燈〔綠燈〕開始閃爍,同時,電熱絲發(fā)熱使溫度升高;報警控制顯示仿真圖如圖12所示:圖12報警控制顯示仿真圖6總結(jié)通過這次溫度控制器的設(shè)計(jì)與仿真,讓我更多的了解了設(shè)計(jì)電路的程序,以及溫度控制器的工作原理與設(shè)計(jì)理念,同時在設(shè)計(jì)過程中也暴露出許多問題,剛開始設(shè)計(jì)時,沒有過多的查詢相關(guān)資料,只是盲目的開始設(shè)計(jì),以致設(shè)計(jì)工作停止不前,對編程不是很熟練,使得花了大量的時間用于軟件編程。把程序調(diào)試完好后,一切工作也都能迎刃而解了。從這次的課程設(shè)計(jì)中,我意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)使用單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的讀寫過程中才能提高,也能提高查詢資料、分析問題、進(jìn)而解決問題的能力。參考文獻(xiàn)[1]王思明,張鑫等.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:科學(xué)出版社,2023.[2]陶紅艷,余成波.傳感器與現(xiàn)代檢測技術(shù)[M].北京:清華大學(xué)出版社,2023.[3]康華光.電子技術(shù)根底—數(shù)字局部[M].北京:高等教育出版社,2023.[4]朱清惠等.Proteus教程:電子線路設(shè)計(jì)制版與仿真[M].北京:清華大學(xué)出版社,2023.[5]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2023.附錄源程序#include<reg51.h>//**********51單片機(jī)頭文件#include<intrins.h>//***********_nop_();延時函數(shù)用#definedmP2//****************段碼輸出口#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7;//******************溫度輸入口sbitw0=P3^3;//******************數(shù)碼管4sbitw1=P3^2;//******************數(shù)碼管3sbitw2=P3^1;//******************數(shù)碼管2sbitw3=P3^0;//******************數(shù)碼管1sbitbeep=P1^5;//*****************蜂鳴器sbitset=P3^4;//******************溫度設(shè)置切換鍵sbitadd=P3^5;//******************溫度加sbitdec=P3^6;//******************溫度減sbita=P1^6;//******************紅燈sbitb=P1^7;//******************綠燈sbitc=P1^3;//******************電機(jī)sbitd=P1^4;//******************電燈泡inttemp1=0;//**********顯示當(dāng)前溫度和設(shè)置溫度的標(biāo)志位為0時顯示當(dāng)前溫度uinth;uinttemp;ucharr;ucharhigh=30,low=20;//******************設(shè)置初始上下限報警溫度值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ù)點(diǎn)的斷碼表*********uchardatatemp_data[2]={0x00,0x00};//******************讀出溫度暫放uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//******顯示單元數(shù)據(jù),共4個數(shù)據(jù)和一個運(yùn)算暫用/*****************11us延時函數(shù)*************************/voiddelay(uintt){for(;t>0;t--);}voidscan(){intj;for(j=0;j<4;j++){if(j==0){dm=table_dm[display[0]];w0=0;delay(50);w0=1;}//*******小數(shù)elseif(j==1){dm=table_dm1[display[1]];w1=0;delay(50);w1=1;}//***個位elseif(j==2){dm=table_dm[display[2]];w2=0;delay(50);w2=1;}//****十位elseif(j==3){dm=table_dm[display[3]];w3=0;delay(50);w3=1;}//****百位}}voidow_reset(void)//***************DS18B20復(fù)位函數(shù){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);}ucharread_byte(void)//****************DS18B20讀1字節(jié)函數(shù){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);}read_temp()//*****************讀出溫度函數(shù){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;//******************返回溫度值}voidwork_temp(uinttem)//****************溫度數(shù)據(jù)處理函數(shù){ucharn=0;if(tem>6348)//******************溫度值正負(fù)判斷{tem=65536-tem;n=1;}//*********負(fù)溫度求補(bǔ)碼,標(biāo)志位置1display[4]=tem&0x0f;//**********取小數(shù)局部的值display[0]=ditab[display[4]];//*******存入小數(shù)局部顯示值display[4]=tem>>4;//************取中間八位,即整數(shù)局部的值display[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;}//******負(fù)溫度時最高位顯示"-"}voidBEEP()//***********報警器指示燈的實(shí)現(xiàn)程序{if(r>=high&&r<129){beep=!beep;a=!a;}else{beep=0;a=0;}if(r<=low){beep=!beep;b=!b;}else{beep=0;b=0;}}voidcon(void)//*********實(shí)現(xiàn)溫度控制程序{if(r>=high&&r<129)c=1;elsec=0;if(r<=low)d=1;elsed=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;//***********負(fù)溫度時最高位顯示"-"}}//*********按鍵查詢程序**************//voidkeyscan(){inttemp1;//**********最高溫度和最低溫度標(biāo)志位if(set==0){whil
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級語文上冊 第四單元 寫作 語言要連貫教學(xué)實(shí)錄 新人教版
- 2025年江蘇貨運(yùn)從業(yè)資格證科目一模擬考試題庫
- 流動式吊車知識培訓(xùn)課件
- 四年級語文上冊 第四單元 13 精衛(wèi)填海教學(xué)實(shí)錄 新人教版五四制
- 撒哈拉以南非洲(第2課時)課件-2024~2025學(xué)年人教版初中地理七年級下冊
- 第3課+中古時期的歐洲+高一下學(xué)期統(tǒng)編版(2019)必修中外歷史綱要下
- 陜西省咸陽市2023-2024學(xué)年高一(上)期末物理試卷【含解析】
- 部編版二年級語文下冊第3課《開滿鮮花的小路》精美課件
- 第2課《首屆諾貝爾獎頒發(fā)》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語文八年級上冊
- 北京市通州區(qū)2024-2025學(xué)年高一上學(xué)期1月期末物理試題(解析版)
- 2024年低壓電工資格考試必考題庫及答案(共415題)
- 突發(fā)事件及自救互救學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 青少年無人機(jī)課程:第一課-馬上起飛
- GB/T 44325-2024工業(yè)循環(huán)冷卻水零排污技術(shù)規(guī)范
- 鍋爐安裝改造維修質(zhì)量保證體系文件(手冊+程序文件+表格+工藝文件匯編)-符合TSG 07-2019特種設(shè)備質(zhì)量保證管理體系
- 學(xué)習(xí)課程方案、課程標(biāo)準(zhǔn)心得體會
- 成人鼻腸管的留置與維護(hù)(2021團(tuán)體標(biāo)準(zhǔn)解讀)-20221004172843
- SN-T 5370-2022 進(jìn)出口危險貨物檢驗(yàn)規(guī)程 鋰電池移動電源
- 機(jī)械制造質(zhì)量手冊(一)
- 2024-2030年中國互聯(lián)網(wǎng)+印刷行業(yè)深度分析及發(fā)展戰(zhàn)略研究咨詢報告
- 水庫綠化景觀設(shè)計(jì)項(xiàng)目招標(biāo)文件模板
評論
0/150
提交評論