找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 704|回复: 3
收起左侧

DS18B20读数据问题,单片机程序读不出来

[复制链接]
ID:1063907 发表于 2023-3-6 11:35 | 显示全部楼层 |阅读模式
已经在逻辑分析仪看到了正常的温度数据反馈,但是程序读不出来,附上读温度函数,读出高电平

单片机源程序如下:
  1. uint8_t B20_ReadByte(void)
  2. {
  3. uint8_t i,data=0;
  4. for(i=0;i < 8;i++)     //位计数值
  5. {
  6.   data>>=1;      //右移,准备接受新的数据位

  7.   GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPO);

  8.   DS18B20_OUT = 0;//拉低,启动读数据位
  9.   DELAY_US(5);      //等待5微秒
  10.   DS18B20_OUT = 1;  //释放总线
  11.   
  12.   GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPI);         //配置为输入,开始读取数据位
  13.   DELAY_US(12);      //等待5微秒
  14.   if(DS18B20_IN)//该位是否为高
  15.   {
  16.    data|=0x80;     //是就将此位置高
  17.   }
  18.   if(!DS18B20_IN)//该位是否为高
  19.   {
  20.    data&=~0x80;     //是就将此位置高
  21.   }
  22.   DELAY_US(48);     //等待50微秒
  23. }
  24. return data;     //将读到的一个字节返回
  25. }
复制代码

回复

使用道具 举报

ID:384109 发表于 2023-3-6 13:52 | 显示全部楼层
看代码,似乎对数据的时序有误解
回复

使用道具 举报

ID:1065373 发表于 2023-3-6 13:57 | 显示全部楼层
18b20可以读出从9位到12位的不同分辨率的值,需要的时间不一样,从93ms到750ms,你检查一下是否给器件读出数据留出足够的时间。
回复

使用道具 举报

ID:382454 发表于 2023-3-10 09:37 | 显示全部楼层
网上有很多DS18B20的戏动程序呀,很多开发板也有这个代码,你可以找找。人家写的是成功的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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