根據(jù)C51的DS18B20多點(diǎn)測(cè)溫系統(tǒng)_第1頁
根據(jù)C51的DS18B20多點(diǎn)測(cè)溫系統(tǒng)_第2頁
根據(jù)C51的DS18B20多點(diǎn)測(cè)溫系統(tǒng)_第3頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、* *基于 C51 的 DS18B20多點(diǎn)測(cè)溫系統(tǒng)2013-07-22目錄摘要 .3第一章 緒論 .41.1開發(fā)背景及意義 .4第二章系統(tǒng)硬件設(shè)計(jì) .52.1 單片機(jī) . 5* *2.2 DS18B20溫度測(cè)量模塊62.3 液晶顯示模塊92.4 串口通訊模塊11第三章系統(tǒng)軟件設(shè)計(jì)113. 1 系統(tǒng)初始化123.2 溫度測(cè)量程序12第四章系統(tǒng)仿真調(diào)試134.1 系統(tǒng)仿真調(diào)試13附錄16* *摘要本文介紹了基于溫度傳感器DS18b20與AT89C52單片機(jī)組成的多點(diǎn)溫度分布式測(cè)溫系統(tǒng)。設(shè)計(jì)了其系統(tǒng)構(gòu)成和軟件方案。該系統(tǒng)面向?qū)嶋H需求,設(shè)定DS18b20溫度范圍為-55+125,采用LCD1602液晶

2、顯示屏,顯示兩路溫度傳感器的測(cè)量溫度值。同時(shí)通過串口通訊與 PC 機(jī)進(jìn)行通訊。傳輸采集到的溫度值。實(shí)際應(yīng)用表明。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下現(xiàn)場(chǎng)溫度的測(cè)量,可應(yīng)用于倉庫測(cè)溫、樓宇空調(diào)控制和生產(chǎn)過程監(jiān)控等領(lǐng)域。關(guān)鍵詞: DS18b20 ,分布式, 1602串口通* *第一章緒論1.1開發(fā)背景及意義溫度的測(cè)量和控制在儲(chǔ)糧倉庫、智能樓宇空調(diào)控制及其他的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。傳統(tǒng)的溫度檢測(cè)是使用諸如熱電偶、熱電阻、半導(dǎo)體pn 結(jié)之類的模擬傳感器,經(jīng)信號(hào)取樣電路、放大電路和模數(shù)轉(zhuǎn)換電路處理,獲取表示溫度值的數(shù)字信號(hào),再交由微處理器。因?yàn)闄z測(cè)環(huán)境復(fù)雜,測(cè)量點(diǎn)多,信號(hào)傳輸距離遠(yuǎn)及

3、各種干擾的影響,使得傳統(tǒng)測(cè)量系統(tǒng)的穩(wěn)定性和可靠性下降。近年來隨著單片機(jī)的發(fā)展和傳感器技術(shù)的革新,溫度檢測(cè)領(lǐng)域也完成了從模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)變。DS18b20溫度傳感器的廣泛應(yīng)用更是推動(dòng)了這一領(lǐng)域的發(fā)展。另外液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn)在各類儀表和顯示系統(tǒng)中得到越* *來越多的應(yīng)用,現(xiàn)在也是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示模塊。綜合以上產(chǎn)品的發(fā)展特點(diǎn),希望溫度檢測(cè)系統(tǒng)在未來的發(fā)展中有更廣闊的應(yīng)用空間并且具有更好的現(xiàn)場(chǎng)測(cè)量?jī)?yōu)越性。第二章系統(tǒng)硬件設(shè)計(jì)本系統(tǒng)通過DS18B20溫度傳感器采集溫度值,經(jīng)由單片機(jī)處理由液晶顯示模塊顯示當(dāng)前溫度值,并經(jīng)過串口通信將溫度傳送到P

4、C 上2.1單片機(jī)本系統(tǒng)采用AT89C52單片機(jī)作為微處理器。AT89C52單片機(jī)是ATMEL 公司 89 系列單片機(jī)的一種8 位 Flash 單片機(jī)。它最大的特點(diǎn)是片內(nèi)含有8k 可重復(fù)編程的Flash 存儲(chǔ)器,可* *進(jìn)行 1000次的擦寫操作。另外AT89c52單片機(jī)采用ATMEL 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容,并且其兼具省電耐用、性能穩(wěn)定的特點(diǎn),因此成為單片機(jī)市場(chǎng)的主流產(chǎn)品。本系統(tǒng)采用晶振根據(jù)需要確定系統(tǒng)工作頻率為11.0592Mhz。圖 2.1 單片機(jī)結(jié)構(gòu)圖2.2 DS18B20溫度測(cè)量模塊DS18b20是美國 DALLAS 公司推出的

