基于51單片機的多路溫度采集控制系統(tǒng)設計_第1頁
基于51單片機的多路溫度采集控制系統(tǒng)設計_第2頁
基于51單片機的多路溫度采集控制系統(tǒng)設計_第3頁
基于51單片機的多路溫度采集控制系統(tǒng)設計_第4頁
基于51單片機的多路溫度采集控制系統(tǒng)設計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于51單片機的多路溫度采集控制系統(tǒng)設計前言隨著現(xiàn)代信息技術的飛速發(fā)展,溫度測量控制系統(tǒng)在工業(yè)、農(nóng)業(yè)及人們的日常生活中扮演著一個越來越重要的角色,它對人們的生活具有很大的影響,所以溫度采集控制系統(tǒng)的設計與研究有十分重要的意義。本次設計的目的在于學習基于51單片機的多路溫度采集控制系統(tǒng)設計的基本流程。本設計采用單片機作為數(shù)據(jù)處理與控制單元,為了進行數(shù)據(jù)處理,單片機控制數(shù)字溫度傳感器,把溫度信號通過單總線從數(shù)字溫度傳感器傳遞到單片機上。單片機數(shù)據(jù)處理之后,發(fā)出控制信息改變報警和控制執(zhí)行模塊的狀態(tài),同事將當前溫度信息發(fā)送到LED進行顯示。本系統(tǒng)可以實現(xiàn)多路溫度信號采集與顯示,可以使用按鍵來設置溫度限

2、定值,通過進行溫度數(shù)據(jù)的運算處理,發(fā)出控制信號達到控制蜂鳴器和繼電器的目的。我所采用的控制芯片為AT89C51,此芯片功能較為強大,能偶滿足設計要求。通過對電路的設計,對芯片外圍擴展,來達到對某一車間溫度的控制和調(diào)節(jié)功能。關鍵詞:溫度 多路溫度采集 驅(qū)動電路正文:1、 溫度控制器電路設計本電路由89C51單片機溫度傳感器、模數(shù)轉(zhuǎn)換器ADC0809、串入并出移位寄存器74LS164、數(shù)碼管和LED顯示電路等組成。由熱敏電阻溫度傳感器測量環(huán)境溫度,將其電壓值送入ADC0809的IN0通道進行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換所得的數(shù)字量由數(shù)據(jù)端D0-D7輸出到89C51的P0口,經(jīng)軟件處理后將測量的溫度值經(jīng)單片機的R

3、XD端串行輸出到74LS164,經(jīng)74LS164串并轉(zhuǎn)換后,輸出到數(shù)碼管的7個顯示段,用數(shù)字形式顯示出當前的溫度值。89C51的P2.0、P2.1、P2.2分別接入ADC0809通道地址選擇端A、B、C,因此ADC0809的IN0通道的地址為F0FFH。輸出驅(qū)動控制信號由P1.0輸出,4個LED為狀態(tài)指示,其中,LED1為輸出驅(qū)動指示,LED2為溫度正常指示,LED3為高于上限溫度指示,LED4為低于下限溫度指示。當溫度高于上限溫度值時,有P1.01輸出驅(qū)動信號,驅(qū)動外設電路工作,同時LED1亮、LED2滅、LED3亮、LED4滅。外設電路工作后,溫度下降,當溫度降到正常溫度后,LED1亮、L

4、ED2亮、LED3滅、LED4滅。溫度繼續(xù)下降,當溫度下降到下限溫度值時,P1.01輸出停止輸出,外設電路停止工作,同時LED1滅、LED2滅、LED3滅、LED4亮。當外設電路停止工作后,溫度開始上升,接著進行下一工作周期。2、 溫度控制器程序設計本軟件系統(tǒng)有1個主程序,6個子程序組成,6個子程序為定時/計數(shù)器0中斷服務程序、溫度采集及模數(shù)轉(zhuǎn)換子程序ADC0N、溫度計算子程序CALCU、驅(qū)動控制子程序DRVCON、十進制轉(zhuǎn)換子程序METRICCON及數(shù)碼管顯示子程序DISP。(1) 主程序主程序進行系統(tǒng)初始化操作,主要是進行定時/計數(shù)器的初始化。(2) 定時/計數(shù)器0中斷服務程序應用定時計數(shù)

