专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
关于DS18B20的问题
2019-03-24 19:11
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
14675
11
1624
谁能给我个51单片机的DS18B20程序,晶振是11.0592的,搞了一天都一直显示85度 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
电子研发_lp
1楼-- · 2019-03-25 16:08
精彩回答 2 元偷偷看……
加载中...
duan0202
2楼-- · 2019-03-25 16:49
终极幻想,能不能给我一份哦
1426227062@qq.com
加载中...
tzl
3楼-- · 2019-03-25 19:03
// 以 下 为: DS18b20 读温度的程序
// 接口程序为: uint Read_Temperature(void); //读回的数如果是"256"那么温度为25.6度
#define ds18b20_out P1DIR|= BIT7;
#define ds18b20_in P1DIR&=~BIT7;
#define ds18b20_out_1 P1OUT|= BIT7; //输出1
#define ds18b20_out_0 P1OUT&=~BIT7; //输出0
#define ds18b20_io_in P1IN&BIT7 //判断接受的数据是1还是0
#define DQ BIT0
//****************温度程序****************************
void delay_u(uchar x)
{
uchar y;
for(y=0;y<=x;x++);
}
//------------------------------------------------------------------------------
void delay_d(int Us)
{
int Count=1,i,j;
for(i = Us; i > 0; i--){for(j = Count;j > 0;j--); }
return;
}
//------------------------------------------------------------------------------
char DS1820_Reset(void)
{
char presence; // 设定管脚为输出方向
ds18b20_out;ds18b20_out_0;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_0;
delay_d(25);// 延时480微妙
ds18b20_out;ds18b20_out_1;
delay_d(3); //延时60微妙
ds18b20_out;ds18b20_out_0;
ds18b20_in;
presence = (char)(ds18b20_io_in);
delay_d(2);// 延时60微妙
return(presence);
}
//------------------------------------------------------------------------------
char DS1820_ReadByte(void)
{
char i,value=0,presence;
for (i = 8;i > 0;i--)
{
value >>= 1;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_0;
ds18b20_out;ds18b20_out_1;
ds18b20_out_1; // 延时1微妙
ds18b20_in;
presence = (char)(ds18b20_io_in);
if(presence) value |= 0x80;
delay_d(2); // 延时60微妙
ds18b20_out;ds18b20_out_1;
}
return value;
}
//------------------------------------------------------------------------------
void DS1820_WriteByte(char val)
{
char i,nBit;
for (i=8; i>0; i--)
{
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_1;
ds18b20_out_1; // 延时1微妙
ds18b20_out;ds18b20_out_0;
nBit = val & 0x01;
if (nBit)
{ds18b20_out_1;}
else
{ds18b20_out_0;}
delay_d(2); // 延时50微妙
ds18b20_out;ds18b20_out_1;
val >>= 1;
}
i++;i++;i++;i++;i++;// 延时5微妙
}
//------------------------------------------------------------------------------
uint Read_Temperature(void)
{
uint th, tl,ta;
int data;
//_DINT();
// 复位
DS1820_Reset();// Skip ROM
DS1820_WriteByte(0xCC);// 开始转换
DS1820_WriteByte(0x44);
DS1820_Reset();
DS1820_WriteByte(0xCC);// Read Scratch
DS1820_WriteByte(0xBE);//读取温度数据
tl=DS1820_ReadByte();
th=DS1820_ReadByte();
th<<=8;
ta=tl|th;
data=ta;
data/=2;
return data;
//_EINT();
}
//****************温度程序结束************************
加载中...
tzl
4楼-- · 2019-03-26 00:13
做18B20最关键的是程序里面的延时一定要准
加载中...
yuyue_dl
5楼-- · 2019-03-26 00:15
我原来使用的是MSP430直接带一片DS18B20
新进开辟了“高速线阵式工业相机设计”的一个专项讨论区,不知道用这类东西的人多不多,多的话可以把资料也转发到这里来一些。
加载中...
上一页
1
2
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
// 接口程序为: uint Read_Temperature(void); //读回的数如果是"256"那么温度为25.6度
#define ds18b20_out P1DIR|= BIT7;
#define ds18b20_in P1DIR&=~BIT7;
#define ds18b20_out_1 P1OUT|= BIT7; //输出1
#define ds18b20_out_0 P1OUT&=~BIT7; //输出0
#define ds18b20_io_in P1IN&BIT7 //判断接受的数据是1还是0
#define DQ BIT0
//****************温度程序****************************
void delay_u(uchar x)
{
uchar y;
for(y=0;y<=x;x++);
}
//------------------------------------------------------------------------------
void delay_d(int Us)
{
int Count=1,i,j;
for(i = Us; i > 0; i--){for(j = Count;j > 0;j--); }
return;
}
//------------------------------------------------------------------------------
char DS1820_Reset(void)
{
char presence; // 设定管脚为输出方向
ds18b20_out;ds18b20_out_0;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_0;
delay_d(25);// 延时480微妙
ds18b20_out;ds18b20_out_1;
delay_d(3); //延时60微妙
ds18b20_out;ds18b20_out_0;
ds18b20_in;
presence = (char)(ds18b20_io_in);
delay_d(2);// 延时60微妙
return(presence);
}
//------------------------------------------------------------------------------
char DS1820_ReadByte(void)
{
char i,value=0,presence;
for (i = 8;i > 0;i--)
{
value >>= 1;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_0;
ds18b20_out;ds18b20_out_1;
ds18b20_out_1; // 延时1微妙
ds18b20_in;
presence = (char)(ds18b20_io_in);
if(presence) value |= 0x80;
delay_d(2); // 延时60微妙
ds18b20_out;ds18b20_out_1;
}
return value;
}
//------------------------------------------------------------------------------
void DS1820_WriteByte(char val)
{
char i,nBit;
for (i=8; i>0; i--)
{
ds18b20_out;ds18b20_out_1;
ds18b20_out;ds18b20_out_1;
ds18b20_out_1; // 延时1微妙
ds18b20_out;ds18b20_out_0;
nBit = val & 0x01;
if (nBit)
{ds18b20_out_1;}
else
{ds18b20_out_0;}
delay_d(2); // 延时50微妙
ds18b20_out;ds18b20_out_1;
val >>= 1;
}
i++;i++;i++;i++;i++;// 延时5微妙
}
//------------------------------------------------------------------------------
uint Read_Temperature(void)
{
uint th, tl,ta;
int data;
//_DINT();
// 复位
DS1820_Reset();// Skip ROM
DS1820_WriteByte(0xCC);// 开始转换
DS1820_WriteByte(0x44);
DS1820_Reset();
DS1820_WriteByte(0xCC);// Read Scratch
DS1820_WriteByte(0xBE);//读取温度数据
tl=DS1820_ReadByte();
th=DS1820_ReadByte();
th<<=8;
ta=tl|th;
data=ta;
data/=2;
return data;
//_EINT();
}
//****************温度程序结束************************
新进开辟了“高速线阵式工业相机设计”的一个专项讨论区,不知道用这类东西的人多不多,多的话可以把资料也转发到这里来一些。
一周热门 更多>