找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

DS18B20温度传感器的问题 请求管理员有空帮我简答一下

[复制链接]
admin 发表于 2012-9-2 10:34:24 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
///////////////////////////////////
ReadOneChar(void) 读取一个字节
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat=dat>>1;
DQ=1;
if(DQ==1)
{
dat=dat|0x80; 这句为什么要保持最高位 而写一个字节的时候要保持最低位

}
delay(4);
}
return(dat);
}
/////////////////////////////////////
WriteOnechar(uchar dat)
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01; 这句要保持最低位 但是下句 dat=dat>>1;为什么要向右 如果右移是不是最低位变成最高位
delay(5);
DQ=1;
dat=dat>>1;
}
delay(4);
}
////////////////////////////////////
Readtemperature(void)
{
uchar a=0;
uchar b=0;
uchar t=0;
Init_DS18B20();
WriteOnechar(0xcc);
WriteOnechar(0x44);

Init_DS18B20();
WriteOnechar(0xcc);
WriteOnechar(0xbe);
a=ReadOneChar();
b=ReadOneChar();

t=(b<<4)|(a>>4);
if(t>128)
{
t=~t+1;
}
return(t);
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 17:45 , Processed in 0.057410 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表