基于單片機(jī)的溫度控制電機(jī)轉(zhuǎn)速課程設(shè)計(jì)_第1頁
基于單片機(jī)的溫度控制電機(jī)轉(zhuǎn)速課程設(shè)計(jì)_第2頁
基于單片機(jī)的溫度控制電機(jī)轉(zhuǎn)速課程設(shè)計(jì)_第3頁
基于單片機(jī)的溫度控制電機(jī)轉(zhuǎn)速課程設(shè)計(jì)_第4頁
基于單片機(jī)的溫度控制電機(jī)轉(zhuǎn)速課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 目 錄1 引言22 設(shè)計(jì)要求22.1 設(shè)計(jì)目的22.2 基本要求33 方案設(shè)計(jì)33.1 溫度傳感器方案論證33.1.1 方案一33.1.2 方案二33.2 總體設(shè)計(jì)框圖34 硬件設(shè)計(jì)44.1 單片機(jī)系統(tǒng)44.2 數(shù)字溫度傳感器模塊54.2.1 DS18B20性能64.2.2 DS18B20外形及引腳說明64.2.3 DS18B20接線原理圖64.2.4 DS18B20時(shí)序圖74.2.5 數(shù)據(jù)處理84.3 L298電機(jī)驅(qū)動(dòng)模塊94.4 LCD顯示電路模塊95應(yīng)用軟件介紹105.1 Proteus仿軟真件的介紹105.2  Keil軟件106 軟件設(shè)計(jì)106.1 主程序模塊106.2

2、讀溫度值模塊116.3 中斷模塊136.4 仿真模塊147 源程序168 總結(jié)19參考文獻(xiàn):201 引言隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便是不可否定的,各種數(shù)字系統(tǒng)的應(yīng)用也使人們的生活更加舒適。數(shù)字化控制、智能控制為現(xiàn)代人的工作、生活、科研等方面帶來方便。其中溫度控制電機(jī)轉(zhuǎn)速就是利用單片機(jī)實(shí)現(xiàn)的典型實(shí)例。測(cè)量溫度時(shí)使用數(shù)字溫度計(jì),其與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便、測(cè)溫范圍廣、測(cè)溫精確、功能多樣話等優(yōu)點(diǎn)。其主要用于對(duì)測(cè)溫要求準(zhǔn)確度比較高的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)使用STC89C51單片機(jī)作控制器,數(shù)字溫度傳感器DS18B20測(cè)量溫度,單片機(jī)

3、接受傳感器輸出,經(jīng)處理用LCD實(shí)現(xiàn)溫度值顯示。 電機(jī)由L298電機(jī)驅(qū)動(dòng)芯片控制,實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)和加速減速.2 設(shè)計(jì)要求 2.1設(shè)計(jì)目的 設(shè)計(jì)一個(gè)基于溫度的電動(dòng)機(jī)轉(zhuǎn)速控制電路,在相應(yīng)的軟件控制下可以完成要求的功能,即外部溫度大于65C時(shí),直流電動(dòng)機(jī)在L298驅(qū)動(dòng)下加速正轉(zhuǎn),溫度大于75C全速正轉(zhuǎn),當(dāng)外部溫度小于0C時(shí)電動(dòng)機(jī)加速反轉(zhuǎn),溫度小于-10C時(shí)電動(dòng)機(jī)全速反轉(zhuǎn)。溫度回到0C-65C時(shí)電動(dòng)機(jī)逐漸停止轉(zhuǎn)動(dòng)。在液晶顯示屏1602LCD上顯示當(dāng)前的溫度值。 2.2 基本要求控制電機(jī)正反轉(zhuǎn)即加速減速,實(shí)現(xiàn)實(shí)時(shí)溫度顯示,測(cè)溫范圍-551280C,誤差50C以內(nèi)。畫出基于溫度的電動(dòng)機(jī)轉(zhuǎn)速控制電

