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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2930|回復: 4
收起左側

單片機高效率代碼讀取18B20 顯示在LCD1602上

[復制鏈接]
ID:529657 發表于 2020-8-5 21:02 | 顯示全部樓層 |閱讀模式
#include <STC89C5xRC.H>
#include <intrins.h>

sbit DATA_IO = P3^2;


/* 軟件延時函數,延時時間(t*10)us */
void DelayX10us(unsigned char t)
{
    do {
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
    } while (--t);
}

bit GetACK()
{
        bit ack;
        EA = 0;
        DATA_IO = 0;
        DelayX10us(60);
        DATA_IO = 1;
        DelayX10us(6);
        ack = DATA_IO;
        while(!DATA_IO);
        EA = 1;
        return ack;
}

void DS18B20_Write(unsigned char dat)
{
        unsigned char mask;
        EA = 0;
        for(mask=0x01;mask!=0;mask<<=1)
        {
                DATA_IO = 0;
                _nop_();
                _nop_();
                if((dat&mask)!= 0)
                        DATA_IO = 1;
                else
                        DATA_IO = 0;
                DelayX10us(6);
                DATA_IO = 1;
        }
        EA = 1;
}
unsigned char DS18B20_Read()
{
        unsigned char dat;
        unsigned char mask;
        EA = 0;
        for(mask=0x01;mask!=0;mask<<=1)
        {
                DATA_IO = 0;
                _nop_();
                _nop_();
                DATA_IO = 1;
                _nop_();
                _nop_();
                if(!DATA_IO)
                        dat &= ~(mask);
                else
                        dat |= mask;
                DelayX10us(6);
        }
        EA = 1;
        return dat;
}

bit DS18B20_Start()
{
        bit ack;
        ack = GetACK();
        if(ack == 0)
        {
                DS18B20_Write(0xCC);
                DS18B20_Write(0x44);
        }
        return ~ack;
}

bit GetTemp(int *temp)
{
        bit ack;
        unsigned char LSB,MSB;
        ack = GetACK();
        if(ack==0)
        {
                DS18B20_Write(0xCC);
                DS18B20_Write(0xBE);
                LSB = DS18B20_Read();
                MSB = DS18B20_Read();
        }
        *temp = ((int)MSB<<8) + LSB;
        return ~ack;
}

IMG_3558.JPG

18B20.zip

60.46 KB, 下載次數: 21, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:810174 發表于 2020-8-11 23:02 來自觸屏版 | 顯示全部樓層
沒有注釋的程序,無論程序寫得怎么樣,都不能稱為合格的程序
回復

使用道具 舉報

ID:468878 發表于 2020-8-13 14:53 | 顯示全部樓層
19011250 發表于 2020-8-11 23:02
沒有注釋的程序,無論程序寫得怎么樣,都不能稱為合格的程序

哈哈,我剛還看了好一會,你這么一說,我才發現這個問題。算了,不看了。
回復

使用道具 舉報

ID:981034 發表于 2021-11-17 15:21 | 顯示全部樓層
是,有些不明白
回復

使用道具 舉報

ID:906597 發表于 2021-11-19 15:19 | 顯示全部樓層
19011250 發表于 2020-8-11 23:02
沒有注釋的程序,無論程序寫得怎么樣,都不能稱為合格的程序

哈哈有道理
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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