5、器0中斷的目的是進行定時采樣,消除數(shù)碼管溫度顯示的閃爍現(xiàn)象,用戶可以根據(jù)實際環(huán)境溫度變化率進行采樣時間調(diào)整。每當定時時間到,調(diào)用溫度采集及模數(shù)轉(zhuǎn)換子程序ADCON,得到一個溫度樣本,并將其轉(zhuǎn)換為數(shù)字量,傳送給89C51單片機,然后在調(diào)用溫度計算子程序CALCU,驅(qū)動控制子程序DVRCON,十進制轉(zhuǎn)換子程序METRICCON,溫度數(shù)碼管顯示子程序DISP。(3) 溫度采集及模數(shù)轉(zhuǎn)換子程序ADCON該子程序進行溫度采樣并將其轉(zhuǎn)換為8位數(shù)字量傳送給89C51的P0口。采樣得到的溫度數(shù)據(jù)存放在片內(nèi)RAM的20H單元中。(4) 溫度甲酸子程序CALCU根據(jù)熱敏電阻的分度值和電路參數(shù)計算出一張溫度表,存放

6、在DATATAB數(shù)據(jù)表中,由于篇幅關系,本程序只給出049的溫度數(shù)據(jù),一個溫度有兩個字節(jié)組成,前一字節(jié)為溫度值,后一字節(jié)為該溫度所對應的熱敏電阻上的電壓的數(shù)字量。根據(jù)采樣值,通過查表及比較的方法計算出當前的溫度值,并將其存入片內(nèi)RAM的21H單元。采用查表發(fā)計算溫度值時為了克服熱敏電阻的阻值-溫度特性曲線的非線性,提高測量精度。(5) 驅(qū)動控制子程序DRVCON該子程序調(diào)節(jié)溫度,當溫度高于上限溫度時(本次程序設為30),P1.0輸出驅(qū)動控制信號,驅(qū)動外設工作降溫;當溫度下降到下限溫度時(本程序設為25),P1.0停止輸出,溫度上升,周而復始;工作狀態(tài)有LED1-LED4指示。(6)十進制轉(zhuǎn)換子

7、程序METRICCON將存放于內(nèi)部RAM21H但愿的當前溫度值的二進制數(shù)形式轉(zhuǎn)換為十進制數(shù)(BCD碼)形式,以便輸出顯示,轉(zhuǎn)換結(jié)果存放在片內(nèi)RAM的32H單元(百位)、31H(十位)、30H單元(個位)。(7)數(shù)碼顯示子程序DISP該子程序利用89C51串口的方式0串行移位寄存器工作方式,將片內(nèi)RAM的30H、31H、32H單元的BCD碼查表轉(zhuǎn)換為七段碼后由RXD端串行發(fā)出去,然后經(jīng)74LS164串并轉(zhuǎn)換,將七段值傳送給數(shù)碼管,以十進制形式顯示出當前溫度值。根據(jù)以上分析畫出的部分程序設計流程圖如圖1-0至圖1-4所示。開始在0000H處放置一條長跳轉(zhuǎn)指令,LJMP MAIN跳轉(zhuǎn)到主程序在000

8、0H處放置一條長跳轉(zhuǎn)指令,LJMP T0INT跳轉(zhuǎn)到T0中斷服務程序圖1-0部分程序設計流程圖的設計框架堆棧指針賦初值60HTMOD賦初值01H,T0工作于定時方式1軟啟動P1口賦初值FFH,所有指示燈全滅計數(shù)寄存器R1賦初值10主程序動態(tài)停機SETB TR0啟動T0工作IE賦初值82H,T0允許中斷TH0賦初值3CH,TL0賦初值B0H,T0定時100ms圖1-1 主程序流程圖T0中斷服務程序 N調(diào)用溫度采樣及模數(shù)轉(zhuǎn)換子程序ADCON溫度采樣時間間隔到否 Y調(diào)用溫度計算子程序CALCU調(diào)用驅(qū)動控制子程序DRVCON中斷返回T0重裝初值調(diào)用數(shù)碼管顯示子程序DISP調(diào)用十進制轉(zhuǎn)換子程序METRI

9、CCON圖1-2 T0中斷服務程序流程圖啟動A/D轉(zhuǎn)換將ADC0809初始化溫度采樣及模數(shù)轉(zhuǎn)換子程序返回將轉(zhuǎn)換數(shù)據(jù)存于片內(nèi)RAM20H單元讀取轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換結(jié)束否圖1-3 溫度采樣及模數(shù)轉(zhuǎn)換子程序流程圖溫度計算子程序查表取出某一溫度的電壓數(shù)據(jù)溫度數(shù)據(jù)表首地址送DPTR溫度數(shù)據(jù)表索引寄存器R2賦初值01H大于 當前溫度電壓值與查表取得 相等的某一溫度電壓值比較 小于索引值加2返回將該溫度值存于21H單元取出表中前一溫度值返回將該溫度值存于21H單元查表取出該溫度值圖1-4 溫度計算子程序流程圖3、 具體內(nèi)容(1) 溫度控制器電器原理圖設計按以上分析及相關知識設計出溫度控制器電路原理圖如圖1-5所示

10、(2) 溫度數(shù)據(jù)表在圖1-5所示的電路中,熱敏電阻的連接如圖1-6所示。本設計所使用的熱敏電阻的分度表及ADC0809轉(zhuǎn)換后的電壓數(shù)字量見附表1-1所示,轉(zhuǎn)換后的電壓數(shù)字量的計算方法為:熱敏電阻與R8并聯(lián)口的總電阻:R=(Rt*R8)/ (Rt+R8) R與R7串聯(lián)電路中R的分壓值(即輸入ADC0809的模擬量):V=5R/(R+R7)5V被分成256等分(8位量化),則每份的電壓值:=5/256輸入的模擬量電壓經(jīng)8位量化后的數(shù)字量:D=V/例如:熱敏電阻在溫度為20時的阻值為62.254千歐,則根據(jù)上述方法計算出的電壓數(shù)字量為169,注意在計算中R7的實測值19.6千歐代入進入計算。 在實際

11、做該電路時,可根據(jù)自己所選擇的熱敏電阻的分度表計相關電路參數(shù),按上述方法計算出ADC0809轉(zhuǎn)換后的各溫度對應的電壓數(shù)字量。程序中的溫度數(shù)據(jù)表構(gòu)成:1個溫度數(shù)據(jù)占2個字節(jié),前一字節(jié)為溫度值,后一個字節(jié)為該溫度下熱敏電阻上的模擬電壓轉(zhuǎn)換成的8位數(shù)字量。如在20時,熱敏電阻對應的電壓數(shù)字量為169,則20,169組成一個溫度為20的溫度數(shù)據(jù)。按這樣方法組成的049的溫度數(shù)據(jù)表如下:DATATAB:DB 0,194, 1,193, 2,192, 3,191, 4,190 DB 5,189, 6,188, 7,187, 8,186, 9,185 DB 10,184,11,182,12,181,13,1

12、80,14,178 DB 15,177,16,175,17,174,18,173,19,171 DB 20,169,21,168,22,166,23,165,24,163 DB 25,161,26,159,27,158,28,156,29,154 DB 30,152,31,150,32,149,33,147,34,145 DB 35,143,36,141,37,139,38,137,39,135 DB 40,133,41,131,42,129,43,127,44,125 DB 45,123,46,121,47,118,48,116,49,114在溫度采樣機模數(shù)轉(zhuǎn)換子程序中,采樣得到的當前溫度下

13、熱敏電阻上的數(shù)字電壓存于20H單元,在溫度計算子程序中通過查表的方法從表中的第一個溫度(0)下熱敏電阻上的數(shù)字電壓開始,依次取出各溫度下熱敏電阻上的十字電壓,與存于20H單元的當前溫度下熱敏電阻上的數(shù)字電壓比較,如小于當前的數(shù)字電壓,則在取出下一溫度的數(shù)字電壓與當前溫度的數(shù)字電壓比較;直到大于或等于當前的溫度數(shù)字電壓,比較結(jié)束。如大于則取出前一溫度作為當前溫度存于21H單元,如等于則將該溫度作為當前溫度存于20H單元。這種溫度計算方法,避免了溫度特性曲線非線性對溫度計算精確性的影響,計算出的溫度非常準確。(3) 溫度控制程序設計在本設計中,晶體振蕩器頻率為6MHz,T0定時時間為100ms,T

14、0工作于方式1,則T0的初值為:X=(最大計數(shù)值M-定時時間t/機器周期Tm)=216-100ms/2us=15536=3CB0H按以上任務分析設計出的源程序如下:ORG 0000H; LJMP MAIN; 跳轉(zhuǎn)到主程序ORG 000BH;LJMP T0INT;跳轉(zhuǎn)到T0中斷服務程序主程序ORG 0100H;MAIN: MOV R1,#10; T0 100馬上定時溢出計數(shù)寄存器R1賦初值10MOV P1,#0FFH; 所有指示燈滅MOV SP,#60H; 堆棧指針賦初值60HMOV TMOD,#01H; T0定時、方式1、軟啟動MOV TL0,#0B0H; T0賦初值MOV TH0,#3CH;

15、MOV IE,#82H; 開放T0中斷SETB TR0; 啟動T0SIMP $;定時/計數(shù)器0中斷服務程序ORG 0200H;T0INT: DJNZ R1,NEXT;T0溢出10次,即1s進一次采樣處理 LCALL ADCON;調(diào)用溫度采樣及模數(shù)轉(zhuǎn)換子程序 LCALL CALCU;調(diào)用溫度計算子程序 LCALL DRVCON;調(diào)用驅(qū)動控制子程序 LCALL METRICCON;調(diào)用十進制轉(zhuǎn)換子程序 LCALL DISP;調(diào)用數(shù)碼管顯示子程序 MOV R1,#10;R1重賦值10NEXT: MOV TL0,#0B0H;T0重裝初值 MOV TH0,#3CH; RETI;溫度采樣及模數(shù)轉(zhuǎn)換子程序

16、ORG 0300HADCON: MOV DPTR,#0F0FFH;選通ADC0809通道0 MOV A,#00H; MOVX DPTR,A;啟動A/D轉(zhuǎn)換HERE: JNB P3.3,HERE;判斷數(shù)據(jù)轉(zhuǎn)換是否結(jié)束,沒結(jié)束則等待 MOVX A,DPTR;讀取傳喚口的數(shù)據(jù) MOV 20H,A;將從ADC0809中讀取的當前溫度下熱敏電阻上的電壓值存于20H單元 RET;溫度計算子程序ORG 0400H;CALCU: MOV R2,#01H;R2為數(shù)據(jù)表的索引值寄存器 MOV DPTR,#DATATAB;溫度數(shù)據(jù)表首地址送DPTRNEXT1: MOV A,R2;索引值送A MOVC A,A+DPT

