基于單片機(jī)的多點(diǎn)溫度采集與記錄系統(tǒng)_第1頁(yè)
基于單片機(jī)的多點(diǎn)溫度采集與記錄系統(tǒng)_第2頁(yè)
基于單片機(jī)的多點(diǎn)溫度采集與記錄系統(tǒng)_第3頁(yè)
基于單片機(jī)的多點(diǎn)溫度采集與記錄系統(tǒng)_第4頁(yè)
基于單片機(jī)的多點(diǎn)溫度采集與記錄系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 多點(diǎn)溫度采集與記錄系統(tǒng)目 錄1、 引言4二、硬件設(shè)計(jì)5三、軟件設(shè)計(jì)9四、總結(jié) 11五、參考文獻(xiàn) 12六、程序附錄 13一、引言 溫度(K)是一個(gè)和人們生活環(huán)境有著密切關(guān)系的物理量,也是一種在生產(chǎn)、科研、生活中需要測(cè)量和控制的重要物理量。在工、農(nóng)業(yè)生產(chǎn)和日常生活中,占據(jù)著極其重要地位。工業(yè)發(fā)展與是否能掌握溫度有著密切的聯(lián)系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等行業(yè)都與之有關(guān),可以說(shuō)幾乎80%的工業(yè)部門(mén)都不得不考慮溫度對(duì)自身系統(tǒng)的影響。本設(shè)計(jì)是基于單片機(jī)的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì),多點(diǎn)溫度測(cè)量顯示是近幾年的研究課題,隨著傳感技術(shù)與通訊技術(shù)的發(fā)展,單片機(jī)的出現(xiàn),溫度測(cè)量?jī)x器應(yīng)運(yùn)而生,最近幾年的研究更

2、是迅速。采用單片機(jī)來(lái)對(duì)溫度進(jìn)行控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。單片機(jī)以其功能強(qiáng)、體積小、可靠性高、造價(jià)低和開(kāi)發(fā)周期短等優(yōu)點(diǎn),成為自動(dòng)化和各個(gè)測(cè)控領(lǐng)域中必不可少且廣泛應(yīng)用的器件,尤其在日常生活中也發(fā)揮越來(lái)越大的作用。因此,本課題的研究在實(shí)際應(yīng)用中意義十分重大。2、 硬件設(shè)計(jì)2.1總體方案硬件設(shè)計(jì)主要是溫度測(cè)量模塊的內(nèi)容,本設(shè)計(jì)由AT89C51單片機(jī),LCD1602液晶顯示屏,DS18B20溫度傳感器,以及DB9通信接口。一共包括三大模塊:控制模塊,溫度采集模塊,溫度顯示模塊??傮w方案如下圖所示: 1.1 系

3、統(tǒng)總方案圖2.1.1 控制模塊功能控制模塊在系統(tǒng)的功能是控制溫度采集模塊完成溫度采集并將采集到的溫度讀入控制模塊的數(shù)據(jù)寄存器,再將從溫度采集模塊讀取的溫度數(shù)據(jù)寫(xiě)入顯示模塊并控制顯示模塊完成溫度的顯示。其中主控單位是AT89C52。2.1.2 溫度采集模塊功能溫度采集模塊的主要功能是通過(guò)溫度傳感器感應(yīng)溫室溫度并轉(zhuǎn)化成模擬信號(hào),通過(guò)轉(zhuǎn)化模塊將模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào),并存取溫度數(shù)據(jù)。本設(shè)計(jì)采用2個(gè)DS18B20溫度傳感器,溫度傳感器DS18B20采用的電壓是內(nèi)部電壓,大小為5V,一個(gè)引腳接地,一個(gè)引腳接+5V電源,中間的引腳是數(shù)據(jù)的輸入輸出口。由于每個(gè)單片機(jī)開(kāi)發(fā)板上有兩個(gè)溫度傳感器,所以一個(gè)傳感器的

