CT107D蓝桥杯DS18B20使用

发布者:未来画家最新更新时间:2019-09-26 来源: eefocus关键字:CT107D  蓝桥杯  DS18B20 手机看文章 扫描二维码
随时随地手机看文章

弄了一天的DS18B20,最后才发现是官方给的单总线驱动有问题


//单总线延时函数

void Delay_OneWire(unsigned int t)

{

  while(t--);

}



就是这个驱动里的延时函数,延时不够,所以一直没有成功。


这里应该要加一点延时,这样子就可以了,不知道官方是要干嘛,,,,,,,,


void Delay_OneWire(unsigned int t)

{

char  z;

  while(t--)

for(z=0;z<12;z++);

}



//有了驱动,我们直接写一个读温度函数就ok了


//DS18B20温度采集程序:整数

unsigned char read_wendu(void)

{

    unsigned char low,high;

  char temp;

  init_ds18b20();

  Write_DS18B20(0xCC);//跳过ROM指令

  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;

}



这个函数是读出2位正温度,下面这个是保留小数点后2位。


int read_wendu()

{

  unsigned char low,high;

int temp;

float t;

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<<8)|low;

if(temp<0){

temp=~(temp-1);

}

t=temp*0.0625;

temp=t*100+0.5;

return temp;

}



下面附上单总线代码


sbit DQ = P1^4;

//单总线延时函数

void Delay_OneWire(unsigned int t)

{

char z;

  while(t--)

for(z=0;z<12;z++);

}

 

 

//DS18B20芯片初始化

bit Init_DS18B20(void)

{

bit initflag = 0;

DQ = 1;

Delay_OneWire(12);

DQ = 0;

Delay_OneWire(80); 

DQ = 1;

Delay_OneWire(10); 

initflag = DQ;    

Delay_OneWire(5);

  

return initflag;

}

 

 

//通过单总线向DS18B20写一个字节

void Write_DS18B20(unsigned char dat)

{

unsigned char i;

for(i=0;i<8;i++)

{

DQ = 0;

DQ = dat&0x01;

Delay_OneWire(5);

DQ = 1;

dat >>= 1;

}

Delay_OneWire(5);

}

 

 

//从DS18B20读取一个字节

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)

{

dat |= 0x80;

}    

Delay_OneWire(5);

}

return dat;

}

关键字:CT107D  蓝桥杯  DS18B20 引用地址:CT107D蓝桥杯DS18B20使用

上一篇:CT107D蓝桥杯矩阵键盘使用
下一篇:CT107D蓝桥杯EEPROM使用(8)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved