当前位置:   article > 正文

stm32单片机空气质量DHT11温湿度监测报警系统Proteus仿真全套资料

stm32单片机空气质量DHT11温湿度监测报警系统Proteus仿真全套资料

 一:功能介绍

1、采用stm32单片机+LCD1602+DHT11温湿度传感器+DS1302传感器+空气质量传感器+按键+蜂鸣器+LED灯,制作一个空气质量DHT11温湿度监测报警系统;

2、通过按键设置温度和空气质量浓度阈值,LCD1602显示相关阈值;

3、该系统可以采集空气质量浓度和温湿度;温度大于设置值,LED灯闪烁提醒,当空气质量采集浓度大于设置浓度,蜂鸣器报警提醒;

4、LCD1602显示ds1302时钟的时间和采集的温湿度、空气质量浓度、温度和空气质量浓度的阈值;

二:仿真演示视频+程序简要讲解:(程序有中文注释,新手容易看懂)

95-基于stm32单片机空气质量DHT11温湿度监测报警系统Proteus仿真+程序源码+讲解视频

三:设计软件介绍

本设计使用C语言编程设计,程序代码采用keil5编写,程序有中文注释,新手容易看懂,仿真采用Proteus软件进行仿真演示视频使用的是Proteus8.9版本;资料包里有相关软件包,可自行下载安装。

四:程序打开方法

特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

c2df0595ccf4c5b2af4706adf67418e2.png

bb5bc1891be758a521ae8a87ca5b865c.png

  1. 程序部分展示,有中文注释,新手容易看懂
  2. //T1 温度
  3. WrByte1602(0,0,'T'); //.
  4. WrByte1602(0,1,'='); //.
  5. WrByte1602(0,2,AsciiCode[wendu%100/10]);
  6. WrByte1602(0,3,AsciiCode[wendu%10]);
  7. WrByte1602(0,4,' ');
  8. //T2 湿度
  9. WrByte1602(0,5,'H'); //.
  10. WrByte1602(0,6,'='); //.
  11. WrByte1602(0,7,AsciiCode[shidu%100/10]);
  12. WrByte1602(0,8,AsciiCode[shidu%10]);
  13. WrByte1602(0,9,' ');
  14. //T3 浓度
  15. WrByte1602(0,10,'N'); //.
  16. WrByte1602(0,11,'='); //.
  17. WrByte1602(0,12,AsciiCode[nongdu%1000/100]);
  18. WrByte1602(0,13,AsciiCode[nongdu%100/10]);
  19. WrByte1602(0,14,AsciiCode[nongdu%10]);
  20.   WrByte1602(0,15,' ');    
  21.   xxx=0;yyy=1;
  22. WrByte1602(yyy,xxx++,AsciiCode[shi%100/10]);//显示时间
  23. WrByte1602(yyy,xxx++,AsciiCode[shi%10]);
  24. WrByte1602(yyy,xxx++,':');
  25. WrByte1602(yyy,xxx++,AsciiCode[fen%100/10]);
  26. WrByte1602(yyy,xxx++,AsciiCode[fen%10]);
  27. WrByte1602(yyy,xxx++,':');
  28. WrByte1602(yyy,xxx++,AsciiCode[miao%100/10]);
  29. WrByte1602(yyy,xxx++,AsciiCode[miao%10]);
  30. WrByte1602(yyy,xxx++,' '); //显示温度阈值
  31. WrByte1602(yyy,xxx++,'T');
  32. WrByte1602(yyy,xxx++,AsciiCode[wendu1%100/10]);
  33. WrByte1602(yyy,xxx++,AsciiCode[wendu1%10]);
  34. WrByte1602(yyy,xxx++,' ');
  35. WrByte1602(yyy,xxx++,'N'); //显示浓度阈值
  36. WrByte1602(yyy,xxx++,AsciiCode[nongdu1%100/10]);
  37. WrByte1602(yyy,xxx++,AsciiCode[nongdu1%10]);
  38. WrByte1602(yyy,xxx++,' ');
  39. }
  40. int main(void)
  41. {
  42. char i=0;
  43. float vol;//电压
  44. //时钟配置
  45. SystemInit();
  46. SystemCoreClockUpdate();
  47. //引脚配置
  48. GPIO_Configuration();
  49. //LCD1602初始化
  50. Init1602();
  51. NVICConfig();
  52. //RCC时钟开启
  53. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
  54. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  55. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  56. DS1302_Configuration();
  57. //获取浓度值
  58. ADC_Set();
  59. //DS1302数据编码格式需要进行转换
  60. ReadDS1302Clock(time_data);
  61. shi = time_data[3]%16+time_data[3]/16*10;
  62. fen = time_data[4]%16+time_data[4]/16*10;
  63. miao = time_data[5]%16+time_data[5]/16*10;
  64. PBout(14)=PBout(6)=1;//LED灯和蜂鸣器默认关闭
  65. while (1)
  66. {
  67. i++;
  68. delay_ms(10);
  69. if(i>=100)
  70. {
  71. i=0;
  72. vol = ADC_GetConversionValue(ADC1);
  73. //根据阻值计算浓度
  74. nongdu = vol*(3.4/4096)*33;
  75. //读取温湿度
  76. DHT11_receive(&shidu,&wendu);
  77. ReadDS1302Clock(time_data);
  78. shi = time_data[3]%16+time_data[3]/16*10;
  79. fen = time_data[4]%16+time_data[4]/16*10;
  80. miao = time_data[5]%16+time_data[5]/16*10;
  81. //显示全部参数
  82. Display();
  83. }
  84. anjiansaomiao();//按键扫描
  85. //浓度大于阈值
  86. if(nongdu>nongdu1 )
  87. {
  88. PBout(6)=0;//蜂鸣器提醒
  89. }
  90. else PBout(6)=1;//蜂鸣器关闭
  91. //温度>阈值 LED闪烁提醒
  92. if(wendu>wendu1 )
  93. {
  94. PBout(14)=~PBout(14);
  95. }
  96. else PBout(14)=1;//否则关闭
  97. }
  98. }

:仿真文件(采用Proteus打开)

c2cc598b4dedeac57ae05bcd1d4500ec.png

343c3ea34f7ceac21144f4b47d2540a6.png

ca06c6b6419eaba59b205aa96306149d.png

六:资料清单展示(文件中包含的相关资料)

a25a95727bcbb0030fab61ac00e29a57.png

百度云盘资料下载链接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/606430
推荐阅读
相关标签
  

闽ICP备14008679号