溫度控制系統(tǒng)的單片機課程設(shè)計21頁_第1頁
溫度控制系統(tǒng)的單片機課程設(shè)計21頁_第2頁
溫度控制系統(tǒng)的單片機課程設(shè)計21頁_第3頁
溫度控制系統(tǒng)的單片機課程設(shè)計21頁_第4頁
溫度控制系統(tǒng)的單片機課程設(shè)計21頁_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設(shè)計單片機課程設(shè)計報告設(shè)計題目:水溫控制系統(tǒng)班 級: 自動化 081 學(xué) 號: 200808425 姓 名: 劉帥軍 指導(dǎo)教師: 董唯光 評語: 成績 2011 年 7 月 8 日I目 錄1. 問題分析及解決方案11.1 題目要求11.2 題目分析11.3 解決方案12. 單片機選型及硬件配置22.1 單片機及擴展模塊選擇22.1.1 單片機及輸入輸出模塊選型22.1.2 電源模塊的選擇22.2 I/O地址分配22.3 系統(tǒng)硬件原理圖32.3.1 系統(tǒng)原理框圖32.3.2 晶振及復(fù)位電路32.3.3 數(shù)碼管驅(qū)動電路42.3.4 溫度顯示模塊42.3.5 溫度控制系統(tǒng)整體仿真圖52.3

2、.6 DS18B20溫度傳感器53. 軟件實現(xiàn)93.1 控制流程圖93.2 軟件代碼103.3 程序調(diào)試153.4 設(shè)計結(jié)果163.5 結(jié)果分析184. 結(jié)論與體會184.1 結(jié)論184.2 心得體會18參 考 書 目19201. 問題分析及解決方案1.1 題目要求要求設(shè)計一個水溫控制系統(tǒng),能正??刂坪蜏y量溫度范圍,控溫通道輸出為繼電器。測溫和控溫范圍:室溫80(實時控制);控溫精度:正負1。1.2 題目分析本系統(tǒng)為水溫控制系統(tǒng),采用單片機作為控制器控制繼電器的導(dǎo)通與關(guān)斷,利用溫度傳感器實時監(jiān)測水的溫度,通過數(shù)碼管顯示實際溫度與設(shè)定的目標(biāo)溫度,然后利用加熱和冷卻裝置進行加減溫度,使水的溫度維持

3、在一定的范圍之內(nèi)。通過調(diào)節(jié)目標(biāo)溫度按鈕,可以任意調(diào)節(jié)水的溫度范圍。1.3 解決方案根據(jù)題目要求,采用5V電源給單片機供電。供電電源可以利用220/9V變壓器先將220V的電壓將為9V,然后利用7805穩(wěn)壓芯片,得到5V供電電源。在控制環(huán)節(jié),利用5551型三極管充當(dāng)開關(guān),通過單片機控制三極管的導(dǎo)通與關(guān)斷,從而進一步控制繼電器的開關(guān),更進一步控制加熱、冷卻裝置的工作狀態(tài)。在整個控制系統(tǒng)中,通過溫度傳感器(DS18B20),對被控對象進行溫度與數(shù)字轉(zhuǎn)換,由溫度傳感器輸出的溫度信號經(jīng)過I/O口,由單片機讀出數(shù)值,并在數(shù)碼管上顯示,通過按鍵可以升高或者降低所需的溫度。實際溫度再經(jīng)過與目標(biāo)溫度進行比較,若

4、所測溫度大于目標(biāo)溫度,則輸出低的門限電壓,即D1燈不亮,不執(zhí)行加熱環(huán)節(jié),同時指示燈D4亮,開始執(zhí)行制冷環(huán)節(jié);反之,若所測電壓小于目標(biāo)電壓,則輸出高的門限電壓,即D1燈亮,執(zhí)行加熱環(huán)節(jié)這樣就可以把溫度控制在一定的范圍之內(nèi)。2. 單片機選型及硬件配置2.1 單片機及擴展模塊選擇2.1.1 單片機及輸入輸出模塊選型在該題目當(dāng)中,單片機選用STC89C52,溫度檢測模塊采用DS18B20作為溫度傳感器對水溫進行實時檢測,溫度顯示模塊選用兩個四位一體共陽極數(shù)碼管,分別顯示實際溫度和目標(biāo)溫度。2.1.2 電源模塊的選擇由于單片機輸出的是TTL電平信號,因此對單片機單獨提供5V電源。該電源可以由220V交流

