• 大小: 754.89 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-11-23
  • 语言: 其他
  • 标签: ds18b20  stm32  串口  

资源简介

stm32F103 读取ds18b20 温度 并通过串口 9600 上传 每隔一秒

资源截图

代码片段和文件信息

#include“ds18b20.h“
#include
#include“mytype.h“

#define DS_PORT GPIOA    //选择外设GPIOA
#define DS_DQIO GPIO_Pin_1    //选择管脚Pa1
#define ResetDQ() GPIO_ResetBits(DS_PORTDS_DQIO)  //拉低DQ
#define SetDQ() GPIO_SetBits(DS_PORTDS_DQIO)   //拉高DQ
#define GetDQ() GPIO_ReadInputDataBit(DS_PORTDS_DQIO) //读取DQ的电平

void delay_1ms(int cnt)
{
int i;
while(cnt--)
for(i=0;i<8300;i++);
}

void delay_1us(U32 value)
{
SysTick->LOAD=value*9; //时间加载
SysTick->CTRL|=0x01;   //开始倒数
while(!(SysTick->CTRL&(1<<16))); //等待时间到达
SysTick->CTRL=0x00000000;  //关闭计数器
SysTick->VAL=0x00000000;   //清空计数器
}

void Init_ds18b20(void)    //初始化DS18B20
{
SetDQ();
delay_1us(30);  //保持高电平一段时间时间
ResetDQ(); //总线将其拉低电平
delay_1us(600);    //延时400us-960us,这里延时600us
SetDQ();             //总线释放低电平
delay_1us(30);   //延时15us-60us,这里延时30us
while(GetDQ());   //若为高电平则出错,等待一直循环
delay_1us(500); //将剩余时间消耗完
SetDQ(); //总线将电平拉高
}


void DS18B20WriteByte(U8 Dat)
{
U8 i;
for(i=8;i>0;i--)
{
ResetDQ();    //在15us内送数到数据线,在15-60us内采样
delay_1us(5);

if(Dat&0x01) //读数据的最低位
SetDQ();
else
ResetDQ();

delay_1us(65); //将剩余时间消耗完
SetDQ();
delay_1us(2); //写两个位之间间隔大于1us
Dat>>=1;   //右移一位,
}
}

U8 DS18B20ReadByte(void)
{
U8 iDat;
SetDQ();
delay_1us(5);
for(i=0;i<8;i++)
{
Dat>>=1;
ResetDQ(); //从读时序开始到采样信号线必须在15us内,且采样尽量安排在15us最后
delay_1us(5);
SetDQ(); //释放总线,然后才能进行采样,否则无意义。只有低电平
delay_1us(5);

if(GetDQ())
Dat|=0x80;
else
Dat&=0x7f;
delay_1us(65);  //消耗剩余时间
SetDQ();  //拉高总线
}
return Dat;
}

U8 readtemperature(void)
{
U8 ab;
Init_ds18b20(); //初始化
DS18B20WriteByte(skipRom);
DS18B20WriteByte(convert); //开始转换温度
delay_1ms(550);  //延时,等待温度转换完成

Init_ds18b20();
DS18B20WriteByte(skipRom);
DS18B20WriteByte(readTemp); //读取暂存器

a=DS18B20ReadByte();    //读取低8位
b=DS18B20ReadByte(); //读取高8位

b<<=4;
b+=(a&=0xf0)>>4;

return b;
}





















 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....     53029  2010-04-09 17:01  修改-温度传感\8x16.h

     文件      31636  2010-08-28 20:57  修改-温度传感\ds18b20.axf

     文件       2266  2010-08-30 21:19  修改-温度传感\ds18b20.c

    .CA....       202  2010-08-29 20:23  修改-温度传感\ds18b20.h

    .CA....     43949  2010-08-28 20:57  修改-温度传感\ds18b20.htm

     文件        282  2010-08-28 20:57  修改-温度传感\ds18b20.lnp

    .CA....     69722  2010-08-30 19:11  修改-温度传感\ds18b20.map

     文件       2195  2010-08-28 21:21  修改-温度传感\ds18b20.plg

     文件        479  2010-08-28 20:57  修改-温度传感\ds18b20.sct

     文件       1017  2010-08-28 20:57  修改-温度传感\ds18b20.tra

     文件      74568  2012-03-07 13:03  修改-温度传感\ds18b20.uvgui.Administrator

    .CA....     71265  2012-03-06 23:51  修改-温度传感\ds18b20.uvgui_Administrator.bak

     文件      60773  2010-08-30 23:20  修改-温度传感\ds18b20.uvopt

     文件      15769  2010-08-29 18:24  修改-温度传感\ds18b20.uvproj

    .CA....      9430  2010-08-30 22:07  修改-温度传感\ds18b20_Target 1.dep

    .CA....     60770  2010-08-30 21:19  修改-温度传感\ds18b20_uvopt.bak

    .CA....     15484  2010-08-28 21:34  修改-温度传感\ds18b20_uvproj.bak

    .CA....      2017  2010-08-29 18:24  修改-温度传感\GB1616.h

     文件        629  2010-08-30 21:19  修改-温度传感\main.c

    .CA....    154413  2010-08-28 20:57  修改-温度传感\main.crf

    .CA....      1906  2010-08-28 20:57  修改-温度传感\main.d

    .CA....    176516  2010-08-28 20:57  修改-温度传感\main.o

     文件      58984  2010-08-30 19:11  修改-温度传感\Output\ds18b20.axf

    .CA....      2213  2010-08-30 19:11  修改-温度传感\Output\ds18b20.d

     文件      18186  2010-08-30 19:11  修改-温度传感\Output\ds18b20.hex

    .CA....     46975  2010-08-30 19:11  修改-温度传感\Output\ds18b20.htm

     文件        376  2010-08-30 19:11  修改-温度传感\Output\ds18b20.lnp

     文件     174312  2010-08-30 19:11  修改-温度传感\Output\ds18b20.o

    .CA....       158  2010-08-30 22:07  修改-温度传感\Output\ds18b20.plg

     文件        479  2010-08-28 20:59  修改-温度传感\Output\ds18b20.sct

............此处省略29个文件信息

评论

共有 条评论