×
嵌入式 > 技术百科 > 详情

STM8的DS18B20检测

发布时间:2020-12-18 发布时间:
|

最近要鼓捣出5V的ds18b20用stm8采集,网上一搜发现大部分都是把数据端直接接到3.3的引脚,我也这么做的。


用的DS18B20为淘宝外面有钢管的那种,系统板为STM8L051,第一次接触stm8先去找的库函数,以附件形式粘贴到下面。用IAR建工程一搜一大把。



记得定义头文件时加上 #include "stm8l15x_conf.h",不然会报错


#include "delay.h"

 

volatile u8 fac_us=0;

 

void delay_init(u8 clk)

{

  if(clk>16)fac_us=(16-4)/4;

  else if(clk>4)fac_us=(clk-4)/4;

  else fac_us=1;

}

 

void delay_us(u16 nus)

{

  __asm(

"PUSH A          n"    //1T,压栈

"DELAY_XUS:      n"

"LD A,fac_us     n"    //1T,fac_us加载到累加器A

"DELAY_US_1:     n"

"NOP             n"    //1T,nop延时

"DEC A           n"    //1T,A--

"JRNE DELAY_US_1 n"    //不等于0,则跳转(2T)到DELAY_US_1继续执行,若等于0,则不跳转(1T).

"NOP             n"    //1T,nop延时

"DECW X          n"    //1T,x--

"JRNE DELAY_XUS  n"    //不等于0,则跳转(2T)到DELAY_XUS继续执行,若等于0,则不跳转(1T).

"POP A           n"    //1T,出栈

);

}

 

void delay_ms(u32 nms)

{

  u8 t;

  if(nms>65)

  {

    t=nms/65;

    while(t--)delay_us(65000);

    nms=nms%65;

  }

  delay_us(nms*1000);

}

因为我没有显示的东西,只能用printf,在参考大佬「C_Aya」的文章,原文链接:https://blog.csdn.net/baweiyaoji/article/details/72812045  成功弄出来后,可以正常打印字符串,但一遇到带参数的printf立马内存爆炸,然后又在参考大佬「Dancer__Sky」的文章,原文链接:https://blog.csdn.net/Dancer__Sky/article/details/82284961得以成功打印。记得自己的头文件不要定义成这个名字"stdarg.h",我都不记得C有这个头文件了,不然你无法调用C的stdarg.h,将会出现错误。



// 复位,主机给从机发送复位脉冲

void DS18B20_Rst(void)

{

  DS18B20_Mode_Out();

  delay_us(2);

  DS18B20_DQ_OUT_Low; // 产生至少480us的低电平复位信号

  delay_us(700);

  DS18B20_DQ_OUT_High; // 在产生复位信号后,需将总线拉高

  delay_us(3);

}

 

// 写1字节到DS18B20

void DS18B20_Write_Byte(u8 dat)

{

  u8 j;

  u8 testb;

  DS18B20_Mode_Out();

  for (j = 1; j <= 8; j++)

  {

    testb = dat & 0x01;

    dat = dat >> 1;

    if (testb)

    {

      DS18B20_DQ_OUT_Low;// 写1

      delay_us(2);

      DS18B20_DQ_OUT_High;

      delay_us(80);

    }

    else

    {

      DS18B20_DQ_OUT_Low;// 写0

      delay_us(78);

      DS18B20_DQ_OUT_High;// 释放总线

      delay_us(2);

    }

}

这两部分延时不太一样,贴出来大家可以试一试。注意引脚输入不要弄错成浮空输入。


最后大体是这个效果




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
越南制造.会成为中国制造的最大敌手吗?