找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:529657 發(fā)表于 2020-8-5 21:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <STC89C5xRC.H>
#include <intrins.h>

sbit DATA_IO = P3^2;


/* 軟件延時函數(shù),延時時間(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 (2.46 MB, 下載次數(shù): 44)

IMG_3558.JPG

18B20.zip

60.46 KB, 下載次數(shù): 21, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發(fā)
ID:810174 發(fā)表于 2020-8-11 23:02 來自觸屏版 | 只看該作者
沒有注釋的程序,無論程序?qū)懙迷趺礃,都不能稱為合格的程序
回復(fù)

使用道具 舉報

板凳
ID:468878 發(fā)表于 2020-8-13 14:53 | 只看該作者
19011250 發(fā)表于 2020-8-11 23:02
沒有注釋的程序,無論程序?qū)懙迷趺礃樱疾荒芊Q為合格的程序

哈哈,我剛還看了好一會,你這么一說,我才發(fā)現(xiàn)這個問題。算了,不看了。
回復(fù)

使用道具 舉報

地板
ID:981034 發(fā)表于 2021-11-17 15:21 | 只看該作者
是,有些不明白
回復(fù)

使用道具 舉報

5#
ID:906597 發(fā)表于 2021-11-19 15:19 | 只看該作者
19011250 發(fā)表于 2020-8-11 23:02
沒有注釋的程序,無論程序?qū)懙迷趺礃,都不能稱為合格的程序

哈哈有道理
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表