资源简介
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个文件信息
相关资源
- PC 串口调试软件
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- 51单片机读取温度数据存储到SD卡中并
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- 单片机与PC机串口通讯仿真
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- 串口调试助手V5.0
- DS18B20分布式多点测温的Proteus仿真
- STM32F103 CC2500完整驱动(模拟SPI)
- 双串口调试助手 V4.0 _ 可同时调试两个
- 读取串口数据并画实时曲线的VC 程序
- AD7606采集程序
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- 网络(UDP)转串口程序
- 串口绘制曲线 将收到的数据进行曲线
- 基于ARM蓝牙传输源程序
- JS操作本地网页串口源码
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- AT89S ISP下载编程软件(串口)
- 串口操作类(justinio)
- 《Visual Basic 串口通信与测控应用技术
- 耀华XK3190-A9地磅串口代码
- 基于STM32芯片的SX1278 驱动 LORA.rar
评论
共有 条评论