




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于C51的DS18B20多點測溫系統(tǒng)2013-07-22目錄摘 要3第一章 緒論41.1 開發(fā)背景及意義4第二章 系統(tǒng)硬件設(shè)計52.1 單片機52.2 DS18B20溫度測量模塊52.3 液晶顯示模塊82.4串口通訊模塊9第三章 系統(tǒng)軟件設(shè)計103. 1系統(tǒng)初始化103.2 溫度測量程序11第四章 系統(tǒng)仿真調(diào)試124.1 系統(tǒng)仿真調(diào)試12附錄14摘 要 本文介紹了基于溫度傳感器DS18b20與AT89C52單片機組成的多點溫度分布式測溫系統(tǒng)。設(shè)計了其系統(tǒng)構(gòu)成和軟件方案。該系統(tǒng)面向?qū)嶋H需求,設(shè)定DS18b20溫度范圍為-55+125,采用LCD1602液晶顯示屏,顯示兩路溫度傳感器的測量溫度
2、值。同時通過串口通訊與PC機進行通訊。傳輸采集到的溫度值。 實際應(yīng)用表明。該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下現(xiàn)場溫度的測量,可應(yīng)用于倉庫測溫、樓宇空調(diào)控制和生產(chǎn)過程監(jiān)控等領(lǐng)域。 關(guān)鍵詞:DS18b20,分布式,1602 串口通第一章 緒論1.1 開發(fā)背景及意義溫度的測量和控制在儲糧倉庫、智能樓宇空調(diào)控制及其他的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。傳統(tǒng)的溫度檢測是使用諸如熱電偶、熱電阻、半導(dǎo)體pn結(jié)之類的模擬傳感器,經(jīng)信號取樣電路、放大電路和模數(shù)轉(zhuǎn)換電路處理,獲取表示溫度值的數(shù)字信號,再交由微處理器。因為檢測環(huán)境復(fù)雜,測量點多,信號傳輸距離遠及各種干擾的影響,使得傳統(tǒng)測量系統(tǒng)的穩(wěn)定性和可
3、靠性下降。近年來隨著單片機的發(fā)展和傳感器技術(shù)的革新,溫度檢測領(lǐng)域也完成了從模擬信號到數(shù)字信號的轉(zhuǎn)變。DS18b20溫度傳感器的廣泛應(yīng)用更是推動了這一領(lǐng)域的發(fā)展。另外液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點在各類儀表和顯示系統(tǒng)中得到越來越多的應(yīng)用,現(xiàn)在也是單片機應(yīng)用設(shè)計中最常用的信息顯示模塊。綜合以上產(chǎn)品的發(fā)展特點,希望溫度檢測系統(tǒng)在未來的發(fā)展中有更廣闊的應(yīng)用空間并且具有更好的現(xiàn)場測量優(yōu)越性。第二章 系統(tǒng)硬件設(shè)計本系統(tǒng)通過DS18B20溫度傳感器采集溫度值,經(jīng)由單片機處理由液晶顯示模塊顯示當(dāng)前溫度值,并經(jīng)過串口通信將溫度傳送到PC上2.1 單片機本系統(tǒng)采用AT89C52單片機
4、作為微處理器。AT89C52單片機是ATMEL公司89系列單片機的一種8位Flash單片機。它最大的特點是片內(nèi)含有8k可重復(fù)編程的Flash存儲器,可進行1000次的擦寫操作。另外AT89c52單片機采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準的MCS-51指令集和輸出管腳相兼容,并且其兼具省電耐用、性能穩(wěn)定的特點,因此成為單片機市場的主流產(chǎn)品。本系統(tǒng)采用晶振根據(jù)需要確定系統(tǒng)工作頻率為11.0592Mhz。圖2.1單片機結(jié)構(gòu)圖2.2 DS18B20溫度測量模塊 DS18b20是美國DALLAS公司推出的單總線數(shù)字化測溫集成電路,它具有獨特的單線接口方式,將非電模擬量溫度值轉(zhuǎn)換為數(shù)字
5、信號串行輸出僅需占用1位I/O端口,能夠直接讀取被測現(xiàn)場的溫度值。它體積小,電壓適用范圍寬(3v5v),且可通過編程實現(xiàn)912位的溫度讀數(shù),即具有可調(diào)的溫度分辨率,因此實用性和可靠性較高,應(yīng)用廣泛。以下是DS18b20的內(nèi)部結(jié)構(gòu)圖圖2.2.1 DS18b20的內(nèi)部結(jié)構(gòu)圖DS18B20有4個主要的數(shù)據(jù)部件: 64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號和8位家族代碼(28H)組成。 溫度靈敏元件。 非易失性溫度報警觸發(fā)器TH和TL??赏ㄟ^軟件寫入用戶報警上下限值。 配置寄存器。配置寄存器為高速暫存存儲器中的第五個字節(jié)。DS18B20在0工作時按此寄存器中的分辨率將
6、溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值。 DS18B20的測溫范圍為-55+125,在-10+85范圍內(nèi),精度為±0.5。在電壓低于3.4v時精度誤差較大。 根據(jù)其時序特點以下是DS18B20與AT89C52單片機構(gòu)成的溫度監(jiān)測系統(tǒng)如下圖2.2.2溫度監(jiān)測系統(tǒng)DS18b20的典型應(yīng)用在本系統(tǒng)中兩個溫度傳感器與單片機連接方式如下:圖2.2.3 傳感器與單片機連接圖本系統(tǒng)為多點溫度測試。DS18B20采用外部供電方式,理論上可以在一根數(shù)據(jù)總線上掛256個DS18B20,但實際應(yīng)用中發(fā)現(xiàn),如果掛接20個以上的DS18B20就會產(chǎn)生功耗問題。另外單總線長度也不宜超過0.5M,否則會影響到數(shù)據(jù)的傳輸。在本電
7、路板的設(shè)計中考慮到初步實踐的準確性,暫使用2個DS18B20分別連接單片機的p2.6口。對DS18B20的設(shè)計,需要注意以下問題(1)對硬件結(jié)構(gòu)簡單的單線數(shù)字溫度傳感器DS18B20 進行操作,需要用較為復(fù)雜的程序完成。編制程序時必須嚴格按芯片數(shù)據(jù)手冊提供的有關(guān)操作順序進行,讀、寫時間片程序要嚴格按要求編寫。尤其在使用DS18B20 的高測溫分辨力時,對時序及電氣特性參數(shù)要求更高。(2)實際應(yīng)用時,要注意單線的驅(qū)動能力,不能掛接過多的DS18B20,同時還應(yīng)注意最遠接線距離。另外還應(yīng)根據(jù)實際情況選擇其接線拓撲結(jié)構(gòu)。2.3 液晶顯示模塊本系統(tǒng)使用的是1602液晶顯示模塊。1602液晶顯示器以其微
8、功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、位數(shù)多、程序簡單的諸多優(yōu)點,在各類儀表和低功耗系統(tǒng)中得到廣泛的應(yīng)用。根據(jù)顯示內(nèi)容可以分為字符型液晶,圖形液晶。根據(jù)顯示容量又可以分為單行16字,2行16字,兩行20字等等。 在本系統(tǒng)中使用的是字符型兩行16字液晶顯示器。在與單片機連接時使用接口電路(排針)相連,為并行通信。以下是1602液晶顯示器外型圖和液晶顯示的典型應(yīng)用。圖2.3.1 液晶顯示器外形圖 1602液晶顯示采用標(biāo)準的16腳接口,其中:(模塊背面有標(biāo)注)圖2.3.2 串口通訊 第1腳:VSS為地電源第2腳:VDD接5V正電源 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源
9、時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址;當(dāng)RS為高電平、RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第1516腳:空腳1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了不同的點陣字符圖形,這些字符有,阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個
10、字符都有一個固定的代碼,其中數(shù)字與字母同ASCII碼兼容。2.4串口通訊模塊UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。實現(xiàn)單片機和PC機的通訊工作,接一個MAX232 實現(xiàn)電平轉(zhuǎn)化。電路圖如下:第三章 系統(tǒng)軟件設(shè)計圖3 系統(tǒng)流程圖整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。本系統(tǒng)主程序主要包括三個子程序,分別為液晶顯示子程序,溫度測量子程序,串口通訊子程序。主體軟件架構(gòu)如左圖:3. 1系統(tǒng)初始化系統(tǒng)初始化主要包括UART初始化,液晶顯示初始化,溫度傳感器初始化。UART初始化包括定義定時器/計數(shù)器和串行
11、口的工作方式,定義T1為自動重裝8位計數(shù)器。液晶顯示初始化主要是確定液晶顯示器的工作方式、顯示開關(guān)、光標(biāo)開關(guān)等。溫度傳感器初始化包括一個由總線控制器發(fā)出的復(fù)位脈沖和跟有其后由傳感器發(fā)出的存在脈沖。存在脈沖是讓總線控制器知道DS18b20在總線上且已準備好操作。一個復(fù)位脈沖跟著一個存在脈沖表明DS18b20已經(jīng)準備好發(fā)送和接收數(shù)據(jù)。以下是初始化序列圖。 圖3.1.1 初始化序列圖3.2 溫度測量程序溫度測量程序主要是DS18b20與單片機之間的ROM操作命令和DS18b20的數(shù)據(jù)讀寫操作命令。當(dāng)單片機對DS18B20進行初始化,檢測到一個存在脈沖后,發(fā)出匹配ROM命令,然后發(fā)送ROM碼。 圖3.
12、2.1 DS18b20基本工作流程第四章 系統(tǒng)仿真調(diào)試4.1 系統(tǒng)仿真調(diào)試在keil開發(fā)環(huán)境下不能進行有效的仿真調(diào)試,所以在系統(tǒng)中采用protues單片機仿真工具進行仿真調(diào)試。下圖為protues仿真讀取溫度后在LCD1602液晶屏上的顯示結(jié)果。圖4.1.1 protues仿真圖上位機用串口調(diào)試軟件來仿真,安裝了虛擬串口驅(qū)動軟件和PROTEUS進行調(diào)試仿真。虛擬串口驅(qū)動軟件用了VSPD 軟件。VSPD軟件在Window操作系統(tǒng)上增加了一對在邏輯上交叉相互的虛擬串口,使串口調(diào)試助手能夠和PROTEUS中的單片機串口相連。VSPD軟件界面如下:VSPD軟件界面串口仿真結(jié)果如下:在串口調(diào)試助手上顯示
13、兩個溫度傳感器采集到的溫度溫度傳感器采集附錄溫度采集體統(tǒng)原理圖PCB圖源代碼1602函數(shù)部分:#define Port P1sbit RS = P20; /定義端口 sbit RW = P21;sbit E = P22;/* 微秒延時函數(shù) */void delay_us(unsigned int n) /延時 如果需要高精度延時 if (n = 0) return ; while (-n); /*/* 毫秒函數(shù)聲明 */*/ void delay_ms(unsigned char i) unsigned int b; while(i-) for (b = 1; b < 1000 ; b+
14、) ; /*/* 寫入命令函數(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 char 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
15、,unsigned char *s) if (y = 0) LCD_write_com(0x80 + x); else LCD_write_com(0xc0 + x); while (*s) LCD_write_Data( *s); s+; /*/* 初始化函數(shù) */*/ void LCD_init(void) delay_ms(40); LCD_write_com(0x38); /*顯示模式設(shè)置*/ delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x
16、38); LCD_write_com(0x08); /*顯示關(guān)閉*/ LCD_write_com(0x01); /*顯示清屏*/ LCD_write_com(0x06); /*顯示光標(biāo)移動設(shè)置*/ delay_ms(5); LCD_write_com(0x0C); /*顯示開及光標(biāo)設(shè)置*/ /*函數(shù)名: Display_F函數(shù)說明:打印整數(shù)型數(shù)據(jù),沒有地址傳入?yún)?shù):用于Display_float使用傳出參數(shù):無返回值: 無*/void Display_F(unsigned int num)unsigned char sever_num6,i = 0;if(num = 0)LCD_write_D
17、ata(0x30);else while(num != 0)sever_numi+ = num % 10 + 0x30 ;num /= 10 ; while(i-)LCD_write_Data(sever_numi);delay_us(500); /*函數(shù)名: Display_float函數(shù)說明:打印浮點型數(shù)據(jù),傳入?yún)?shù):打印地址x,y,數(shù)據(jù)num,小數(shù)點后面打印length位傳出參數(shù):無返回值: 無*/void Display_float(unsigned char x,unsigned char y,float numf,unsigned char length)unsigned long
18、 Int_num;unsigned int temp = 1;unsigned char i = 0;for (i = 0 ; i < length ; i+)numf *= 10 ; temp *= 10 ; if (y = 0) LCD_write_com(0x80 + x); else LCD_write_com(0xc0 + x); Int_num = (long)numf; Display_F(Int_num / temp);LCD_write_Data('.');Display_F(Int_num % temp);DS18B20函數(shù)部分:bit flag =
19、0;sbit dat=P26;uchar xl28 = 0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e, 0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9 ; /兩路DS18B20 ROM碼void dsdelay(uchar z) /誤差 0us unsigned char a,b;for(z;z>0;z-) for(b=1;b>0;b-) for(a=2;a>0;a-);void delay(unsigned int z)/延時函數(shù) uchar x,y;for(x=z;x>0;x-)for(y=101;y
20、>0;y-);/DS18B20函數(shù)部分/void dsinit()/DS18B20初始化dat=1;dsdelay(4);dat=0; /給一個脈沖信號dsdelay(50);/低脈沖信號要保持480us960usdat=1;/拉高dsdelay(9);/略微延時delay(1);uchar read()/DS18B20 讀一個字節(jié)uchar i,k;for (i=8;i>0;i-)dat = 0; / 給脈沖信號k>>=1;/將讀到的一位數(shù)向后移一位dat = 1; / 給脈沖信號if(dat) k|=0x80;/如果 讀到的是1,則,k和0x80進行或運算,首位變成
21、1dsdelay(4);/每位讀取中間間隔大于1usreturn(k);void write(uchar date)/DS18B20 寫一個字節(jié)uchar i,k;k=date;for(i=0;i<8;i+)dat = 0;dat = k&0x01;dsdelay(7);dat = 1;k>>=1;dsdelay(1); float read_tempe(uchar num)/從DS18B20存儲器中讀書溫度int t;float tt;uchar a,b,i;dsinit();/每次對DS18B20輸入指令都要先進行初始化操作write(0x55);/寫序號列號fo
22、r (i = 0 ; i < 8 ; i+)write(xlnumi) ;write(0x44); / 啟動溫度轉(zhuǎn)換dsinit();write(0x55);/寫序號列號for (i = 0 ; i < 8 ; i+)write(xlnumi) ;write(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=read();/讀出溫度的低八位b=read();/讀出溫度的高八位t=b;t<<=8;/t是int,16位,講高八位移到前面t=t|a;/將溫度的高位與低位合并if (b & 0x80 )= 0)/判斷正負溫度tt=t*0.0625;/將帶有小數(shù)點位的十六進制數(shù)化為十進制 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(unsigned char C)/UART 發(fā)送SBUF = C;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 油田開發(fā)項目資金申請報告(范文參考)
- 汽車配套產(chǎn)業(yè)基地項目投標(biāo)書(參考模板)
- xx片區(qū)城鄉(xiāng)供水一體化項目投標(biāo)書
- 《GB41930-2022低水平放射性廢物包特性鑒定水泥固化體》深度解析
- 四川省遂寧市2024-2025學(xué)年高一下學(xué)期期末考試歷史試卷
- 2025年汽車儀表相關(guān)計數(shù)儀表項目合作計劃書
- 2025年醫(yī)療物聯(lián)網(wǎng)技術(shù)在患者生命體征監(jiān)測中的應(yīng)用前景報告
- 2025健身房租賃合同
- 教育技術(shù)的倫理準則與實踐探索
- 航空發(fā)動機維修技術(shù)創(chuàng)新在成本控制中的應(yīng)用與優(yōu)化策略報告
- 生產(chǎn)現(xiàn)場變化點管理行動指南
- 中國古典小說巔峰:四大名著鑒賞學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 模擬電子技術(shù)基礎(chǔ)知到章節(jié)答案智慧樹2023年蘭州石化職業(yè)技術(shù)大學(xué)
- JJF 1915-2021傾角儀校準規(guī)范
- GA/T 1310-2016法庭科學(xué)筆跡鑒定意見規(guī)范
- 2023年本科招生考試
- 新入職護士培訓(xùn)考試試題及答案
- 《消防安全技術(shù)實務(wù)》課本完整版
- 北師大版七年級數(shù)學(xué)下冊 與信息技術(shù)相融合的數(shù)學(xué)教學(xué)案例 教案
- 鈍針穿刺法臨床應(yīng)用護理
- 水產(chǎn)養(yǎng)殖行業(yè)報告
評論
0/150
提交評論