2923|8

411

帖子

9

TA的资源

一粒金砂(高级)

楼主
 

18B20仿真时数码管一直显示16,怎么回事 [复制链接]

下面是18B20部分的程序,大神帮忙看看哪错了,数据类型定义,延时什么的,帮忙看看要怎么改(数码管显示部分的程序我单独检测过了,是正常的)
//延时函数    10us
void delay(uchar t)
{
    do{
        _nop_();_nop_();
      }while(--t);
}
                             
//18B20时序
//初始化
void init()
{
    DQ=1;
    _nop_();_nop_();
    DQ=0;
    delay(70);
    DQ=1;
    delay(6);
    while(!DQ);
}
//写时序
void write(uchar dat)
{
    uchar mask;
    for(mask=0x01;mask!=0;mask<<=1)
    {
        DQ=0;
        _nop_();_nop_();
        if(dat&mask)
        {
            DQ=1;
        }
        delay(6);   
    }   
    DQ=1;
    _nop_();_nop_();
}
//读时序
uchar read()
{
    uchar mask;
    for(mask=0x01;mask!=0;mask<<=1)
    {
        uchar dat;
        DQ=0;
        _nop_();_nop_();
        DQ=1;
        _nop_();_nop_();
        if(DQ)
        {
            dat=dat|mask;   
        }
        else
        dat&=~mask;
        delay(6);
        DQ=1;
        return dat;        
    }
}
//测温度
uint temperature()
{
    uchar lsb;
    uint tem,msb;
    init();
    write(0xCC);
    write(0xBE);
    delay(50);
    init();
    write(0xCC);
    write(0x44);
    lsb=read();
    msb=read();
    if(msb&0xf0)
    {
        tem=((~(msb<<8)|lsb)+1)*0.0625;
    }
    else
    tem=((msb<<8)|lsb)*0.0625;               
    return tem;
}


此帖出自51单片机论坛

最新回复

有的时候18B20仿真的时候怎么弄数字都会不变,但是程序没有问题,实际跑器件,示数是正常的,但是仿真就是不对,我遇到过,但是不知道怎么解释为什么会这样。  详情 回复 发表于 2017-11-27 14:21
点赞 关注
 

回复
举报

40

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
两个模块要分开测试,既然数码管没问题,那就是DS18B20出现问题了,多半驱动程序有问题。
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
读时序写的有问题
此帖出自51单片机论坛
 
 
 

回复

411

帖子

9

TA的资源

一粒金砂(高级)

4
 
wlh_yuer 发表于 2017-11-21 10:01
两个模块要分开测试,既然数码管没问题,那就是DS18B20出现问题了,多半驱动程序有问题。

驱动程序指的是“读时序”、“写时序”还是“测温度函数”?
此帖出自51单片机论坛
 
 
 

回复

411

帖子

9

TA的资源

一粒金砂(高级)

5
 
wlh_yuer 发表于 2017-11-21 10:01
两个模块要分开测试,既然数码管没问题,那就是DS18B20出现问题了,多半驱动程序有问题。

驱动程序指的是“读时序”、“写时序”还是“测温度函数”?
此帖出自51单片机论坛

点评

不好意思,没仔细看,你在网上多找找参考程序,对比一下。  详情 回复 发表于 2017-11-22 10:20
 
 
 

回复

411

帖子

9

TA的资源

一粒金砂(高级)

6
 
memory_Jun 发表于 2017-11-21 10:11
读时序写的有问题

能具体说一下么,多谢
此帖出自51单片机论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

7
 
shijizai 发表于 2017-11-22 08:58
驱动程序指的是“读时序”、“写时序”还是“测温度函数”?

不好意思,没仔细看,你在网上多找找参考程序,对比一下。
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

8
 
shijizai 发表于 2017-11-22 09:15
能具体说一下么,多谢

参考这个链接的程序https://www.eeworld.com.cn/mcu/article_24054.html
此帖出自51单片机论坛
 
 
 

回复

943

帖子

3

TA的资源

纯净的硅(中级)

9
 
有的时候18B20仿真的时候怎么弄数字都会不变,但是程序没有问题,实际跑器件,示数是正常的,但是仿真就是不对,我遇到过,但是不知道怎么解释为什么会这样。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表