DSB溫度傳感器電路設計方案(參考)_第1頁
DSB溫度傳感器電路設計方案(參考)_第2頁
免費預覽已結束,剩余11頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 封面 作者: PanHongliang 僅供個人學習 有報警功能 當15度T30度時 兩個都燈不亮 關鍵詞:單片機AT89C51;溫度傳感器DS18B20;數碼顯示 實現功能:可以測得的溫度范圍 0125度 并顯示一位小數 (默認上限溫度為30下限溫度為15) 紅燈亮 T30度時 有調整上下限溫度功能 圍 元件清單 AT89C51單片機芯片 DS18B20溫度傳感器 4位共陽極數碼管 紅色發光二極管 綠色發光二極管 八分之一 W 1K電阻 1W 4.7K電阻 彈性開關 塊、按鍵控制模塊、溫度報警模塊組成,其總體架構如下圖 1. 、數字溫度傳感器、 LED顯示模 3無需外部器件 4可通過數據線

2、供電 5 零待機功耗 6測溫范圍-55+125C,以0.5 C遞增 7 可編程的分辨率為 912 位,對應的可分辨溫度分別為 0.5 C、0.25 C、0.125 C和 0.0625 C 8 溫度數字量轉換時間 200ms, 12 位分辨率時最多在 750ms 內把溫度轉換為數字 9 應用包括溫度控制、工業系統、消費品、溫度計和任何熱 感測系統 10 負壓特性:電源極性接反時,傳感器不會因發熱而燒毀, 但不能正常工作。 DS18B20外形及引腳說明 圖3DS18B2C外形及引腳 GND地 DQ單線運用的數據輸入/輸出引腳 VD可選的電源引腳 存儲在 18B20 的兩個 8比特的 RAM 中,二

3、進制中的前面 5 位是 符號位,如果測得的溫度大于 0, 這 5位為 0,只要將測到的數值 乘于 0.0625 即可得到實際溫度;如果溫度小于 0,這 5位為 1,測 到的數值需要取反加 1 再乘于 0.0625 即可得到實際 溫度。 例如 + 125 C的數字輸出為 07D0H , 實際溫度=07D0H*0.0625=2000*0.0625=125 C。 例如-55 C的數字輸出為 FC90H,則應先將11位數據位取反加 1 得 370H (符號位不變,也不作運算), 實際溫度=370H*0.0625=880*0.0625=55 C。 可見其中低四位為小數位。 DS18B2C溫度數據表 AT

4、89C51 AT89C51 單片機 Atmel 公司的生產的 AT89C51 單片機是一種低 功耗/低電壓、高性能的8位單片機,內部除CPU外,還包括128字 節 RAM , 4 個 8 位并行 I/O 口, 5 個中斷優先級, 2 層中斷嵌套中 斷, 2 個 16 位可編程定時計數器,片內集成 4K 字節可改變程序 Flash 存儲器,具有低功耗,速度快,程序擦寫方便等優點,完全滿 足本系統設計需要。單片機 P2A2 口作為ADC0809轉換數據的輸入 端。P0的輸出信號作為數碼管的顯示,P2.4P2.7則作為4個數碼 管的位選信號控制,P2P, P2A1,作為報警裝置的輸出。 仿真圖 源程

5、序 #include #define uint unsigned int #define uchar unsigned char /宏定義 sbit p2_4=P2A4o sbit p2_5=P2A5o sbit p2_6=P2A6。 sbit dp=PQA7o sbit p2_7=P2A70 sbit DQ=P2A2。 /定義 DS18B20 總線 I/O sbit SET=P3A10 /定義選擇調整報警溫度上限和 下限(1 為上限, 0為上限) /*P3.2和P3.3為調整溫度報警增加鍵和減少鍵*/ sbit HONGDENG=P2A00 sbit LVDENG=P2A10 /定義亮燈 s

6、igned char m0 /溫度值全局變量 bit sign=00 /外部中斷狀態標志 signed char shangxian=300 /上限報警溫度,默認值為 30 signed char xiaxian=150 /下限報警溫度,默認值為 15 uchar code LEDData=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff,0 xbf 0 void Delay(uint i) while( i- ) 0 /* 初始化 DS18B20*/ void Init_DS18B20(void) unsign

7、ed char x=00 DQ=1 0 Delay(20)0 /* 讀一個字節 */ unsigned char ReadOneChar(void) unsigned char i=00 unsigned char dat=00 for (i=80 i00 i-) DQ=00 dat=1 0 DQ=1 0 if(DQ) dat|=0 x800 Delay(4)0 return(dat)0 /* 寫一個字節 */ void WriteOneChar(unsigned char dat) unsigned char i=00 for (i=80 i00 i-) DQ=00/* 延時子程序 */ D

8、elay(8)0 DQ=00 Delay(80)0 DQ=1 0 Delay(14)0 x=DQ 0 則初始化成功, X=1 則初始化失敗 /稍作延時 /單片機將 DQ 拉低 /精確延時,大于 480us /拉高總線 /稍作延時后 如果 X=0 /給脈沖信號 /給脈沖信號 DQ=dat&0 x01 。 Delay(5)。 DQ=1。 dat=1。 void Tmpchange(void) Init_DS18B20()。 /發送溫度轉換命令WriteOneChar(0 xCC)。 WriteOneChar(0 x44)。 /跳過讀序號列號的操作 / 啟動溫度轉換/* 讀取溫度 */uns

