DS18B20问题,大神们请进

2019-07-20 15:31发布

本帖最后由 qing8548329 于 2017-4-7 10:32 编辑

自己做了一个板子,我想用DS18B20测温度通过串口发送,在串口调试助手上显示,但是现在什么也发不出来,不知道哪里有问题,因为是自己做的板子,所以IO口换了,我把IO方向设置和IO操作函数,都改成相应的IO口了,但是也不对,不知道哪里有问题,而且用的DS18B20的代码也是资料里面提供的,现在比较迷茫,求大神的帮
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
rgzdb
1楼-- · 2019-07-20 19:47
调试一下是18B20出问题还是串口有问题,又或是都有问题
Da Wen
2楼-- · 2019-07-21 01:12
rgzdb 发表于 2017-4-6 09:36
用原子的例子改下端口就能用了,DS18B20温度显示正常吗?串口发送数据显示正常吗?把工程放上来看看。

我就是改的端口,但是DS18B20什么也不采集,在串口调试助手上什么也不显示,都不知道是什么原因,硬件方面应该是没有问题的,我把我改的代码放在下面了
qing8548329
3楼-- · 2019-07-21 04:29
 精彩回答 2  元偷偷看……
gsndragon
4楼-- · 2019-07-21 06:24
 精彩回答 2  元偷偷看……
fankai
5楼-- · 2019-07-21 06:58
本帖最后由 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 ",temperature/10);        
                                    USART_RX_STA=0;
                  delay_ms(50);                                                   
                   }
                }        

你的程序是串口先收到数据才开始18b20的采集及发送50次的,建议把你的temperature还是定义成short型,把printf("%fC ",temperature/10);        改为printf("%fC ",temperature/10.0);        
szczyb1314
6楼-- · 2019-07-21 09:02
 精彩回答 2  元偷偷看……

一周热门 更多>