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

📄 ds18b20.h~

📁 基于ds18b20的温湿度检测程序。有液晶程序还有传感器的程序
💻 H~
字号:
#define DQ_OUT PORTC.3
#define DQ_RD PINC.3

#define READ_PAD 0xbe
#define CONVERT 0x44
#define SKIP_ROM 0xcc

unsigned char wht1_init(void) //自定义w1初始化
{
        unsigned char presence=1;
        DQ_OUT=1;
        DQ_OUT=0; //pull DQ line low
        delay_us(500); // leave it low for 480-960us
        DQ_OUT=1; // allow line to return high
        delay_us(80); // wait for presence 15-60us
        if(DQ_RD==1)
        	presence=0; // get presence signal
        delay_us(500); 
        return(presence); // presence signal returned

}
 
//从 1-wire 总线上读取一个字节
unsigned char wht1_read(void)
{
        unsigned char i;                     
        unsigned char value = 0;
        for (i=8;i>0;i--)
                {
                value>>=1;
                DQ_OUT=1;
                DQ_OUT=0; // pull DQ low to start timeslot
                DQ_OUT=1; // then return high
                delay_us(10);
                if(DQ_RD) value|=0x80;
                delay_us(80); // wait for rest of timeslot
                }
        return(value);
}

//从 1-wire 总线上写一个字节
void wht1_write(unsigned char val)
{      
        unsigned char i;
        for (i=0; i<8; i++) // writes byte, one bit at a time
                {
                DQ_OUT=1;
                delay_us(1);
                DQ_OUT=0; // pull DQ low to start timeslot
                delay_us(10); 
                DQ_OUT=(val&0x01);
                delay_us(80);  // hold value for remainder of timeslot
                DQ_OUT=1;
                val>>=1;
                }
        delay_us(1); 
}

//从 1-wire 总线上读取温度值
int Read_Temperature(void)
{      
      	int temp=0;
       	unsigned char t[2];
       	wht1_init();
        wht1_write(SKIP_ROM);
   	wht1_write(READ_PAD);
   	t[0]=wht1_read();
   	t[1]=wht1_read();
   	temp=t[1];
   	temp<<=8;
   	temp+=t[0];
       
	return(temp);
}

//温度转换
void temp_convert(void)
{
	wht1_init();
	wht1_write(SKIP_ROM);
        wht1_write(CONVERT);
        while(DQ_RD==0)
        {}
        PORTC.3=1;
} 

⌨️ 快捷键说明

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