52單片機(jī)DS18B20溫度計(jì)(1602顯示)_第1頁(yè)
52單片機(jī)DS18B20溫度計(jì)(1602顯示)_第2頁(yè)
52單片機(jī)DS18B20溫度計(jì)(1602顯示)_第3頁(yè)
52單片機(jī)DS18B20溫度計(jì)(1602顯示)_第4頁(yè)
52單片機(jī)DS18B20溫度計(jì)(1602顯示)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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、精選文檔/按下K1顯示序列碼,按下K2顯示實(shí)時(shí)溫度(本實(shí)驗(yàn)適合初學(xué)者調(diào)試?yán)斫?8B20用, )#include <reg52.h>/52單片機(jī)#define uchar unsigned char#define uint unsigned int /uint 無(wú)符號(hào)整數(shù)sbit DQ=P22; /單總線(與自己的開(kāi)發(fā)板相匹配) uint temp; /溫度uchar flag1; /符號(hào) sbit rs = P10; / 控制LCD (與自己的開(kāi)發(fā)板相匹配) sbit rw = P11; / 控制LCD (與自己的開(kāi)發(fā)板相匹配) sbit lcden = P25; /led使能端(

2、與自己的開(kāi)發(fā)板相匹配)sbit K1=P34; /獨(dú)立按鍵k1(與自己的開(kāi)發(fā)板相匹配)sbit K2=P35; /獨(dú)立按鍵k2 (與自己的開(kāi)發(fā)板相匹配)sbit du=P26;/位選(防LED燈亂閃)(與自己的開(kāi)發(fā)板相匹配)sbit we=P27; /段選(防LED燈亂閃) (與自己的開(kāi)發(fā)板相匹配)uchar a,b,c,d,e,f,g,h,A1,A2,A2t,A3,A4,A5;/寫(xiě)在LCD上的字符,具體在程序中看 void delay(uint count) /延遲程序 (200*count)/8 毫秒 uint i; while(count) i=200; while(i>0) i-

3、; count-; void DQreset(void) /初始化,主機(jī)將DQ拉高 (上升沿) (從機(jī)檢測(cè)到上升沿后延時(shí)15到60毫秒,從機(jī)拉低總線60到240毫秒表示“我”在線) /從機(jī)的工作是自動(dòng)完成的 uint i; DQ=0; i=103; while(i>0)i-; DQ=1; i=4; while(i>0)i-; bit tmpreadbit() /從18b20讀1位 uint i; bit dat; DQ=0;i+; DQ=1;i+;i+; dat=DQ; i=8;while(i>0)i-; return (dat); /返回datuchar tmpread()

4、 /從18b20讀1字節(jié) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); return(dat);void tmpwritebyte(uchar dat) /18b20寫(xiě)1bit (只能用于寫(xiě)命令) uint i; uchar j; bit testb; for(j=1;j<=8;j+) /一位一位地傳 testb=dat&0x01; dat=dat>>1; if(testb) DQ=0; i+;i+; DQ=1; i=8;while(

5、i>0)i-; else DQ=0; i=8;while(i>0)i-; DQ=1; i+;i+; void tmpchange(void) /溫度轉(zhuǎn)換子程序 DQreset(); delay(1); tmpwritebyte(0xcc); /CCH跳過(guò)ROM tmpwritebyte(0x44); /44H溫度轉(zhuǎn)換uint tmp() /讀取溫度子程序 float tt; uchar a,b; DQreset(); /無(wú)論什么命令, 首先都要發(fā)起初始化 delay(1); tmpwritebyte(0xcc); /跳過(guò)ROM(本實(shí)驗(yàn)中實(shí)驗(yàn)板上只連接一塊18B20) tmpwrit

6、ebyte(0xbe); /讀便簽存儲(chǔ)器(溫度以二進(jìn)制儲(chǔ)存于BEH) a=tmpread();/a為低八位 b=tmpread();/b為高八位 temp=b; temp<<=8; temp=temp|a; tt=temp*0.0625; /二進(jìn)制乘0.0625為十進(jìn)制 temp=tt*1000; /精度為0.001 return temp;void LCD_WriteCom(uchar com)/LCD寫(xiě)入命令 rs = 0;rw = 0; P0 = com; delay(5); lcden = 0; delay(5); lcden = 1; delay(5); lcden =

7、0; void LCD_WriteData(uchar dat)/LCD寫(xiě)入數(shù)據(jù) rs = 1; rw = 0; lcden = 0; P0 = dat; delay(5); lcden = 1; delay(5); lcden = 0; delay(5);void LCD_Init() /LCD初始化 LCD_WriteCom(0x38); delay(15); LCD_WriteCom(0x08); delay(3); LCD_WriteCom(0x01); delay(3); LCD_WriteCom(0x06); delay(3); LCD_WriteCom(0x0c); void D

8、isplay18B20Rom(char Rom) /display rom uchar h,l; l = Rom & 0x0f; h = Rom & 0xf0; h >>= 4; if( ( h >= 0x00 )&&( h <= 0x09 ) ) LCD_WriteData(h+0x30); else LCD_WriteData(h+0x37); if( ( l >= 0x00 )&&( l <= 0x09 ) ) LCD_WriteData(l+0x30); else LCD_WriteData(l+0x3

9、7); void temshow() /溫度顯示/LCD_WriteCom(0x01); 寫(xiě)命令不能放在此位置DQreset(); /無(wú)論什么命令, 首先都要發(fā)起初始化tmpchange(); /溫度轉(zhuǎn)換(相當(dāng)于讀溫度前的初始化)temp=tmp();/讀溫度A1=temp/10000;A2=(temp%10000)/1000;A3=(temp%10000)%1000)/100;A4=(temp%10000)%1000)%100)/10;A5=(temp%10000)%1000)%100)%10;LCD_WriteCom(0x80);LCD_WriteData('t') ;LC

10、D_WriteData('e');LCD_WriteData('m') ;LCD_WriteData('p') ;LCD_WriteData(':');LCD_WriteCom(0x80+0x40);LCD_WriteData('+') ;LCD_WriteData('0'+A1);LCD_WriteData('0'+A2) ;LCD_WriteData('.') ;LCD_WriteData('0'+A3);LCD_WriteData('0&

11、#39;+A4);LCD_WriteData('0'+A5);void romshow()/序列碼顯示LCD_Init();rw = 0;DQreset();/無(wú)論什么命令, 首先都要發(fā)起初始化delay(1);tmpwritebyte(0x33);/讀ROM,允許主機(jī)讀出DS18B20的64為二進(jìn)制序列碼(僅限于總線上存在單只DS18B20) delay(1); a = tmpread(); b = tmpread(); c = tmpread(); d = tmpread(); e = tmpread(); f = tmpread(); g = tmpread(); h =

12、 tmpread(); LCD_WriteCom(0x80);/LCD第一行開(kāi)始LCD_WriteData('n');LCD_WriteData('u');LCD_WriteData('m');LCD_WriteData('b');LCD_WriteData('e');LCD_WriteData('r'); LCD_WriteCom(0x80+0x40);/lCD第二行開(kāi)始 Display18B20Rom(a); Display18B20Rom(b); Display18B20Rom(c); Display18B20Rom(d); Display18B20Rom(e); Display18B20Rom(f); Display18B20Rom(g); Displa

溫馨提示

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