版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的DS18B20溫度計(jì)設(shè)計(jì)//Main.c主程序#include<reg52.h>#include<18b20.h>#defineDataPortP0//概念數(shù)據(jù)端口程序中碰到DataPort則用P0替換sbitLATCH1=P1^0;//概念鎖存使能端口段鎖存sbitLATCH2=P1^1;//位鎖存bitReadTempFlag;//概念讀時間標(biāo)志unsignedcharcodeDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值0~9共陰數(shù)碼管dp-aunsignedcharcodeWeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//別離對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsignedcharTempData[4];//存儲顯示值的全局變量voidDisplay(unsignedcharFirstBit,unsignedcharNum);//數(shù)碼管顯示函數(shù)voidInit_Timer0(void);//按時器初始化voidmain(void){unsignedintTempH,TempL,temp;Init_Timer0(); //按時器初始化while(1)//主循環(huán){if(ReadTempFlag==1){ReadTempFlag=0;temp=ReadTemperature(); //讀取溫度函數(shù)if(temp&0x8000) {TempData[0]=0x40;//負(fù)號標(biāo)志temp=~temp;//取反加1 temp+=1; TempH=temp>>4;TempL=temp&0x0F;TempL=TempL*6.25/10;//小數(shù)近似處置 if(TempH/10==0)TempData[1]=0;//十位溫度 else TempData[1]=DuanMa[TempH/10];TempData[2]=DuanMa[TempH%10]|0x80;//個位溫度,帶小數(shù)點(diǎn)TempData[3]=DuanMa[TempL]; }else{ TempH=temp>>4;TempL=temp&0x0F;TempL=TempL*6.25/10;//小數(shù)近似處置 if(TempH/100==0) TempData[0]=0; elseTempData[0]=DuanMa[TempH/100];//百位溫度if((TempH/100==0)&&((TempH%100)/10==0))//消隱 TempData[1]=0; elseTempData[1]=DuanMa[(TempH%100)/10];//十位溫度TempData[2]=DuanMa[(TempH%100)%10]|0x80;//個位溫度,帶小數(shù)點(diǎn)TempData[3]=DuanMa[TempL]; }} }}voidDisplay(unsignedcharFirstBit,unsignedcharNum){staticunsignedchari=0; DataPort=0;//清空數(shù)據(jù)LATCH1=1;//段鎖存LATCH1=0;DataPort=WeiMa[i+FirstBit];//取位碼LATCH2=1;//位鎖存LATCH2=0;DataPort=TempData[i];//取顯示數(shù)據(jù),段碼LATCH1=1;//段鎖存LATCH1=0; i++;if(i==Num) i=0;}voidInit_Timer0(void) //按時器初始化{TMOD|=0x01; //利用模式1,16位按時器 EA=1;//總中斷打開ET0=1;//按時器中斷打開TR0=1;//按時器開關(guān)打開}voidTimer0_isr(void)interrupt1 //按時器中斷程序{staticunsignedintnum;TH0=(65536-2000)/256; //從頭賦值2msTL0=(65536-2000)%256;Display(0,4);//挪用數(shù)碼管掃描num++;if(num==300)//{num=0;ReadTempFlag=1;//讀標(biāo)志位置1 }}//reg52.h#ifndef__REG52_H__#define__REG52_H__sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTCON=0x88;sfrTMOD=0x89;sfrTL0=0x8A;sfrTL1=0x8B;sfrTH0=0x8C;sfrTH1=0x8D;sfrIE=0xA8;sfrIP=0xB8;sfrSCON=0x98;sfrSBUF=0x99;/*8052Extensions*/sfrT2CON=0xC8;sfrRCAP2L=0xCA;sfrRCAP2H=0xCB;sfrTL2=0xCC;sfrTH2=0xCD;/*BITRegisters*//*PSW*/sbitCY=PSW^7;sbitAC=PSW^6;sbitF0=PSW^5;sbitRS1=PSW^4;sbitRS0=PSW^3;sbitOV=PSW^2;sbitP=PSW^0;//8052sbitTF1=TCON^7;sbitTR1=TCON^6;sbitTF0=TCON^5;sbitTR0=TCON^4;sbitIE1=TCON^3;sbitIT1=TCON^2;sbitIE0=TCON^1;sbitIT0=TCON^0;sbitEA=IE^7;sbitET2=IE^5;//8052sbitES=IE^4;sbitET1=IE^3;sbitEX1=IE^2;sbitET0=IE^1;sbitEX0=IE^0;/*IP*/sbitPT2=IP^5;sbitPS=IP^4;sbitPT1=IP^3;sbitPX1=IP^2;sbitPT0=IP^1;sbitPX0=IP^0;sbitRD=P3^7;sbitWR=P3^6;sbitT1=P3^5;sbitT0=P3^4;sbitINT1=P3^3;sbitINT0=P3^2;sbitTXD=P3^1;sbitRXD=P3^0;sbitSM0=SCON^7;sbitSM1=SCON^6;sbitSM2=SCON^5;sbitREN=SCON^4;sbitTB8=SCON^3;sbitRB8=SCON^2;sbitTI=SCON^1;sbitRI=SCON^0;sbitT2EX=P1^1;//8052sbitT2=P1^0;//8052sbitTF2=T2CON^7;sbitEXF2=T2CON^6;sbitRCLK=T2CON^5;sbitTCLK=T2CON^4;sbitEXEN2=T2CON^3;sbitTR2=T2CON^2;sbitC_T2=T2CON^1;sbitCP_RL2=T2CON^0;#endif//18b20.h#ifndef__DS18B20_H__#define__DS18B20_H__#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint;/*端口概念*/sbitDQ=P1^3;//ds18b20端口/*函數(shù)聲明*/unsignedintReadTemperature(void); bitInit_DS18B20(void); unsignedcharReadOneChar(void);voidWriteOneChar(unsignedchardat);#endif//delay.c#ifndef__DELAY_H__#define__DELAY_H__/*微秒延時函數(shù)*/voidDelayUs2x(unsignedchart);/*毫秒延時函數(shù)*/voidDelayMs(unsignedchart);#endif//18b20.c#include<delay.h>#include<18b20.h>/*18b20初始化*/bitInit_DS18B20(void){ bitdat=0; DQ=1; //DQ復(fù)位 DelayUs2x(5);//稍做延時 DQ=0;//單片機(jī)將DQ拉低 DelayUs2x(200);//精準(zhǔn)延時大于480us小于960us DelayUs2x(200); DQ=1;//拉高總線 DelayUs2x(50);//15~60us后接收60-240us的存在脈沖 dat=DQ;//若是dat=0則初始化成功,dat=1則初始化失敗 DelayUs2x(25);//稍作延時返回 returndat;}/*讀取一個字節(jié)*/ unsignedcharReadOneChar(void) { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//給脈沖信號 dat>>=1; DQ=1;//給脈沖信號 if(DQ) dat|=0x80; DelayUs2x(25); } return(dat); }/*寫一個字節(jié)*/ voidWriteOneChar(unsignedchardat) { unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; DelayUs2x(25); DQ=1; dat>>=1; } DelayUs2x(25); }/*讀取溫度函數(shù)*/ unsignedintReadTemperature(void) { unsignedchara=0; unsignedintb=0; unsignedintt=0; Init_DS18B20(); //
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保項(xiàng)目大額借款協(xié)議及環(huán)境監(jiān)測合同3篇
- 2025版苗木采購與園林景觀施工一體化服務(wù)合同4篇
- 二零二五年度標(biāo)準(zhǔn)公司租賃合同范本2篇
- 2025年度鋼構(gòu)工程后期維護(hù)保養(yǎng)合同范本2篇
- 二零二五版農(nóng)村房屋買賣糾紛仲裁合同4篇
- 2025年度內(nèi)參報告撰寫與行業(yè)研究合同4篇
- 2025年山地承包及森林資源可持續(xù)利用合同4篇
- 2025年度個人貸款合同變更條款模板2篇
- 二零二五年度木材產(chǎn)業(yè)園區(qū)建設(shè)投資合同4篇
- 男性生殖系統(tǒng)健康知識
- 護(hù)理服務(wù)在產(chǎn)科中的應(yīng)用課件
- 流行文化對青少年價值觀的影響研究
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實(shí)例:清單與計(jì)價樣本
- VOC廢氣治理工程中電化學(xué)氧化技術(shù)的研究與應(yīng)用
- 煤礦機(jī)電設(shè)備培訓(xùn)課件
- 科技論文圖表等規(guī)范表達(dá)
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
- 紅色研學(xué)旅行課程的設(shè)計(jì)與實(shí)踐
- 幼兒園保育教育質(zhì)量指南評估指標(biāo)考核試題及答案
評論
0/150
提交評論