基于STM32环境温湿度监测系统设计
基于STM32环境温湿度监测系统设计
- 1. 实验目的
- 2. 任务和要求
- 3. proteus仿真图
- 4. 实验代码
1. 实验目的
(1) 掌握使用 KEIL MDK5 进行软件开发的具体流程;
(2) 掌握硬件电路的设计方法;
(3) 掌握 STM32 微控制器的程序设计及代码编写方法。
2. 任务和要求
(1)在 STM32F103 平台下,通过温度传感器 DS18B20 和湿度传感器 DHT11 实现环境温湿度信息的采集;
(2)将温度传感器和湿度传感器所采集的数据在 LCD 液晶屏幕上显示出来,超过范围实现声光报警,声音报警为启动无源蜂鸣器播放音乐,光源报警采用 LED灯闪烁的方式(每个同学采用不同的声光报警方式。例如:播放不同的音乐,LED灯闪烁的次数不一样等);
(3)手动设置报警温度和湿度上下限。
(4)加分项:自行增加其他功能。
3. proteus仿真图
4. 实验代码
#include "stm32f4xx.h"
#include <stdio.h>
#include "systick.h"
#include "led.h"
#include "lcd.h"
#include "dht11.h"
#include "usart.h"
#include "sr04.h"
#include "key.h"int main()
{u16 i,key;//定义距离和按键值的变量u16 t1=25;//温度下限初始化u16 t2=35;//温度上限初始化u16 h1=65;//湿度下限初始化u16 h2=75;//湿度下限初始化u8 data_buf[5] = {0};//为了存储温湿度数据Led_Init();//led初始化systick_init();//系统时钟的初始化函数sr04_init();//sr04初始化dht_init();//Dht初始化lcd_init();//LCD初始化key_init();//key初始化while(1){ i=get_distance();//得到的距离给ikey=KEY_Scan(1); //得到的键值给keydht_read_data(data_buf); //得到的温湿度数据给data_buf//如果距离大于5,并且小于等于10cm 灯0,1,2,3亮if (i>5 && i<=10) {GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 );//点亮4盏灯}//如果距离大于10,并且小于等于15cm 灯0,1,2亮if(i>10 && i<=15){GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);//点亮3盏灯GPIO_SetBits(GPIOA,GPIO_Pin_3);}//如果距离大于15,并且小于等于20cm 灯0,1亮if(i>15 && i<=20){GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1);//点亮2盏灯GPIO_SetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_3 );}//如果距离小于等于5,或者大于20cm 灯全灭if(i>20 || i<=5){ GPIO_SetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);//全灭}//设置上下限if(key){ switch(key){ case KEY0_PRES: t1--;//如果KEY0按下 温度下限减1break;case KEY1_PRES: t2--;//如果KEY1按下 温度上限减1break;case KEY2_PRES: h1--;//如果KEY2按下 湿度下限减1break;case KEY3_PRES: h2--;//如果KEY3按下 湿度上限减1break;case KEY4_PRES: t1++;//如果KEY4按下 温度下限加1break;case KEY5_PRES: t2++;//如果KEY5按下 温度上限加1break;case KEY6_PRES: h1++;//如果KEY6按下 湿度下限加1break;case KEY7_PRES: h2++;//如果KEY7按下 湿度上限加1break;}} if(data_buf[2]>t1 && data_buf[2]<t2) GPIO_SetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5);//温度是否在范围内,是的话灯不亮else if (data_buf[2]<t1) GPIO_ResetBits(GPIOA,GPIO_Pin_4);//小于下限,灯4亮else if (data_buf[2]>t2) GPIO_ResetBits(GPIOA,GPIO_Pin_5);//大于于下限,灯5亮if(data_buf[0]>h1 && data_buf[0]<h2) GPIO_SetBits(GPIOA,GPIO_Pin_6 | GPIO_Pin_7);//湿度是否在范围内,是的话灯不亮else if (data_buf[0]<h1)GPIO_ResetBits(GPIOA,GPIO_Pin_6);//小于下限,灯6亮else if (data_buf[0]>h2)GPIO_ResetBits(GPIOA,GPIO_Pin_7);//大于于下限,灯7亮lcd_show_string(0,1,"distance= cm");//显示字符串lcd_num(9,1,i);//显示超声波测得距离lcd_show_string(0,2,"Temp: C");lcd_num(5,2,data_buf[2]);//显示温度数值lcd_show_string(0,3,"Hum: %");lcd_num(4,3,data_buf[0]);//显示湿度数值lcd_num(9,2,t1);//显示温度下限数值lcd_show_string(11,2,"-");lcd_num(12,2,t2);//显示温度上限数值lcd_num(9,3,h1);//显示湿度下限数值lcd_show_string(11,3,"-");lcd_num(12,3,h2);//显示湿度上限数值}
}
下载地址:成品下载
基于STM32环境温湿度监测系统设计相关推荐
- 113、基于STM32的温湿度光照强度系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.功能 二.电脑开发环境 三.Protues仿真 四.程序 五.原理图 六.资料包括 一.功能 1.STM32单片机可以通过传感器获取环境中的温湿 ...
- 基于单片机的温湿度监测系统设计(程序)
博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...
- 基于单片机的温湿度监测系统设计(#0410)
功能描述 1.采用51/52单片机(通用)作为主控芯片: 2.采用DHT11传感器,温度测量范围0℃--50℃,湿度测量范围20%RH-90%RH 3.LCD1602液晶显示当前的温度和湿度: 4.当 ...
- 单片机课程设计:基于STM32的温湿度检监测报警系统的设计
基于STM32的温湿度检监测报警系统 文章目录 基于STM32的温湿度检监测报警系统 前言 一.设计任务 二.系统硬件设计 1.元器件选用 2.系统模型设计 3.硬件连接 二.系统程序设计 1.程序流 ...
- 基于NB-IoT技术的环境温湿度监测系统的研制
摘要 针对传统环境监测系统功耗高.维护成本高.不能实时监测的弊端,研制了一种以单片机为主控制芯片的基于 NB-IoT 技术的环境温湿度监测系统,并对主控制器的工作流程及通信模块的工作方式进行优化,降低 ...
- 毕设—基于树莓派的家居环境智能监测系统设计与实践
一.资料查找工具 英文文献:Sci-Hub | Academic Navigation Site – To remove all barriers in the way of science 中文文献 ...
- 基于单片机的温湿度监测报警
基于单片机的温湿度监测系统(独立按键.LCD1602.DHT11) 0.关注微信公众号(风吹摇铃 奔赴星海)下载全套资料,全套资料中包括如下内容:(需要PCB和焊接实物请阅读(使用前必读)文件下的内容 ...
- (毕业设计资料)基于STM32智能窗帘控制系统设计
096[电路方案]基于STM32智能窗帘控制系统设计 基于STM32单片机的智能窗帘控制系统.该系统集蓝牙遥控.人声识别控制.空调红外遥控.24c02数据储存.433m遥控.热释电红外感应.温湿度检测 ...
- 基于stm32人体健康监测系统
基于stm32人体健康监测系统 (心率,血氧,体温,语音播报,报警) 本设计采用STM32F103C8T6作为主控 使用MAX30102采集心率和血氧值 使用MLX90614测量体温 OLED显示当前 ...
最新文章
- python数据结构与算法40题_Python数据结构与算法刷题(2)——挖掘机技术哪家强...
- 问题:python3关于json文件多余一行后发生的错误
- SPOJ - NUMOFPAL Number of Palindromes(回文自动机)
- [Android] Implementation vs API dependency
- 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践 1
- matlab处理最优化问题,matlab求最优化问题
- 如何通过反射创建对象
- Jenkins的系统设置
- 这是一封摘抄的情书有点长你读不完也没关系
- 鸡尾酒会公式\帕金森定律(Parkinson's Law)
- vue-ES2015:
- Linux du命令(du -h ,du -s)
- springboot调用第三方邮箱发送邮件过程详解
- HRBUST1313 火影忍者之~静音
- 只有那些不断充实自己的人,才有机会在往后的日子里持续地被雇用
- 圆桌:满足客人空座需求,准备最少的椅子,合理安排客人入座圆桌
- 山经·南山经:招摇山
- 新建UEFI启动分区
- 恐龙快打无限子弹修改方案
- uni-app使用canvas生成图片并保存到相册
热门文章
- 如何通过光纤确保数据的网络安全?
- 英语音标发音Flash教程:48个音标汇总
- java 星形线代码,JavaScript图形实例:星形条纹图案
- Java、JSP基于WEB的在线问题解答系统
- net framework 3.5怎么安装 / 无法安装怎么办
- 数据分析之统计学(贾俊平)学习笔记一
- JS拼接字符串的过程中将JSON对象存到某个标签的属性中,encodeURIComponent(),btoa()用法介绍
- svn错误:更新源码出现校验和不匹配问题
- Nova3D whale2 3D打印机接口信息
- 微信jssdk上传图片java_微信JSSDK上传图片_javascript技巧