4、輸出是P1.4,另一個(gè)傳感器的輸出是P1.5。使用時(shí)將一個(gè)傳感器接到單片機(jī)的18b20接口,接口的1腳接18b20的地端,接口的3腳接18b20的電源,另一個(gè)溫度傳感器的電源接到P0.0口,數(shù)據(jù)讀寫(xiě)端接到P1.5口,地端接到單片機(jī)的接地端,下面是溫度傳感器DS18B20的時(shí)序圖。圖1.2 溫度傳感器DS18B20時(shí)序圖2.1.3 溫度顯示模塊功能溫度顯示模塊的主要功能是在控制模塊的控制下將控制模塊寫(xiě)入的數(shù)據(jù)顯示在液晶屏上,便于讀取溫度數(shù)值。顯示模塊采用LCD1602液晶屏。1602共16個(gè)管腳,但是編程用到的主要管腳不過(guò)三個(gè),分別為:RS(數(shù)據(jù)命令選擇端),R/W(讀寫(xiě)選擇端),E(使能信號(hào))

5、;以后編程便主要圍繞這三個(gè)管腳展開(kāi)進(jìn)行初始化,寫(xiě)命令,寫(xiě)數(shù)據(jù)。以下具體闡述這三個(gè)管腳:RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。R/W為讀寫(xiě)選擇,高電平進(jìn)行讀操作,低電平進(jìn)行寫(xiě)操作。E端為使能端,后面和時(shí)序聯(lián)系在一起。除此外,D0D7分別為8位雙向數(shù)據(jù)線。其操作時(shí)序如下圖所示:圖1.3 LCD1602時(shí)序圖2.1.4溫讀報(bào)警模塊溫度報(bào)警模塊主要由2個(gè)led燈組成,當(dāng)溫度的采集值高于設(shè)定的溫度上限或者低于設(shè)定的溫度下限時(shí),led燈將由暗變亮進(jìn)行報(bào)警,此時(shí)此時(shí)設(shè)計(jì)者就可以改變室外的溫度滿足溫度的需求,此報(bào)警簡(jiǎn)單易懂,可操作性強(qiáng)。2、 硬件電路仿真根據(jù)設(shè)計(jì)的總方案在pretues

6、中仿真,其結(jié)果如圖所示;圖1.4硬件電路仿真當(dāng)溫度超過(guò)高于設(shè)定的溫度上限(此處設(shè)定38)或者低于下限(此處設(shè)定12)時(shí),led燈發(fā)生報(bào)警。其仿真圖如下所示:圖1.3 溫度報(bào)警顯示3、 軟件設(shè)計(jì) 軟件設(shè)計(jì)包括下位機(jī)編程和PC機(jī)編程,下位機(jī)編程完成ds18b20的溫度采集、數(shù)據(jù)處理、數(shù)碼管顯示,串口中斷處理及硬件初始化,通信協(xié)議的制定及數(shù)據(jù)的收發(fā)。通過(guò)串口通信將溫度數(shù)據(jù)在上位機(jī)上面顯示,并且編譯VB程序,實(shí)現(xiàn)報(bào)警顯示。上位機(jī)程序工程:圖3.1上位機(jī)工程顯示當(dāng)溫度1是35,溫度計(jì)2是13時(shí):當(dāng)溫度1是39,溫度計(jì)2是11時(shí):4、 總結(jié)通過(guò)這次課程學(xué)習(xí)制作,令我學(xué)到了很多東西受益匪淺,仿佛又經(jīng)歷了一次

7、系統(tǒng)學(xué)習(xí),在作做課程前,我的導(dǎo)師也要求我做一些溫度采集的設(shè)計(jì),我一直在查找相關(guān)資料,這次的設(shè)計(jì)讓我對(duì)多點(diǎn)溫度采集的知識(shí)了解了許多,同時(shí)也上位機(jī)編程有了初步的概念。一直來(lái)認(rèn)為做這些設(shè)計(jì)沒(méi)什么困難,但在實(shí)際運(yùn)作過(guò)程中才清楚地認(rèn)識(shí)到自己的不足和短練,端正了學(xué)習(xí)態(tài)度。這次設(shè)計(jì)使我加深鞏固了基礎(chǔ)知識(shí),更加深刻的把握到基礎(chǔ)知識(shí)的重要,提高了動(dòng)手和實(shí)際解決問(wèn)題的能力,提高了對(duì)問(wèn)題整體規(guī)劃的意識(shí)。能把握重點(diǎn)設(shè)計(jì)的核心,并提高查閱資料的能力,培養(yǎng)了團(tuán)隊(duì)合作精神和人際交往能力。由于本人水平有限,難免有考慮不足之處,所以懇請(qǐng)老師同學(xué)們批評(píng)指正。5、 參考文獻(xiàn)1譚浩強(qiáng)C程序設(shè)計(jì),清華大學(xué)出版社2童詩(shī)白模擬電子技術(shù)基礎(chǔ)

