关于蓝桥杯——ds18b20温度传感器

对于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去读取一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值