溫度控制系統(tǒng)廣泛應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域 ,如家電、汽車、材料、電力電子等 ,常用的控制電路根據(jù)應(yīng)用場合和所要求的性能指標(biāo)有所不同 , 在工業(yè)企業(yè)中,如何提高溫度控制對象的運(yùn)行性能一直以來都是控制人員和現(xiàn)場技術(shù)人員努力解決的問題。這類控制對象慣性大,滯后現(xiàn)象嚴(yán)重,存在很多不確定的因素,難以建立精確的數(shù)學(xué)模型,從而導(dǎo)致控制系統(tǒng)性能不佳,甚至出現(xiàn)控制不穩(wěn)定、失控現(xiàn)象。傳統(tǒng)的繼電器調(diào)溫電路簡單實(shí)用 ,但由于繼電器動(dòng)作頻繁 ,可能會(huì)因觸點(diǎn)不良而影響正常工作。控制領(lǐng)域還大量采用傳統(tǒng)的PID控制方式,但PID控制對象的模型難以建立,并且當(dāng)擾動(dòng)因素不明確時(shí),參數(shù)調(diào)整不便仍是普遍存在的問題。而采用數(shù)字溫度傳感器DS18B20,因其內(nèi)部集成了A/D轉(zhuǎn)換器,使得電路結(jié)構(gòu)更加簡單,而且減少了溫度測量轉(zhuǎn)換時(shí)的精度損失,使得測量溫度更加精確。數(shù)字溫度傳感器DS18B20只用一個(gè)引腳即可與單片機(jī)進(jìn)行通信,大大減少了接線的麻煩,使得單片機(jī)更加具有擴(kuò)展性。由于DS18B20芯片的小型化,更加可以通過單跳數(shù)據(jù)線就可以和主電路連接,故可以把數(shù)字溫度傳感器DS18B20做成探頭,探入到狹小的地方,增加了實(shí)用性。更能串接多個(gè)數(shù)字溫度傳感器DS18B20進(jìn)行范圍的溫度檢測。
1.2 溫度控制系統(tǒng)的目的溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫室、水池、發(fā)酵缸、電源等場所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實(shí)在很多場所溫度都需要監(jiān)控以防止發(fā)生意外。針對此問題,本系統(tǒng)設(shè)計(jì)的目的是實(shí)現(xiàn)一種可連續(xù)高精度調(diào)溫的溫度監(jiān)測和控制系統(tǒng),實(shí)現(xiàn)對溫度的實(shí)時(shí)檢測,具有提醒和控制的功能,本設(shè)計(jì)的內(nèi)容是溫度測試控制系統(tǒng),控制對象是溫度。它的特點(diǎn)在于應(yīng)用廣泛,功能強(qiáng)大,小巧美觀,便于攜帶,是一款既實(shí)用又廉價(jià)的控制系統(tǒng)。
1.3 溫度控制系統(tǒng)完成的功能本設(shè)計(jì)是對溫度進(jìn)行實(shí)時(shí)監(jiān)測與控制,設(shè)計(jì)的溫度控制系統(tǒng)實(shí)現(xiàn)了基本的溫度控制功能:此設(shè)計(jì)中溫度恒定值設(shè)置為60℃,上下跳轉(zhuǎn)溫度為1℃,設(shè)計(jì)精度值為0.1。當(dāng)溫度低于設(shè)定下限溫度即59℃時(shí),綠燈亮,報(bào)警提醒需要外界的加熱措施。當(dāng)溫度上升到上限溫度時(shí),停止加溫,紅燈亮保持溫度。當(dāng)溫度高于設(shè)定上限溫度即61℃時(shí),紅燈亮,需要外界采取降溫措施(本設(shè)計(jì)中沒有附加外界的加熱和降溫措施)。當(dāng)溫度下降到恒溫度時(shí),停止降溫。溫度在上下限溫度之間時(shí),執(zhí)行機(jī)構(gòu)不執(zhí)行。
第二章 總體設(shè)計(jì)方案2.1 方案一利用溫度傳感器將溫度測出,通過某種電信號傳給外部電路產(chǎn)生一種變化,然后由外部電路控制裝置的開啟。測溫電路的設(shè)計(jì),可以使用熱敏電阻之類的傳感器件利用其感溫效應(yīng),(如電阻隨溫度的變化有一個(gè)變化的曲線,即利用它的變化特性曲線)溫度的變化使得電阻發(fā)生了變化根據(jù)歐姆定律,電阻的變化會(huì)帶來電流或這電壓的變化。再將隨被測溫度變化的電壓或電流采集過來,然后進(jìn)行模擬信號換成數(shù)字信號(A/D)轉(zhuǎn)換,將數(shù)字信號送入單片機(jī),用單片機(jī)進(jìn)行數(shù)據(jù)的處理,將溫度顯示在電路上,這樣就可以將被測溫度顯示出來。最后還有外圍的控制電路,采取一定的措施來控制產(chǎn)生溫度的電路,如加溫、降溫、保持不動(dòng)、或者報(bào)警。這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。
設(shè)計(jì)流程圖如圖2.1
圖2.1 設(shè)計(jì)流程圖
2.2 方案二
利用溫度傳感器芯片直接將溫度數(shù)據(jù)測出,之后通過單片機(jī)程序控制溫度的上、下限值,用外部電路產(chǎn)生顯示和控制加熱和降,來達(dá)到設(shè)計(jì)的要求。
考慮使用溫度傳感器,結(jié)合單片機(jī)電路設(shè)計(jì),采用一只DS18B20溫度傳感器,直接讀取被測溫度值,之后進(jìn)行轉(zhuǎn)換,依次完成設(shè)計(jì)要求。
比較以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計(jì)容易實(shí)現(xiàn),故實(shí)際設(shè)計(jì)中擬采用方案二。
在設(shè)計(jì)中的控制流程如圖2.2所示。
在本系統(tǒng)的總體電路設(shè)計(jì)方框圖如圖2.3所示,它由五部分組成:單片機(jī)STC89C52控制部分; DS18B20溫度傳感器采集部分;AT24C16數(shù)據(jù)掉電存儲(chǔ)部分;3位LED數(shù)碼管顯示部分;按鍵調(diào)節(jié)部分;二極管報(bào)警部分;繼電器驅(qū)動(dòng)部分。
圖2.3 溫度計(jì)電路總體設(shè)計(jì)方案
整個(gè)設(shè)計(jì)總體分為以下幾個(gè)部分:控制部分、顯示部分、溫度采集部分、按鍵控制部分,輸出部分。
1、控制部分
由單片機(jī)STC89C52芯片在程序控制和外圍簡單組合電路作用下運(yùn)行,和控制溫度的上、下限,和 LED的溫度顯示?刂瓢l(fā)光二級管的亮滅和繼電器動(dòng)作或復(fù)位,起到提醒報(bào)警功能。
2、顯示部分
顯示電路采用3位7斷共陽LED數(shù)碼管,從P3口送數(shù),P0口掃描。有兩部分顯示電路,第一是顯示DS18B20溫度傳感器所檢測的當(dāng)前溫度,第二是設(shè)定恒定的溫度值。
3、溫度采集部分
由DS18B20智能溫度傳感器直接采集被測溫度。
4、按鍵控制部分
由三個(gè)按鍵控制調(diào)節(jié),用來調(diào)節(jié)溫度的恒定限值,起到預(yù)設(shè)調(diào)節(jié)作用。
第三章 溫度傳感器DS18B20
3.1 DS18B20簡介3.1.1 DS18B20封裝與引腳DS18B20封裝與引腳如圖3.1
圖3.1 DS18B20的封裝與引腳
3.1.2 DS18B20的簡單性能
1、 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。
2、 測溫范圍 -55℃~+125℃,固有測溫分辨率0.5℃。
3、 支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測溫。
4、 工作電源: 3~5V/DC。
5、 在使用中不需要任何外圍元件。
6、 測量結(jié)果以9~12位數(shù)字量方式串行傳送。
7、 不銹鋼保護(hù)管直徑 Φ6 。
8、 適用于DN15~25, DN40~DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫。
9、 標(biāo)準(zhǔn)安裝螺紋 M10X1, M12X1.5, G1/2”任選。
10、 PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接。
DS18B20內(nèi)部的低溫度系數(shù)振蕩器是一個(gè)振蕩頻率隨溫度變化很小的振蕩器,為計(jì)數(shù)器1提供一頻率穩(wěn)定的計(jì)數(shù)脈沖。
高溫度系數(shù)振蕩器是一個(gè)振蕩頻率對溫度很敏感的振蕩器,為計(jì)數(shù)器2提供一個(gè)頻率隨溫度變化的計(jì)數(shù)脈沖。
初始時(shí),溫度寄存器被預(yù)置成-55℃,每當(dāng)計(jì)數(shù)器1從預(yù)置數(shù)開始減計(jì)數(shù)到0時(shí),溫度寄存器中寄存的溫度值就增加1℃,這個(gè)過程重復(fù)進(jìn)行,直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí)便停止。
初始時(shí),計(jì)數(shù)器1預(yù)置的是與-55℃相對應(yīng)的一個(gè)預(yù)置值。以后計(jì)數(shù)器1每一個(gè)循環(huán)的預(yù)置數(shù)都由斜率累加器提供。為了補(bǔ)償振蕩器溫度特性的非線性性,斜率累加器提供的預(yù)置數(shù)也隨溫度相應(yīng)變化。計(jì)數(shù)器1的預(yù)置數(shù)也就是在給定溫度處使溫度寄存器寄存值增加1℃計(jì)數(shù)器所需要的計(jì)數(shù)個(gè)數(shù)。
DS18B20內(nèi)部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計(jì)數(shù)器2停止計(jì)數(shù)后,比較器將計(jì)數(shù)器1中的計(jì)數(shù)剩余值轉(zhuǎn)換為溫度值后與0.25℃進(jìn)行比較,若低于0.25℃,溫度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃時(shí),溫度寄存器的最低位就進(jìn)位然后置0。這樣,經(jīng)過比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最后位代表0.5℃,四舍五入最大量化誤差為±1/2LSB,即0.25℃。
溫度寄存器中的溫度值以9位數(shù)據(jù)格式表示,最高位為符號位,其余8位以二進(jìn)制補(bǔ)碼形式表示溫度值。測溫結(jié)束時(shí),這9位數(shù)據(jù)轉(zhuǎn)存到暫存存儲(chǔ)器的前兩個(gè)字節(jié)中,符號位占用第一字節(jié),8位溫度數(shù)據(jù)占據(jù)第二字節(jié)。
DS18B20測量溫度時(shí)使用特有的溫度測量技術(shù)。DS18B20內(nèi)部的低溫度系數(shù)振蕩器能產(chǎn)生穩(wěn)定的頻率信號;同樣的,高溫度系數(shù)振蕩器則將被測溫度轉(zhuǎn)換成頻率信號。當(dāng)計(jì)數(shù)門打開時(shí),DS18B20進(jìn)行計(jì)數(shù),計(jì)數(shù)門開通時(shí)間由高溫度系數(shù)振蕩器決定。芯片內(nèi)部還有斜率累加器,可對頻率的非線性度加以補(bǔ)償,測量結(jié)果存入溫度寄存器中。一般情況下的溫度值應(yīng)該為9位,但因符號位擴(kuò)展成高8位,所以最后以16位補(bǔ)碼形式讀出。
DS18B20工作過程一般遵循以下協(xié)議:初始化——ROM操作命令——存儲(chǔ)器操作命令——處理數(shù)據(jù)。
3.3 DS18B20的測溫原理3.3.1 測溫原理每一片DSl8B20在其ROM中都存有其唯一的48位序列號,在出廠前已寫入片內(nèi)ROM 中。主機(jī)在進(jìn)入操作程序前必須用讀ROM(33H)命令將該DSl8B20的序列號讀出。ROM命令代碼見表3.1。
程序可以先跳過ROM,啟動(dòng)所有DSl8B20進(jìn)行溫度變換,之后通過匹配ROM,再逐一地讀回每個(gè)DSl8B20的溫度數(shù)據(jù)。
DS18B20的測溫原理,低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計(jì)數(shù)器2的脈沖輸入,還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 ℃所對應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測溫度。圖3.2中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度值。
表3.1 ROM操作命令
指令 | 約定代碼 | 功 能 |
讀ROM | 33H | 讀DS18B20 ROM中的編碼 |
符合ROM | 55H | 發(fā)出此命令之后,接著發(fā)出64位ROM編碼,訪問單線總線上與該編碼相對應(yīng)的DS18B20 使之作出響應(yīng),為下一步對該DS18B20的讀寫作準(zhǔn)備 |
搜索ROM | 0F0H | 用于確定掛接在同一總線上DS18B20的個(gè)數(shù)和識(shí)別64位ROM地址,為操作各器件作好準(zhǔn)備 |
跳過ROM | 0CCH | 忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令,適用于單片工作。 |
告警搜索 命 令 | 0ECH | 執(zhí)行后,只有溫度超過設(shè)定值上限或者下限的片子才做出響應(yīng) |
溫度變換 | 44H | 啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)間最長為500MS,結(jié)果存入內(nèi)部9字節(jié)RAM中 |
讀暫存器 | 0BEH | 讀內(nèi)部RAM中9字節(jié)的內(nèi)容 |
寫暫存器 | 4EH | 發(fā)出向內(nèi)部RAM的第3,4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟讀命令之后,是傳送兩字節(jié)的數(shù)據(jù) |
復(fù)制暫存器 | 48H | 將E2PRAM中第3,4字節(jié)內(nèi)容復(fù)制到E2PRAM中 |
重調(diào)E2PRAM | 0BBH | 將E2PRAM中內(nèi)容恢復(fù)到RAM中的第3,4字節(jié) |
讀供電方式 | 0B4H | 讀DS18B20的供電模式,寄生供電時(shí)DS18B20發(fā)送“0”,外接電源供電DS18B20發(fā)送“1” |
圖3.2測溫原理內(nèi)部裝置
3.3.2 DS18B20的溫度采集過程
由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要,系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。溫度的采集流程如圖3.3所示。
為防止斷電后密碼丟失,特在此項(xiàng)目設(shè)計(jì)中加入了以AT24C16為核心的存儲(chǔ)模塊。其電路原理圖如下所示:
AT24c16,是IIc總線協(xié)議的通信方式。單片機(jī)本身不具有IIc通行的硬件設(shè)備,因此采用軟件模擬的方式完成與單片機(jī)的通信。
摘抄文獻(xiàn):
操作時(shí)序圖如下:
下面是本項(xiàng)目的源程序:
//*************************************************
//功能:發(fā)送非應(yīng)答信號
void nack_24c16()
{
sda_24c16=1;
delay_3us();
delay_3us();
scl_24c16=1;
delay_3us();
delay_3us();
scl_24c16=0;
sda_24c16=0;
}
//*************************************************
//功能:發(fā)送IIC停止信號
void stop_24c16()
{
sda_24c16=0;
scl_24c16=1;
delay_3us();
delay_3us();
sda_24c16=1;
delay_3us();
delay_3us();
scl_24c16=0;
}
//*************************************************
//功能:發(fā)送啟動(dòng)通訊的信號
void star_24c16()
{
sda_24c16=1;
scl_24c16=1;
delay_3us();
delay_3us();
sda_24c16=0;
delay_3us();
delay_3us();
scl_24c16=0;
}
//****************************************************
//功能:判斷應(yīng)答或非應(yīng)答
//說明:通訊出錯(cuò)時(shí)標(biāo)志為1,否則為0
void cack_24c16()
{
scl_24c16=0;
sda_24c16=1;
delay_3us();
scl_24c16=1;
flag12=0;//清除錯(cuò)誤標(biāo)志
if(sda_24c16)flag12=1;
scl_24c16=0;
}
//****************************************************
//功能:發(fā)送應(yīng)答信號
void mack_24c16()
{
sda_24c16=0;
scl_24c16=1;
delay_3us();
delay_3us();
scl_24c16=0;
sda_24c16=1;
}
//*************************************************
//功能:向24C16寫入一字節(jié)的數(shù)據(jù)
void w1byte_24c16(uchar byte1)
{
uchar i=8;
while(i--)
{
delay_3us();
delay_3us();
delay_3us();
if(byte1 & 0x80)
{sda_24c16=1;}
else
{sda_24c16=0;}
delay_3us();
delay_3us();
delay_3us();
scl_24c16=1;
delay_3us();
delay_3us();
delay_3us();
scl_24c16=0;
byte1<<=1;
}
}
//****************************************************
//功能:從24C16中讀出一字節(jié)的數(shù)據(jù)
uchar rd1byte_24c16(void)//;讀1字節(jié)子程序(通用)讀出的數(shù)據(jù)存放在30H中
{
uchar i;
uchar ddata=0;
sda_24c16=1;//置IO口為1,準(zhǔn)備讀入數(shù)據(jù)
for(i=0;i<8;i++)
{
ddata<<=1;
delay_3us();
delay_3us();
delay_3us();
scl_24c16=1;
if(sda_24c16) ddata++;
delay_3us();
delay_3us();
delay_3us();
scl_24c16=0;
}
return ddata;
}
第四章 單片機(jī)接口設(shè)計(jì)4.1 設(shè)計(jì)原則
DS18B20有2種供電方式,一種是直流電源,還有一種是寄生蟲方式供電。采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號線,3腳接電源。電源是利用直流穩(wěn)壓電源。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10 μs。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三狀態(tài)的。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個(gè)步驟:
單片機(jī)引腳如圖4.1所示。
圖4.1單片機(jī)引腳
串口引腳的連接圖如附錄1。
硬件電路主要包括:顯示電路,DS18B20溫度傳感器檢測電路,按鍵電路,晶振電路,二極管顯示報(bào)警電路,電源電路。
(1) 顯示電路
顯示電路采用了7段共陰數(shù)碼管掃描電路,通過單片機(jī)的P0.0到P0.7八個(gè)端口接數(shù)碼管的八個(gè)引腳,數(shù)碼管的9號引腳接地。用來顯示當(dāng)前檢測的溫度值,精確度為0.1。如圖5.1所示。節(jié)約了單片機(jī)的輸出端口,便于程序的編寫。
本設(shè)計(jì)中還有一組數(shù)碼管由P2.0到P2.7連接,除接口不同外其他一樣,如圖5.2。
圖5.2顯示電路
(2) DS18B20溫度傳感器檢測電路
溫度采集通過數(shù)字化的溫度傳感器DS18B20,通過QD接向單片機(jī)的P3.0口。
DS18B20溫度傳感器電路如圖5.3所示。
圖5.3 溫度傳感器電路引腳圖
(3) 按鍵電路
按鍵電路如圖5.4所示。由K2、K3、K4三個(gè)按鍵控制上、下限溫度值。P3.1接口接K4按鍵。P3.2接口接入K3按鍵。P3.3接口接K2按鍵。
1.K2溫度上下限減少鍵:減少溫度上下限的值。
2.K3溫度上下限增加鍵:增加溫度上下限的值。
3.K4溫控開關(guān)鍵:進(jìn)入溫控的切換鍵。
圖5.4 按鍵電路圖
(4) 晶振控制電路
晶振采用的是12MHZ的標(biāo)準(zhǔn)晶振。接入單片機(jī)的XTAL1、XTAL2。
晶振控制電路如圖5.5所示。
圖5.5 晶振控制電路圖
(5) 復(fù)位電路
復(fù)位電路采用了人工復(fù)位的方式,按下按鍵K1使單片機(jī)復(fù)位。直接接到單片機(jī)的RESET引腳。
復(fù)位電路如圖5.6所示
圖5.6 復(fù)位電路圖
(6)二極管顯示報(bào)警電路
二極管顯示報(bào)警電路如圖5.7所示。通過單片機(jī)的P3.4和P3.5兩個(gè)端口送出,采用的是高電平驅(qū)動(dòng),使其發(fā)光發(fā)出警告。
圖5.7 二極管顯示電路
(8)電源部分
電源部分才用的是直流穩(wěn)壓電源,產(chǎn)生5V的穩(wěn)定直流電壓。電源設(shè)計(jì)部分如圖5.8所示。
圖5.8 電源部分電路
5.2 軟件系統(tǒng)設(shè)計(jì)5.2.1 軟件系統(tǒng)設(shè)計(jì)
一個(gè)應(yīng)用系統(tǒng)要完成各項(xiàng)功能,首先必須有較完善的硬件作保證。同時(shí)還必須得到相應(yīng)設(shè)計(jì)合理的軟件的支持,尤其是微機(jī)應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編程有時(shí)會(huì)變得很簡單,如數(shù)字濾波,信號處理等。因此充分利用其內(nèi)部豐富的硬件資源和軟件資源,采用與C51系列單片機(jī)相對應(yīng)的51匯編語言和結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行軟件編程。
程序設(shè)計(jì)語言有三種:機(jī)器語言、匯編語言和高級語言。機(jī)器語言是機(jī)器唯一能“懂”的語言,用匯編語言或高級語言編寫的程序(稱為源程序)最終都必須翻譯成機(jī)器語言的程序(成為目標(biāo)程序),計(jì)算機(jī)才能“看懂”,然后逐一執(zhí)行。
高級語言是面向問題和計(jì)算過程的語言,它可通過于各種不同的計(jì)算機(jī),用戶編程時(shí)不必仔細(xì)了解所用的計(jì)算機(jī)的具體性能與指令系統(tǒng),而且語句的功能強(qiáng),常常一個(gè)語句已相當(dāng)于很多條計(jì)算機(jī)指令,于是用高級語言編制程序的速度比較快,也便于學(xué)習(xí)和交流,但是本系統(tǒng)卻選用了匯編語言。原因在于,本系統(tǒng)是編制程序工作量不大、規(guī)模較小的單片機(jī)微控制系統(tǒng),使用匯編語言可以不用像高級語言那樣占用較多的存儲(chǔ)空間,適合于存儲(chǔ)容量較小的系統(tǒng)。同時(shí),本系統(tǒng)對位處理要求很高,需要解決大量的邏輯控制問題。
51指令系統(tǒng)的指令長度較短,它在存儲(chǔ)空間和執(zhí)行時(shí)間方面具有較高的效率,編成的程序占用內(nèi)存單元少,執(zhí)行也非常的快捷,與本系統(tǒng)的應(yīng)用要求很適合。而且AT89C—51指令系統(tǒng)有豐富的位操作(或稱位處理)指令,可以形成一個(gè)相當(dāng)完整的位操作指令子集,這是AT89C—51指令系統(tǒng)主要的優(yōu)點(diǎn)之一。對于要求反應(yīng)靈敏與控制及時(shí)的工控、檢測等實(shí)時(shí)控制系統(tǒng)以及要求體積小、系統(tǒng)小的許多“電腦化”產(chǎn)品,可以充分體現(xiàn)出匯編語言簡明、整齊、執(zhí)行時(shí)間短和易于使用的特點(diǎn)。
本裝置的軟件包括主程序、讀出溫度子程序、復(fù)位應(yīng)答子程序、寫入子程序、以及有關(guān)DS18B20的程序(初始化子程序、寫程序和讀程序)。
5.2.2 程序組成系統(tǒng)程序主要包括主程序,讀出溫度子程序,寫入子程序,門限調(diào)節(jié)子程序等。
1)主程序
主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值,溫度測量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖5.9所示。
通過調(diào)用讀溫度子程序把存入內(nèi)存儲(chǔ)中的整數(shù)部分與小數(shù)部分分開存放在不同的兩個(gè)單元中,然后通過調(diào)用顯示子程序顯示出來。
圖5.9 主程序流程圖
2)讀出溫度子程序
讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫,程序流程圖如圖5.10所示。
DS18B20的各個(gè)命令對時(shí)序的要求特別嚴(yán)格,所以必須按照所要求的時(shí)序才能達(dá)到預(yù)期的目的,同時(shí),要注意讀進(jìn)來的是高位在后低位在前,共有12位數(shù),小數(shù)4位,整數(shù)7位,還有一位符號位。
結(jié)束語
本文詳細(xì)講述了系統(tǒng)設(shè)計(jì)方案,并給出了相關(guān)程序流程。本設(shè)計(jì)應(yīng)用性比較強(qiáng),可以應(yīng)用在倉庫溫度、大棚溫度、機(jī)房溫度、水池等的監(jiān)控。另外,如果把本設(shè)計(jì)方案擴(kuò)展為多點(diǎn)溫度控制,加上上位機(jī),則可以實(shí)現(xiàn)遠(yuǎn)程溫度監(jiān)控系統(tǒng),將具有更大的應(yīng)用價(jià)值。
本文的創(chuàng)新點(diǎn)在于詳細(xì)設(shè)計(jì)了基于單片機(jī)AT89C51 的溫度監(jiān)控系統(tǒng),設(shè)計(jì)程序已經(jīng).此系統(tǒng)可廣泛用于溫度在DS18B20 測溫范圍之內(nèi)的場合,有良好的應(yīng)用前景。由于單片機(jī)的各種優(yōu)越的特性,使得它的經(jīng)濟(jì)效益顯的更加突出,有很好的實(shí)用性。
附錄1
原理電路總設(shè)計(jì)圖
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |