蓝桥杯的单片机比赛中较为简单的驱动程序是Ds18B20
同样需要自己写出调用程序
修改的地方是Ds18b20驱动里自带的延时函数
修改为适合1T晶振使用的1us延时函数
void Delay_OneWire(unsigned char i)
{
unsigned char j;
while(i--)
{
for(j = 0; j < 12; j++);
}
}
- 18b20需要使用的指令有三个
0xcc //跳过rom指令
** 0x44 //转换指令**
0xbe //读暂存器指令
- 需要自己手写的读18B20函数是unsigned char Use_Ds18B20
unsigned char Use_Ds18B20()
{
unsigned char temp;
unsigned char TH,TL;
Init_Ds18B20();
Write_Ds18B20(0xcc);
Write_Ds18B20(0x44);
Delay_OneWire(200);//200us
Init_DS18B20();
Write_Ds18B20(0xcc);
Write_Ds18B20(0xbe);//switch
TL = Read_Ds18B20();
TH = Read_Ds18b20();
temp = (TH<<4)|(TL>>4);
rreturn temp;
}