关于蓝桥杯——ds18b20温度传感器
2018-03-14 20:14
525 查看
对于ds18b20,比赛会给我们驱动代码,不过,在我拿到的资料里——也就是以往比赛给的驱动,他的驱动代码有一些问题。首先是延时程序,它的延时程序是
void Delay_OneWire(unsigned int t)
{
while(t--);
}
但是这个延时程序是STC12单片机的ds18b20驱动延时,15单片机的延时应该是
void Delay_OneWire(unsigned int t)
{
unsigned char i;
while(t--)
{
for(i=12;i>=0;i--)
{}
}
}
同时,我们还要自己加一个读取的程序:
unsigned char rd_temperature()
{
char temp;
unsigned char high,low;
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44); //启动温度转化
Delay_OneWire(200);
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe); //读取寄存器值
low=Read_DS18B20(); //低字节
high=Read_DS18B20;//高字节
temp=high<<4;
temp|=(low>>4);
return temp;
}
在补完驱动以后,我们只要在主函数里去读取ds18b20的值然后在数码管上显示出来就可以了。但是,如果直接读取显示会出现数码管闪烁这个问题,这是因为每次读取的太快了,数码管刷新不过来。因此,我们最好加一个定时器中断,让程序每隔100ms或1s去读取一次。
void Delay_OneWire(unsigned int t)
{
while(t--);
}
但是这个延时程序是STC12单片机的ds18b20驱动延时,15单片机的延时应该是
void Delay_OneWire(unsigned int t)
{
unsigned char i;
while(t--)
{
for(i=12;i>=0;i--)
{}
}
}
同时,我们还要自己加一个读取的程序:
unsigned char rd_temperature()
{
char temp;
unsigned char high,low;
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44); //启动温度转化
Delay_OneWire(200);
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe); //读取寄存器值
low=Read_DS18B20(); //低字节
high=Read_DS18B20;//高字节
temp=high<<4;
temp|=(low>>4);
return temp;
}
在补完驱动以后,我们只要在主函数里去读取ds18b20的值然后在数码管上显示出来就可以了。但是,如果直接读取显示会出现数码管闪烁这个问题,这是因为每次读取的太快了,数码管刷新不过来。因此,我们最好加一个定时器中断,让程序每隔100ms或1s去读取一次。
相关文章推荐
- 关于DS18B20温度传感器的时序详解及代码分析
- 【树莓派学习笔记】关于树莓派2代,更新最新内核后,DS18B20温度传感器无法找到对应文件的问题的解决
- STC89C52MCU -- DS18B20温度传感器
- 基于ARM-LINUX的温度传感器驱动-DS18B20
- 树莓派2代(RaspberryPi2)配合温度传感器DS18B20获取温度
- DS18b20温度传感器的使用
- STM32单片机学习(11) DS18B20温度传感器实验
- DS18B20温度传感器,将实时温度用数码管显示
- 51单片机(STC89C52)DS18B20温度传感器驱动程序
- 基于S3C2440的嵌入式Linux驱动——DS18B20温度传感器(添加使用platform总线机制)
- 读取温度传感器DS18B20的实例
- Dht11与Ds18b20温度传感器使用
- STM8L 温度传感器DS18B20
- S3C2440 温度传感器ds18b20的驱动编写与测试--比较详细的1-wire
- 总结:如何驱动DS18B20温度传感器
- LPC213x ARM板子的DS18B20温度传感器模块添加
- s3c6410 DS18B20温度传感器驱动(一) --- 原理分析
- S3C2440 温度传感器ds18b20的焊接测试
- 树莓派 GPIO学习笔记(3)--DS18B20温度传感器
- ds18b20温度传感器主程序