久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1032|回復: 7
收起左側

DS18B20采集數據失敗

[復制鏈接]
ID:1061677 發表于 2024-6-17 09:58 | 顯示全部樓層 |閱讀模式
主程序如下。目前數碼管顯示的數據是06666,這個是不正常的。這個程序是我仿照普中的DS18B20實驗來做的,預期是用DS18B20測溫,數碼管顯示數據,保留一位小數。
目前顯示不正常,我首先是檢查DS18B20初始化是否有問題,所以我加了一個指示燈,發現初始化是沒有問題的。
所以說現在讓我疑惑的有兩點,第一點就是T_value = DS18B20_Read_T()*10;//保留一位小數,
我覺得問題是出現在這里,因為這里
/*
                if(T_value < 0)
                {
                        T_value = - T_value;
                        temp_buf[0] = 0x40; //-
                }
                else
                {
                        temp_buf[0] = 0x00; //不顯示
                }
                */
我無論加不加注釋,數碼管要點亮的首位總是顯示0。我不知道為什么會這樣。
第二點是這一句temp_buf[3] = duan_table[T_value%1000%100/10]; //個位+小數點,加個小數點的話應該寫成temp_buf[3] = duan_table[T_value%1000%100/10] | 0x80;(用的是共陰極數碼管),但是這樣寫的話,這一位完全不亮。
我非常疑惑,懇請諸位大神指點迷津。

#include <REGX51.H>
#include "Delay.h"
#include <intrins.h>
#include "Smg.h"
#include "DS18B20.H"
#include "LED.h"
extern duan_table[];
void main(void)
{
        uchar i = 0;
        int T_value;
        uchar temp_buf[5];
        uint DS18B20_OK = 0;
       
        DS18B20_OK = DS18B20_Init();//DS18B20初始化
        if(DS18B20_OK)
                LED_OFF();
        else
                LED_ON();
        while(1)
        {
                i++;
                if(i%50 == 0) //每隔一段時間讀取溫度值,間隔時間要大于溫度傳感器轉換時間
                        T_value = DS18B20_Read_T()*10;//保留一位小數
                /*
                if(T_value < 0)
                {
                        T_value = - T_value;
                        temp_buf[0] = 0x40; //-
                }
                else
                {
                        temp_buf[0] = 0x00; //不顯示
                }
                */
                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];
                smg_display(temp_buf, 4);

        }
}


51hei圖片_20240617095054.jpg

04_51_DS18B20_V1.0.1.zip

78.33 KB, 下載次數: 0

20-DS18B20溫度傳感器實驗.zip

22.56 KB, 下載次數: 1

回復

使用道具 舉報

ID:688692 發表于 2024-6-19 09:12 | 顯示全部樓層
樓主可以先刷我的程序看看硬件有沒有問題,然后再排查。
http://www.zg4o1577.cn/bbs/dpj-235842-1.html
回復

使用道具 舉報

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: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:1109793 發表于 2024-6-21 13:11 | 顯示全部樓層
xiaobendan001 發表于 2024-6-21 08:58
這樣是不是也行。

代買里面怎么多了好幾個/?
回復

使用道具 舉報

ID:824490 發表于 2024-6-21 15:14 | 顯示全部樓層
xiaobendan001 發表于 2024-6-21 08:58
這樣是不是也行。

行不行試試就知道,但這行應該是不行的
  1. T_value/=T_value//10;
復制代碼
回復

使用道具 舉報

ID:1109793 發表于 2024-6-21 15:25 | 顯示全部樓層
名字不是重點 發表于 2024-6-21 15:14
行不行試試就知道,但這行應該是不行的

很奇怪復制粘貼的居然多了好幾個/
回復

使用道具 舉報

ID:427868 發表于 2024-6-21 16:55 | 顯示全部樓層
xiaobendan001 發表于 2024-6-21 08:58
這樣是不是也行。

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;想得到什么結果?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久国产精品视频 | 久久精品国产久精国产 | 亚洲一区中文字幕 | 久久久精品网 | 一区二区在线免费观看视频 | 亚洲精品在线看 | 91丨九色丨国产在线 | 亚洲高清在线免费观看 | 成人国产精品色哟哟 | 欧美一级毛片久久99精品蜜桃 | 欧美精品一区在线 | 久久久99国产精品免费 | 一级片免费在线观看 | 欧美久久久 | 激情五月婷婷丁香 | 国产精品久久久久9999鸭 | www.日韩欧美 | 亚洲精品久久久久久国产精华液 | 日韩欧美国产不卡 | 国产午夜精品一区二区 | 日韩伦理电影免费在线观看 | 欧美性一区二区三区 | 色综合久久伊人 | 精品国产视频 | 99久久久无码国产精品 | 一区二区不卡视频 | 久久精品女人天堂av | 黄色成人免费在线观看 | 天天看逼 | 日韩美av | 韩日在线| 国产精品theporn | 久久综合久久久 | 天天天操操操 | 欧美日韩免费在线 | 日日夜夜精品免费视频 | 91精品久久久久久久 | 国产1区2区3区 | 超碰免费在线观看 | 亚洲综合色丁香婷婷六月图片 | 老牛嫩草一区二区三区av |