4、路的原理圖,通過仿真軟件來檢測(cè)所寫程序?qū)崿F(xiàn)功能的正確與否.3 方案設(shè)計(jì)3.1 溫度傳感器方案論證3.1.1 方案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件,將隨被測(cè)溫度變化的電壓或電流采樣,進(jìn)行A/D轉(zhuǎn)換后就可以用單片機(jī)進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)溫度顯示。這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,增大了電路的復(fù)雜性,而且要做到高精度也比較困難。3.1.2 方案二考慮到在單片機(jī)屬于數(shù)字系統(tǒng),容易想到數(shù)字溫度傳感器,可選用DS18B20數(shù)字溫度傳感器,此傳感器為單總線數(shù)字溫度傳感器,起體積小、構(gòu)成的系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,它可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)給單片機(jī)處理,即可實(shí)現(xiàn)溫度顯示。另外DS18B20具有3引腳的小

5、體積封裝,測(cè)溫范圍為-55+125攝氏度,測(cè)溫分辨率可達(dá)0.0625攝氏度,其測(cè)量范圍與精度都能符合設(shè)計(jì)要求。以上兩種方案相比較,第二種方案的電路、軟件設(shè)計(jì)更簡(jiǎn)單,此方案設(shè)計(jì)的系統(tǒng)在功耗、測(cè)量精度、范圍等方面都能很好地達(dá)到要求,故本設(shè)計(jì)采用方案二。3.2 總體設(shè)計(jì)框圖本方案設(shè)計(jì)的系統(tǒng)由單片機(jī)系統(tǒng)、DS18B20數(shù)字溫度傳感器、LCD溫度顯示模塊、L298電機(jī)驅(qū)動(dòng)模塊、電機(jī)組成,其總體架構(gòu)如下圖1。單片機(jī)測(cè)溫電路時(shí)鐘、復(fù)位電路L298電機(jī)驅(qū)動(dòng)LULU路電路電機(jī)轉(zhuǎn)動(dòng)電路LCD溫度顯示電路圖1 系統(tǒng)總體方框圖4 硬件設(shè)計(jì) 4.1 單片機(jī)系統(tǒng)1. 本設(shè)計(jì)采用STC89C52單片機(jī)作為控制器,完成所有功

6、能的控制,包括:l DS18B20數(shù)字溫度傳感器的初始化和讀取溫度值l LCD顯示驅(qū)動(dòng)與控制l L298電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)電機(jī)l 溫度值的存儲(chǔ)和讀取2. 單片機(jī)系統(tǒng)電路原理圖:圖2 單片機(jī)系統(tǒng)原理圖 4.2 數(shù)字溫度傳感器模塊 4.2.1 DS18B20性能l 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通信l 簡(jiǎn)單的多點(diǎn)分布應(yīng)用l 無需外部器件l 可通過數(shù)據(jù)線供電l 零待機(jī)功耗l 測(cè)溫范圍-55+128,以1遞增l 可編程的分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625l 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms,12位分辨率時(shí)最多在750ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字l 應(yīng)用包括溫度控

7、制、工業(yè)系統(tǒng)、消費(fèi)品、溫度計(jì)和任何熱感測(cè)系統(tǒng)l 負(fù)壓特性:電源極性接反時(shí),傳感器不會(huì)因發(fā)熱而燒毀,但不能正常工作 4.2.2 DS18B20外形及引腳說明圖3 DS18B20外形及引腳l GND:地l DQ:?jiǎn)尉€運(yùn)用的數(shù)據(jù)輸入/輸出引腳l VD:可選的電源引腳 4.2.3 DS18B20接線原理圖單總線通常要求接一個(gè)約4.7K左右的上拉電阻,這樣,當(dāng)總線空閑時(shí),其狀態(tài)為高電平。圖4 DS18B20接線原理圖 4.2.4 DS18B20時(shí)序圖主機(jī)使用時(shí)間隙來讀寫DS18B20的數(shù)據(jù)位和寫命令字的位。1. 初始化時(shí)序如下圖:圖5 DS18B20初始化時(shí)序2. DS18B20讀寫時(shí)序:圖6 DS18

