OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6133|回复: 9

DS18B20问题,大神们请进

[复制链接]

37

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
836
金钱
836
注册时间
2016-12-22
在线时间
165 小时
发表于 2017-4-5 22:22:31 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 qing8548329 于 2017-4-7 10:32 编辑

自己做了一个板子,我想用DS18B20测温度通过串口发送,在串口调试助手上显示,但是现在什么也发不出来,不知道哪里有问题,因为是自己做的板子,所以IO口换了,我把IO方向设置和IO操作函数,都改成相应的IO口了,但是也不对,不知道哪里有问题,而且用的DS18B20的代码也是资料里面提供的,现在比较迷茫,求大神的帮

实验32 DS18B20数字温度传感器实验 USART2.zip

15.33 MB, 下载次数: 166

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2017-4-6 09:36:03 | 显示全部楼层
用原子的例子改下端口就能用了,DS18B20温度显示正常吗?串口发送数据显示正常吗?把工程放上来看看。
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2017-4-6 11:20:25 | 显示全部楼层
调试一下是18B20出问题还是串口有问题,又或是都有问题
回复

使用道具 举报

37

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
836
金钱
836
注册时间
2016-12-22
在线时间
165 小时
 楼主| 发表于 2017-4-7 10:30:44 | 显示全部楼层
rgzdb 发表于 2017-4-6 09:36
用原子的例子改下端口就能用了,DS18B20温度显示正常吗?串口发送数据显示正常吗?把工程放上来看看。

我就是改的端口,但是DS18B20什么也不采集,在串口调试助手上什么也不显示,都不知道是什么原因,硬件方面应该是没有问题的,我把我改的代码放在下面了
回复

使用道具 举报

1

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
618
金钱
618
注册时间
2015-11-20
在线时间
89 小时
发表于 2017-4-7 11:19:23 | 显示全部楼层
把函数中每个复位后面的应答(检测)函数屏蔽掉看看,就是DS18B20_Check();
回复

使用道具 举报

6

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2016-11-1
在线时间
64 小时
发表于 2017-4-7 13:09:48 | 显示全部楼层
问题要分开一步步分析啊,到底是串口问题,还是18B20的问题,还是你板子硬件的问题,逐个排除了,问题也就解决了
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-7 16:49:57 | 显示全部楼层
本帖最后由 szczyb1314 于 2017-4-7 16:53 编辑

if(USART_RX_STA&0x8000)
                  {
                           len=USART_RX_STA&0X3fff;
                           for(t=0;t<len;t++)
                           {
                                          HAL_UART_Transmit(&UART2_Handler,(uint8_t*)USART_RX_BUF,len,1000);
                              while(__HAL_UART_GET_FLAG(&UART2_Handler,UART_FLAG_TC)!=SET);                //等待发送结束
                             }                        
                       for(i=0;i<50;i++)
                       {                        
                                  temperature=DS18B20_Get_Temp();
                              printf("%fC\r\n",temperature/10);        
                                    USART_RX_STA=0;
                  delay_ms(50);                                                   
                   }
                }        

你的程序是串口先收到数据才开始18b20的采集及发送50次的,建议把你的temperature还是定义成short型,把printf("%fC\r\n",temperature/10);        改为printf("%fC\r\n",temperature/10.0);        
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

37

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
836
金钱
836
注册时间
2016-12-22
在线时间
165 小时
 楼主| 发表于 2017-4-8 14:16:57 | 显示全部楼层
gsndragon 发表于 2017-4-7 11:19
把函数中每个复位后面的应答(检测)函数屏蔽掉看看,就是DS18B20_Check();

应答脉冲注释掉的话,那不就没有应答了吗,那就没有DS18B20了,这样可以吗?
回复

使用道具 举报

37

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
836
金钱
836
注册时间
2016-12-22
在线时间
165 小时
 楼主| 发表于 2017-4-8 14:17:46 | 显示全部楼层
szczyb1314 发表于 2017-4-7 16:49
if(USART_RX_STA&0x8000)
                  {
                           len=USART_RX_STA&0X3fff;

为什么要把temperature定义成short型啊,我不是很理解
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-8 14:28:38 | 显示全部楼层
qing8548329 发表于 2017-4-8 14:17
为什么要把temperature定义成short型啊,我不是很理解

1.DS18B20_Get_Temp(); 这个函数返回值是short型的
2.把printf("%fC\r\n",temperature/10);        改为printf("%fC\r\n",temperature/10.0);  这句话在打印时temperature/10.0强制类型转换为小数了
3.你的温度采集及打印输出代码全是在if(USART_RX_STA&0x8000){}里面。说明你得先收到一个数据才能采集和打印输出,看你用的就是原子的代码,那么收的这个数据必须是0x0d 0x0a结尾的
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 05:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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