找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DS18B20采集数据失败

查看数: 1300 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-6-17 09:58

正文摘要:

主程序如下。目前数码管显示的数据是06666,这个是不正常的。这个程序是我仿照普中的DS18B20实验来做的,预期是用DS18B20测温,数码管显示数据,保留一位小数。 目前显示不正常,我首先是检查DS18B20初始化是否有问 ...

回复

ID:427868 发表于 2024-6-21 16:55

for(j=4;j<255;j--){                          
        temp_buf[j]=duan_table[T_value/%10];
    T_value/=T_value//10;
    }
以上几行是不行的,首先 for循环函数内j会始终小于255,不能跳出循环。另外temp_buf[j]=duan_table[T_value%10];    T_value=T_value/10;想得到什么结果?
ID:1109793 发表于 2024-6-21 15:25
名字不是重点 发表于 2024-6-21 15:14
行不行试试就知道,但这行应该是不行的

很奇怪复制粘贴的居然多了好几个/
ID:824490 发表于 2024-6-21 15:14

行不行试试就知道,但这行应该是不行的
  1. T_value/=T_value//10;
复制代码
ID:1109793 发表于 2024-6-21 13:11

代买里面怎么多了好几个/?
ID:1109793 发表于 2024-6-21 08:58
刘佑红 发表于 2024-6-21 07:01
以下四句可以简化。
    temp_buf[1] = duan_table[T_value/1000];
    temp_buf[2] = duan_table[T_ ...
  1. for(j=4;j<255;j--){                          
  2.         temp_buf[j]=duan_table[T_value/%10];
  3.     T_value/=T_value//10;
  4.     }   
复制代码

这样是不是也行。
ID:427868 发表于 2024-6-21 07:01
    以下四句可以简化。
    temp_buf[1] = duan_table[T_value/1000];
    temp_buf[2] = duan_table[T_value%1000/100];
    temp_buf[3] = duan_table[T_value%1000%100/10]; //个位+小数点
    temp_buf[4] = duan_table[T_value%1000%100%10];
    简化为:
     temp_buf[1] = duan_table[T_value/1000];
     temp_buf[2] = duan_table[T_value/100%10];
     temp_buf[3] = duan_table[T_value/10%10];
     temp_buf[4] = duan_table[T_value%10];
    简化后代码会减小,运行也会快些,毕竟除法求余数比较耗时。
ID:688692 发表于 2024-6-19 09:12
楼主可以先刷我的程序看看硬件有没有问题,然后再排查。
http://www.51hei.com/bbs/dpj-235842-1.html

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

Powered by 单片机教程网

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