17、R;查表取出某一溫度的數(shù)字電壓值 CJNE A,20H,K1;與當前溫度的數(shù)字電壓值比較 DEC R2;等于當前溫度的數(shù)字電壓值,則查表取出該溫度值作為當前;溫度值 MOV A,R2 MOVC A,A+DPTR; LJMP K3;K1: JNC K2;大于當前溫度的數(shù)字電壓值,則繼續(xù)取出下一溫度的數(shù)字電壓進行比較 DEC R2; 小于當前溫度的數(shù)字電壓值,則查表取前一個溫度值作為當前溫度值DEC R2;DEC R2;MOV A,R2;MOVC A,A+DPTR;LJMP K3;K2: INC R2; INC R2; LJMP NEXI;K3: MOV 21H,A;將當前溫度值存于21H單元 R

18、ET;DATATAB: DB 0,194, 1,193, 2,192, 3,191, 4,190;溫度數(shù)據(jù)表 DB 5,189, 6,188, 7,187, 8,186, 9,185 DB 10,184,11,182,12,181,13,180,14,178 DB 15,177,16,175,17,174,18,173,19,171 DB 20,169,21,168,22,166,23,165,24,163 DB 25,161,26,159,27,158,28,156,29,154 DB 30,152,31,150,32,149,33,147,34,145 DB 35,143,36,141,3

19、7,139,38,137,39,135 DB 40,133,41,131,42,129,43,127,44,125 DB 45,123,46,121,47,118,48,116,49,114驅(qū)動控制子程序 ORG 0500HDRVCON: MOV A,21H;取出當前溫度值 CJNE A,#30,J1;與上限溫度值(30)比較 LJMP GO;J1: JNC DRV1;若高于上限溫度,則輸出驅(qū)動信號,同時高于上限溫度指示燈點亮 CJNE A,#25,J2;與顯現(xiàn)溫度(25)比較 LJMP GO;J2: JC DRV2;若低于下限溫度,則驅(qū)動信號停止輸出,同時點亮低于下限溫度的指示燈 LJMP

20、GO;DRV1: CLR P1.0; SETB P1.1; CLR P1.2; SETB P1.3; LJMP OVER;DRV2: SETB P1.0; SETB P1.1; CLR P1.2; SETB P1.3;LJMP OVER;DRV2: SETB P1.0; SETB P1.1; SETB P1.2; CLR P1.3; LJMP OVER;GO: CLR P1.1;在下限溫度(25)至上限溫度(30)之間,則驅(qū)動信號保持前面狀態(tài),同事溫度正常指示燈點亮 SETB P1.2; SETB P1.3;OVER: RET;十進制轉(zhuǎn)換子程序 ORG 0600HMETRICCON: MOV

21、R3,#00H;將存于21H單元中的當前溫度轉(zhuǎn)換為BCD碼 MOV R4,#00H;百位存于32H單元,十位存于31H單元,個位存于30H單元 MOV A,21H; CLR C;W1: SUBB A,#100; JC W2; INC R4; AJMP W1;W2: ADD A,#100; CLR C;W3: SUBB A,#10; JC W4; INC R3; AJMP W3;W4: ADD A,#10; MOV 30H,A; MOV 31H,R3; MOV 32H,R4;數(shù)碼管顯示子程序 ORG 0700H;DISP: MOV R5,#03H;將存于32H單元、31H單元、3H0單元的溫度B

22、CD碼查表轉(zhuǎn)換為七段碼 MOV R0,#30H;通過串行通信方式0輸出驅(qū)動3個數(shù)碼管,顯示當前溫度 MOV DPTR,#TAB;LOOP: MOV A,R0; MOVC A,A+DPTR; MOV SBUF,A;WAIT: JNB T1,WAIT; CLR T1; INC R0; DJNZ R5,LOOP; RET;TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段碼數(shù)據(jù)表附表:1-1熱敏電阻分度表及經(jīng)ADC0809轉(zhuǎn)換后的電壓數(shù)字量溫度()熱敏電阻阻值(千歐)轉(zhuǎn)換后的電壓數(shù)字量0161.6081941153.63081932146.08331923138.94351914132.019011905125.80251896119.76081887114.0461878108.63971869103.52431851098.68331841194.10061821289.76131811385.65111801481.75641781578.06461771674.56371751771.24251741868.09

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論