5、電源經(jīng)整流、降壓和穩(wěn)壓后獲得。對繼電器線圈端子提供經(jīng)5V放大后的8V電源供電,觸頭端子直接接入220V電源。2.2 I/O地址分配將單片機P0口作為實際水溫的段選端,P2口作為目標(biāo)水溫的段選端。P1作為位選端,其中P1.0P1.3作為實際水溫位選,P1.4P1.7作為目標(biāo)水溫位選。P3口主要作為信號指示以及讀取溫度傳感器的溫度數(shù)據(jù)使用。單片機引腳分配圖如圖2-1所示:圖2-1 單片機引腳圖2.3 系統(tǒng)硬件原理圖2.3.1 系統(tǒng)原理框圖該系統(tǒng)的原理框圖如圖2-2所示:數(shù)字溫度傳感器51單片機集成運放三極管放大繼電器電熱絲按鍵操作數(shù)碼管顯示圖2-2 系統(tǒng)原理框圖2.3.2 晶振及復(fù)位電路該系統(tǒng)中單

6、片機外部晶振選為11.0592MHZ,通過兩個電容與XTAL1和XTAL2引腳連接構(gòu)成單片機的外部時鐘電路如圖2-3所示。圖2-3 單片機外部時鐘電路復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。該系統(tǒng)復(fù)位電路由RC微分電路產(chǎn)生的脈沖來實現(xiàn),電路如圖2-4所示,按下開關(guān)即可產(chǎn)生復(fù)位信號,通過導(dǎo)線引入單片機RST引腳即可發(fā)生復(fù)位。圖2-4 單片機復(fù)位電路2.3.3 數(shù)碼管驅(qū)動電路該系統(tǒng)選擇四位一體的共陽極數(shù)碼管作為溫度顯示元件。通過測試,我們發(fā)現(xiàn)單片機上電后輸出電流不能達到要求,導(dǎo)致數(shù)碼管顯示亮度不夠,因此在本電路中對位選端加了三極管驅(qū)動電路。如圖2-5所示:圖2-5 數(shù)碼管驅(qū)動電路2.3.4溫

7、度顯示模塊由P0口控制實際水溫的段選,P2口控制目標(biāo)水溫的段選。P1口作為位選端,其中P1.0P1.3作為實際水溫位選,P1.4P1.7作為目標(biāo)水溫位選。顯示模塊如圖2-6所示。 圖2-6 溫度顯示模塊2.3.5 溫度控制系統(tǒng)整體仿真圖同時還利用Protues對該系統(tǒng)進行了仿真,仿真圖如圖2-7所示:圖2-7 Protues仿真圖2.3.6 DS18B20溫度傳感器1DS18B20的主要特性 1、適應(yīng)電壓范圍更寬,電壓范圍為3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電 2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊 3、DS1

