DHT22(AM2302)STM32程序
更新时间:2023-03-18 03:06:01 阅读量: 综合文库 文档下载
- am2302和dht22推荐度:
- 相关推荐
/*程序测试平台STM32F103CxT6* RCC时钟配置PCLK(APB2总线时钟)为72MHz*/
/*使用SYSTICK滴答定时器进行精确延时,延时函数Delay_us(u32 nTime); 需进行声明并将SYSTICK.C文件包含于指定工作组内(V3.5固件库),并在stm32f10x_it.c中添加systick的中断服务函数*/
/*单总线接口使用PB9,模式初始化为输出开漏(GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;)*/
以下是头文件AM2302.H内容: #ifndef __AM2302_H #define __AM2302_H
#include \//#include \
/*模拟IIC端口输出输入定义*/
#define DAT_H GPIOB->BSRR = GPIO_Pin_9 #define DAT_L GPIOB->BRR = GPIO_Pin_9
#define DAT_R GPIOB->IDR & GPIO_Pin_9
void COM(void); void RH(void);
#endif
//置位 //复位 //端口读寄存器
以下是AM2302.C文件内容: #include \ #include \
u8 U8FLAG=0,U8temp=0;
u8 U8T_data_H=0,U8T_data_L=0,U8RH_data_H=0,U8RH_data_L=0,U8checkdata=0; u8
U8T_data_H_temp=0,U8T_data_L_temp=0,U8RH_data_H_temp=0,U8RH_data_L_temp=0,U8checkdata_temp=0;
u8 U8comdata=0; int humi=0,temper=0; //湿度和温度暂存数据
void COM(void) //从AM2302中读取一个字节 {
u8 i;
for(i=0;i<8;i++) { U8FLAG=2; while((!(DAT_R))&&U8FLAG++); if(U8FLAG==1)break; Delay_us(30); U8temp=0; if(DAT_R)U8temp=1; U8FLAG=2; while((DAT_R)&&U8FLAG++); }
//超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1
// 如果高电平高过预定0高电平值则数据位为 1 U8comdata<<=1;
U8comdata|=U8temp; //0 }
//-------------------------------- //-----湿度读取子程序 ------------ //--------------------------------
//----以下变量均为全局变量-------- //----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //--------------------------------
void RH(void) { //主机拉低18ms DAT_L; Delay_us(18000); DAT_H; //总线由上拉电阻拉高 主机延时20us
Delay_us(30);
//主机设为输入 判断从机响应信号
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(DAT_R)U8FLAG=1; while(!(DAT_R)) {
U8FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束 while((!(DAT_R))&&U8FLAG++); if(U8FLAG==1)break; U8FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((DAT_R)&&U8FLAG++); if(U8FLAG==1)break;
//数据接收状态 COM();
if(U8FLAG==1)break;
U8T_data_H_temp=U8comdata; COM();
if(U8FLAG==1)break;
//温度的高8位数据
U8T_data_L_temp=U8comdata; //温度的低8位数据 COM();
if(U8FLAG==1)break;
U8RH_data_H_temp=U8comdata; //湿度的高8位数据 COM(); if(U8FLAG==1)break; U8RH_data_L_temp=U8comdata; //湿度的低8位数据 COM(); if(U8FLAG==1)break; U8checkdata_temp=U8comdata; //校验字节数据 break; } DAT_H; //数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) //若校验通过 { U8RH_data_H=U8T_data_H_temp; U8RH_data_L=U8T_data_L_temp;
}
U8T_data_H=U8RH_data_H_temp; U8T_data_L=U8RH_data_L_temp; U8checkdata=U8checkdata_temp; humi = (int)U8RH_data_H*256+(int)U8RH_data_L; //合成并暂存16位湿度数据 temper = (int)U8T_data_H*256+(int)U8T_data_L; //合成并暂存16位温度数据 }
DAT_H;
正在阅读:
DHT22(AM2302)STM32程序03-18
小学语文五年级上册句子专项复习讲解03-08
北大考研辅导班北大计算机技术考研招生专业招生科目考研分数线拟录取考研经验 - 图文11-27
大学生素质教育实施方案10-10
债务清偿及债务担保情况的说明04-18
八年级上册Unit3-2教案01-23
华升富士达电梯调试与维修手册 - 图文06-25
中国与美国发生军事冲突的可能性分析10-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序
- AM2302
- DHT22
- STM32
- 高立勤同志先进事迹报告会主持词
- 研究性学习设计模板
- LC-MS使用注意事项
- 2018-2019年大同市矿区晋华宫第三小学一年级上册数学复习题无答案
- 36通信工程勘察设计管理办法
- 茶馆的练习题及其答案 - 图文
- polycomMCU操作指南 V1.0 - 图文
- 高频总结课后题
- 广联达钢筋算量常见问题 - 图文
- 三一重工财务状况分析 - 图文
- 关于加强学校安全及青少年教育管理工作的实施意见
- 2017年刺绣机生产基地建设项目可行性研究报告(编制大纲)
- 豆豆一班-下学期班级工作计划
- 方言与语言习得之间的关系
- 2014年中考语文试卷分析报告
- 导游讲解现场抽签问答题
- 第三章 保险的基本原则习题
- 2018年度农村公路管理养护工作方案
- 基础英语2第二单元答案The
- 测量学 - 简答 - 1