欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2677|回復: 3
收起左側

protues單片機數碼管顯示DS18B20,數據一直是00,會不會是延時時間出錯

[復制鏈接]
ID:1027942 發表于 2022-12-4 10:31 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
#include <REGX51.H>
#include "intrins.h"

sbit DQ = P3^0;
uchar i;

int tem;
unsigned char NixieTable[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};


void Nixie(unsigned char location,unsigned char number)
{
        P2 = 0x00;
                switch(location)
        {
                case 1:P2_0 = 1; P2_1 = 0; P2_2 = 0; P2_3 = 0; break;
                case 2:P2_0 = 0; P2_1 = 1; P2_2 = 0; P2_3 = 0; break;
                case 3:P2_0 = 0; P2_1 = 0; P2_2 = 1; P2_3 = 0; break;
                case 4:P2_0 = 0; P2_1 = 0; P2_2 = 0; P2_3 = 1; break;
        }
        P0 = NixieTable[number];
        Delay1ms(10);
}


int        DS18B20_Init(void)
{
        uint Ack;
        DQ = 1;
        Delay1us(10);
        
        DQ = 0;
        Delay1us(480);
        DQ = 1;
        Delay1us(40);
        
        Ack = DQ;
        return Ack;
}

void SendByte(uchar Byte)
{
        DQ=1;
        Delay1us(1);
        for(i=0;i<8;i++)
        {
                DQ=0;
                DQ=Byte&0x01;
                Delay1us(5);
                DQ=1;
                Byte>>=1;
        }
}

uchar RcvByte(void)
{
        uchar Byte;

        DQ=1;
        Delay1us(1);
        for (i=8;i>0;i--)
        {
                DQ=0;
                Byte>>=1;
                DQ=1;
                Delay1us(1);
                if(DQ)
                Byte|=0x80;
                Delay1us(30);
                DQ=1;

        }
        return Byte;
}
float Get_temp(void)
{
        uchar TL, TH;
        int temp;                float T;
        DS18B20_Init();
        SendByte(0xcc);
        SendByte(0x44);
        Delay1us(5);
                DS18B20_Init();
                SendByte(0xcc);
                SendByte(0x44);
                SendByte(0xBE);
        TL = RcvByte();
        TH = RcvByte();
        temp = (TH << 8) | TL;
        T = temp * 0.0625;
        return T;
        
}


void main()
{
        
        while(1)
        {               
                tem = (int)Get_temp();
                Nixie(1,tem/10);
                Nixie(2,tem%10);
        }
        
}


屏幕截圖 2022-12-04 102858.png
回復

使用道具 舉報

ID:96682 發表于 2022-12-4 16:03 | 顯示全部樓層
撇開程序不說單單溫度探頭復位電路都有點問題
回復

使用道具 舉報

ID:1027942 發表于 2022-12-4 18:48 | 顯示全部樓層
已經改了,溫度 是需要把那個電阻刪除嗎
回復

使用道具 舉報

ID:584814 發表于 2022-12-5 14:55 | 顯示全部樓層
會不會是延時時間出錯 ? 試試就知道了哈
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表