8、B20讀寫時(shí)序 4.2.5 數(shù)據(jù)處理高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。圖7 字節(jié)分配下表為12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0, 這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際 溫度。 例如+125的數(shù)字輸出為07D0H,實(shí)際溫度=07D0H*0.06

9、25=2000*0.0625=125。例如-55的數(shù)字輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號(hào)位不變,也不作運(yùn)算),實(shí)際溫度=370H*0.0625=880*0.0625=55??梢娖渲械退奈粸樾?shù)位。圖8 DS18B20溫度數(shù)據(jù)表 4.3關(guān)于L298電機(jī)驅(qū)動(dòng)芯片的簡(jiǎn)介 L298是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片的主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器、線圈等感性負(fù)載;采用標(biāo)準(zhǔn)TTL邏輯電平信號(hào)控制

10、;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作;有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。 4.4 顯示電路LCD顯示簡(jiǎn)單明了,可以直接讀出溫度值。圖9 LCD驅(qū)動(dòng)顯示電路5應(yīng)用軟件介紹  5.1Proteus仿軟真件的介紹 Proteus是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機(jī),元件庫齊全,使用方便,是不可多得的專業(yè)的單片機(jī)軟件仿真系統(tǒng)。 該軟件的特點(diǎn): (1)全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢(shì)

11、。 (2)具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS一232動(dòng)態(tài)仿真、1 C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。 目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、 PIC18系列、Z80系列、HC11系列以及各種外圍芯片。 支持大量的存儲(chǔ)器和外圍芯片??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大 ,可仿真51、AVR、PIC。5.2 Keil軟件 

12、;Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。 Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。6 軟件設(shè)計(jì)6.1 主程序模塊主程序流程圖:主程序流程

13、圖6.2 讀溫度值模塊讀溫度值模塊需要調(diào)用4個(gè)子程序,分別為:l DS18B20初始化子程序:讓單片機(jī)知道DS18B20在總線上且已準(zhǔn)備好操作l DS18B20寫字節(jié)子程序:對(duì)DS18B20發(fā)出命令l DS18B20讀字節(jié)子程序:讀取DS18B20存儲(chǔ)器的數(shù)據(jù)l 延時(shí)子程序:對(duì)DS18B20操作時(shí)的時(shí)序控制1. 讀溫度值模塊流入口數(shù)據(jù)轉(zhuǎn)換處理讀取溫度值高低位跳過讀序列號(hào)DS18B20初始化延時(shí)DS18B20初始化跳過讀序列號(hào)啟動(dòng)溫度轉(zhuǎn)換 返回 讀溫度值子程序流程圖 2. DS18B20初始化子程序流程圖:入口DQ為低電平?延時(shí)1560msDQ拉高電平延時(shí)>480msDQ復(fù)位0稍延時(shí)DQ置

