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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1725|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

這個(gè)單片機(jī)DS18B20時(shí)序是什么問(wèn)題啊,延時(shí)怎么改啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1058641 發(fā)表于 2023-3-17 20:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)大佬們看一下

/*
  單片機(jī)程序說(shuō)明: 單總線驅(qū)動(dòng)程序
  軟件環(huán)境: Keil uVision 4.10
  硬件環(huán)境: CT107單片機(jī)綜合實(shí)訓(xùn)平臺(tái)(外部晶振12MHz) STC89C52RC單片機(jī)
  日    期: 2011-8-9
*/
#include "reg52.h"

sbit DQ = P1^4;  //單總線接口

//單總線延時(shí)函數(shù)
void Delay_OneWire(unsigned int t)  //STC89C52RC
{
        while(t--);
}

//通過(guò)單總線向DS18B20寫一個(gè)字節(jié)
void Write_DS18B20(unsigned char dat)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                DQ = 0;
                DQ = dat&0x01;
                Delay_OneWire(5);
                DQ = 1;
                dat >>= 1;
        }
        Delay_OneWire(5);
}

//從DS18B20讀取一個(gè)字節(jié)
unsigned char Read_DS18B20(void)
{
        unsigned char i;
        unsigned char dat;

        for(i=0;i<8;i++)
        {
                DQ = 0;
                dat >>= 1;
                DQ = 1;
                if(DQ)
                {
                        dat |= 0x80;
                }            
        Delay_OneWire(5);
        }
        return dat;
}

