资源简介
基于STM32F103的SHT11温湿度传感器采集程序

代码片段和文件信息
/*************************************************
*
* DS10采集程序
*
*
*
*
*
***************************************************/
#include “dsh10.h“
#include “delay.h“
//温度转换结果
float TempResult;
//湿度转换结果
float HumResult;
/* PA5PA4 */
void Dsh10_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE);
GPIO_InitStructure.GPIO_Pin = DS_DATA_BIT|DS_CLK_BIT;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);
}
void DS_DATA_GPIO_OUTPUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE);
GPIO_InitStructure.GPIO_Pin = DS_DATA_BIT;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);
}
void DS_DATA_GPIO_INPUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE);
GPIO_InitStructure.GPIO_Pin = DS_DATA_BIT;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//设置为输入
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);
}
/*
--------------------------------------
*这里采用typ这里的典型时序
f=0.1MHzT=10uS如何实现nS的延时?
采用野火所提供的延时,大概f=10000Hz
--------------------------------------
*/
/*
*
* name: DS_Start
* function: sht10 start pragram
* input/output NON
*
*
*/
void DS_Start(void)
{
DS_DATA_GPIO_OUTPUT();
DS_DATA_H();
DS_CLK_L();
delay_us(16); //数据线高电平
DS_CLK_H();
delay_us(16); //时钟线拉高
DS_DATA_L();
delay_us(16);
DS_CLK_L();
delay_us(36);
DS_CLK_H();
delay_us(16);
DS_DATA_H();
delay_us(16);
DS_CLK_L();
delay_us(16);
//delay_us(36);
DS_DATA_L();
delay_us(16); ////整个时序到这里的时候就已经结束了,后面紧跟着测量了
}
/*
*严格按照启动时序之后的时序图来写
*功能:测量12bit的数据
*输入:
*写一个字节到SHT10 CLK周期大概是30uS
*/
unsigned int WriteCmd(unsigned char cmd)
{
int i;
//DS_DATA_GPIO_OUTPUT();
//delay_us(36); //先延时一段时间,在开始时序之后
for(i=0;i<8;i++)
{
if((cmd< {
// delay_us(1);
DS_DATA_H();
}
else{
DS_DATA_L();
}
//delay_us(1);//是否应该先延时一点时间再给CLK?
CLK();
}
//ACK
DS_DATA_GPIO_INPUT();
// CLK();
DS_CLK_H();
//问题应该在这
do /* 这里时序有问题? */
delay_us(1);
while(!DS_DATA_STATE);//ACK校验,在CLK高的时候数据线被拉低
//LED2(0);
DS_CLK_L();
//时钟拉低
delay_us(16);
while(DS_DATA_STATE)//等待DATA被拉高
//LED1(0);
// delay_us(1000000);
do
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-04-29 15:59 SHT10\
文件 5978 2016-08-04 17:44 SHT10\Dsh10.c
文件 990 2016-08-04 17:45 SHT10\dsh10.h
相关资源
- 激光位移传感器的特点及应用解析
- 位移传感器应用全面解析
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- stm32 ds18b20 温度传感器 测试通过
- HX711 称重传感器 C程序
- ADNS-3080光流传感器测试程序Arduino
- 28335写的用spi读取传感器数据并用CA
- SCA60角度检测传感器模块程序
- 基于能量和距离的无线传感器网络分
- 无线传感器网络基于分簇的路由协议
- ADXL362中文说明手册
- 传感器应用七十二变
- 在各城市的窄带物联网中传感器起到
- 基于PIC的TCP/IP网络协议和zigbee无线传
- 传感器应用领域的扩大发展强劲
- 物联网中无线传感器节点和RFID数据融
- 用于无线传感器网络应用的超声波传
- 有关面向工业物联网的无线传感器网
- 物联网无线传感器网络的7大特点
- 传感器在潜水设备的应用
- 旋转活塞式流量计的测量原理
- 基于ARM7 PWM定时器的图像传感器时序信
- IEEE 802.15.4的CC2530无线数据收发设计
- IEEE 802.15.4的CC2530无线数据收发设计
- 蓝牙无线抄表传感器的设计
- 低功耗蓝牙无线传感器
- 智能传感器的蓝牙协议栈与SoC结构设
- 智能传感器的蓝牙协议栈与SoC结构解
- 电动车用霍耳位置传感器芯片的使用
评论
共有 条评论