版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
9.2應(yīng)用系統(tǒng)設(shè)計實(shí)例——單片機(jī)溫度控制系統(tǒng)
9.2.1技術(shù)指標(biāo)烘干箱的具體指標(biāo)如下:(1)烘干箱由2kW電爐加熱,最高溫度為500℃。(2)烘干箱溫度可預(yù)置,烘干過程恒溫控制,溫度控制誤差≤±2℃。(3)預(yù)置時顯示設(shè)定溫度,烘干時顯示實(shí)時溫度,顯示精確到1℃。(4)溫度超出預(yù)置溫度±5℃時發(fā)聲報警。(5)對升降溫過程的線性沒有要求。
9.2.2控制方案產(chǎn)品的工藝不同,控制溫度的精度也不同,因而所采用的控制算法也不同。就溫度控制系統(tǒng)的動態(tài)特性來講,基本上都是具有純滯后的一階環(huán)節(jié),當(dāng)系統(tǒng)精度及溫控的線性性能要求較高時,多采用PID算法或達(dá)林頓算法來實(shí)現(xiàn)溫度控制。本系統(tǒng)是一個典型的閉環(huán)控制系統(tǒng)。從技術(shù)指標(biāo)可以看出,系統(tǒng)對控制精度的要求不高,對升降溫過程的線性也沒有要求,因此,系統(tǒng)采用最簡單的通斷控制方式,即當(dāng)烘干箱溫度達(dá)到設(shè)定值時斷開加熱電爐,當(dāng)溫度降到低于某值時接通電爐開始加熱,從而保持恒溫控制。9.2.3硬件設(shè)計系統(tǒng)的硬件電路包括主機(jī)、溫度檢測、溫度控制、人機(jī)對話(鍵盤/顯示/報警)4個主要部分。圖9.10為系統(tǒng)的結(jié)構(gòu)框圖,圖9.11為系統(tǒng)的硬件電路原理圖。下面對各部分電路分述如下。1)主機(jī)由于系統(tǒng)控制方案簡單,數(shù)據(jù)量也不大,因此選用8031作為控制系統(tǒng)的核心,外擴(kuò)EPROM2764作為程序存儲器。也可視具體情況換用8051、8052、8751、8752、80C51、89C51、89C52等。其中,8051、8052、8751、8752的各個引腳輸入/輸出電平只與TTL電平兼容;89C51、89C52、80C51各引腳輸入/輸出電平既與TTL電平兼容,也與CMOS電平兼容。
圖9.10電烤箱控制系統(tǒng)結(jié)構(gòu)框
8031的晶振頻率為6MHz。2)溫度檢測這部分包括溫度傳感器、變送器和A/D轉(zhuǎn)換三部分。溫度傳感器和變送器的類型選擇與被控溫度的范圍及精度等級有關(guān)。型號為WZB—003,分度號為BA2的鉑熱電阻適用于0℃~500℃的溫度測量范圍,可以滿足本系統(tǒng)的要求。變送器將電阻信號轉(zhuǎn)換成與溫度成正比的電壓,當(dāng)溫度在0℃~500℃時變送器輸出0~4.9V左右的電壓。A/D轉(zhuǎn)換器件的選擇主要取決于溫度的控制精度。本系統(tǒng)要求溫度控制誤差≤±2℃,采用8位A/D轉(zhuǎn)換器,其最大量化誤差為=,完全能夠滿足精度要求。這里我們采用ADC0809作為A/D轉(zhuǎn)換器。電路設(shè)計好后,調(diào)整變送器的輸出,使0℃~500℃的溫度變化對應(yīng)于0~4.9V的輸出,則A/D轉(zhuǎn)換對應(yīng)的數(shù)字量為00H~FAH,即0~250,則轉(zhuǎn)換結(jié)果乘以2正好是溫度值。用這種方法一方面可以減少標(biāo)度轉(zhuǎn)換的工作量,另一方面還可以避免標(biāo)度轉(zhuǎn)換帶來的計算誤差。3)溫度控制電爐控制采用可控硅來實(shí)現(xiàn),雙向可控硅和電爐電阻絲串接在交流220V市電回路中。單片機(jī)的P1.7口通過光電隔離器和驅(qū)動電路送到可控硅的控制端,由P1.7口的高低電平來控制可控硅的導(dǎo)通與斷開,從而控制電阻絲的通電加熱時間。4)人機(jī)對話這部分包括鍵盤、顯示和報警三部分電路。本系統(tǒng)設(shè)有3位LED數(shù)碼顯示器,停止加熱時顯示設(shè)定溫度,啟動加熱時顯示當(dāng)前烤箱溫度。采用串行口擴(kuò)展的靜態(tài)顯示電路作為顯示接口電路。為使系統(tǒng)簡單緊湊,鍵盤只設(shè)置4個功能鍵,分別是啟動、“百位+”、“十位+”和“個位+”鍵,由P1口低4位作為鍵盤接口。利用+1按鍵可以分別對預(yù)置溫度的百位、十位和個位進(jìn)行加1設(shè)置,并在LED上顯示當(dāng)前設(shè)置值。連續(xù)按動相應(yīng)位的加1鍵即可實(shí)現(xiàn)0℃~500℃的溫度設(shè)置。報警功能由蜂鳴器實(shí)現(xiàn)。當(dāng)由于意外因素導(dǎo)致烤箱溫度高于設(shè)置溫度時,P1.6口送出的低電平經(jīng)反向器驅(qū)動蜂鳴器鳴叫報警。5)其它可擴(kuò)展電路對于要求更高的系統(tǒng),在現(xiàn)有電路的基礎(chǔ)上,讀者還可以視需要自行擴(kuò)展以下接口電路:(1)實(shí)時時鐘電路:連接實(shí)時時鐘芯片DS12887可以獲得長的采樣周期,顯示年、月、日、時、分、秒,而其片內(nèi)帶有的114B非易失性RAM,可用來存入需長期保存但有時也需變更的數(shù)據(jù)。如采樣周期、PID控制算法的系數(shù)KP、KI、KD等。(2)“看門狗”電路:連接集成監(jiān)控芯片MAX705可實(shí)現(xiàn)對主電源VCC的監(jiān)控,提高系統(tǒng)的可靠性。由于本書附帶的實(shí)驗(yàn)板已將P1口用排針引出,因此,讀者可以方便地用實(shí)驗(yàn)板來實(shí)現(xiàn)上述系統(tǒng)??稍赑1.6口外接蜂鳴器電路,在P1.7口外接電爐驅(qū)動控制電路,P1.0~P1.3口外接4個功能按鍵(啟動、+100、+10、+1)。
9.2.4軟件設(shè)計1.工作流程烤箱在上電復(fù)位后先處于停止加熱狀態(tài),這時可以用“+1”鍵設(shè)定預(yù)置溫度,顯示器顯示預(yù)定溫度;溫度設(shè)定好后就可以按啟動鍵啟動系統(tǒng)工作了。溫度檢測系統(tǒng)不斷定時檢測當(dāng)前溫度,并送往顯示器顯示,達(dá)到預(yù)定值后停止加熱并顯示當(dāng)前溫度;當(dāng)溫度下降到下限(比預(yù)定值低2℃)時再啟動加熱。這樣不斷重復(fù)上述過程,使溫度保持在預(yù)定溫度范圍之內(nèi)。啟動后不能再修改預(yù)置溫度,必須按復(fù)位/停止鍵回到停止加熱狀態(tài)再重新設(shè)定預(yù)置溫度。2.功能模塊根據(jù)上面對工作流程的分析,系統(tǒng)軟件可以分為以下幾個功能模塊:(1)鍵盤管理:監(jiān)測鍵盤輸入,接收溫度預(yù)置,啟動系統(tǒng)工作。(2)顯示:顯示設(shè)置溫度及當(dāng)前溫度。(3)溫度檢測及溫度值變換:完成A/D轉(zhuǎn)換及數(shù)字濾波。(4)溫度控制:根據(jù)檢測到的溫度控制電爐工作。(5)報警:當(dāng)預(yù)置溫度或當(dāng)前爐溫越限時報警。3.資源分配為了便于閱讀程序,首先給出單片機(jī)資源分配情況。數(shù)據(jù)存儲器的分配與定義見表9.2。表9.2溫度控制軟件數(shù)據(jù)存儲器分配表地址功能名稱初始化值50H~51H當(dāng)前檢測溫度,高位在前TEMP1~TEMP000H52H~53H預(yù)置溫度,高位在前ST1~ST000H54H~56HBCD碼顯示緩沖區(qū),百位、十位、個位T100,T10,T00H57H~58H二進(jìn)制顯示緩沖區(qū),高位在前BT1,BT000H59H~7FH堆棧區(qū)
PSW.5報警允許標(biāo)志F0=0時禁止報警;F0=1時允許報警F00程序存儲器:EPROM2764的地址范圍為0000H~1FFFHI/O口:P1.0~P1.3——鍵盤輸入;P1.6、P1.7——報警控制和電爐控制。A/D轉(zhuǎn)換器0809:通道0~通道7的地址為7FF8H~7FFFH,使用通道0。4.功能軟件設(shè)計1)鍵盤管理模塊上電或復(fù)位后系統(tǒng)處于鍵盤管理狀態(tài),其功能是監(jiān)測鍵盤輸入,接收溫度預(yù)置和啟動鍵。程序設(shè)有預(yù)置溫度合法檢測報警,當(dāng)預(yù)置溫度超過500℃時會報警并將溫度設(shè)定在500℃。鍵盤管理子程序流程圖如圖9.12所示。
圖9.12鍵盤管理子程序流程圖
鍵盤管理子程序KIN:KIN:ACAL CHK ;預(yù)置溫度合法性檢測MOV BT1,ST1 MOV BT0,ST0 ;預(yù)置溫度送顯示緩沖區(qū) LCALL DISP;顯示預(yù)置溫度KIN0:ACALL KEY;讀鍵值 JZ KIN0;無鍵閉合和重新檢測 ACALL DISPACALL DISP ;二次調(diào)用顯示子程序延時去抖 ACALL KEY ;再檢測有無鍵按下 JZ KIN0 ;無鍵按下重新檢測 JB ACC.1,S10 MOV A,#100 ;百位鍵按下 AJMPSUMS10:JB ACC.2,S1 MOV A,#10 ;十位鍵按下 AJMP SUMS1: JB ACC.3,S0 MOV A,#01 ;個位鍵按下SUM: ADD A,ST0 ;預(yù)置溫度按鍵+1 MOV ST0,A MOV A,#00HADDC A,ST1 MOV ST1,AKIN1:ACALLKEY ;判斷閉合鍵釋放 JNZ KIN1 ;未釋放繼續(xù)判斷 AJMP KIN ;閉合鍵釋放繼續(xù)掃描鍵盤S0:JNBACC.0,KIN ;無鍵按下重新掃描鍵盤 RET ;啟動鍵按下返回KEY:MOV A,P1 ;讀鍵值子程序 CPL A ANL A,#0FH RET 預(yù)置溫度合法性檢測子程序CHK(用雙字節(jié)減法比較預(yù)置溫度是否大于500℃(01F4H)):CHK: MOV A,#0F4H ;預(yù)置溫度上限低8位送A CLR C SUBB A,ST0 ;低8位減,借位送CY MOV A,#01H ;預(yù)置溫度上限高8位送A SUBB A,ST1 ;高8位帶借位減 JCOUTA ;預(yù)置溫度越界,轉(zhuǎn)報警 MOV A,#00H ;預(yù)置溫度合法標(biāo)志 RETOUTA: MOV ST1,#01H ;將500寫入預(yù)置溫度數(shù)據(jù)區(qū) MOV ST0,#0F4H CLR P1.6 ;發(fā)報警信號0.6s ACALL D0.6s SETB P1.6 ;停止報警 RET2)顯示模塊顯示子程序的功能是將顯示緩沖區(qū)57H和58H的二進(jìn)制數(shù)據(jù)先轉(zhuǎn)換成三個BCD碼,分別存入百位、十位和個位顯示緩沖區(qū)(54H、55H和56H單元),然后通過串口送出顯示。顯示子程序DISP:DISP:ACALLHTB;將顯示數(shù)據(jù)轉(zhuǎn)換為BCD碼 MOVSCON,#00H;置串行口為方式0 MOVR2,#03H;顯示位數(shù)送R2 MOVR0,#T100;顯示緩沖區(qū)首地址送R0LD:MOVDPTR,#TAB;指向字型碼表首地址MOVA,@R0 ;取顯示數(shù)據(jù) MOVCA,@A+DPTR ;查表 MOV SBUF,A ;字型碼送串行口WAIT:JBCTI,NEXT ;發(fā)送結(jié)束轉(zhuǎn)下一個數(shù)據(jù)并清中斷標(biāo)志 SJMPWAIT ;發(fā)送未完等待NEXT:INC R0 ;修改顯示緩沖區(qū)指針 DJNZ R2,LD ;判3位顯示完否,未完繼續(xù) RETTAB: … ;字型碼表(略)BCD碼轉(zhuǎn)換子程序HTB:HTB: MOV A,BT0 ;取二進(jìn)制顯示數(shù)據(jù)低8位 MOV B,#100;除100,確定百位數(shù) DIV AB MOV T100,A ;百位數(shù)送54H單元 MOV A,#10 ;除10,確定十位XCHA,BDIVA,BMOVT10,A;十位數(shù)送55H單元MOV T,B ;個位數(shù)送56H單元MOV A,BT1;取二進(jìn)制顯示數(shù)據(jù)高8位JNZ LH1 ;高位不為0轉(zhuǎn)LH1繼續(xù)高8位轉(zhuǎn)換RET ;高位為0結(jié)束,返回LH1:MOV A,#06H;高位不為0,低位轉(zhuǎn)換結(jié)果加256(因?yàn)闇囟葦?shù)據(jù)不會;大于500,所以高8位最多為01H,即256)ADD A,T DAA ;個位加6(十進(jìn)制加)MOV T,A ;結(jié)果送回個位MOV A,#05HADDC A,T10DAA ;十位加5(十進(jìn)制加)
MOV T10,A ;結(jié)果送回十位MOV A,#02HADDC A,T100DAA ;百位加2(十進(jìn)制加)MOV T100,A ;結(jié)果送回百位 RET3)溫度檢測模塊A/D轉(zhuǎn)換采用查詢方式。為提高數(shù)據(jù)采樣的可靠性,對采樣溫度進(jìn)行數(shù)字濾波。數(shù)字濾波的算法很多,這里采用4次采樣取平均值的方法。如前所述,本系統(tǒng)A/D轉(zhuǎn)換結(jié)果乘2正好是溫度值,因此,4次采樣的數(shù)字量之和除以2就是檢測的當(dāng)前溫度。檢測結(jié)果高位存入50H,低位存入51H。溫度檢測子程序流程圖如圖9.13所示。溫度檢測子程序TIN:圖9.13溫度檢測子程序流程圖
溫度檢測子程序TIN:TIN:MOVTEMP1,#00H ;清檢測溫度緩沖區(qū) MOVTEMP0,#00H MOVR2,#04H ;取樣次數(shù)送R2 MOVDPTR,#7FF8H ;指向A/D轉(zhuǎn)換器0通道LTIN1:MOVX@DPTR,A ;啟動轉(zhuǎn)換HERE:JNBIE1,HERE ;等待轉(zhuǎn)換結(jié)束 MOVXA,@DPTR ;讀轉(zhuǎn)換結(jié)果ADD A,TEMP0 ;累加(雙字節(jié)加法) MOV TEMP0,A MOV A,#00H ADDC A,TEMP1 MOV TEMP1,A DJNZ R2,LTIN1 ;4次采樣完否,未完繼續(xù) CLR C ;累加結(jié)果除2(雙字節(jié)除法) MOV A,TEMP1 RRC A MOV TEMP1,A MOV A,TEMP0RRC A MOV TEMP0,A RET
4)溫度控制模塊將當(dāng)前溫度與預(yù)置溫度比較,當(dāng)前溫度小于預(yù)置溫度時,繼電器閉合,接通電阻絲加熱;當(dāng)前溫度大于預(yù)置溫度時,繼電器斷開,停止加熱;當(dāng)二者相等時電爐保持原來狀態(tài);當(dāng)前溫度降低到比預(yù)置溫度低2℃時,再重新啟動加熱;當(dāng)前溫度超出報警上下限時將啟動報警,并停止加熱。由于電爐開始加熱時,當(dāng)前溫度可能低于報警下限,為了防止誤報,在未達(dá)到預(yù)置溫度時,不允許報警,為此設(shè)置了報警允許標(biāo)志F0。模塊流程見圖9.14。圖9.14溫度控制流程圖溫度控制子程序CONT:CONT: MOV A,TEMP0 ;當(dāng)前溫度-預(yù)置溫度(雙字節(jié)減) CLR C SUBB A,ST0 MOV B,A ;低8位相減的差值暫存B MOV A,TEMP1 SUBB A,ST1JNC LOFF ;無借位,表示當(dāng)前溫度≥預(yù)置溫度,轉(zhuǎn)LOFFJNB F0,LON ;當(dāng)前溫度<預(yù)置溫度,判是否達(dá)到過預(yù)置溫度MOV A,B ;若達(dá)到過預(yù)置溫度,判二者差值是否大于2CLR CSUBB A,#02HJNCACC.7,LOFF;差值不大于2,轉(zhuǎn)LOFFLON:CLR P1.7 ;開電爐 SJMP EXIT ;返回LOFF: SETB F0 ;設(shè)置允許報警標(biāo)志 SETB P1.7 ;關(guān)電爐EXIT: RET在此,讀者也可自行加入PID算法程序來實(shí)現(xiàn)PID控制。5)溫度越限報警模塊報警上限溫度值為預(yù)置溫度+5℃,即當(dāng)前溫度上升到高于預(yù)置溫度+5℃時報警,并停止加熱;報警下限溫度值為預(yù)置溫度-5℃,即在當(dāng)前溫度下降到低于預(yù)置溫度-5℃,且報警允許時報警,這是為了防止開始從較低溫度加溫時誤報警。報警的同時也關(guān)閉電爐。圖9.15為報警子程序流程圖。圖9.15報警子程序流程圖
報警子程序ALARMALARM: MOV A,TEMP0 ;當(dāng)前溫度低字節(jié)→A CLR C SUBB A,ST0 ;(當(dāng)前溫度低字節(jié)-預(yù)置溫度低字節(jié))→A MOV B, A;低字節(jié)相減結(jié)果送B暫存 MOV A,TEMP1;當(dāng)前溫度高字節(jié)→A SUBB A,ST1;(當(dāng)前溫度高字節(jié)-預(yù)置溫度高字節(jié))→AJC LA0;有借位,當(dāng)前溫度小于預(yù)置溫度轉(zhuǎn)LA0 SETBF0 ;當(dāng)前溫度≥預(yù)置溫度,允許報警 AJMPLA1LA0:MOVA,ST0;預(yù)置溫度低字節(jié)→A CLR C SUBBA,TEMP0;(預(yù)置溫度低字節(jié)-當(dāng)前溫度低字節(jié))→A MOVB,A ;低字節(jié)相減結(jié)果送B暫存 MOVA,ST1;預(yù)置溫度高字節(jié)→A SUBBA,TEMP1 ;(預(yù)置溫度高字節(jié)-當(dāng)前溫度高字節(jié))→ALA1:XCHA,B ;高低字節(jié)互換,判斷相減結(jié)果是否大于5 CLR C SUBB A,#05H ;(低字節(jié)差-5)→A XCH A,B ;(低字節(jié)差-5)→B,高字節(jié)差→A SUBB A,#00H ;(高字節(jié)差-0)→A(因?yàn)?的高字節(jié)為0) JC LA2 ;相減結(jié)果小于5,不報警返回 JNB F0,LA2 ;相減結(jié)果≥5,判是否允許報警,不允許則返回CLR P1.6 ;啟動報警 SETB P1.7 ;關(guān)電爐 LCALL D0.6s ;報警延時0.6s SETB P1.6 ;關(guān)報警LA2: RETD0.6s: (略) ;延時0.6s子程序6)主程序和中斷服務(wù)子程序主程序采用中斷嵌套方式設(shè)計,各功能模塊可直接調(diào)用。主程序完成系統(tǒng)的初始
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國道綠化施工合同范例
- 開采設(shè)備維修合同范例
- 農(nóng)資超市招合同范例
- 廚房漏水維修合同范例
- 農(nóng)村房產(chǎn)贈與合同模板
- 加拿大it工作合同范例
- 臨時外聘保安合同范例
- 培訓(xùn)機(jī)構(gòu)承包協(xié)議合同范例
- 發(fā)廊合伙合同范例備注
- 恒大房合同范例
- 個體診所藥品清單
- 干部履歷表格式
- 《老年人康樂活動》課件
- 木門及門套安裝工程施工方案
- 銀行與信托行業(yè)營銷方案
- 2024屆甘肅省蘭州市蘭煉一中高一物理第一學(xué)期期末監(jiān)測試題含解析
- 國開土地利用規(guī)劃形考任務(wù)1-4答案
- 幼兒園大班繪本閱讀游戲《糊涂熊隊劃不快》課件
- 前置胎盤的診斷與處理指南(2023年版)
- 北師大版四年級書法(上)全冊教案
- 哈爾濱工業(yè)大學(xué)介紹
評論
0/150
提交評論