5、單總線數(shù)字化測(cè)溫集成電路,它具有獨(dú)特的單線接口方式,將非電模擬量溫度值轉(zhuǎn)換為數(shù)字信號(hào)串行輸出僅需占用1 位 I/O端口,能夠直接讀取被測(cè)現(xiàn)場(chǎng)的溫度值。它體積小,電壓適用范圍寬(3v5v ),且可通過編程實(shí)現(xiàn)912位的溫度讀數(shù), 即具有可調(diào)的溫度分辨率,因此實(shí)用性和可靠性較高,應(yīng)用廣泛。 以下是 DS18b20的內(nèi)部結(jié)構(gòu)圖* *圖的內(nèi)部結(jié)構(gòu)圖DS18B20有 4 個(gè)主要的數(shù)據(jù)部件: 64 位激光 ROM 。 64 位激光 ROM 從高位到低位依次為8 位 CRC、48 位序列號(hào)和8位家族代碼 (28H) 組成。 溫度靈敏元件。 非易失性溫度報(bào)警觸發(fā)器TH 和 TL ??赏ㄟ^軟件寫入用戶報(bào)警上下限

6、值。 配置寄存器。配置寄存器為高速暫存存儲(chǔ)器中的第五個(gè)字節(jié)。DS18B20在按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值。DS18B20的測(cè)溫范圍為 -55 +125 ,在 -10 +85 范圍內(nèi),精度為電壓低于3.4v 時(shí)精度誤差較大。0 工作時(shí)0.5 。在根據(jù)其時(shí)序特點(diǎn)以下是DS18B20與AT89C52單片機(jī)構(gòu)成的溫度監(jiān)測(cè)系統(tǒng)如下* *+5VCC1R4DQ2100 KDQDS18B20GND3DS18B20圖溫度監(jiān)測(cè)系統(tǒng)DS18b20的典型應(yīng)用在本系統(tǒng)中兩個(gè)溫度傳感器與單片機(jī)連接方式如下:圖傳感器與單片機(jī)連接* *本系統(tǒng)為多點(diǎn)溫度測(cè)試。DS18B20采用外部供電方式,理論上可以在一根數(shù)

7、據(jù)總線上掛 256 個(gè) DS18B20 ,但實(shí)際應(yīng)用中發(fā)現(xiàn),如果掛接20 個(gè)以上的DS18B20就會(huì)產(chǎn)生功耗問題。另外單總線長(zhǎng)度也不宜超過0.5M ,否則會(huì)影響到數(shù)據(jù)的傳輸。在本電路板的設(shè)計(jì)中考慮到初步實(shí)踐的準(zhǔn)確性,暫使用2 個(gè) DS18B20分別連接單片機(jī)的p2.6 口。對(duì) DS18B20的設(shè)計(jì),需要注意以下問題( 1)對(duì)硬件結(jié)構(gòu)簡(jiǎn)單的單線數(shù)字溫度傳感器DS18B20進(jìn)行操作,需要用較為復(fù)雜的程序完成。 編制程序時(shí)必須嚴(yán)格按芯片數(shù)據(jù)手冊(cè)提供的有關(guān)操作順序進(jìn)行,讀、寫時(shí)間片程序要嚴(yán)格按要求編寫。尤其在使用DS18B20的高測(cè)溫分辨力時(shí),對(duì)時(shí)序及電氣特性參數(shù)要求更高。( 2)實(shí)際應(yīng)用時(shí),要注意單

8、線的驅(qū)動(dòng)能力,不能掛接過多的DS18B20 ,同時(shí)還應(yīng)注意最遠(yuǎn)接線距離。另外還應(yīng)根據(jù)實(shí)際情況選擇其接線拓?fù)浣Y(jié)構(gòu)。2.3液晶顯示模塊本系統(tǒng)使用的是1602 液晶顯示模塊。1602 液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、位數(shù)多、程序簡(jiǎn)單的諸多優(yōu)點(diǎn),在各類儀表和低功耗系統(tǒng)中得到廣泛的應(yīng)用。根據(jù)顯示內(nèi)容可以分為字符型液晶,圖形液晶。 根據(jù)顯示容量又可以分為單行16 字,2 行16字,兩行20 字等等。在本系統(tǒng)中使用的是字符型兩行16 字液晶顯示器。在與單片機(jī)連接時(shí)使用接口電路(排針)相連,為并行通信。以下是1602 液晶顯示器外型圖和液晶顯示的典型應(yīng)用。* *圖液晶顯示器外形1602