8、8B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi) 4、溫范圍55125,在-10+85時精度為0.5 5、可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫 6、在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快 7、測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力 2. 指令約定代碼操作說明 DS18B20的初始化 (1) 先將數(shù)據(jù)線置高電平“1”。 (2) 延時(該時間要

9、求的不是很嚴格,但是盡可能的短一點) (3) 數(shù)據(jù)線拉到低電平“0”。 (4) 延時750微秒(該時間的時間范圍可以從480到960微秒)。 (5) 數(shù)據(jù)線拉到高電平“1”。 (6) 延時等待(如果初始化成功則在15到60毫秒時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制)。 (7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。 (8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。 /* *DS18B20初始化*

10、*/Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ復(fù)位delay(8); /稍做延時DQ = 0; /單片機將DQ拉低delay(80); /精確延時大于480usDQ = 1; /拉高總線delay(14);x=DQ; /稍做延時后如果x=0則初始化成功delay(20);DS18B20的寫操作 (1) 數(shù)據(jù)線先置低電平“0”。 (2) 延時確定的時間為15微秒。 (3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 (4) 延時時間為45微秒。 (5) 將數(shù)據(jù)線拉到高電平。 (6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。

11、 (7) 最后將數(shù)據(jù)線拉高。 /* * 向DS18B20寫命令 * */WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat=1;/delay(4);DS18B20的讀操作 (1)將數(shù)據(jù)線拉高“1”。 (2)延時2微秒。 (3)將數(shù)據(jù)線拉低“0”。 (4)延時15微秒。 (5)將數(shù)據(jù)線拉高“1”。 (6)延時15微秒。 (7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進行數(shù)據(jù)處理。 (8)延時30微秒。 DS18B20溫度值格式表,如表2-1所示

12、。這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際 溫度。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FE6FH,-55的數(shù)字輸出為FC90H 。表2-1 DS18B20溫度值格式表/DS18B20程序讀取溫度ReadTemperature(void)unsigned char a=0;unsigned char b=0

13、;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0x44); /啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度a=ReadOneChar(); /低八位b=ReadOneChar(); /高八位t=b;t=8;t=t|a; /合并高八位和低八位return(t);此函數(shù)得到的值為溫度值,最小分度為0.0625,其中低四位為小數(shù)部分,(即:把一

14、度分為16等分)。中間七位為其整數(shù)部分,高五位為符號位,若高五位為0,則說明得到的溫度為正數(shù)。若高五位為1,則說明得到的溫度為負數(shù)。3. 軟件實現(xiàn)3.1 控制流程圖程序控制流程圖如圖3-1所示:開始單片機I/O口初始化DS18B20初始化數(shù)碼管顯示初始化讀取水的實際溫度實際溫度是否低于目標(biāo)溫度?控制繼電器導(dǎo)通,進行加熱實際溫度是否高于設(shè)定的最大溫度?啟動報警裝置,同時控制繼電器關(guān)斷進行降溫控制繼電器關(guān)斷,進行降溫實際溫度是否低于設(shè)定的最小溫度?啟動報警裝置,同時控制繼電器導(dǎo)通進行加熱結(jié)束結(jié)束NNYYNY圖3-1 程序流程圖3.2 軟件代碼在整個軟件設(shè)計過程中采用C語言編程,所用的編程環(huán)境是Ke

15、il 2。該程序源代碼如下:#include#define uint unsigned int#define uchar unsigned charsbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13; /數(shù)碼管1斷碼控制sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17; /數(shù)碼管2段碼控制sbit P32=P32; /電源指示燈sbit P34=P34;sbit P30=P30; /蜂鳴器sbit P31=P31; /繼電器控制位sbit up=P37;sbit down=P36; /按鍵

16、操作端口sbit P35=P35; /加熱指示燈端口sbit DQ =P33; /溫度傳感器端口/* * 溫度小數(shù)部分表 * */uchar code ditab16=0x00,0x01,0x01,0x02, 0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07, 0x08,0x08,0x09,0x09;/* * 共陽極數(shù)碼管顯示表 * */unsigned char code duan1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,;/* * 共陽極數(shù)碼管(帶小數(shù)點)顯示表 * */unsigned

17、 char code duan2=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,;void delay_1(uint z);int b=0,k,wendu_1,mubiao=200;char pwm=0,r=0,q=0;uint t=0;/* * 延時函數(shù) * */void delay(unsigned int i)while(i-);/* *DS18B20初始化* */Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ復(fù)位delay(8); /稍做延時DQ = 0; /單片機將DQ拉低delay

18、(80); /精確延時大于480usDQ = 1; /拉高總線delay(14);x=DQ; /稍做延時后如果x=0則初始化成功x=1則初始化失敗delay(20);/* * 從DS18B20讀入數(shù)據(jù) * */ReadOneChar(void)uchar i=0;uchar dat = 0;for(i=8;i0;i-)DQ = 0; / 給脈沖信號dat=1;DQ = 1; / 給脈沖信號if(DQ)dat|=0x80;delay(4);return(dat);/* * 向DS18B20寫命令 * */WriteOneChar(unsigned char dat)uchar i=0;for(i

19、=8;i0;i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat=1;/* *DS18B20程序讀取溫度* */ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0x44); /啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等,前兩個就是溫度a=ReadOneChar(); /低八位

20、b=ReadOneChar(); /高八位t=b;t400|mubiao0) P35=1;P31=1; P34=0; /實際溫度高于目標(biāo)溫度,紅色指示燈發(fā)光,加熱器加熱 else P35=0;P31=0;P34=1; /實際溫度低于目標(biāo)溫度,指示燈不發(fā)光,不加熱void delay_1(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);3.3 程序調(diào)試在整個系統(tǒng)調(diào)試過程中,由于時間倉促沒有來得及做實物。最終通過Protues仿真軟件進行仿真,得到的結(jié)果和預(yù)想的結(jié)果一致。調(diào)試步驟如下:1. 先在Protues仿真軟件中搭建硬件電路;2. 根據(jù)設(shè)計思想和

21、硬件電路在Keil 2中編寫程序代碼,調(diào)試通過并生成.hex文件;3. 雙擊Protues仿真電路中的單片機,將.hex文件下載到單片機中,然后運行觀察結(jié)果。3.4 設(shè)計結(jié)果在該電路中,D1代表加熱指示燈,D2代表電源指示燈,D4代表冷卻指示燈,D5代表報警指示燈,利用燈泡L1代表加熱器,電動機代表冷卻裝置。整個設(shè)計結(jié)果分為三個部分,分別是實際溫度高于設(shè)定的目標(biāo)溫度、實際溫度低于目標(biāo)溫度、目標(biāo)溫度高于或低于設(shè)定的溫度范圍。1. 當(dāng)水的實際溫度低于目標(biāo)溫度時,指示燈D1亮,加熱器開始加熱,同時將單片機P3.4口置0,使三極管斷開,關(guān)閉D4及冷卻裝置。仿真結(jié)果如圖3-2所示。 圖3-2 實際溫度高

22、于目標(biāo)溫度時的工作狀態(tài)2. 當(dāng)水的實際溫度高于目標(biāo)溫度時,指示燈D1不亮,加熱器停止加熱,同時將單片機P3.4口置1,使三極管導(dǎo)通,點亮D4指示燈,電動機開始旋轉(zhuǎn),對水進行降溫處理。仿真結(jié)果如圖3-3所示:圖3-3實際溫度低于目標(biāo)溫度時的工作狀態(tài)3. 當(dāng)設(shè)定的目標(biāo)溫度超過或者低于設(shè)定的溫度范圍時(2040),啟動報警裝置,同時報警指示燈D5發(fā)光,并且啟動制冷裝置。仿真結(jié)果如圖3-4所示:圖3-4 目標(biāo)溫度低于設(shè)定的溫度范圍時的工作狀態(tài)3.5 結(jié)果分析能夠從溫度傳感器中獲得溫度數(shù)據(jù),并且能通過按鍵糾正目標(biāo)溫度,程序能正常執(zhí)行,電阻絲也能按目標(biāo)溫度的高低調(diào)整自身的工作狀態(tài)。效果還行,不過其一精度不高,存在嚴重的滯后,其二程序執(zhí)行得慢,其三是采用繼電器的通斷控制加熱器,動作頻率太低。針對上述問題,可以在控制算法中采用PID控制,以致達到更高的精度,將繼電器用IGBT等代替,具有更高的通斷頻率。4.

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論