單片機大作業(yè)報告_第1頁
單片機大作業(yè)報告_第2頁
單片機大作業(yè)報告_第3頁
單片機大作業(yè)報告_第4頁
單片機大作業(yè)報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機大作業(yè) 溫度控制系統(tǒng)設計班級:1302041學號名:陳串串1 設計要求項目簡介:溫度的測量和控制對人類日常生活、工業(yè)生產(chǎn)、氣象預報、物資倉儲等都起著極其 重要的作用。在許多場合,及時準確獲得目標的溫度、濕度信息是十分重要的,近年 來,溫濕度測控領域發(fā)展迅速,并且隨著數(shù)字技術的發(fā)展,溫濕度的測控芯片也相應的 登上歷史的舞臺,能夠在工業(yè)、農(nóng)業(yè)等各領域中廣泛使用。 鑒于此,本文對基于單片機的溫濕度計系統(tǒng)進行了相關研究。本系統(tǒng)是通過單片機控制 來實現(xiàn)對周圍環(huán)境的溫濕度進行測量。本系統(tǒng)是以AT89C52單片機為控制單元、溫度傳感器DS18B2C為主要檢測器件,實現(xiàn)溫度、濕

2、度的測量、顯示、控制,并利用單片機之 間的通信功能,將所采集到的溫度和濕度值在液晶屏中顯示出來。溫度測量范圍為測溫 范圍 40C + 70 C,精度土 0.0625 C。(1) 溫度高于28r啟動制冷開關,從而使制冷壓縮機工作;(2) 溫度低于15C啟動加熱開關,從而使加熱絲導通工作;( 3)以上設定通過用戶從鍵盤上輸入實現(xiàn);(4) 溫度需要用八段式LED顯示(溫度顯示范圍-40 C 70C);(5) 制冷和制熱需要LED燈顯示其工作。2 電路設計硬件電路的設計運用51單片機、七段數(shù)碼管、LED丁、晶振、電解電容、DS18B20電阻、排阻、電源等 組成全部系統(tǒng)。DS18B2可以程序設定912位

3、的分辨率,精度為土 0.5 ° G可選更小的封 裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在EEPROM,掉電后依然保存。DS18B2的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色!DS182與DS18B20軟件兼容,是DS18B2的簡化版本。省略了存儲用戶定義報警溫度、分 辨率參數(shù)的EEPROMB度降低為土 2° C,適用于對性能要求不高,成本控制嚴格的應 用,是經(jīng)濟型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,DS182開辟了溫度傳感器技術的新 概念。DS18B2和DS1822使電壓、特性及封裝有更多的選擇,讓我們可以構建適合自己的 經(jīng)濟的測溫系統(tǒng)。設計

4、框圖如下:項目視圖圖 2-1 溫度控制系統(tǒng)原理總圖單片機運用單片機處理溫度轉化成的串行數(shù)字信號,實現(xiàn)信號處理。將獲得的結果通過輸出裝置輸出顯示在七段數(shù)碼管上,并且在最后的處理部分也借用了P2和P3口的三個引腳,來點亮所需要點亮的LED燈。89C52單片機組成結構中包含運算器、控制器、片內(nèi)存儲器、并行I/O 口、串行I/O 口、定時 /計數(shù)器、中斷系統(tǒng)、振蕩器等功能部件。圖 2.1.1 單片機控制部分電路溫度采集部分運用一個DS18B2C溫度傳感器作為外部溫度的檢測部分,并將采集好的串行數(shù)字信號供單片機處理。圖 2.1.2 DS18B20 傳感器獲取外界溫度電路溫度顯示部分六個七段數(shù)碼管組成顯示

5、部分。圖 2.1.3 溫度顯示部分溫度狀態(tài)指示電路溫度高于指定溫度(28E)時,LED-RED?(代表制冷工作);溫度在指定溫度(15C 28C )之間時,LED-GREE亮;溫度低于指定溫度(15C)時,LED-BLUES (代表制熱工作)。圖 2.1.4 狀態(tài)指示部分軟件的設計#include <reg52.h> #define W_IO P1 / 片選線從左往右分別與 P1.0-P1.4 相連#define S0 P0 /段選線從A-DP,分別與P0.0-p0.7相連#define uchar unsigned char#define ulong unsigned long#

6、define uint unsigned intint t,a;uint temp,flag;float ftemp;sbit LED1=P2A0;sbit LED2=P2A4;sbit LED3=P3A1;sbit ds=P3A4;uchar Time5;/ 數(shù)碼管要顯示的 4 位數(shù)字和溫度正負int code S_Data10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;int code W_Data5=0x01,0x02,0x04,0x08,0x10;void delayms(int time)/ 延時函數(shù)int i,j;for(i

7、=time;i>0;i-)for(j=110;j>0;j-);void LED(uchar Data5,uint dp,uint flag)/ 七段數(shù)碼管上的顯示程序int i=0,j=0;P0=0XFF;for(i=0;i<5;i+)if(i=0)W_IO=W_Datai;if(flag=0) S_IO=0xff;else S_IO=0xbf;delayms(5);elseif(dp!=i)W_IO=W_Datai;S_IO=S_DataDatai;elseW_IO=W_Datai;S_IO=S_DataDatai&0x7f;delayms(5);void init