8、(第四版),高等教育出版社3楊恢先、黃輝先單片機(jī)原理及應(yīng)用,人民郵電出版社4何立民單片機(jī)高級(jí)教程-應(yīng)用于設(shè)計(jì)(第二版),北京航空航天大學(xué)出版社5蔡朝陽(yáng)單片機(jī)控制實(shí)習(xí)與專(zhuān)題制作,北京航空航天大學(xué)出版社6蔣伏加、張林峰Visual Basic程序設(shè)計(jì)教程(第4版),北京郵電大學(xué)出版社6、 程序附錄單片機(jī)c語(yǔ)言代碼:#include<reg52.h> #include<stdio.h> /標(biāo)準(zhǔn)輸入輸出#include<intrins.h>#define uchar unsigned char#define uint unsigned int;#define ulo

9、ng unsigned long;/*/* 定義端口 */*/#define Data P0/數(shù)據(jù)端口sbit RS = P24; /Pin4sbit RW = P25; /Pin5sbit E = P26; /Pin6sbit DQ=P13;/ds18b20 端口sbit DQ1=P14;/ds18b20 端口 改動(dòng)sbit D0=P16;sbit D1=P15;/*/* 全局變量 */*/uint temp=0,temp1=0;float t0,t1;float high=38,low=12,change=0;unsigned char point_flag=0,key_flag=0;un

10、signed char receive5;unsigned char receive_no=0;unsigned char receive_flag=0;char Text=" "uchar code TPoint16=0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9 ;/* 函數(shù)聲明 */*/*/* 微秒延時(shí)函數(shù) */*/void DelayUs(unsigned char us)/delay us unsigned char uscnt; uscnt=us>>1; /*12MHz頻率*/ while(-uscnt)

11、;/*/* 毫秒函數(shù)聲明 */*/void DelayMs(unsigned char ms) while(-ms) DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); /*/* 1602寫(xiě)入命令函數(shù) */*/void WriteCommand(unsigned char c) DelayMs(5);/操作前短暫延時(shí),保證信號(hào)穩(wěn)定 E=0; RS=0; RW=0; _nop_(); E=1; Data=c; E=0;/*/* 1602寫(xiě)入數(shù)據(jù)函數(shù) */*/void WriteData(unsigned char c) DelayMs(

12、5); /操作前短暫延時(shí),保證信號(hào)穩(wěn)定 E=0; RS=1; RW=0; _nop_(); E=1; Data=c; E=0; RS=0;/*/* 1602寫(xiě)入字節(jié)函數(shù) */*/void ShowChar(unsigned char pos,unsigned char c) unsigned char p; if (pos>=0x10) p=pos+0xb0; /是第二行則命令代碼高4位為0xc else p=pos+0x80; /是第二行則命令代碼高4位為0x8 WriteCommand (p);/寫(xiě)命令 WriteData (c); /寫(xiě)數(shù)據(jù)/*/* 1602寫(xiě)入字符串函數(shù) */*/

