基于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环境温湿度监测系统设计相关推荐

  1. 113、基于STM32的温湿度光照强度系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.功能 二.电脑开发环境 三.Protues仿真 四.程序 五.原理图 六.资料包括 一.功能 1.STM32单片机可以通过传感器获取环境中的温湿 ...

  2. 基于单片机的温湿度监测系统设计(程序)

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  3. 基于单片机的温湿度监测系统设计(#0410)

    功能描述 1.采用51/52单片机(通用)作为主控芯片: 2.采用DHT11传感器,温度测量范围0℃--50℃,湿度测量范围20%RH-90%RH 3.LCD1602液晶显示当前的温度和湿度: 4.当 ...

  4. 单片机课程设计:基于STM32的温湿度检监测报警系统的设计

    基于STM32的温湿度检监测报警系统 文章目录 基于STM32的温湿度检监测报警系统 前言 一.设计任务 二.系统硬件设计 1.元器件选用 2.系统模型设计 3.硬件连接 二.系统程序设计 1.程序流 ...

  5. 基于NB-IoT技术的环境温湿度监测系统的研制

    摘要 针对传统环境监测系统功耗高.维护成本高.不能实时监测的弊端,研制了一种以单片机为主控制芯片的基于 NB-IoT 技术的环境温湿度监测系统,并对主控制器的工作流程及通信模块的工作方式进行优化,降低 ...

  6. 毕设—基于树莓派的家居环境智能监测系统设计与实践

    一.资料查找工具 英文文献:Sci-Hub | Academic Navigation Site – To remove all barriers in the way of science 中文文献 ...

  7. 基于单片机的温湿度监测报警

    基于单片机的温湿度监测系统(独立按键.LCD1602.DHT11) 0.关注微信公众号(风吹摇铃 奔赴星海)下载全套资料,全套资料中包括如下内容:(需要PCB和焊接实物请阅读(使用前必读)文件下的内容 ...

  8. (毕业设计资料)基于STM32智能窗帘控制系统设计

    096[电路方案]基于STM32智能窗帘控制系统设计 基于STM32单片机的智能窗帘控制系统.该系统集蓝牙遥控.人声识别控制.空调红外遥控.24c02数据储存.433m遥控.热释电红外感应.温湿度检测 ...

  9. 基于stm32人体健康监测系统

    基于stm32人体健康监测系统 (心率,血氧,体温,语音播报,报警) 本设计采用STM32F103C8T6作为主控 使用MAX30102采集心率和血氧值 使用MLX90614测量体温 OLED显示当前 ...

最新文章

  1. python数据结构与算法40题_Python数据结构与算法刷题(2)——挖掘机技术哪家强...
  2. 问题:python3关于json文件多余一行后发生的错误
  3. SPOJ - NUMOFPAL Number of Palindromes(回文自动机)
  4. [Android] Implementation vs API dependency
  5. 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践 1
  6. matlab处理最优化问题,matlab求最优化问题
  7. 如何通过反射创建对象
  8. Jenkins的系统设置
  9. 这是一封摘抄的情书有点长你读不完也没关系
  10. 鸡尾酒会公式\帕金森定律(Parkinson's Law)
  11. vue-ES2015:
  12. Linux du命令(du -h ,du -s)
  13. springboot调用第三方邮箱发送邮件过程详解
  14. HRBUST1313 火影忍者之~静音
  15. 只有那些不断充实自己的人,才有机会在往后的日子里持续地被雇用
  16. 圆桌:满足客人空座需求,准备最少的椅子,合理安排客人入座圆桌
  17. 山经·南山经:招摇山
  18. 新建UEFI启动分区
  19. 恐龙快打无限子弹修改方案
  20. uni-app使用canvas生成图片并保存到相册

热门文章

  1. 如何通过光纤确保数据的网络安全?
  2. 英语音标发音Flash教程:48个音标汇总
  3. java 星形线代码,JavaScript图形实例:星形条纹图案
  4. Java、JSP基于WEB的在线问题解答系统
  5. net framework 3.5怎么安装 / 无法安装怎么办
  6. 数据分析之统计学(贾俊平)学习笔记一
  7. JS拼接字符串的过程中将JSON对象存到某个标签的属性中,encodeURIComponent(),btoa()用法介绍
  8. svn错误:更新源码出现校验和不匹配问题
  9. Nova3D whale2 3D打印机接口信息
  10. 微信jssdk上传图片java_微信JSSDK上传图片_javascript技巧