找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5131|回复: 6
收起左侧

为什么用proteus仿真DS18B20总是无法初始化

[复制链接]
ID:233756 发表于 2018-6-22 14:02 | 显示全部楼层 |阅读模式
sbit RS = P2^0;
sbit RW = P2^1;
sbit E  = P2^2;
sbit DQ = P2^4;

void main()
{       
        lcd_1602_init(); //初始化
        while(ds18b20_init()) lcd_1602_dispaly(1,1,"Init error");       
        lcd_1602_dispaly(1,1,"Init OK");
        while(1)
}

bit ds18b20_init()
{
        bit tmp;
        DQ = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        DQ = 0;
        Delay500us();
        DQ = 1;
        Delay68us();
        tmp = DQ;
        Delay500us();
        return tmp;
}


永远初始化失败,直接在初始化函数返回0,1602上显示初始化成功了
看到网上都是这么初始化的,为什么我的不行

仿真图

仿真图
回复

使用道具 举报

ID:320306 发表于 2018-6-22 15:53 | 显示全部楼层
把别人的程序拿过来试试!!!!!!!!!!!!
回复

使用道具 举报

ID:234075 发表于 2018-6-22 16:34 | 显示全部楼层
        DQ=0;                           //À­µÍDQÏòµ¥×ÜÏß·¢³öѯÎÊ£¬Ê±¼ä540>t>480uS
        delay_us(250);          
        DQ=1;                                //ÊÍ·ÅDQ£¨DQÖÃ1£©
        while(DQ==1);                        //µÈ´ýDS18B20Ó¦´ð½«DQÀ­µÍ
        delay_us(120);                //ÔÙ´ÎÑÓʱ>240uS
        DQ=1;
回复

使用道具 举报

ID:234075 发表于 2018-6-22 17:03 | 显示全部楼层
还有写启动DS18B20启动转换命令0x44后需要等待1秒后再读取数据
回复

使用道具 举报

ID:233756 发表于 2018-6-23 15:33 | 显示全部楼层
已经解决了,同样的程序上了板子就没有问题
回复

使用道具 举报

ID:357332 发表于 2018-6-23 17:04 | 显示全部楼层
仿真软件有时没有实物那么好用
回复

使用道具 举报

ID:208271 发表于 2020-3-24 10:25 | 显示全部楼层
要确认你的程序在实物中以12M晶振运行时是正确的,然后把仿真单片机运行频率调为6M就OK了,仿真时间与实物不同,时序要求严格的话就不行,1602时序要求不严格,所以没啥关系
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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