˜Ë(bi¨¡o)î}: †ÎƬ™C(j¨©)¸ßЧÂÊ´ú´a×xÈ¡18B20 ï@ʾÔÚLCD1602ÉÏ [´òÓ¡±¾í“]

×÷Õß: GL510171877    •rég: 2020-8-5 21:02
˜Ë(bi¨¡o)î}: †ÎƬ™C(j¨©)¸ßЧÂÊ´ú´a×xÈ¡18B20 ï@ʾÔÚLCD1602ÉÏ
#include <STC89C5xRC.H>
#include <intrins.h>

sbit DATA_IO = P3^2;


/* Ü›¼þÑÓ•rº¯”µ(sh¨´)£¬ÑÓ•r•rég(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, ÏÂÝd´Î”µ(sh¨´): 44)

IMG_3558.JPG

18B20.zip

60.46 KB, ÏÂÝd´Î”µ(sh¨´): 21, ÏÂÝd·e·Ö: ºÚŽÅ -5


×÷Õß: 19011250    •rég: 2020-8-11 23:02
›]ÓÐעጵijÌÐò£¬ŸoÕ“³ÌÐò?q¨±)‘µÃÔõô˜Ó£¬¶¼²»ÄÜ·QžéºÏ¸ñµÄ³ÌÐò
×÷Õß: rsx9583    •rég: 2020-8-13 14:53
19011250 °l(f¨¡)±íÓÚ 2020-8-11 23:02
›]ÓÐעጵijÌÐò£¬ŸoÕ“³ÌÐò?q¨±)‘µÃÔõô˜Ó£¬¶¼²»ÄÜ·QžéºÏ¸ñµÄ³ÌÐò

¹þ¹þ£¬ÎÒ„‚߀¿´Á˺ÃÒ»•þ£¬Äãß@ôһÕf£¬ÎҲŰl(f¨¡)¬F(xi¨¤n)ß@‚€†–î}¡£ËãÁË£¬²»¿´ÁË¡£
×÷Õß: HAPPY3    •rég: 2021-11-17 15:21
ÊÇ,ÓÐЩ²»Ã÷°×
×÷Õß: С„¢Òª¼ÓÓÍ    •rég: 2021-11-19 15:19
19011250 °l(f¨¡)±íÓÚ 2020-8-11 23:02
›]ÓÐעጵijÌÐò£¬ŸoÕ“³ÌÐò?q¨±)‘µÃÔõô˜Ó£¬¶¼²»ÄÜ·QžéºÏ¸ñµÄ³ÌÐò

¹þ¹þÓеÀÀí





šgÓ­¹âÅR (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1