版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上電路圖仿真圖溫控范圍25到35度之間源程序#include<reg51.h> /包含單片機(jī)寄存器的頭文件#include<intrins.h> /包含_nop_()函數(shù)定義的頭文件#include <absacc.h>#include <math.h>sbit DQ=P11;sbit jdq=P10;sbit dot=P27;unsigned char code xiaoshu=0xc0,0xc0,0xf9,0xf9,0xa4,0xb0,0xb0,0x99,0x92,0x92,0x82,0xf8,0xf8,0x80,0x
2、80,0x90;char duan4=0,0,0,0; unsigned char code weikong=0x01,0x02,0x04,0x08,0x10,0x20; unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; int bai,shi,ge,flag=0,i; unsigned char temp; unsigned char TL; /儲(chǔ)存暫存器的溫度低位 unsigned char TH; /儲(chǔ)存暫存器的溫度高位 uns
3、igned char TN; /儲(chǔ)存溫度的整數(shù)部分 unsigned int TD; /儲(chǔ)存溫度的小數(shù)部分void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+) ; void delaynms(int n) unsigned char i;for(i=0;i<n;i+) delay1ms();unsigned char time_DS18B20; /設(shè)置全局變量,專門用于嚴(yán)格延時(shí)bit Init_DS18B20(void) bit flag_DS18B20; /儲(chǔ)存DS18B20是否存在的標(biāo)志,
4、flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先將數(shù)據(jù)線拉高 for(time_DS18B20=0;time_DS18B20<2;time_DS18B20+) /略微延時(shí)約6微秒 ; DQ = 0; /再將數(shù)據(jù)線從高拉低,要求保持480960us for(time_DS18B20=0;time_DS18B20<200;time_DS18B20+) /略微延時(shí)約600微秒 ; /以向DS18B20發(fā)出一持續(xù)480960us的低電平復(fù)位脈沖 DQ = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time_DS18B20=0;time_DS18B20<10;t
5、ime_DS18B20+) ; /延時(shí)約30us(釋放總線后需等待1560us讓DS18B20輸出存在脈沖) flag_DS18B20=DQ; /讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在) for(time_DS18B20=0;time_DS18B20<200;time_DS18B20+) /延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢 ; return (flag_DS18B20); /返回檢測成功標(biāo)志unsigned char ReadOneChar( ) unsigned char i=0;unsigned char dat; /儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)for (i=0;i<8
6、;i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一個(gè)機(jī)器周期 DQ = 0; /單片機(jī)從DS18B20讀書據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序 dat>>=1; _nop_(); /等待一個(gè)機(jī)器周期 DQ = 1; /將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備 for(time_DS18B20=0;time_DS18B20<3;time_DS18B20+); /延時(shí)約6us,使主機(jī)在15us內(nèi)采樣 if(DQ=1) dat|=0x80; /如果讀到的數(shù)據(jù)是1,則將1存入datelsedat|=0x00;/如果讀到的數(shù)
7、據(jù)是0,則將0存入dat /將單片機(jī)檢測到的電平信號DQ存入ri for(time_DS18B20=0;time_DS18B20<8;time_DS18B20+) ; /延時(shí)3us,兩個(gè)讀時(shí)序之間必須有大于1us的恢復(fù)期 return(dat); /返回讀出的十進(jìn)制數(shù)據(jù)WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一個(gè)機(jī)器周期 DQ=0; /將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫時(shí)序 DQ=dat&0x01; /利用與運(yùn)算取出要寫的某位二進(jìn)
8、制數(shù)據(jù), /并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time_DS18B20=0;time_DS18B20<10;time_DS18B20+) ;/延時(shí)約30us,DS18B20在拉低后的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; /釋放數(shù)據(jù)線 for(time_DS18B20=0;time_DS18B20<1;time_DS18B20+) ;/延時(shí)3us,兩個(gè)寫時(shí)序間至少需要1us的恢復(fù)期 dat>>=1; /將dat中的各二進(jìn)制位數(shù)據(jù)右移1位 for(time_DS18B20=0;time_DS18B20<4;time_DS18B20+) ; /稍
9、作延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間void ReadyReadTemp(void) Init_DS18B20(); /將DS18B20初始化WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 for(time_DS18B20=0;time_DS18B20<100;time_DS18B20+) ; /溫度轉(zhuǎn)換需要一點(diǎn)時(shí)間Init_DS18B20(); /將DS18B20初始化WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器,前兩個(gè)分別是溫度的低位和高位TL=R
10、eadOneChar(); /先讀的是溫度值低位TH=ReadOneChar(); /接著讀的是溫度值高位void display()if(TH>=8) TH=TH; /當(dāng)溫度為負(fù)數(shù)時(shí)求負(fù)數(shù)的補(bǔ)碼 TL=TL; TL=TL+1; flag=1; /當(dāng)溫度為負(fù)值時(shí)標(biāo)志置1 if(TL=0) TH+=1; duan0=TL&0X0f; /保存小數(shù)部分的值temp=(TH<<4)&0x70)|(TL>>4); /將高8位的低3位和低8位的高4位合并構(gòu)成溫度的整數(shù)部分duan3=temp/100; /取百位duan2=temp%100/10; /取十位du
11、an1=temp%10; /取個(gè)位P2=xiaoshuduan0;/顯示小數(shù)部分P3=0x01;delaynms(3);P3=0; if(duan3) /顯示百位P3=weikong3;P2=tableduan3;delaynms(3);P3=0; if(duan3) /顯示十位P3=weikong2;P2=tableduan2;delaynms(3);P3=0; else if(duan2) /顯示十位P3=weikong2;P2=tableduan2;delaynms(3);P3=0; P3=weikong1; /顯示個(gè)位P2=tableduan1;dot=0; /顯示小數(shù)點(diǎn)delaynms(3);P3=0; if(flag) /當(dāng)溫度為負(fù)數(shù)時(shí)顯示符號位P2=0xbf;if(!duan3)P3=0x08;if(!duan2)P3=0x04; else P3=0x10; delaynms(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧墻板施工方案(3篇)
- 竹架搭建施工方案(3篇)
- 2026年上半年黑龍江省事業(yè)單位公開招聘(4254人)備考考試題庫及答案解析
- 2026上半年福建安溪城建集團(tuán)有限公司(首批)引進(jìn)專項(xiàng)人才5人備考考試題庫及答案解析
- 動(dòng)作模仿秀第二彈
- 2025河北邢臺(tái)市中心血站第二批招聘編外人員1人考試備考題庫及答案解析
- 2026山東事業(yè)單位統(tǒng)考濰坊濱海經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘7人筆試備考試題及答案解析
- 2026福建福州市馬尾區(qū)行政服務(wù)中心管委會(huì)第一批招聘編外人員1人備考考試試題及答案解析
- 2026山東事業(yè)單位統(tǒng)考泰安新泰市招聘初級綜合類崗位76人筆試參考題庫及答案解析
- 2026年桓臺(tái)縣面向退役大學(xué)生士兵專項(xiàng)崗位公開招聘工作人員(8人)備考考試題庫及答案解析
- 保安證考試應(yīng)試寶典及試題答案
- 630KVA箱變安裝工程施工設(shè)計(jì)方案
- 四川省綿陽市涪城區(qū)2024-2025學(xué)年九年級上學(xué)期1月期末歷史試卷(含答案)
- 兒童故事繪本愚公移山課件模板
- IIT臨床研究培訓(xùn)
- 空調(diào)機(jī)組售后服務(wù)承諾及人員培訓(xùn)計(jì)劃
- 第四屆全國儀器儀表行業(yè)職業(yè)技能競賽-無人機(jī)裝調(diào)檢修工(儀器儀表檢測)理論考試題庫(含答案)
- GB/T 5169.13-2024電工電子產(chǎn)品著火危險(xiǎn)試驗(yàn)第13部分:灼熱絲/熱絲基本試驗(yàn)方法材料的灼熱絲起燃溫度(GWIT)試驗(yàn)方法
- 中國驢肉行業(yè)競爭格局及發(fā)展前景預(yù)測研究報(bào)告(2024-2030)
- 財(cái)務(wù)負(fù)責(zé)人信息表
- crtd植入術(shù)護(hù)理查房
評論
0/150
提交評論