找回密码
 立即注册
查看: 74|回复: 6

调例程ADC的18b20遇到的问题,

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-07-31 16:55:37
已绑定手机

129

主题

415

回帖

611

积分

高级会员

积分
611
发表于 2025-7-22 10:52:30 | 显示全部楼层 |阅读模式
ADC_COMMAND是什么?


答案:
ADC_COMMAND是需要定义的,
添加这句,可以解决问题,


#define ADC_COMMAND 0x01  // 假设这是启动 ADC 的命令值


但是18b20的温度读取不出来,

于是,task.c中恢复:


                {0, 800, 800,    DS18B20_ReadTemp}, //温度读取

并在,main.c中,


        SEG_Show_U32(DS18B20_ReadTemp);显示温度值

遇到问题,数码管显示温度数值是16716835,
而且手摸18b20不变化,
已经短接J10,

实验箱v1.2



回复

使用道具 举报 送花

3

主题

247

回帖

-795

积分

等待验证会员

积分
-795
发表于 2025-7-22 10:53:00 | 显示全部楼层
根据您提供的信息,关于调用ADC的18B20遇到的问题,现对相关问题进行专业分析与解答:

首先,关于ADCCOMMAND定义的问题:  
ADCCOMMAND是一个由开发者自行定义的常量,用于标识启动ADC转换的命令字。其具体数值取决于所使用的MCU型号及其ADC模块的通信协议。例如,在部分系统中,ADCCOMMAND可能被设置为0x01以表示启动ADC转换。因此,您在代码中添加如下定义是合理的:
  1. c
  2. define ADCCOMMAND 0x01  // 假设这是启动 ADC 的命令值
复制代码

但需要注意的是,该命令是否适用于当前硬件平台及ADC驱动逻辑,需参考具体的MCU手册或开发文档确认。

其次,关于DS18B20温度读取失败的问题:  
您提到在任务函数中调用了DS18B20ReadTemp,并尝试通过SEGShowU32(DS18B20ReadTemp)显示温度值,但数码管显示的数值为“16716835”,且手触传感器无变化,这表明存在以下可能问题:

1. DS18B20未正确初始化或通信失败  
   DS18B20是一种单线数字温度传感器,其通信依赖于精确的时序控制。若未正确初始化或未实现正确的通信协议(如发送复位脉冲、匹配ROM、读写数据等),可能导致无法获取有效温度值。

2. 引脚连接或电源问题  
   您提到已短接J10,但需确保DS18B20的VDD引脚供电正常,且DQ引脚与MCU的IO口正确连接,并且有上拉电阻(通常为4.7kΩ)。

3. 读取函数实现不完整或错误  
   DS18B20ReadTemp函数需要实现完整的读取流程,包括:
发送复位信号
发送匹配ROM命令(如0x55)
发送读取温度命令(如0xBE)
读取温度寄存器的两个字节
将读取到的数据转换为实际温度值

   若上述步骤缺失或实现有误,将导致返回无效数据。

4. 数码管显示逻辑问题  
   数码管显示的数值为“16716835”明显不符合DS18B20的温度范围(-55℃至+125℃),说明读取到的数值可能是未处理的原始寄存器值,或存在数据解析错误。

建议排查步骤:
检查DS18B20的物理连接,确保VDD、GND、DQ正确接入。
使用示波器或逻辑分析仪观察DQ引脚的波形,确认通信是否正常。
在DS18B20ReadTemp中加入调试输出,打印读取到的原始数据,确认是否为有效值。
确保温度数据转换逻辑正确,例如:
  
  ```c
  int16t temp = (data[1]

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:479
  • 最近打卡:2025-07-31 08:56:35
已绑定手机

44

主题

2129

回帖

7413

积分

论坛元老

积分
7413
发表于 2025-7-23 09:07:07 | 显示全部楼层
建议用官方AI8051U实验箱例程包里面的例子进行测试:39-一线制温度传感器 DS18B20 测温-IO模拟
下载地址:https://www.stcai.com/syx
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-07-31 16:55:37
已绑定手机

129

主题

415

回帖

611

积分

高级会员

积分
611
发表于 2025-7-23 17:32:02 | 显示全部楼层
乘风*** 发表于 2025-7-23 09:07
建议用官方AI8051U实验箱例程包里面的例子进行测试:39-一线制温度传感器 DS18B20 测温-IO模拟
下载地址:h ...



例程编译不报错,烧录进去,没有数码管显示和串口打印,不知道原因,39例程。实验箱v1.2只有电源指示灯亮。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-07-31 16:55:37
已绑定手机

129

主题

415

回帖

611

积分

高级会员

积分
611
发表于 2025-7-23 17:34:35 | 显示全部楼层
乘风*** 发表于 2025-7-23 09:07
建议用官方AI8051U实验箱例程包里面的例子进行测试:39-一线制温度传感器 DS18B20 测温-IO模拟
下载地址:h ...

截图202507231733441444.jpg

烧录后,只有电源灯亮,没有串口打印和数码管显示。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:479
  • 最近打卡:2025-07-31 08:56:35
已绑定手机

44

主题

2129

回帖

7413

积分

论坛元老

积分
7413
发表于 2025-7-23 18:29:43 | 显示全部楼层
香河英*** 发表于 2025-7-23 17:34
烧录后,只有电源灯亮,没有串口打印和数码管显示。

例程默认IRC频率24M,短接J10,就这两点。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-07-31 16:55:37
已绑定手机

129

主题

415

回帖

611

积分

高级会员

积分
611
发表于 2025-7-24 10:20:14 | 显示全部楼层
乘风*** 发表于 2025-7-23 18:29
例程默认IRC频率24M,短接J10,就这两点。

烧录频率40兆,烧录进去了,短接了J10,我再试试,
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 01:54 , Processed in 0.145578 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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