9、液晶顯示采用標(biāo)準(zhǔn)的16 腳接口,其中: (模塊背面有標(biāo)注)圖串口通訊第 1 腳: VSS 為地電源第 2 腳:VDD 接 5V 正電源第 3 腳: V0 為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影” ,使用時(shí)可以通過一個(gè) 10K 的電位器調(diào)整對(duì)比度第 4 腳: RS 為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第 5 腳: RW 為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS 和RW 共同為低電平時(shí)可以寫入指令或者顯示地址;當(dāng)RS 為高電平、 RW 為低電平時(shí)可以寫入數(shù)據(jù)。* *第 6 腳: E 端為使能端,當(dāng)

10、 E 端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第 714 腳: D0 D7 為 8 位雙向數(shù)據(jù)線。第 15 16 腳:空腳1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM) 已經(jīng)存儲(chǔ)了不同的點(diǎn)陣字符圖形,這些字符有,阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,其中數(shù)字與字母同ASCII 碼兼容。2.4 串口通訊模塊UART 是一種通用串行數(shù)據(jù)總線 ,用于異步通信 。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。 實(shí)現(xiàn)單片機(jī)和PC 機(jī)的通訊工作, 接一個(gè) MAX232實(shí)現(xiàn)電平轉(zhuǎn)化。 電路圖如下:第三章系統(tǒng)軟件設(shè)計(jì)圖 3 系統(tǒng)流程圖整個(gè)系統(tǒng)的功能是由硬件

11、電路配合軟件來實(shí)現(xiàn)的,當(dāng)硬件基本定型后, 軟件的功能也就* *基本定下來了。 本系統(tǒng)主程序主要包括三個(gè)子程序,分別為液晶顯示子程序,溫度測(cè)量子程序,串口通訊子程序。主體軟件架構(gòu)如左圖:3. 1 系統(tǒng)初始化系統(tǒng)初始化主要包括UART 初始化,液晶顯示初始化,溫度傳感器初始化。UART 初始化包括定義定時(shí)器/ 計(jì)數(shù)器和串行口的工作方式,定義 T1 為自動(dòng)重裝8 位計(jì)數(shù)器。液晶顯示初始化主要是確定液晶顯示器的工作方式、顯示開關(guān)、光標(biāo)開關(guān)等。溫度傳感器初始化包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和跟有其后由傳感器發(fā)出的存在脈沖。 存在脈沖是讓總線控制器知道DS18b20在總線上且已準(zhǔn)備好操作。一個(gè)復(fù)位脈沖

12、跟著一個(gè)存在脈沖表明DS18b20已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。以下是初始化序列圖。圖初始化序列圖3.2溫度測(cè)量程序溫度測(cè)量程序主要是DS18b20與單片機(jī)之間的ROM 操作命令和DS18b20的數(shù)據(jù)讀* *寫操作命令。當(dāng)單片機(jī)對(duì)DS18B20進(jìn)行初始化,檢測(cè)到一個(gè)存在脈沖后,發(fā)出匹配ROM 命令,然后發(fā)送 ROM 碼。圖DS18b20 基本工作流程第四章系統(tǒng)仿真調(diào)試4.1系統(tǒng)仿真調(diào)試在 keil 開發(fā)環(huán)境下不能進(jìn)行有效的仿真調(diào)試,所以在系統(tǒng)中采用protues單片機(jī)仿真工具進(jìn)行仿真調(diào)試。下圖為protues仿真讀取溫度后在LCD1602液晶屏上的顯示結(jié)果。* *圖 4.1.1 protues 仿

13、真圖上位機(jī)用串口調(diào)試軟件來仿真,安裝了虛擬串口驅(qū)動(dòng)軟件和PROTEUS 進(jìn)行調(diào)試仿真。虛擬串口驅(qū)動(dòng)軟件用了VSPD軟件。 VSPD 軟件在 Window操作系統(tǒng)上增加了一對(duì)在邏輯上交叉相互的虛擬串口,使串口調(diào)試助手能夠和PROTEUS 中的單片機(jī)串口相連。VSPD 軟件界面如下:* *圖軟件界面串口仿真結(jié)果如下:在串口調(diào)試助手上顯示兩個(gè)溫度傳感器采集到的溫度* *圖溫度傳感器采集附錄溫度采集體統(tǒng)原理圖PCB 圖* *源代碼1602 函數(shù)部分:#define Port P1sbit RS = P20;/ 定義端口sbit RW = P21;sbit E =P22;/*微秒延時(shí)函數(shù)*/void d

14、elay_us(unsigned int n) /延時(shí)如果需要高精度延時(shí)if (n = 0)return ;while (-n);/*/*毫秒函數(shù)聲明*/*/void delay_ms(unsigned char i)* *unsigned int b;while(i-)for (b = 1; b 1000 ; b+) ;/*/*寫入命令函數(shù)*/*/void LCD_write_com(unsigned char com)RS=0;RW=0;E=1;Port = com;delay_us(10);E=0;/*/*寫入數(shù)據(jù)函數(shù)*/*/void LCD_write_Data(unsigned ch

15、ar Data)* *RS=1;RW=0;E=1;Port = Data;delay_us(10);E=0;/*/*寫入字符串函數(shù)*/*/void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s)if (y = 0)LCD_write_com(0x80 + x);elseLCD_write_com(0xc0 + x);while (*s)* *LCD_write_Data( *s);s+;/*/*初始化函數(shù)*/*/void LCD_init(void)delay_ms(40);LCD_write_com(0x38);

16、/* 顯示模式設(shè)置*/delay_ms(5);LCD_write_com(0x38);delay_ms(5);LCD_write_com(0x38);delay_ms(5);LCD_write_com(0x38);LCD_write_com(0x08);/* 顯示關(guān)閉*/LCD_write_com(0x01);/* 顯示清屏*/LCD_write_com(0x06);/* 顯示光標(biāo)移動(dòng)設(shè)置*/delay_ms(5);* *LCD_write_com(0x0C);/* 顯示開及光標(biāo)設(shè)置*/*函數(shù)名:Display_F函數(shù)說明:打印整數(shù)型數(shù)據(jù),沒有地址傳入?yún)?shù):用于Display_float使用傳

17、出參數(shù):無返回值:無*/void Display_F(unsigned int num)unsigned charsever_num6,i = 0;if(num = 0)LCD_write_Data(0x30);elsewhile(num != 0)* *sever_numi+ = num % 10 + 0x30 ;num /= 10 ;while(i-)LCD_write_Data(sever_numi);delay_us(500);/*函數(shù)名:Display_float函數(shù)說明:打印浮點(diǎn)型數(shù)據(jù),傳入?yún)?shù):打印地址x,y, 數(shù)據(jù) num ,小數(shù)點(diǎn)后面打印length位傳出參數(shù):無返回值:無*

18、/voidDisplay_float(unsignedcharx,unsignedchary,floatnumf,unsignedcharlength)unsigned long Int_num;unsigned inttemp = 1;* *unsigned char i = 0;for (i = 0 ; i 0;z-)for(b=1;b0;b-)for(a=2;a0;a-);void delay(unsigned int z)/延時(shí)函數(shù)uchar x,y;for(x=z;x0;x-)for(y=101;y0;y-);/DS18B20函數(shù)部分 /void dsinit()/DS18B20初始

19、化dat=1;dsdelay(4);dat=0;/ 給一個(gè)脈沖信號(hào)dsdelay(50);/低脈沖信號(hào)要保持480us 960usdat=1;/拉高* *dsdelay(9);/略微延時(shí)delay(1);uchar read()/DS18B20讀一個(gè)字節(jié)uchar i,k;for (i=8;i0;i-)dat = 0; /給脈沖信號(hào)k=1;/將讀到的一位數(shù)向后移一位dat = 1; /給脈沖信號(hào)if(dat)k|=0x80;/如果讀到的是1,則,k 和0x80進(jìn)行或運(yùn)算,首位變成1dsdelay(4);/每位讀取中間間隔大于1usreturn(k);void write(uchar date)

20、/DS18B20 寫一個(gè)字節(jié)uchar i,k;k=date;for(i=0;i=1;dsdelay(1);float read_tempe(uchar num)/從DS18B20存儲(chǔ)器中讀書溫度int t;float tt;uchar a,b,i;dsinit();/每次對(duì)DS18B20輸入指令都要先進(jìn)行初始化操作write(0x55);/寫序號(hào)列號(hào)for (i = 0 ; i 8 ; i+)write(xlnumi);write(0x44); /啟動(dòng)溫度轉(zhuǎn)換dsinit();* *write(0x55);/寫序號(hào)列號(hào)for (i = 0 ; i 8 ; i+)write(xlnumi);w

21、rite(0xBE); /讀取溫度寄存器等(共可讀9 個(gè)寄存器)前兩個(gè)就是溫度a=read();/讀出溫度的低八位b=read();/讀出溫度的高八位t=b;t=8;/t是 int , 16 位,講高八位移到前面t=t|a;/將溫度的高位與低位合并if (b & 0x80 )= 0)/判斷正負(fù)溫度tt=t*0.0625;/將帶有小數(shù)點(diǎn)位的十六進(jìn)制數(shù)化為十進(jìn)制flag = 0;elsett=(t + 1 )* 0.0625;flag = 1;return(tt);* *UART 函數(shù)部分:void InitUART(void)/UART初始化TMOD = 0X20; /11.0592M 9600SCON = 0X50;TH1 = 0xfd;TL1 = 0xfd;PCON = 0X00;EA=1;ES=1;TR1 = 1;void Send(unsi

溫馨提示

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