资源简介
基于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
相关资源
- SM9541压力传感器编程指南
- SHT11温湿度传感器仿真
- LM3S驱动库例程_I2C例程:数字温度传感
- arduino程序,用两个红外线传感器来判
- 单片机 颜色传感器TCS34725
- 移动无线传感器网络数据收集
- 用dsPIC30F3010实现无刷直流电机的无传
- 传感器课程设计实验报告
- MQ5测试煤气泄漏,天然气泄漏
- STM32F103读SHT31温湿度传感器代码,实测
- 用光电传感器的电机测速程序
- 温湿度传感器DHT11+1602显示+串口
- 802.15.4 无线传感器网络物理层仿真代
- 鼠标作为传感器测量距离源程序
- 51单片机ADXL345三轴加速度传感器源代
- 光纤光栅传感器的工作原理和应用
- 温湿度传感器DHT11在mini2440上基于lin
- TCS230颜色识别传感器 原理 资料 程序
- 湿度传感器HS1101在智能家居控制系统
- 测速传感器模块宽槽版
- 基于PT100温度传感器课设
- C 语言实现湿度传感器SHT30(51代码)
- DHT11传感器
- 基于STM32的无位置传感器无刷直流电机
- STC12C5A60S2与MLX90614红外温度传感器程序
- NVE 全系列传感器清晰的DATASHEET
- H2S传感器基于电化学的安培法原理
- 利用三轴加速度传感器的计步测算法
- 一种新型基于多点预瞄的最优路径跟
- 基于紫红外线检测原理的火焰传感器
评论
共有 条评论