⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1

📁 本程序是一个人机接口程序
💻
字号:
		 #include <REG52.H>
#include <intrins.h>

typedef unsigned char byte;

extern void delay_10us(unsigned char n);  //延时10us, 外部函数

sbit Sensor_DQ =P1^5;        //18B20 Sensor_DQ


//复位 18B20
bit DS18B20_Reset(void)
{
    bit ret;
    //EA=0;
    
    Sensor_DQ = 0;         //拉第电平
    delay_10us(50);        //主机发置位脉冲持续5us*100=500 us - 
600 us
    Sensor_DQ = 1;        //主机释放总线控制,DQ口改为输入口
    delay_10us(5);        //DS18B20等待5us*10=50 us - 60 us

    ret = Sensor_DQ;
    delay_10us(6);

    //EA=1;
    return(ret);
}// 1 = 存在, 0 = 不存在

//从 18B20 总线上读取一个字节
byte read_byte(void)
{
    //EA=0;
    byte i;
    byte value = 0;
    for (i=8;i>0;i--){
        Sensor_DQ = 0;    // pull Sensor_DQ low to start timeslot
        _nop_();        //低电平持续2us
        Sensor_DQ = 1;     // then return high
        //等待12us
        value>>=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        if(Sensor_DQ)value|=0x80;    //数据送入A
        delay_10us(5);    //保证读数据持续50-60us
    }
    Sensor_DQ=1;        //拉高数据线
    //EA=1;
    return(value);
}

//向 18B20 总线上写一个字节
void write_byte(byte val)
{
    byte i;
    //EA=0;
    for (i=8; i>0; i--)    // writes byte, one bit at a time
    {
        Sensor_DQ = 1;
        _nop_();_nop_();
        Sensor_DQ = 0;             //DS18B20数据线
拉低,保持4*4=16us
        delay_10us(1);
        //_nop_();_nop_();_nop_();_nop_();
        Sensor_DQ = val&0x01;    //将命令字依次送给DS18B20
        delay_10us(5);             //保证整个写过程
持续 50-60us
        val=val/2;
    }
    delay_10us(5);
    Sensor_DQ=1;        //拉高数据线
    //EA=1;
}

//读取温度
int Read_Temperature(void)
{
  union{
    byte c[2];
    int x;
  }temp;

    DS18B20_Reset();        //复位
    //复位异常
    write_byte(0xCC); //发SKIP ROM命令
    write_byte(0xBE); //发读存储器命令
    temp.c[1]=read_byte();    //读出温度值LOW
    temp.c[0]=read_byte();    //读出温度值High
    DS18B20_Reset();        //复位
    write_byte(0xCC); //发SKIP ROM命令
    write_byte(0x44); //发开始转换温度命令
    return temp.x;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -