您的位置:首页 > 其它

关于蓝桥杯——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去读取一次。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝桥杯