//DS18B20設(shè)備初始化
bit init_ds18b20(void)
{
          bit initflag = 0;

          DQ = 1;
          Delay_OneWire(100);
          DQ = 0;
          Delay_OneWire(80);
          DQ = 1;
          Delay_OneWire(100);
    initflag = DQ;     
          Delay_OneWire(5);

          return initflag;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155507 發(fā)表于 2023-3-18 12:17 | 只看該作者
改成這樣試試

//DS18B20設(shè)備初始化
bit init_ds18b20(void)
{
          bit initflag = 0;

          DQ = 1;                //DQ復(fù)位
          Delay_OneWire(8); //稍做延時(shí)
          DQ = 0;             //單片機(jī)將DQ拉低
          Delay_OneWire(80);   //精確延時(shí),大于480us~960us
          DQ = 1;                    //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低
          Delay_OneWire(15);
          initflag = DQ;            //稍做延時(shí)后,如果initflag=0則初始化成功,initflag=1則初始化失敗
          Delay_OneWire(20);

          return initflag;
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:1058641 發(fā)表于 2023-3-18 12:25 | 只看該作者
angmall 發(fā)表于 2023-3-18 12:17
改成這樣試試

//DS18B20設(shè)備初始化

好的,我試試
回復(fù)

使用道具 舉報(bào)

地板
ID:1058641 發(fā)表于 2023-3-18 12:29 | 只看該作者
angmall 發(fā)表于 2023-3-18 12:17
改成這樣試試

//DS18B20設(shè)備初始化

不行溫度還是不變
回復(fù)

使用道具 舉報(bào)

5#
ID:155507 發(fā)表于 2023-3-18 14:13 | 只看該作者
你把你的代碼完整地貼上來(lái)看看
回復(fù)

使用道具 舉報(bào)

6#
ID:1058641 發(fā)表于 2023-3-18 15:08 | 只看該作者
#include "reg52.h"
#include "onewire.h"

unsigned char code SMGdaima[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsigned char code distab[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

unsigned char temp=0x0000;

void Select573(unsigned int n)
{
        switch(n)
        {
                case 5: P2=(0x1f & P2) | 0xa0;break;
                case 6: P2=(0x1f & P2) | 0xc0;break;
                case 7: P2=(0x1f & P2) | 0xe0;break;
        }
}

void delay(unsigned char t)
{
        while(t--);               
}

void displySMG_bit(unsigned char pos,unsigned char value)
{
        Select573(6);
        P0=0x01<<pos;
        Select573(7);
        P0=value;       
}

void displySMG_temp()
{
        displySMG_bit(7,SMGdaima[temp%10]);
        delay(500);
        displySMG_bit(6,distab[temp%100/10]);
        delay(500);
        displySMG_bit(5,SMGdaima[temp/100]);
        delay(500);
        displySMG_bit(4,SMGdaima[10]);
        delay(500);
        displySMG_bit(3,SMGdaima[10]);
        delay(500);
        displySMG_bit(2,SMGdaima[10]);
        delay(500);
        displySMG_bit(1,SMGdaima[10]);
        delay(500);
        displySMG_bit(0,SMGdaima[10]);
        delay(500);       
}

void delay1(unsigned char t)
{
        while(t--);
}

void readtemp()
{
        unsigned char LSB,MSB;
        init_ds18b20();
        Write_DS18B20(0xcc);
        Write_DS18B20(0x44);

        delay1(1000);
        init_ds18b20();

        Write_DS18B20(0xcc);
        Write_DS18B20(0xbe);

        LSB=Read_DS18B20();
        MSB=Read_DS18B20();

        temp=MSB;
        temp=(temp<<8)|LSB;

        if(temp & 0xfe00 == 0x0000)
        {
                temp>>=4;
                temp=temp*10;
                temp=temp+(LSB&0x0f)*0.625;
                       
        }
}

void init_buzz()
{
        Select573(5);
        P0=0x00;       
}

void main()
{
        init_buzz();
        while(1)
        {
                readtemp();
                displySMG_temp();               
        }
}
回復(fù)

使用道具 舉報(bào)

7#
ID:1034262 發(fā)表于 2023-3-18 17:01 | 只看該作者
照著手冊(cè)里的時(shí)序?qū)懀静ㄆ髋浜峡磿r(shí)序。
回復(fù)

使用道具 舉報(bào)

8#
ID:1058641 發(fā)表于 2023-3-18 21:31 | 只看該作者
具體怎么操作呢
回復(fù)

使用道具 舉報(bào)

9#
ID:1058641 發(fā)表于 2023-3-19 10:47 | 只看該作者
解決了,是十二分頻的問(wèn)題
回復(fù)

使用道具 舉報(bào)

10#
ID:1088441 發(fā)表于 2023-7-27 11:08 | 只看該作者
你這是在弄藍(lán)橋杯嗎,如果是的話不建議程序里用延時(shí)函數(shù)噢,很容易出現(xiàn)時(shí)序問(wèn)題的,可以用定時(shí)器中斷來(lái)代替延時(shí)。然后它給的DS18B20的庫(kù)函數(shù)里的時(shí)序也是有問(wèn)題的,是用的51的時(shí)序。
回復(fù)

使用道具 舉報(bào)

11#
ID:382454 發(fā)表于 2023-7-28 11:50 | 只看該作者
精確延時(shí),用官方STC的軟件來(lái)生成。DS18B20的代碼網(wǎng)上很多,最好是用開發(fā)板正常的代碼,來(lái)學(xué)習(xí),之后再一點(diǎn)點(diǎn)改。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品无码一区二区三区 | 亚洲www啪成人一区二区 | 成在线人视频免费视频 | 国产成人精品久久二区二区91 | 久久久久久综合 | 国产成人在线视频免费观看 | 欧美激情在线一区二区三区 | 欧美日韩国产一区二区三区不卡 | 欧美一级二级在线观看 | 日韩一二区 | 桃花av在线 | 羞羞网站免费 | 狠狠干综合视频 | 亚洲免费网址 | 亚洲一区二区日韩 | 激情视频一区 | 国产成人精品一区二区三区视频 | 欧美日韩在线播放 | 午夜影视 | 亚洲精品视频一区 | 伊人手机在线视频 | 久久人人网 | 国产成人精品一区二区三区视频 | 欧美日韩在线视频一区 | 国产95在线 | 欧美国产免费 | 亚洲成年人免费网站 | 国产精品久久久免费 | 国产91色在线 | 亚洲 | 日本高清视频在线播放 | 国产精品爱久久久久久久 | 欧美在线视频一区 | 中文字幕啪啪 | 毛片站| 国产午夜影院 | 亚洲精品第一 | 超碰97人人人人人蜜桃 | 亚洲男人天堂av | 国产精品观看 | 国产精久久久久久久妇剪断 | 亚洲久久 |