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

標題: 單片機DS18B20的上單復位的85℃在不影響功能的前提下怎么去除? [打印本頁]

作者: 菜鳥9    時間: 2023-6-15 21:49
標題: 單片機DS18B20的上單復位的85℃在不影響功能的前提下怎么去除?
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);-------------//顯示函數
        }
}      


作者: lkc8210    時間: 2023-6-15 22:10
讀到85的時候不顯示就可以了
或第一次讀到85就不顯示
作者: 名字不是重點    時間: 2023-6-15 22:33
連讀3次,取平均值顯示就OK了
作者: 菜鳥9    時間: 2023-6-15 22:53
lkc8210 發表于 2023-6-15 22:10
讀到85的時候不顯示就可以了
或第一次讀到85就不顯示

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

作者: wulin    時間: 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);//-------------//顯示函數
        }
}
作者: 君工創    時間: 2023-6-16 07:47
  begin();------------------------//數碼管初始化----的函數。這個初始化函數有問題
作者: man1234567    時間: 2023-6-16 08:19
自己做的時候除了讀不出時顯示85其他正常。
在論壇上找的例程和自己照貓畫虎的都一樣。
作者: 菜鳥9    時間: 2023-6-16 15:42
wulin 發表于 2023-6-16 06:09
每次讀取溫度值之前都要發一次轉換命令
void main()//------------主函數
{      

效果出來了,但是為什么要每次都轉化呢,我們老師也說轉化一次就行了呀,能解答一下嗎
作者: wulin    時間: 2023-6-16 16:35
菜鳥9 發表于 2023-6-16 15:42
效果出來了,但是為什么要每次都轉化呢,我們老師也說轉化一次就行了呀,能解答一下嗎

既然是測溫,就要不斷獲取當前溫度值。當然需要轉換操作。否則讀取的不是當前溫度值。
作者: 菜鳥9    時間: 2023-6-16 17:58
wulin 發表于 2023-6-16 16:35
既然是測溫,就要不斷獲取當前溫度值。當然需要轉換操作。否則讀取的不是當前溫度值。

好的,謝謝您
作者: coody_sz    時間: 2023-6-16 21:18
上電后多讀幾次但丟棄結果。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩欧美网 | 自拍视频网| 在线看av网址 | 天堂视频中文在线 | 欧美www在线 | 国产精品福利视频 | 精品无码三级在线观看视频 | 99久久婷婷国产综合精品电影 | 日韩一区二区三区在线观看视频 | 九九导航| 免费能直接在线观看黄的视频 | 精品一区二区在线观看 | 天天操网| 成人免费视频在线观看 | 亚洲草草视频 | 黑色丝袜三级在线播放 | 在线视频第一页 | 欧美一区二区三区四区五区无卡码 | 超碰在线人 | 日韩精品一区二区三区视频播放 | 先锋影音资源网站 | 成人九色 | 免费的一级视频 | 中文字幕在线播放第一页 | av手机在线播放 | 久久只有精品 | 性一交一乱一伦视频免费观看 | 成人欧美一区二区三区视频xxx | 成人a免费 | 国产一区高清 | 国产最新网址 | 美女国产 | 在线观看成年人视频 | 久久久久国 | 久久久久久亚洲 | 拍拍无遮挡人做人爱视频免费观看 | 一级aaaaaa毛片免费同男同女 | 日日夜夜免费精品 | 涩爱av一区二区三区 | 日本黄色免费大片 | 一区二区三区视频在线 |