溫度控制器的設(shè)計(jì)與制作.doc_第1頁(yè)
溫度控制器的設(shè)計(jì)與制作.doc_第2頁(yè)
溫度控制器的設(shè)計(jì)與制作.doc_第3頁(yè)
溫度控制器的設(shè)計(jì)與制作.doc_第4頁(yè)
溫度控制器的設(shè)計(jì)與制作.doc_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6.4實(shí)施制作過(guò)程6.4.1硬件設(shè)計(jì)溫度測(cè)量采用最新的單線數(shù)字溫度傳感器DS18B20,DS18B20是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫(xiě),溫度變換功率來(lái)源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無(wú)需額外電源。因而,使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。降溫控制系統(tǒng)采用低壓直流電風(fēng)扇。當(dāng)溫度高于設(shè)定最高限溫度時(shí),啟動(dòng)風(fēng)扇降溫,當(dāng)溫度降到指定最高限溫度以下后,風(fēng)扇自動(dòng)停止運(yùn)轉(zhuǎn)。溫控系統(tǒng)的溫度顯示和溫度的設(shè)定直接采用綜合實(shí)訓(xùn)板上的顯示和鍵盤。當(dāng)環(huán)境溫度低于設(shè)定的最低限溫度值時(shí),也采用綜合實(shí)訓(xùn)板上的蜂鳴器進(jìn)行報(bào)警。用0#、1#鍵作為溫度最高限、最低限的設(shè)定功能鍵;2#、3#鍵作為溫度值設(shè)定的增加和減小功能鍵。0#鍵:作為最高限溫度的設(shè)定功能鍵。按一次進(jìn)入最高限溫度設(shè)定狀態(tài),選擇最高限溫度值后,再按一次確認(rèn)設(shè)定完成。1#鍵:作為最低限溫度的設(shè)定功能鍵。按一次進(jìn)入最低限溫度設(shè)定狀態(tài),選擇最低限溫度值后,再按一次確認(rèn)設(shè)定完成。2#鍵:1功能鍵,每按一次將溫度值加1,范圍為199。3#鍵:1功能鍵,每按一次將溫度值減1,范圍為991。圖2.2.1溫控系統(tǒng)硬件接線原理圖6.4.2軟件設(shè)計(jì)(1)溫控系統(tǒng)采用模塊化程序結(jié)構(gòu),可以分成以下程序模塊:系統(tǒng)初始化程序:首先完成變量的設(shè)定、中斷入口的設(shè)定、堆棧、輸入輸出口及外部部件的初始化工作。主程序MAIN:完成鍵盤掃描、溫度值采集及轉(zhuǎn)換、溫度值的顯示。當(dāng)溫度值高于設(shè)定最高限時(shí),驅(qū)動(dòng)風(fēng)扇工作;當(dāng)溫度值低于設(shè)定最低限時(shí),驅(qū)動(dòng)蜂鳴器報(bào)警。鍵盤掃描程序KEYSCAN:完成鍵盤的掃描并根據(jù)確定的鍵值執(zhí)行相應(yīng)的功能,主要完成最高溫度、最低溫度的設(shè)定。溫度采集程序GET_TEMPER:完成DS18B20的初始化并發(fā)出溫度轉(zhuǎn)換命令,經(jīng)過(guò)指定時(shí)間后讀取轉(zhuǎn)換的溫度值。根據(jù)DS18B20的通信協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求CPU將數(shù)據(jù)線下拉500s,然后釋放。DS18B20收到信號(hào)后等待1660s左右,后發(fā)出60240s的存在低脈沖,CPU收到此信號(hào)表示復(fù)位成功。溫度轉(zhuǎn)換程序TEMPER_COV:根據(jù)精度要求對(duì)采集到的溫度值進(jìn)行處理并轉(zhuǎn)換成便于顯示的BCD碼值。顯示子程序DISPLAY:顯示實(shí)時(shí)溫度及設(shè)定溫度值。DS18B20初始化子程序INIT_1820:DS18B20在工作之前必須按照指定的要求完成初始化工作,否則無(wú)法正常工作。DS18B20讀寫(xiě)子程序WRITE_1820、READ_1820、READ_1820T完成對(duì)18B20的讀寫(xiě)功能,其中,READ_1820從DS18B20中讀出一個(gè)字節(jié)的數(shù)據(jù),READ_1820T從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù)。圖2.2.2主程序流程圖圖2.2.3DS18B20初始化程序流程圖延時(shí)程序DELAY、DELAY1滿足18B20要求的延時(shí)間隔及程序中的延時(shí)功能。(2)軟件流程框圖分別如圖2.2.2、2.2.3、2.2.4、2.2.5和2.2.6所示。圖2.2.5DS18B20寫(xiě)入子程序圖2.2.6DS18B20讀取子程序(3)下面給出參考程序(部分);晶振:12MHz;HIG_TMPEQU32H;設(shè)定的最高溫度值LOW_TMPEQU33H;設(shè)定的最低溫度值NUB_VALEQU34H;加1、減1的暫存值TEMPER_HEQU36H;采集到溫度值的低位TEMPER_LEQU35H;采集到溫度值的高位TEMPER_NUMEQU30H;PORTEQU4400H;8155口地址PORTAEQU4401H;8155A口地址PORTBEQU4402H;8155B口地址PORTCEQU4403H;8155C口地址;FLAG1BIT00H;18B20初始化完成標(biāo)志KEY_MKBIT08H;鍵盤按下標(biāo)志KEY_HMKBIT09H;S1鍵按下標(biāo)志KEY_LMKBIT0AH;S2鍵按下標(biāo)志DISP_MKBIT0BH;溫度設(shè)定狀態(tài)標(biāo)志DQBITP1.1;ORG0000HAJMPSTART;ORG0030HSTART:MOVSP,#60H;設(shè)置堆棧值MOVIE,#00HMOVTCON,#00HMOVTMOD,#10HMOVDPTR,#PORT;初始化8155口,A、B輸出C輸入MOVA,#43HMOVXDPTR,ASETBDQSETBP1.2MOVR0,#20HMOVR1,#20HMOVA,#00HSTART_1:MOVR0,AINCR0DJNZR1,START_1START_2:CLRP1.0CLRP1.2MOVHIG_TMP,#30H;初始高溫限值設(shè)為30MOVLOW_TMP,#20H;初始低溫限值設(shè)為20;ACALLRE_CONFIGNOPACALLINIT_1820JNBFLAG1,START_2MAIN:ACALLKEY_SCANJBKEY_LMK,MAIN1JBKEY_HMK,MAIN1ACALLGET_TEMPER;采集溫度值A(chǔ)CALLTEMPER_COV;溫度值轉(zhuǎn)換MAIN1:ACALLDISPLAYMOVA,TEMPER_NUMCJNEA,HIG_TMP,MAIN2CLRCMAIN2:JCMAIN3SETBP1.2;啟動(dòng)風(fēng)扇AJMPMAINMAIN3:CJNEA,LOW_TMP,MAIN4CLRCMAIN4:JNCMAIN5SETBP1.0;啟動(dòng)報(bào)警器AJMPMAINMAIN5:CLRP1.0CLRP1.2AJMPMAINNOP;-讀出轉(zhuǎn)換后的溫度值GET_TEMPER:SETBDQ;定時(shí)入口GET_TMP1:LCALLINIT_1820;第一步,完成對(duì)18B20初始化JBFLAG1,GET_TMP2LJMPGET_TMP1;若DS18B20不存在,則繼續(xù)初始化GET_TMP2:LCALLDELAY1;延時(shí)80sMOVA,#0CCH;第二步,ROM命令,跳過(guò)ROM匹配0CCLCALLWRITE_1820MOVA,#44H;第三步,功能命令,發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820GET_TMP5:NOPLCALLDISP3CLRDQNOPNOPSETBDQ;釋放數(shù)據(jù)線MOVR3,#4;延時(shí)14sDJNZR3,$CLRCMOVC,DQJNCGET_TMP5GET_TMP3:LCALLINIT_1820;第一步,對(duì)18B20初始化JBFLAG1,GET_TMP4LJMPGET_TMP3GET_TMP4:LCALLDELAY1MOVA,#0CCH;第二步,ROM命令,跳過(guò)ROM匹配LCALLWRITE_1820MOVA,#0BEH;第三步,功能命令,發(fā)出讀溫度命令LCALLWRITE_1820;LCALLREAD_1820;READ_1820RET;-寫(xiě)DS18B20的程序WRITE_1820:MOVR2,#8CLRCWRITE1:CLRDQMOVR3,#7;延時(shí)14sDJNZR3,$RRCAMOVDQ,CMOVR3,#21;延時(shí)45sDJNZR3,$SETBDQNOPDJNZR2,WRITE1SETBDQRET6.4.3系統(tǒng)調(diào)試1)輸入源程序輸入源程序時(shí),應(yīng)以西文方式輸入字母和符號(hào),且中文注釋前要加分號(hào)。2)對(duì)源程序進(jìn)行匯編和糾錯(cuò)根據(jù)自動(dòng)匯編提供的錯(cuò)誤信息逐條糾正錯(cuò)誤,直至匯編信息提示“錯(cuò)誤(0)”、“匯編結(jié)束”。3)確定調(diào)試方案在調(diào)試程序前一定要認(rèn)真分析源程序,明確各功能程序運(yùn)行的預(yù)期結(jié)果。然后結(jié)合源程序應(yīng)達(dá)到的結(jié)果,確定出如何通過(guò)某些關(guān)鍵參數(shù)和實(shí)驗(yàn)現(xiàn)象檢驗(yàn)程序運(yùn)行結(jié)果正確與否。例如:程序運(yùn)行過(guò)程中路徑的變化、累加器A內(nèi)容的變化、其他特殊寄存器內(nèi)容的變化等。并針對(duì)具體的分析和觀察對(duì)象選擇較合適的調(diào)試方法。如單步運(yùn)行、跟蹤運(yùn)行、連續(xù)運(yùn)行、快速運(yùn)行至光標(biāo)處、設(shè)置斷點(diǎn)等調(diào)試方法。4)調(diào)試程序(1)調(diào)試主程序。主程序運(yùn)行后,在無(wú)任何按鍵輸入時(shí)觀察有無(wú)顯示,時(shí)鐘是否工作,其時(shí)、分、秒顯示的變化過(guò)程是否正確。若運(yùn)行結(jié)果不正確,首先應(yīng)根據(jù)程序運(yùn)行的實(shí)際現(xiàn)象分析判斷哪些因素可引起相關(guān)故障,再通過(guò)調(diào)試方法逐一認(rèn)證和排除。例如:若定時(shí)/計(jì)數(shù)器的初始化出錯(cuò),則時(shí)鐘將不能工作;若顯示程序出錯(cuò),則將不能正確顯示時(shí)鐘單元內(nèi)容;若定時(shí)/計(jì)數(shù)器中斷服務(wù)子程序出錯(cuò),則其顯示數(shù)據(jù)的變化規(guī)律將不正常。(2)調(diào)試子程序。在調(diào)試主程序時(shí),必然要調(diào)用相關(guān)的功能子程序。因此,首先應(yīng)明確子程序的具體功能,通過(guò)對(duì)子程序的分析,確定子程序的入口、出口參數(shù)及相關(guān)標(biāo)識(shí)位的狀態(tài),然后在滿足入口條件的狀態(tài)下,設(shè)法檢查從主程序進(jìn)入子程序,再由子程序返回到主程序的運(yùn)行過(guò)程??刹捎酶欉\(yùn)行或運(yùn)行至光標(biāo)處的方法,檢查從主程序進(jìn)入子程序內(nèi)部的運(yùn)行過(guò)程,再通過(guò)單步運(yùn)行等方法檢查子程序內(nèi)部的運(yùn)行情況和返回主程序的過(guò)程。通過(guò)反復(fù)調(diào)試,發(fā)現(xiàn)并排除軟件與硬件存在的各類問(wèn)題,以滿足系統(tǒng)設(shè)計(jì)的預(yù)期目的。5)脫機(jī)運(yùn)行將調(diào)試已通過(guò)的程序?qū)懭雴纹瑱C(jī)內(nèi)部(或外部)程序存儲(chǔ)器中,再將寫(xiě)好程序的單片機(jī)(或存儲(chǔ)器)插入已設(shè)計(jì)好的單片機(jī)用戶板上,把仿真系統(tǒng)與用戶板脫離開(kāi)來(lái),最后將所設(shè)計(jì)的單片機(jī)應(yīng)用系統(tǒng)獨(dú)立通電運(yùn)行。6.6評(píng)估總結(jié)和提高6.6.1項(xiàng)目總結(jié)(1)該實(shí)訓(xùn)項(xiàng)目主要是以DS18B20為例,訓(xùn)練單片機(jī)應(yīng)用系統(tǒng)與外圍應(yīng)用系統(tǒng)或部件組合的綜合設(shè)計(jì)、分析與調(diào)試方法。學(xué)會(huì)分析和掌握專用芯片或器件的功能、控制方法和編程技巧,能根據(jù)專用芯片或部件的技術(shù)資料、讀寫(xiě)時(shí)序要求設(shè)計(jì)硬件接口及軟件編程,完成單片機(jī)應(yīng)用系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程。(2)實(shí)訓(xùn)項(xiàng)目中的難點(diǎn)是理解和掌握DS18B20的專用特性和功能,能根據(jù)廠商提供的技術(shù)資料,編制出相應(yīng)的初始化程序、讀寫(xiě)程序。(3)程序仍采用模塊化結(jié)構(gòu),鍵盤、顯示、延時(shí)子程序可以采用原有子程序,本程序是在原有的子程序基礎(chǔ)上進(jìn)行簡(jiǎn)化而成的。(4)運(yùn)行狀態(tài)采用標(biāo)志化管理可使程序結(jié)構(gòu)更加簡(jiǎn)化。在上述程序中,對(duì)各按鍵的操作過(guò)程和狀態(tài)都采用標(biāo)識(shí)位來(lái)描述,對(duì)于不應(yīng)具有連動(dòng)功能的按鍵采用標(biāo)志位限制,只有在鍵盤掃描程序確定沒(méi)有任何按鍵按下時(shí)才清除按鍵標(biāo)志。這樣既可以起到按鍵防抖動(dòng)的作用,同時(shí)還可防止由于誤操作或按鍵習(xí)慣問(wèn)題導(dǎo)致的按鍵被多次執(zhí)行的情況。(5)調(diào)試程序時(shí),重點(diǎn)分析和調(diào)試DS18B20的初始化及讀寫(xiě)程序,嚴(yán)格按照技術(shù)資料提供的時(shí)序要求,檢查時(shí)序的前后次序和延時(shí)時(shí)間,要結(jié)合能反映故障存在與否的參數(shù)變化、運(yùn)行路徑變化、顯示內(nèi)容變化等選擇合適的觀測(cè)點(diǎn)和觀測(cè)對(duì)象,再運(yùn)用適當(dāng)?shù)恼{(diào)試方法,快速地檢驗(yàn)調(diào)試結(jié)果,由此分析和判斷出故障點(diǎn)。(6)為了能在實(shí)訓(xùn)室對(duì)溫度測(cè)量進(jìn)行測(cè)試,可分別設(shè)定溫度的最高位和最低位分別為36和32(當(dāng)時(shí)的室溫)。由于人體的體溫一般高于36,用手指接觸測(cè)溫點(diǎn),會(huì)導(dǎo)致高溫報(bào)警,從而啟動(dòng)風(fēng)扇降溫,拿開(kāi)手之后,測(cè)溫點(diǎn)的溫度會(huì)逐步下降。如果此時(shí)的室溫低于設(shè)定的最低溫度,系統(tǒng)會(huì)啟動(dòng)蜂鳴器報(bào)警。調(diào)試程序時(shí),如果顯示的溫度值與實(shí)際不符或沒(méi)有顯示,可以首先檢查DS18B20的初始化過(guò)程是否成功,然后在讀取溫度值的操作完成后檢查所讀到的值是否正常,確信沒(méi)有問(wèn)題的情況下,檢查數(shù)據(jù)轉(zhuǎn)換和顯示程序是否存在問(wèn)題。6.6.2提高二DS18B20簡(jiǎn)介(1)獨(dú)特的單線接口方式:當(dāng)DS18B20與微處理器連接時(shí),僅需要一條數(shù)據(jù)線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通信。(2)使用中不需要任何外圍元件。(3)可用數(shù)據(jù)線供電,電壓范圍為3.05.5V。(4)測(cè)溫范圍為55125。固有測(cè)溫分辨率為0.5。(5)通過(guò)編程可實(shí)現(xiàn)912位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報(bào)警上下限值。(7)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的數(shù)據(jù)線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。(8)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。2)DS18B20的內(nèi)部結(jié)構(gòu)圖2.2.7DS18B20內(nèi)部結(jié)構(gòu)圖(1)64位光刻ROM的結(jié)構(gòu)如下:8b檢驗(yàn)CRC48b序列號(hào)8b工廠代碼(10H)MSBLSBMSBLSBMSBLSB開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。(2)非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入用戶報(bào)警上下限。(3)高速暫存存儲(chǔ)器。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存SRAM和一個(gè)非易失性的可電擦除的E2PROM。后者用于存儲(chǔ)TH,TL值。數(shù)據(jù)先寫(xiě)入SRAM,經(jīng)校驗(yàn)后再傳給E2PROM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),其內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如下:TMR1R011111低5位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即設(shè)置分辨率,如表2.2.1所示(DS18B20出廠時(shí)被設(shè)置為12位)。表2.2.1R1和R0模式表R1R0分辨率/位溫度最大轉(zhuǎn)換時(shí)間/ms00110101910111293.75187.5275.00750.00由表2.2.1可見(jiàn),設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間之間權(quán)衡考慮。高速暫存存儲(chǔ)器除了配置寄存器外,還有其他8個(gè)寄存器,其分配如下所示。其中,第1、2個(gè)寄存器存儲(chǔ)溫度信息,第3、4個(gè)寄存器存儲(chǔ)TH和TL值,第68個(gè)寄存器未用,表現(xiàn)為全邏輯1;第9個(gè)寄存器存儲(chǔ)的是前面所有8個(gè)寄存器內(nèi)容的CRC碼,可用來(lái)保證通信正確。溫度低位溫度高位

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論