9、igned int ReadTemperature(void) unsigned char a=0。 unsigned char b=0。 unsigned int t=0。 float tt=0 。 Tmpchange()。 Init_DS18B20()。 WriteOneChar(0 xCC)。 WriteOneChar(0 xBE)。 a=ReadOneChar(。) b=ReadOneChar()。 t=b。 tshangxian ) HONGDENG=1 。 / 溫度高于范圍紅燈亮 else HONGDENG=0。 if(mxiaxian) LVDENG=1 。 /溫度低于范圍綠燈亮

10、 else LVDENG=0 。 p2_4=0。 p2_5=0。 P0 =LEDDatad 。 p2_4=1。 p2_5=0。 Delay(300)。 p2_4=0。 p2_5=0。 P0 =LEDDatac 。 dp=0。 示小數點 p2_4=0。 p2_5=1。 Delay(300)。 p2_4=0。 p2_5=0。 P0 =LEDDatab 。 p2_4=0。 p2_5=0。 Delay(300)。 p2_4=0。 p2_5=0。 P0 =LEDDataa。 p2_4=0。 p2_5=0。 Delay(300)。 p2_4=0。 p2_5=0。 disptiaozheng() uchar

11、 f,g,j,k。 f=shangxian/10。 g=shangxian%10。 j=xiaxian/10 。 k=xiaxian%10。 p2_4=0。 p2_5=0。 P0 =0 xc0。 p2_4=1。 p2_5=0。 Delay(200)。 p2_4=0。 p2_5=0。 p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=1o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=1o Disp_Temperature() uint a,b,c,

12、d,e。 e=ReadTemperature(。) a=e/1000。 b=e/100-a*10。 d=e%10。 c=(e%100)/10。 /顯示小數點后一位 / 顯示個位 /顯 /顯示十位 / 顯示百位 /關閉顯示 / 顯示 0 p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=0o p2_6=0o p2_7=0o P0 =0 xc0。 p2_4=0。 p2_5=1。 p2_6=0。 p2_7=0。 Delay(200)。 p2_4=0。 p2_5=0。 p2_6=0。 p2_7=0。 if(SET=1) P0 =LEDDatag 。 dp=0。

13、else P0 =LEDDatak 。 dp=0。 p2_4=0。 p2_5=0。 p2_6=1。 p2_7=0。 Delay(200)。 p2_4=0。 p2_5=0。 p2_6=0。 p2_7=0。 if(SET=1) P0 =LEDDataf 。 else if(f=0) P0=0 x00 。 else P0 =LEDDataj 。 p2_4=0。 p2_5=0。 p2_6=0。 p2_7=1。 Delay(200)。 p2_4=0。 p2_5=0。 p2_6=0。 p2_7=0。 Delay(20)。 /* 外部中斷 0服務程序 */ void int0(void) interrupt

14、 0 EX0=0。 sign=1。 if(SET=1) shangxian+ 。 else xiaxian+。 Delay(500)。 EX0=1 。 /* 外部中斷 1 服務程序 */ void int1(void) interrupt 2 EX1=0。 斷1 sign=1。 if(SET=1) shangxian-。 else xiaxian-。 Delay(500)。 EX1=1 。 /顯示 0 /顯示上限溫度個位 /顯示上限溫度十位 / 不顯示下限溫度十位 / 顯示下限溫度十位 / 關閉顯示 / 關外部中斷 0 /* 主函數 */void main(void) uint z。/ 關外

15、部中 IT0=1。 IT 1=1。 EX0=1。 EX1=1。 EA=1。 ReadTemperature(。 HONGDENG=0。 LVDENG=0 。 for(z=0。 z if(sign=1) for(z=0。z300。z+) disptiaozhe ng() sign=0。 版權申明 本文部分內容,包括文字、圖片、以及設計等在網上搜集整 理。版權為潘宏亮個人所有 This article in eludes some parts, in cludi ng text, pictures, and desig n. Copyright is Pan Hon glia ngs pers o

16、nal own ership. 用戶可將本文的內容或服務用于個人學習、研究或欣賞,以及 其他非商業性或非盈利性用途,但同時應遵守著作權法及其他相關 法律的規定,不得侵犯本網站及相關權利人的合法權利。除此以 外,將本文任何內容或服務用于其他用途時,須征得本人及相關權 利人的書面許可,并支付報酬。 Users may use the contents or services of this article for pers onal study, research or appreciati on, and other non-commercial or non-profit purposes,

17、but at the same time, they shall abide by the provisions of copyright law and other releva nt laws, and shall not infringe upon the legitimate rights of this website and its releva nt obligees. In addition, when any content or service of this article is used for other purposes, written permission and remun erati on shall be obta ined from the pers on concerned and the releva nt obligee. 轉載或引用本文內容必須是以新聞性或資料性公共免費信息為 使用目的的合理、善意引用,不得對本文內容原意進行曲解、修 改,并自負版權等法律責任。 Reproducti on or quotatio n of the

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論