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

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論