資源簡介
STM32F030實現(xiàn)AM2302模塊溫濕度采集,stm32,stm8系列基本都支持,工作經驗總結,根據實際情況稍微修改即可

代碼片段和文件信息
#include?“dht22.h“
#include?“uart.h“
//存放采集數據
u8?DHT_Tem_H?=?0;?????//溫度高8位?
u8?DHT_Tem_L?=?0;?????//溫度低8位?
u8?DHT_Hum_H?=?0;?????//濕度高8位?
u8?DHT_Hum_L?=?0;?????//濕度低8位?
//請求信號
extern?u8?DHT_askL_500us_cnt;??????????//總線請求信號500us低電平間隔計數
extern?u8?DHT_askL_500us_cnt_flag;?????//總線請求信號500us低電平間隔計數開始標記位
extern?u8?DHT_askH_30us_cnt;???????????//總線請求信號30us高電平間隔計數
extern?u8?DHT_askH_30us_cnt_flag;??????//總線請求信號30us高電平間隔計數開始標記位
//應答信號
extern?u8?DHT_ansL_80us_cnt;???????????//總線應答信號80us低電平間隔計數
extern?u8?DHT_ansL_80us_cnt_flag;??????//總線應答信號80us低電平間隔計數開始標記位
extern?u8?DHT_ansH_80us_cnt;???????????//總線應答信號80us高電平間隔計數
extern?u8?DHT_ansH_80us_cnt_flag;??????//總線應答信號80us高電平間隔計數開始標記位
extern?u8?DHT_data_send_flag;??????????//應答信號結束,開始接收數據標記位
//高低電平判斷
extern?u8?DHT_BitGap_50us_cnt_flag;????//數據位50us低電平間隔計數開始標記位
extern?u8?DHT_BitGap_50us_cnt;?????????//數據位50us低電平間隔計數
?
extern?u8?DHT_BitH_cnt_flag;???????????//高電平計數開始標記位
extern?u8?DHT_BitH_cnt;????????????????//高電平計數
/*
*********************************************************************************************************
* 函數名:???void?DHT_delay_us(uint32_t?value)
* 功能說明:?延時程序,(10*value)us延時
* 形參:?uint32_t?value??
* 返回值:?void
*?時間:??
*?作者:?
*********************************************************************************************************
*/
void?DHT_delay_us(uint32_t?value)
{
uint32_t?i;
i?=?value?*?8;
while(i--);
}
/*
*********************************************************************************************************
* 函數名:???void?DHT_ReadBit(void)
* 功能說明:?讀取一個數據位,一個數據位由50us的低電平間隔和若各高電平組成,
*???????????????????????????數據位1?=?50us低電平?+?70us高電平
????????????????????????????數據位0?=?50us低電平?+?(26~28)us的高電平?
* 形參:?void?
* 返回值:?int?bit_lever
*?時間:??
*?作者:?
*
*********************************************************************************************************
*/
int?DHT_ReadBit(void)
{
u8?bit_lever?=?0;
while(!GPIO_ReadInputDataBit(GPIOAGPIO_Pin_1))
{
DHT_BitGap_50us_cnt_flag?=?1;
}
DHT_BitGap_50us_cnt_flag?=?0;
if(DHT_BitGap_50us_cnt?>=5)???//50us低電平間隙
{
while(GPIO_ReadInputDataBit(GPIOAGPIO_Pin_1))
{
DHT_BitH_cnt_flag?=?1;
}
DHT_BitH_cnt_flag?=?0;
if(DHT_BitH_cnt?<=?3)???//26-28us的高電平?表示?0
{
bit_lever?=?0;
DHT_BitH_cnt?=?0;
}
else?if(DHT_BitH_cnt?>=?5)???//70us的高電平表示1
{
bit_lever?=?1;
DHT_BitH_cnt_flag?=?0;
DHT_BitH_cnt?=?0;
}
DHT_BitGap_50us_cnt?=?0;
}
return?bit_lever;
}
/*
*********************************************************************************************************
* 函數名:???void?DHT_ReadByte(void)
* 功能說明:?讀取一個字節(jié),將讀取的數據位,依次位移存放
* 形參:?void?
* 返回值:?int?data
*?時間:??
*?作者:?
*
*********************************************************************************************************
*/
int?DHT_ReadByte(void)
{
u8?data?=?0;
u8?i;
u8?Bit_temp?=?0;
for(i=0;?i<8;?i++)
{
Bit_temp?=?DHT_ReadBit();
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-01?16:19??STM32F030實現(xiàn)AM2302\
?????文件????????8469??2017-12-01?16:22??STM32F030實現(xiàn)AM2302\dht22.c
?????文件?????????417??2017-10-30?10:13??STM32F030實現(xiàn)AM2302\dht22.h
?????文件?????????114??2017-12-01?16:20??STM32F030實現(xiàn)AM2302\readme.txt
- 上一篇:XQUERY的好
- 下一篇:mos-pesq.zip
評論
共有 條評論