14、高電平N返回Y DS18B20初始化子程序流程圖3. DS18B20寫字節(jié)和讀字節(jié)子程序流程圖: DS18B20寫字節(jié)子程序流程圖 DS18B20讀字節(jié)子程序流程圖6.3 中斷模塊中斷采用T0方式1,初始值定時(shí)為50ms。中斷模塊需調(diào)用兩個(gè)子程序:l 讀溫度值子程序:定時(shí)讀取溫度值,實(shí)時(shí)更新溫度值l 記錄溫度值子程序:定時(shí)記錄溫度值,供查詢使用把這兩個(gè)子程序放在中斷的原因是,不會(huì)因?yàn)檎{(diào)整報(bào)警溫度或查詢歷史溫度值而停止更新溫度值和記錄溫度值。中斷模塊流程圖:1秒?計(jì)數(shù)值加1定時(shí)器重置初值中斷入口讀溫度值Y中斷返回記錄溫度值 N中斷模塊流程圖6.3 中斷模塊 仿真圖65 - 125 0 - 653

15、5 - 07 源程序#include<reg51.h>#include<intrins.h>#include<stdio.h>#define INT8U unsigned char#define INT16U unsigned intextern INT8U Temp_Value;extern INT8U read_Temperature();extern void delay_ms(INT16U x);extern void LCD_Initialise();extern void LCD_ShowString(INT8U,INT8U,INT8U*) re

16、entrant;sbit MA=P10;sbit MB=P11;sbit PWM1=P12;INT8U Back_Temp_Value=0xFF,0XFF;char Temp_Disp_Buff17;float f_Temp=35.0;void T0_INT() interrupt 1 static INT8U t_Count=0; TH0=(INT16U)(-11.0592/12*500)/256; TL0=(INT16U)(-11.0592/12*500)%256; if(+t_Count=100) t_Count=0; if(Read_Temperature() ) if(Temp_Va

17、lue0!=Back_Temp_Value0|Temp_Value1=Back_Temp_Value1) Back_Temp_Value0=Temp_Value0; Back_Temp_Value1=Temp_Value1; f_Temp=(int)(Temp_Value1<<8|Temp_Value0*0.0625; sprintf(Temp_Disp_Buff,"TEMP:%5.1fxDFx43",f_Temp); LCD_ShowString(1,0,Temp_Disp_Buff); if (f_Temp>=75) f_Temp=75; if (f_

18、Temp<=0) f_Temp=0; if(f_Temp>=45) MA=1;MB=0; #include<reg51.h>#include<intrins.h>#include<stdio.h>#define INT8U unsigned char#define INT16U unsigned intextern INT8U Temp_Value;extern INT8U read_Temperature();extern void delay_ms(INT16U x);extern void LCD_Initialise();extern v

19、oid LCD_ShowString(INT8U,INT8U,INT8U*) reentrant;sbit MA=P10;sbit MB=P11;sbit PWM1=P12;INT8U Back_Temp_Value=0xFF,0XFF;char Temp_Disp_Buff17;float f_Temp=35.0;void T0_INT() interrupt 1 static INT8U t_Count=0; TH0=(INT16U)(-11.0592/12*500)/256; TL0=(INT16U)(-11.0592/12*500)%256; if(+t_Count=100) t_Co

20、unt=0; if(Read_Temperature() if(Temp_Value0!=Back_Temp_Value0|Temp_Value1!=Back_Temp_Value1) Back_Temp_Value0=Temp_Value0; Back_Temp_Value1=Temp_Value1; f_Temp=(int)(Temp_Value1<<8|Temp_Value0)*0.0625; sprintf(Temp_Disp_Buff,"TEMP:%5.1fxDFx43",f_Temp); LCD_ShowString(1,0,Temp_Disp_Bu

21、ff); bit tmpreadbit(void) uint i; bit dat; DS=1; DS=0;i+;i+; DS=1;i+; dat=DS; i=8;while(i>0)i-; return (dat); uchar tmpread(void) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); return(dat); void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=

22、1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /write 1 DS=0; i+;i+; DS=1; i=8;while(i>0)i-; else DS=0; i=8;while(i>0)i-;/write 0 DS=1; i+;i+; if (f_Temp>=75) f_Temp=75; if (f_Temp<=0) f_Temp=0; if(f_Temp>=45) MA=1;MB=0; if(f_Temp=45) PWM1=0;delay_ms(30);return; else if(f_Temp=75) PWM1=1;delay_ms(30);return; PWM1=1;delay_ms(f_Temp-45); PWM1=0;delay_ms(75-f_Temp);else if(f_Temp<=10) MA=0;MB=1; if (f_Temp=10) PWM1=0;delay_ms(10);return; else if(f_Temp=0) PWM1=1;delay_ms(10);return; PWM1=1;delay_ms(1

溫馨提示

  • 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)論