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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2151|回復: 10
收起左側

單片機DS18B20的上單復位的85℃在不影響功能的前提下怎么去除?

[復制鏈接]
ID:1084388 發表于 2023-6-15 21:49 | 顯示全部樓層 |閱讀模式
PS:如果我將轉化函數和讀溫度函數放在循環里的話(不加上begin的話,可以正常顯示,包括按鍵變化溫度值都能讀出來,只是第一次運行要跳出85℃),但是加上begin的話就只能放在循環外面,在我的認知里,DS18B20應該是轉化一次就可以讀溫度了吧,所以放在外面應該不影響溫度的顯示,但是實際的運行結果卻是只能顯示第一次的結果,如果你按鍵的話,數碼管顯示不出來。
求大佬幫幫忙

單片機源程序如下:
#include <REGX51.H>
#include <intrins.h>
#include "display.h"
#include "delay.h"
sbit DQ=P3^7;


void delay_us(unsigned char i)------------//us級延時(進入函數11us運行延時6us)
{
        while(i--);
}


bit DS18B20chushihua()-------------------//初始化
{
        bit n;
        DQ=1;
        _nop_();
        DQ=0;
        delay_us(80);
        DQ=1;
        delay_us(4);
        n=DQ;
        delay_us(20);
        DQ=1;
        _nop_();
        return n;
}


void writeDS18B20(unsigned char xdat)------------寫時序
{
        unsigned char j;
        for(j=0;j<8;j++)
        {
                DQ=0;
                _nop_();
                DQ=xdat&0x01;
                delay_us(10);
                DQ=1;
                xdat=xdat>>1;
//                _nop_();
        }
//        _nop_();
}


unsigned char readDS18B20()--------------------------//讀時序
{
        unsigned char j,rdat;
        for(j=0;j<8;j++)
        {
                rdat=rdat>>1;
                DQ=0;
                _nop_();
                DQ=1;
                _nop_();
                if(DQ==1)
                rdat=rdat|0x80;
                delay_us(10);
                DQ=1;
                _nop_();
}
        _nop_();
        return rdat;
}


void DS18B20_zhuanhua()----------------溫度轉化函數
{
                        DS18B20chushihua();
                        writeDS18B20(0xcc);
                        writeDS18B20(0x44);
}


unsigned int DS18B20_duwendu()-------------讀溫度
{
                unsigned int L;
                unsigned int H;
                unsigned int temp;


                DS18B20chushihua();
                writeDS18B20(0xcc);
                writeDS18B20(0xbe);
                L=readDS18B20();
                H=readDS18B20();
                H=(H<<8)|L;
                if((H&0xf800)==0xf800)
                        H=!H+1;
                temp=H*0.0625;
        return temp;
}


void main()------------主函數
{      
        unsigned int temp;
      
        DS18B20_zhuanhua();
        begin();------------------------//數碼管初始化----的函數(已延時800ms)
        while(1)
        {
                temp=DS18B20_duwendu();
                display_s(temp);-------------//顯示函數
        }
}      

回復

使用道具 舉報

ID:161164 發表于 2023-6-15 22:10 | 顯示全部樓層
讀到85的時候不顯示就可以了
或第一次讀到85就不顯示
回復

使用道具 舉報

ID:824490 發表于 2023-6-15 22:33 | 顯示全部樓層
連讀3次,取平均值顯示就OK了
回復

使用道具 舉報

ID:1084388 發表于 2023-6-15 22:53 | 顯示全部樓層
lkc8210 發表于 2023-6-15 22:10
讀到85的時候不顯示就可以了
或第一次讀到85就不顯示

你理解錯了,上面說的,只是跟你說我的代碼沒問題而已。我必須要數碼管初始化----,轉化函數必放在外面,但就是為什么顯示不了按鍵后的溫度值,話說while(1)不是一直在讀溫度嗎。
回復

使用道具 舉報

ID:213173 發表于 2023-6-16 06:09 | 顯示全部樓層
菜鳥9 發表于 2023-6-15 22:53
你理解錯了,上面說的,只是跟你說我的代碼沒問題而已。我必須要數碼管初始化----,轉化函數必放在外面, ...

每次讀取溫度值之前都要發一次轉換命令
void main()//------------主函數
{      
        unsigned int temp;
       
        DS18B20_zhuanhua();
        begin();//------------------------//數碼管初始化----的函數(已延時800ms)
        while(1)
        {
                DS18B20_zhuanhua();
                temp=DS18B20_duwendu();
                display_s(temp);//-------------//顯示函數
        }
}
回復

使用道具 舉報

ID:965189 發表于 2023-6-16 07:47 來自手機 | 顯示全部樓層
  begin();------------------------//數碼管初始化----的函數。這個初始化函數有問題
回復

使用道具 舉報

ID:584814 發表于 2023-6-16 08:19 | 顯示全部樓層
自己做的時候除了讀不出時顯示85其他正常。
在論壇上找的例程和自己照貓畫虎的都一樣。
回復

使用道具 舉報

ID:1084388 發表于 2023-6-16 15:42 | 顯示全部樓層
wulin 發表于 2023-6-16 06:09
每次讀取溫度值之前都要發一次轉換命令
void main()//------------主函數
{      

效果出來了,但是為什么要每次都轉化呢,我們老師也說轉化一次就行了呀,能解答一下嗎
回復

使用道具 舉報

ID:213173 發表于 2023-6-16 16:35 | 顯示全部樓層
菜鳥9 發表于 2023-6-16 15:42
效果出來了,但是為什么要每次都轉化呢,我們老師也說轉化一次就行了呀,能解答一下嗎

既然是測溫,就要不斷獲取當前溫度值。當然需要轉換操作。否則讀取的不是當前溫度值。
回復

使用道具 舉報

ID:1084388 發表于 2023-6-16 17:58 | 顯示全部樓層
wulin 發表于 2023-6-16 16:35
既然是測溫,就要不斷獲取當前溫度值。當然需要轉換操作。否則讀取的不是當前溫度值。

好的,謝謝您
回復

使用道具 舉報

ID:1034262 發表于 2023-6-16 21:18 | 顯示全部樓層
上電后多讀幾次但丟棄結果。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内精品一区二区三区 | 第一区在线观看免费国语入口 | 日韩一区二区在线观看 | 亚洲成人黄色 | av性色全交蜜桃成熟时 | aaaa网站 | 国产精品视频在线免费观看 | 成人黄色av网址 | 成人福利电影 | 欧美性受xxx| 另类 综合 日韩 欧美 亚洲 | 亚洲一区亚洲二区 | 国产97在线视频 | 亚洲一区二区三区桃乃木香奈 | 国产精品欧美一区二区三区 | 精品免费| 天天操人人干 | 日本三级电影在线观看视频 | 久久综合久久久 | 日韩三级在线 | 国产日韩欧美中文 | 精品国产一区二区三区久久久四川 | 久久9999久久 | 欧美国产亚洲一区二区 | 色视频网站在线观看 | 日本电影韩国电影免费观看 | 久久人体视频 | 欧美日韩一区二区在线观看 | 国产欧美在线 | 日韩精品国产精品 | 午夜一区二区三区视频 | 日韩精品一区二区三区在线观看 | 中文字幕一区二区三区乱码图片 | 伊人亚洲| 一区二区av | 黑人巨大精品欧美黑白配亚洲 | 黑人巨大精品欧美一区二区免费 | 99精品免费久久久久久久久日本 | 亚洲一二三在线观看 | 91久久 | 秋霞电影一区二区三区 |