久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
DS18B20溫度探測器終于成功了
[打印本頁]
作者:
hongniu
時間:
2015-6-24 22:16
標題:
DS18B20溫度探測器終于成功了
仿真圖片如下:(當前溫度為13.0000度)
實物圖片(當前溫度為30.5000度)
經過幾個星期的努力終于把DS18B20溫度探測做出來了。前段時間一直不能讀出溫度出來,不知是什么原因,參照別人用匯編寫的程序才明白是自己的復位程序少了個延時,結果后面的時序全都出錯了。
程序如下:
#include <reg51.h>
#include<intrins.h>
sbit dq = P1^0;//定義P1.0為DS18B20的數據線
sbit P1_1=P1^1;
sbit P2_0 = 0xA0^0;
sbit P2_1 = 0xA0^1;
sbit P2_2 = 0xA0^2;
sbit P2_3 = 0xA0^3;
sbit P2_4 = 0xA0^4;
sbit P2_5 = 0xA0^5;
sbit P2_6 = 0xA0^6;
void delay(unsigned char i);
bit init_18b20();
void w_18b20(unsigned char dat);
unsigned char r_18b20();
void LedDisp();
unsigned char dis[]={0x00,0x00,0x00,0x00,0x00,0x00};//顯示數據
unsigned char TemL;
unsigned char TemLH;
unsigned char TemLL;
unsigned char TemH;
unsigned long Tem;
bit TempS;
void main()
{
bit res;
while(1)
{
do
{
res=init_18b20();//復位并檢測DS18B20是否存在
}
while (res);//存在繼續
w_18b20(0xCC);//跳過ROM匹配
w_18b20(0x44);//開始溫度轉換
do//等待溫度轉換完成
{
dq=0;
_nop_();
_nop_();
_nop_();
dq=1;
delay(6);
TempS=dq;
delay(22);
}
while (!TempS);//溫度轉換完成后繼續
init_18b20();//復位
w_18b20(0xCC);//跳過ROM匹配
w_18b20(0xBE);//讀取溫度值
TemL=r_18b20();//低位
TemH=r_18b20();//高位
if (TemH&0x80)//把讀取的溫度值進行轉換,并存進dis[]中
{
TemH=~TemH;
TemL=(~TemL)+1;
TempS=1;
}
else TempS=0;
TemLH=TemL>>4;
TemLL=TemL&0x0F;
Tem=(TemH*16 + TemLH + TemLL*0.0625)*10000;
dis[5]=Tem%10;
Tem=Tem/10;
dis[4]=Tem%10;
Tem=Tem/10;
dis[3]=Tem%10;
Tem=Tem/10;
dis[2]=Tem%10;
Tem=Tem/10;
dis[1]=Tem%10;
Tem=Tem/10;
dis[0]=Tem%10;
LedDisp();//溫度顯示
}
}
void delay (unsigned char i) //延時程序,12M晶振下延時為:(2i+3)us ,i=0~255
{
while (--i);
}
bit init_18b20() //初始化,init_18b20=0初始化成功,init_18b20=1初始化失敗,可能18b20不存在
{
dq=1;
_nop_();
dq=0;
delay(255);
dq=1;
delay(34);
TempS=dq;
delay(120);
return (TempS);
}
void w_18b20(unsigned char dat) //寫一個字節到18b20
{
unsigned char i=0;
for(i=8;i>0;i--)
{
dq=0;
delay(5);
dq=dat&0x01;
delay(22);//延時
dq=1;
dat>>=1;
}
}
unsigned char r_18b20()//從18b20讀一個字節
{
unsigned char i=0;
unsigned char dat=0;
for(i=8;i>0;i--)
{
dq=0;
dat>>=1;
dq=1;
delay(6);
if(dq) dat|=0x80;
delay(22);
}
return(dat);
}
void LedDisp() //顯示數字函數
{
P3=dis[0];
P2_0=0;
delay(200);
P2_0=1;
P3=dis[1];
P2_1=0;
delay(200);
P2_1=1;
P3=dis[2];
P2_2=0;
delay(200);
P2_2=1;
P3=dis[3];
P2_3=0;
delay(200);
P2_3=1;
P3=dis[4];
P2_4=0;
delay(200);
P2_4=1;
P3=dis[5];
P2_5=0;
delay(200);
P2_5=1;
}
作者:
鏡花水月K12
時間:
2017-5-9 16:18
好哎,正在做溫度檢測,這個程序正好能用上
謝謝樓主
作者:
花生會出油
時間:
2018-8-26 00:17
很不錯
作者:
草木灰
時間:
2018-8-29 15:22
找到了錯誤:
自己的復位程序少了個延時,結果后面的時序全都出錯了。
是最大的進步。
作者:
溫xyz
時間:
2022-4-24 10:15
這個也太復雜了吧???
作者:
man1234567
時間:
2022-4-25 09:19
溫xyz 發表于 2022-4-24 10:15
這個也太復雜了吧???
要看年份,現在這樣做的是練技術,當年未必。
作者:
mlhl001
時間:
2022-4-29 08:55
老哥,太感謝了,成功了。我按網上視頻做的都不成功 ,我還以為18b20壞了又買了。問題就是延時。
作者:
jlccsyzq
時間:
2022-8-12 13:50
長知識了。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕视频免费
|
成人在线精品
|
国产高清精品一区二区三区
|
成年精品
|
国产免费一区二区三区最新6
|
国产九九精品
|
欧美午夜精品久久久久久浪潮
|
激情综合五月天
|
九色在线观看
|
亚洲一区二区电影在线观看
|
亚洲成人自拍
|
av在线一区二区三区
|
夜夜骑首页
|
亚洲视频在线观看
|
久久久精品一区
|
成人在线不卡
|
欧美91
|
国产麻豆乱码精品一区二区三区
|
91超碰caoporn97人人
|
国产精品18毛片一区二区
|
国产精品一区二区三区久久久
|
精品91久久
|
国产精品自产拍在线观看蜜
|
无码日韩精品一区二区免费
|
毛片一区二区三区
|
国产精品久久久亚洲
|
亚洲国产福利视频
|
国产日韩欧美一区
|
亚洲五码在线
|
国产亚洲一区二区在线观看
|
日韩有码在线观看
|
欧美午夜精品
|
久久ww
|
亚洲精品乱码久久久久久按摩
|
九九久久久
|
国产色网站
|
无人区国产成人久久三区
|
国产精品爱久久久久久久
|
欧美精品1区
|
久久久久久国产精品免费免费男同
|
国产在线视频在线观看
|