电子元器件william hill官网
登录
直播中
黎明
6年用户
5经验值
私信
关注
写了一个DS18b20的温度显示程序,但数码管一直显示零,请大神们帮忙看看
开启该帖子的消息推送
51单片机
小白一枚,protues
仿真
DS18b20温度显示,但一直显示零,查资料改了几次都失败,全部程序和仿真在附件中,请大神们帮忙看看是不是初始化之类的写错了。
//Ds18b20初始化,
uchar Ds18b20Init()
{
uchar i;
DSPORT=0;
Delaylms(500);
DSPORT=1;
Delaylms(68);
i=DSPORT;
Delaylms(500);
return i;
}
//写函数
void Ds18b20WriteByte(uchar dat)
{
uchar i,j;
for(i=0;j<8;j++)
{
DSPORT=0;
Delaylms(1); //延时1us
DSPORT=dat&0x01;
Delaylms(68);//延时68us
DSPORT=1;
dat>>=1;
}
}
//读函数
uchar Ds18b20ReadByte()
{
uint i,j;
uchar bi,byte;
for(i=8;j>0;j--)
{
DSPORT=0;
i++;
DSPORT=1;
i++;
i++;
bi=DSPORT;
byte=(byte>>1)|(bi<<7);
}
return byte;
}
//温度转换指令
void Ds18b20Changetemp()
{
Ds18b20Init();
Delaylms(1);
Ds18b20WriteByte(0xcc);
Ds18b20WriteByte(0x44);
}
//温度读取指令
void Ds18b20ReadTempcom()
{
Ds18b20Init();
Delaylms(1);
Ds18b20WriteByte(0xcc);
Ds18b20WriteByte(0xbe);//读取RAM
}
//读取温度数据
int Ds18b20ReadTemp()
{
int temp=0;
uchar tmh,tml;
Ds18b20Changetemp();
Ds18b20ReadTempcom();
tml= Ds18b20ReadByte();
tmh= Ds18b20ReadByte();
temp=tmh;
temp<<=8;
temp|=tml;
return temp;
}
程序和仿真.zip
(2019-12-24 18:35 上传)
142.19 KB, 下载次数: 24
回帖
(2)
王斌
2019-12-25 18:38:09
编译有错误提醒吗,没有的话就要排查硬件问题
编译有错误提醒吗,没有的话就要排查硬件问题
举报
wuzuizhiibin
2019-12-27 17:15:29
值得学习,谢谢分享
值得学习,谢谢分享
举报
更多回帖
rotate(-90deg);
回复
相关问答
51单片机
哪个
大神
给
个
ds18b20
温度数码管
显示
的仿真文件和相应的源
程序
呀,新人菜鸟求教呀++++
2017-03-01
3314
DS18B20
用LCD1206和
数码管
显示
温度
2015-04-10
6751
怎样去设计
一
种基于
DS18B20
的LED
数码管
显示
数字
温度
计
2021-09-23
1823
18B20
试验时
数码管
示数不变,求助
2017-11-19
2843
如何用STC89C51和
DS18B20
做
温度
检测和
显示
?
2019-09-29
2635
基于51单片机,
DS18B20
温度
采集,仿真和实际不
一
样
2015-05-22
3093
51单片机做
一个
双路
ds18b20
的
数码管
显示
附带代码和仿真
2017-07-28
2178
用
数码管
显示
18b20
温度
不正常
2013-03-31
4371
DS18B20
的编写
2016-01-06
5778
单片机做
ds18b20
温度
显示
2020-03-25
1452
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分