13、void ShowString (unsigned char line,char *ptr) unsigned char l,i; l=line<<4; for (i=0;i<16;i+) ShowChar (l+,*(ptr+i);/循環(huán)顯示16個(gè)字符/*/* 1602初始化函數(shù) */*/void InitLcd() DelayMs(15); WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x

14、06); /顯示光標(biāo)移動(dòng)位置 WriteCommand(0x0c); /顯示開(kāi)及光標(biāo)設(shè)置 WriteCommand(0x01); /顯示清屏/*/* 18b20延時(shí)函數(shù) */*/void delay(unsigned int i)/延時(shí)函數(shù) while(i-);/*/* 18b20初始化 */*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 delay(8); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低 delay(80); /精確延時(shí) 大于 480us DQ = 1; /拉高總線 delay(10); x=DQ; /稍做

15、延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay(5);void Init_DS18B201(void) unsigned char x=0; DQ1 = 1; /DQ復(fù)位 delay(8); /稍做延時(shí) DQ1 = 0; /單片機(jī)將DQ1拉低 delay(80); /精確延時(shí) 大于 480us DQ1 = 1; /拉高總線 delay(10); x=DQ1; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay(5);/*/* 18b20讀一個(gè)字節(jié) */*/unsigned char ReadOneChar(void)unsigned char i=0;unsi

16、gned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) dat>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; delay(5); return(dat);unsigned char ReadOneChar1(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ1 = 0; / 給脈沖信號(hào) dat>>=1; DQ1 = 1; / 給脈沖信號(hào) if(DQ1) dat|=0x80; delay(5); retur

17、n(dat);/*/* 18b20寫(xiě)一個(gè)字節(jié) */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; delay(5);void WriteOneChar1(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-)DQ1 = 0;DQ1 = dat&0x01;delay(5);DQ1 = 1;dat>

18、;>=1;delay(5);/*/* 18b20讀取溫度 */*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是

19、溫度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=8;t=a+b;return(t);unsigned int ReadTemperature1(void) unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B201();WriteOneChar1(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar1(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay(200);Init_DS18B201();WriteOneChar1(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 Writ

20、eOneChar1(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar1(); /低位b=ReadOneChar1(); /高位b<<=8;t=a+b;return(t);void UartInit(void)/4800bps11.0592MHzSCON = 0x50;TMOD |= 0x20;TL1 = 0xFD;TH1 = 0xFD;TR1 = 1;ES = 1;EA = 1;/*/* 主函數(shù) */*/main()unsigned int TempL,TempH,TempL1,TempH1;/state,i,j,k;float wen

21、du;InitLcd(); /初始化LCDDelayMs(15); /延時(shí)保證信號(hào)穩(wěn)定UartInit();EX0=1; IT0=1; while(1)temp=ReadTemperature();temp1=ReadTemperature1(); t0=temp*0.0625;t1=temp1*0.0625;TempH=temp>>4;TempL=TPointtemp&0x0F;TempH1=temp1>>4; TempL1=TPointtemp1&0x0F; if(t0<low|t0>high)D0=0;else D0=1;if(t1&l

22、t;low|t1>high)D1=0;else D1=1;SBUF=0xff;/校驗(yàn)while(!TI);TI=0;SBUF=TempH;while(!TI);TI=0;SBUF=TempL;while(!TI);TI=0;SBUF=TempH1;while(!TI);TI=0;SBUF=TempL1;while(!TI);TI=0;SBUF=(int)wendu;while(!TI);TI=0;SBUF=(int)(wendu*10)%10;while(!TI);TI=0;SBUF=(int)high;while(!TI);TI=0;SBUF=(int)(high*10)%10;whi

23、le(!TI);TI=0;SBUF=(int)low;while(!TI);TI=0;SBUF=(int)(low*10)%10;while(!TI);TI=0;ShowString(0,Text);if(key_flag=0)sprintf(Text,"%d.%d%cC,%d.%d%cC ",TempH,TempL,0xdf,TempH1,TempL1,0xdf);/打印輸出第二行信息elsesprintf(Text,"U:%d.%d%,D:%d.%d% ",(int)high,(int)(high*10)%10,(int)low,(int)(low*10)%10);/打印輸出第二行信息void s(void) interrupt 4if(RI)RI=0;if (receive_flag=0)receive_no=0;receivereceive_no=SBUF;if (receivereceive_no=0x63) receive_flag=1; change=0; point_f

溫馨提示

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