單片機(jī)大作業(yè)_第1頁
單片機(jī)大作業(yè)_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、1 / 10單片機(jī)大作業(yè)溫度控制系統(tǒng)設(shè)計(jì)一、溫度控制系統(tǒng)設(shè)計(jì)發(fā)展歷史及意義在工業(yè)企業(yè)中 , , 如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員和現(xiàn)場(chǎng)技術(shù)人 員努力解決的問題。這類控制對(duì)象慣性大 , ,滯后現(xiàn)象嚴(yán)重 , ,存在很多不確定的因素 , ,難以建立 精確的數(shù)學(xué)模型 , ,從而導(dǎo)致控制系統(tǒng)性能不佳 , , 甚至出現(xiàn)控制不穩(wěn)定、失控現(xiàn)象。傳統(tǒng)的繼電 器調(diào)溫電路簡(jiǎn)單實(shí)用 , , 但由于繼電器動(dòng)作頻繁 , , 可能會(huì)因觸點(diǎn)不良而影響正常工作。控制領(lǐng) 域還大量采用傳統(tǒng)的 PIDPID 控制方式,但 PIDPID 控制對(duì)象的模型難以建立,并且當(dāng)擾動(dòng)因素不明確 時(shí), ,參數(shù)調(diào)整不便仍是普遍存在的

2、問題。而采用數(shù)字溫度傳感器DS18B20DS18B20 因其內(nèi)部集成了A/DA/D 轉(zhuǎn)換器,使得電路結(jié)構(gòu)更加簡(jiǎn)單,而且減少了溫度測(cè)量轉(zhuǎn)換時(shí)的精度損失,使得測(cè)量溫 度更加精確。數(shù)字溫度傳感器 DS18B2CDS18B2C 只用一個(gè)引腳即可與單片機(jī)進(jìn)行通信,大大減少了接 線的麻煩,使得單片機(jī)更加具有擴(kuò)展性。由于DS18B2CDS18B2C 芯片的小型化,更加可以通過單跳數(shù)據(jù)線就可以和主電路連接,故可以把數(shù)字溫度傳感器DS18B20DS18B20 做成探頭,探入到狹小的地方,增加了實(shí)用性。更能串接多個(gè)數(shù)字溫度傳感器DS18B2CDS18B2C 進(jìn)行范圍的溫度檢測(cè)。二、DS18B2C工作原理DS18B

3、20DS18B20 勺讀寫時(shí)序和測(cè)溫原理與 DS1820DS1820 相同,只是得到的溫度值的位數(shù)因分辨率不同 而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由 2s2s 減為 750ms750ms DS18B20DS18B20 測(cè)溫原理如圖 3 3 所示。圖中 低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1 1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器 2 2 的脈沖輸入。計(jì) 數(shù)器 1 1和溫度寄存器被預(yù)置在-55-55C所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器 1 1 對(duì)低溫度系數(shù)晶振產(chǎn)生 的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器 1 1 的預(yù)置值減到 0 0 時(shí),溫度寄

4、存器的值將加 1 1,計(jì)數(shù)器 1 1 的預(yù)置將重新被裝入,計(jì)數(shù)器 1 1 重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如 此循環(huán)直到計(jì)數(shù)器 2 2 計(jì)數(shù)到 0 0 時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為 所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正計(jì)數(shù)器 1 1 的預(yù) 置值。三、系統(tǒng)軟件流程圖2 / 10四、電路原理圖1.DS18B201.DS18B20 溫度傳感器檢測(cè)電路溫度采集通過數(shù)字化的溫度傳感器 DS18B20DS18B20 通過 QDQD 接向單片機(jī)的 P3.0P3.0 口 DS18B20DS18B20 溫度傳感器電路如圖 5.35.3 所

5、示。3 / 102.2.二極管顯示報(bào)警電路二極管顯示報(bào)警電路如下圖所示。通過單片機(jī)的P3.4P3.4 和 P3.5P3.5 兩個(gè)端口送出,采用的是高電平驅(qū)動(dòng),使其發(fā)光發(fā)出警告。3.整體原理圖五、程序設(shè)計(jì)1 1)讀出溫度子程序i”4 / 10讀出溫度子程序的主要功能是讀出 RAMRAM 中的 9 9 字節(jié),在讀出時(shí)需進(jìn)行 CRCCRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí) 不進(jìn)行溫度數(shù)據(jù)的改寫,程序流程圖如圖5.105.10 所示。5 / 10DS18B20DS18B20 的各個(gè)命令對(duì)時(shí)序的要求特別嚴(yán)格,所以必須按照所要求的時(shí)序才能達(dá)到預(yù)期的 目的,同時(shí),要注意讀進(jìn)來的是高位在后低位在前,共有1212 位數(shù),小數(shù)

6、4 4 位,整數(shù) 7 7 位,還有一位符號(hào)位。圖 510 讀出溫度子程序*讀出溫度子程序的主要功能是讀出 RAMRAM 中的 9 9 字節(jié),在讀出時(shí)需進(jìn)行 CRCCRC 校驗(yàn),校驗(yàn)有錯(cuò) 時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫,程序流程圖如圖 5.105.10 所示。6 / 10DS18B20DS18B20 的各個(gè)命令對(duì)時(shí)序的要求特別嚴(yán)格,所以必須按照所要求的時(shí)序才能達(dá)到預(yù)期的7 / 10目的,同時(shí),要注意讀進(jìn)來的是高位在后低位在前,共有1212 位數(shù),小數(shù) 4 4 位,整數(shù) 7 7 位,還有一位符號(hào)位。2 2)寫入子程序?qū)懭胱映绦虻牧鞒虉D如 5.115.11 所示。F進(jìn)位,c 清腳P3R P3 卜0-8 /

