蓝桥杯DS18B20温度传感器,读写操作解释
时间:2022-11-06 21:30:00
///通过单总线DS18B20写一个字节 void Write_DS18B20(unsigned char dat) { unsigned char i; for(i=0;i<8;i ) { DQ = 0; DQ = dat&0x01///每次只操作一个,通过这个操作DQ比如0x44(0100 0100),从最右边开始,状态为 //两低 一高 三低 一高 一低 ,0xcc,执行跳过ROM的指令,0x44执行温度转换指令,0xbe 读取暂存器指令 Delay_OneWire(5); DQ = 1; dat >>= 1; } Delay_OneWire(5); } //从DS18B读一个字节 unsigned char Read_DS18B20(void) { unsigned char i; unsigned char dat; for(i=0;i<8;i ) { DQ = 0; dat >>= 1; DQ = 1; if(DQ)//因为当输入0xbe开始读取高速暂存器的时候,只需输出临时存储器的第0字节(低温数据8位)和第1字节(高温数据8位) 而且输出是一个一个输出,只输出0或1,DA18B20是单总线输出(通过DQ输出),当DQ当输出为0时,跳过if里面的操作 //通过dat右移一位的操作,给出dat打进去0,如果DQ为1,就实施if通过或(0)x80 -1000 0000),赋值1操作,后几个不变 { dat |= 0x80;//dat=dat | (DQ<<7) } Delay_OneWire(5); } return dat; }