版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上單片機課程設計 DS18B20數字溫度計設計 專業(yè) 電子信息科學與技術 班級 11級2班 學號 姓名 目錄1 課題的設計目的。 -2 對于課題的總體構想。 -3 DS18B20溫度傳感器簡介。 -4 STC89C51單片機簡介。 -5 系統(tǒng)總仿真電路。 -6 總程序。 -7 心得體會。 -8 參考文獻。 -一課題的設計目的1. 鞏固、加深和擴大單片機應用的知識面,提高綜合及靈活運用所學知識解決工業(yè)控制的能力。2. 培養(yǎng)針對課題需要,選擇和查閱有關手冊、圖表及文獻資料的自學能力,提高組成系統(tǒng)、編程、調試的動手能力。3. 通過對課題設計方案的分析、選擇、比較、熟悉單片機用
2、系統(tǒng)開發(fā)、研制的過程,軟硬件設計的方法、內容及步驟。2 對課題的總體構想 采用數字溫度芯片DS18B20 測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。DS18B20 的最大特點之一采用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器STC89C52構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。 采用51 單片機控制,軟件編程的自由度大,可通過編程實現各種各樣的算術算法和邏輯控制,而且體積小,硬件實現簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機通信上傳數據,另外STC89C52 在工業(yè)控制上也有著廣泛的
3、應用,編程技術及外圍功能電路的配合使用都很成熟。3 DS18B20溫度傳感器簡介DS18B20功能特點:1. 采用單總線技術,與單片機通信只需要一根I/O線,在一根線上可以掛接多個DS18B20。2. 每只DS18B20具有一個獨有的,不可修改的64位序列號,根據序列號訪問地應的器件。3. 低壓供電,電源范圍從35V,可以本地供電,也可以直接從數據線上竊取電源(寄生電源方式)。4. 測溫范圍為-55+125,在-1085范圍內誤差為±0.5。5. 可編輯數據為912位,轉換12位溫度時間為750ms(最大)。6. DS18B20可將檢測到溫度值直接轉化為數字量,并通過串行通信的方式與
4、主控制器進行數據通信。DS18B20引腳如圖所示。四DS18B20時序圖1初始化時序2寫時序3讀時序五STC89C51單片機簡介。89C52單片機主要特性1. 一個8 位的微處理器(CPU)。2. 片內數據存儲器RAM(128B),用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據等,SST89 系列單片機最多提供1K 的RAM。3. 片內程序存儲器ROM(4KB),用以存放程序、一些原始數據和表格。但也有一些單片機內部不帶ROM/EPROM,如8031,8032,80C31 等。目前單片機的發(fā)展趨勢是將RAM 和ROM 都集成在單片機里面,這樣既方便了用戶進行設計又提高了系統(tǒng)
5、的抗干擾性。SST 公司推出的89 系列單片機分別集成了16K、32K、64K Flash 存儲器,可供用戶根據需要選用。4. 四個8 位并行IO 接口P0P3,每個口既可以用作輸入,也可以用作輸出。5. 兩個定時器計數器,每個定時器計數器都可以設置成計數方式,用以對外部事件進行計數,也可以設置成定時方式,并可以根據計數或定時的結果實現計算機控制。為方便設計串行通信,目前的52 系列單片機都會提供3 個16 位定時器/計數器。6. 五個中斷源的中斷控制系統(tǒng)?,F在新推出的單片機都不只5 個中斷源,例如SST89E58RD 就有9 個中斷源。7. 一個全雙工UART(通用異步接收發(fā)送器)的串行IO
6、 口,用于實現單片機之間或單機與微機之間的串行通信。8. 片內振蕩器和時鐘產生電路,但石英晶體和微調電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD 最高允許振蕩頻率達40MHz,因而大大的提高了指令的執(zhí)行速度。5 系統(tǒng)總仿真電路。6 總程序 (分模塊寫)1.main.c#include<reg51.h>#include"lcd.h"#include"temp.h"void LcdDisplay(int);sbit K1=P20;sbit K2=P21;sbit K3=P22;sbit K4=P23;extern int th
7、=20;extern int tl=-10;sbit beep=P10;void main() LcdInit(); LcdWriteCom(0xc7);LcdWriteData('C'); while(1)if(K1=0)Delay1ms(500);if(K1=0);th+;if(K2=0)Delay1ms(500);if(K2=0);th-;if(K3=0)Delay1ms(500);if(K3=0);tl+;if(K4=0)Delay1ms(500);if(K4=0);tl-;LcdDisplay(Ds18b20ReadTemp();void LcdDisplay(int
8、 temp) int i,tt,rr,mm; unsigned char datas = 0, 0, 0, 0,datas1 = 0, 0, 0,datas2 = 0, 0, 0;float tp; if(temp< 0) LcdWriteCom(0xc0); LcdWriteData('-'); i=1;temp=temp-1;temp=temp;tp=temp;temp=tp*0.0625*10+0.5;mm=-temp; else LcdWriteCom(0xc0); LcdWriteData('+'); tp=temp;temp=tp*0.0625
9、*10+0.5;mm=temp;datas0 = temp / 1000;datas1 = temp % 1000 / 100;datas2 = temp % 100 / 10;datas3 = temp% 10;if(th < 0) LcdWriteCom(0x89); LcdWriteData('-'); tt=-th; else LcdWriteCom(0x89); LcdWriteData('+'); tt=th;datas10 = tt / 100;datas11 = tt% 100 / 10;datas12 = tt % 10;LcdWrite
10、Com(0x87); LcdWriteData('H');LcdWriteCom(0x88); LcdWriteData(':');LcdWriteCom(0x8a); LcdWriteData('0'+datas10);LcdWriteCom(0x8b); LcdWriteData('0'+datas11);LcdWriteCom(0x8c); LcdWriteData('0'+datas12);if(tl < 0) LcdWriteCom(0x90); LcdWriteData('-');
11、 rr=-tl; else LcdWriteCom(0x90); LcdWriteData('+'); rr=tl;datas20 = rr / 100;datas21 = rr% 100 / 10;datas22 = rr % 10;LcdWriteCom(0x8e); LcdWriteData('L');LcdWriteCom(0x8f); LcdWriteData(':');LcdWriteCom(0x91); LcdWriteData('0'+datas20);LcdWriteCom(0x92); LcdWriteData
12、('0'+datas21);LcdWriteCom(0x93); LcdWriteData('0'+datas22);if(mm>=(th*10)|mm<=(tl*10)|th<=tl)beep=0;elsebeep=1; LcdWriteCom(0x80); LcdWriteData('T'); LcdWriteCom(0x81); LcdWriteData('A'); LcdWriteCom(0x82); LcdWriteData('I'); LcdWriteData(' ')
13、; LcdWriteCom(0x84); LcdWriteData('A'); LcdWriteCom(0x85);LcdWriteData('N'); LcdWriteCom(0xc1); LcdWriteData('0'+datas0); LcdWriteCom(0xc2); LcdWriteData('0'+datas1); LcdWriteCom(0xc3);LcdWriteData('0'+datas2); LcdWriteCom(0xc4);LcdWriteData('.'); LcdW
14、riteCom(0xc5);LcdWriteData('0'+datas3); LcdWriteCom(0xc6);LcdWriteData('"'); 2.lcd.h#ifndef _LCD_H_#define _LCD_H_/*當使用的是4位數據傳輸的時候定義,使用8位取消這個定義*/#define LCD1602_4PINS/*包含頭文件*/#include<reg51.h>/-重定義關鍵詞-/#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint
15、 unsigned int#endif/*PIN口定義*/#define LCD1602_DATAPINS P0sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;/*函數聲明*/*在51單片機12MHZ時鐘下的延時函數*/void Lcd1602_Delay1ms(uint c); /誤差 0us/*LCD1602寫入8位命令子函數*/void LcdWriteCom(uchar com);/*LCD1602寫入8位數據子函數*/void LcdWriteData(uchar dat);/*LCD1602初始化子程序*/voi
16、d LcdInit(); #endif3.temp.h#ifndef _TEMP_H_#define _TEMP_H_#include<reg51.h>sbit DSPORT=P37;void Delay1ms(unsigned int );unsigned char Ds18b20Init();void Ds18b20WriteByte(unsigned char com);unsigned char Ds18b20ReadByte();void Ds18b20ChangTemp();void Ds18b20ReadTempCom();int Ds18b20ReadTemp();
17、#endif4.lcd.c#include"lcd.h"void Lcd1602_Delay1ms(uint c) /延時 uchar a,b;for (; c>0; c-) for (b=19;b>0;b-) for(a=1;a>0;a-); #ifndef LCD1602_4PINS /當沒有定義這個LCD1602_4PINS時void LcdWriteCom(uchar com) /寫入一個字節(jié)命令LCD1602_E = 0; LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DATAPINS = com; Lcd160
18、2_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5); LCD1602_E = 0;#else void LcdWriteCom(uchar com) LCD1602_E = 0; LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DATAPINS = com;/由于4位的接線是接到P0口的高四位,所以傳送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = com << 4;
19、 /發(fā)送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif #ifndef LCD1602_4PINS void LcdWriteData(uchar dat)/寫入一個字節(jié)數據LCD1602_E = 0;LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DATAPINS = dat; Lcd1602_Delay1ms(1); LCD1602_E = 1;Lcd1602_Delay1ms(5); LCD1602_E = 0;#elsevoid LcdWriteDa
20、ta(uchar dat)LCD1602_E = 0; LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DATAPINS = dat;/由于4位的接線是接到P0口的高四位,所以傳送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; /寫入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0
21、;#endif #ifndefLCD1602_4PINSvoid LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); LcdWriteCom(0x0c); LcdWriteCom(0x06); LcdWriteCom(0x01); LcdWriteCom(0x80); #elsevoid LcdInit() LcdWriteCom(0x32); LcdWriteCom(0x28); LcdWriteCom(0x0c); LcdWriteCom(0x06); LcdWriteCom(0x01); LcdWriteCom(0x80); #endif5.temp.c#in
22、clude"temp.h"void Delay1ms(unsigned int y) /延時unsigned int x;for(y;y>0;y-)for(x=110;x>0;x-);unsigned char Ds18b20Init()/初始化unsigned int i;DSPORT=0;i=70;while(i-);DSPORT=1;i=0;while(DSPORT)i+;if(i>5000)return 0;/失敗return 1;/成功void Ds18b20WriteByte(unsigned char dat) /寫字節(jié)unsigned int i,j;for(j=0;j<8;j+)DSPORT=0;/每寫入一位數據之前先把總線拉低1us(數據手冊上模糊)i+;DSPORT=dat&0x01; i=6;while(i-); DSPORT=1;dat>>=1;unsigned char Ds18b20ReadByte()unsigned char byte,bi;unsigned int i,j;for(j=8;j>0;j-)DSPORT=0;i+;DSPORT=1;i+;i+;bi=DSPORT; byte=(byte>>1)|(bi<<7); i=4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025振動沉管灌注樁整體機械出租合同
- 2025不動產權籍調查技術咨詢服務合同
- 課題申報參考:凌家灘史前玉器藝術價值挖掘與傳承創(chuàng)新路徑研究
- 學科交叉融合與創(chuàng)新能力提升
- 會展合同管理與風險防范考核試卷
- 二零二五年度森林碳匯樹木種植項目合同4篇
- 2025年滬教版選擇性必修1歷史下冊階段測試試卷
- 2025年新世紀版九年級地理上冊階段測試試卷
- 2025年冀教版九年級地理上冊月考試卷
- 2025年華師大版選擇性必修1化學下冊月考試卷
- 2024-2025學年北京石景山區(qū)九年級初三(上)期末語文試卷(含答案)
- 第一章 整式的乘除 單元測試(含答案) 2024-2025學年北師大版數學七年級下冊
- 春節(jié)聯歡晚會節(jié)目單課件模板
- 中國高血壓防治指南(2024年修訂版)
- 糖尿病眼病患者血糖管理
- 抖音音樂推廣代運營合同樣本
- 教育促進會會長總結發(fā)言稿
- 北師大版(2024新版)七年級上冊數學第四章《基本平面圖形》測試卷(含答案解析)
- 心理調適教案調整心態(tài)積極應對挑戰(zhàn)
- 噴漆外包服務合同范本
- JT-T-390-1999突起路標行業(yè)標準
評論
0/150
提交評論