7、10li 時(shí)|皿*1 F#ft,iViSbznf?.六、主要程序#in clude#in clude#define uchar unsigned char#define uint unsigned int #define duan P0#define wei P1sbit DSPORT=P3A7;void Delay1ms(uint y);void Delay5ms();uchar Ds18b20Init();void Ds18b20WriteByte(uchar dat);uchar Ds18b20ReadByte();void Ds18b20ChangTemp();int Ds18b20R

8、eadTemp();void DigDisplay();void LcdDisplay(int temp);uchar code segta10=0 xc0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90; unsigned charDisplayData8;void main()while(1)LcdDisplay(Ds18b20ReadTemp();void Delay1ms(uint y)uint x;for( ; y0; y-)for(x=110; x0; x-);/* 函 數(shù) 名: Ds18b20Init* 函數(shù)功能: 初始

9、化* 輸 入: 無* 輸 出: 初始化成功返回 1,失敗返回 0*uchar Ds18b20Init()9 / 10uchar i;DSPORT = 0; / 將總線拉低 480us960usi = 70;while(i-);/延時(shí) 642usDSPORT = 1;/然后拉高總線,如果 DS18B2 做出反應(yīng)會(huì)將在 15us60us 后總線拉低i = 0;while(DSPORT)/ 等待 DS18B2 拉低總線Delay1ms(1);i+;if(i5) 等待 5MSreturn 0;/ 初始化失敗return 1;/ 初始化成功* 函 數(shù) 名: Ds18b20WriteByte* 函數(shù)功能:

10、向 18B20 寫入一個(gè)字節(jié)* 輸入* 輸出: 無void Ds18b20WriteByte(uchar dat)uint i, j;for(j=0; j= 1;/* 函 數(shù) 名 : Ds18b20ReadByte* 函數(shù)功能: 讀取一個(gè)字節(jié)* 輸入* 輸出:無*/uchar Ds18b20ReadByte()uchar byte, bi;uint i, j;for(j=8; j0; j-)DSPORT = 0;/ 先將總線拉低 1usi+;10 / 10DSPORT = 1;/ 然后釋放總線i+;i+;延時(shí) 6us 等待數(shù)據(jù)穩(wěn)定bi = DSPORT; / 讀取數(shù)據(jù),從最低位開始讀取/*將

11、byte 左移一位,然后與上右移 7 位后的 bi,注意移動(dòng)之后移掉那位補(bǔ) 0。*/ byte = (byte 1) | (bi 7);i = 4;/讀取完之后等待 48us 再接著讀取下一個(gè)數(shù)while(i-);return byte;/*函 數(shù) 名 : Ds18b20ChangTemp函數(shù)功能:讓 18b20 開始轉(zhuǎn)換溫度輸入輸 出:無void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0 xcc);II跳過 RO 操作命令Ds18b20WriteByte(0 x44);/ 溫度轉(zhuǎn)換命令I(lǐng)I Delay1ms(

12、100);II 等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個(gè)延時(shí)了I*函數(shù)名*函數(shù)功能:發(fā)送讀取溫度命令*輸入* 輸出:無*/Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0 xcc);/ 跳過 RO 操作命令Ds18b20WriteByte(0 xbe);/ 發(fā)送讀取溫度命令/* 函 數(shù) 名 : Ds18b20ReadTemp* 函數(shù)功能 : 讀取溫度* 輸入* 輸出: 無*/int Ds18b20ReadTemp()11 / 10int temp = 0;uchar tmh, tml;Ds18b20ChangTemp();/ 先寫入轉(zhuǎn)換命令/ 然

13、后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令tml =Ds18b20ReadByte();/ 讀取溫度值共 16 位,先讀低字節(jié)tmh =Ds18b20ReadByte();/ 再讀高字節(jié)temp = tmh;temp = 8;temp |= tml;return temp;函 數(shù) 名: LcdDisplay()函數(shù)功能: LCD 顯示讀取到的溫度輸入: v輸出: 無void LcdDisplay(int temp)/lcd 顯示float tp;if(temp 0)/ 當(dāng)溫度值為負(fù)數(shù)DisplayData0 = 0 x40;/ 因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減 1,再取反求出原碼 temp=temp

14、-1;temp=temp;tp=temp;temp=tp*0.0625*100+0.5;/留兩個(gè)小數(shù)點(diǎn)就*100 , +0.5 是四舍五入,因?yàn)?C 語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù) 點(diǎn)/ 后面的數(shù)自動(dòng)去掉,不管是否大于 0.5,而+0.5 之后大于 0.5 的就是進(jìn) 1 了,小于 0.5 的就/ 算由?.5 ,還是在小數(shù)點(diǎn)后面elseDisplayData0 = 0 x00;tp=temp;/ 因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量/ 如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身 temp=tp*0.0625*100+0.5;/留兩個(gè)小數(shù)點(diǎn)就*100 , +0.5 是四舍五入,因?yàn)?C 語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù) 點(diǎn)/ 后面的數(shù)自動(dòng)去掉,不管是否大于 0.5,而+0.5 之后大于 0.5 的就是進(jìn) 1 了,小于 0.5 的就/ 算加上 0.5,還是在小數(shù)點(diǎn)后面。DisplayData1 = segtatemp / 10000;12 / 10DisplayData2

溫馨提示

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