8、18b20()/DS18B20 復位,初始化函數(shù) uint i;ds=0;i=103;while (i>0)i-;ds=1;i=4;while(i>0)i-;bit du1wei() / 讀一位數(shù)據(jù)uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0)i-;return (dat);uchar du1zijie()/ 讀一字節(jié)數(shù)據(jù)uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=du1wei();dat=(j<<7)|(dat>>1);return(dat);voi

9、d xie1wei (uchar dat)/寫一字節(jié)uint i;uchar j;bit test;for(j=1;j<=8;j+)test=dat&0x01; dat=dat>>1; if(test)ds=0;i+;i+;ds=1;i=8;while(i>0)i-;elseds=0;i=8;while(i>0)i-;ds=1;i+;i+;void xie_temp_zhuanhuan()/ 開始獲取溫度并轉換init18b20();delayms(1);xie1wei (0xcc);xie1wei (0x44);uint du_temp_flag()/

10、讀存儲器中存儲的溫度,標記正負uchar a,b;uint c;init18b20();delayms(1);xie1wei (0xcc);xie1wei (0xbe);a=du1zijie();b=du1zijie();temp=b;temp<<=8;temp=temp|a;c=0;if(temp>0xf000) c=1;return c;uint du_temp_cunchuqi(uint flag)/讀存儲器中存儲的溫度,轉換uchar a,b;init18b20();delayms(1);xie1wei (0xcc);xie1wei (0xbe);a=du1zijie

11、();b=du1zijie();temp=b;temp<<=8;temp=temp|a;if(flag=1)temp=temp;temp=temp+1;ftemp=temp*0.0625;temp=ftemp*100+0.5;return temp;void baojin(uint flag)/ 溫度狀態(tài)處理if(flag=1)LED1=0;LED2=1;LED3=0;else if(flag=0)if(temp<1500)LED1=0;LED2=1;LED3=0;else if(temp>=1500&&temp<=2800)LED1=0;LED2

12、=0;LED3=1;else if(temp>2800)LED1=1;LED2=0;LED3=0;void main()/ 主函數(shù)while(1) xie_temp_zhuanhuan();flag=du_temp_flag();t=du_temp_cunchuqi(flag);Time0=flag;Time1=t/1000;Time2=t%1000/100;Time3=t/10%10;Time4=t%10;LED(Time,2,flag);baojin(flag);部分代碼說明flag 為1. 代碼全程引入一關鍵(全局)變量 flag ,代表溫度正負,當溫度在零上時,八段數(shù)碼管上的顯示

13、程序0,溫度在零下時, flag 為 1,作為影響多個子函數(shù)的重要參數(shù)。void LED(uchar Data5,uint dp,uint flag)/2.int i=0,j=0;P0=0XFF;for(i=0;i<5;i+)if(i=0)W_IO=W_Datai;if(flag=0) S_IO=0xff;else S_IO=0xbf;delayms(5);else if(dp!=i)W_IO=W_Datai;S_IO=S_DataDatai; elseW_IO=W_Datai;S_IO=S_DataDatai&0x7f; delayms(5);數(shù)碼管的顯示是另一關鍵,結合主函數(shù)

14、可知,該子函數(shù)中 i=0-4 代表六聯(lián)數(shù)碼管上 2-6 即后五個的對應處理情況,即 i=0 對應符號位, i=1-4 對應數(shù)字位。符號位與數(shù)字位處理方式不同,故有了 for 循環(huán)內(nèi)第一層 if-else 條件判斷區(qū)分參數(shù)dp關系小數(shù)點位設定,主函數(shù)中取 dp=2,對應i=2時的小數(shù)點特殊處理,故有了第 一層 if-else 中 else 下的又一層3 測試結果仿真結果溫度信號模擬,仿真結果如圖。溫度大于 28 度時,系統(tǒng)開啟制冷措施(紅燈亮)溫度小于 15 度時,系統(tǒng)開啟取暖措施(藍燈亮)溫度在指定范圍 15-28 之間時,系統(tǒng)不采取任何措施(綠燈亮)溫度低于測量下限時,系統(tǒng)發(fā)出警報(藍燈亮)溫度高于測量上限時,系統(tǒng)發(fā)出警報(紅燈亮)4 總結本次單片機課程設計,不僅要求設計者能熟練使用單片機來實現(xiàn)溫度的采集與讀 數(shù),熟練編寫程序,還要求對單片機的電路連接結構,對數(shù)碼管芯片有明確清晰的了解 與認識。剛開始拿到老師給的題目,我們就開始分析應該需要用到哪些知識,我們發(fā)現(xiàn)首先應該了解Keil和protel軟件的使用,其次就是DS18B20勺數(shù)據(jù)采集和編程問題。由于 匯編程序是非常晦澀難懂的,所以我們決定采用C語言進行編程,而我們本身學的是匯編,所以我就在網(wǎng)上下載了一個郭天祥的基于C的單片機教學視頻,開始前幾天我基本就在看視頻學習。在學習過程中,我學到了很多編程技巧,對我之

溫馨提示

  • 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

提交評論