找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4612|回复: 0
收起左侧

STM32烟雾报警器程序

[复制链接]
ID:448371 发表于 2020-4-5 19:57 | 显示全部楼层 |阅读模式
使用DHT11温湿度传感器与MQ-2烟雾传感器

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "hmi.h"
  6. #include "adc.h"
  7. #include "stdio.h"
  8. #include "string.h"
  9. #include "dht11.h"
  10. #include "stdlib.h"
  11. #include "math.h"
  12. #include "lcd.h"

  13.    
  14. u8 table1[20];   
  15. u8 table2[20];
  16. u8 table3[20];
  17. u8 table4[20];
  18. u8 table5[20];
  19. u8 table6[20];

  20. DHT11_Data_TypeDef DHT11_Data;



  21. int main(void)
  22. {
  23.         u16 adcx;
  24.         float temp;
  25.         float value=2.5;
  26.         float ppm;
  27.         delay_init();                     //延时函数初始化          
  28.         uart_init(9600);                 //串口初始化为9600
  29.         LED_Init();                                  //初始化与LED连接的硬件接口
  30.         Adc_Init();                                  //ADC初始化       
  31.          LCD_Init();
  32.     DHT11_GPIO_Config();         
  33.         HMISendstart();
  34.         while(1)
  35.         {
  36.                 adcx=Get_Adc_Average(ADC_Channel_1,10);
  37.                 sprintf((char*)table1,"%d",adcx);               
  38.                 HMISends("t3.txt=\"");    //向串口屏发送电压值
  39.                 HMISends(table1);
  40.                 HMISends("\"");
  41.                 HMISendb(0xff);
  42.                 temp=(float)adcx*(3.3/4096);
  43.                 ppm=pow((0.1/temp)-0.02,-1.52695067);
  44.                 sprintf((char*)table5,"%f",ppm);
  45.                 sprintf((char*)table2,"%f",temp);
  46.                 HMISends("t4.txt=\"");   //向串口屏发送电压值
  47.                 HMISends(table2);
  48.                 HMISends("\"");
  49.                 HMISendb(0xff);
  50.                 HMISends("t11.txt=\"");   //向串口屏发送电压值
  51.                 HMISends(table5);
  52.                 HMISends("\"");
  53.                 HMISendb(0xff);
  54.                 if( Read_DHT11(&DHT11_Data)==SUCCESS)
  55.                 {
  56.                         LED0=!LED0;
  57.                         sprintf((char*)table3,"%d",DHT11_Data.humi_int);
  58.                         HMISends("t6.txt=\"");   //向串口屏发送电压值
  59.                         HMISends(table3);
  60.                         HMISends("\"");
  61.                         HMISendb(0xff);
  62.                         sprintf((char*)table4,"%d",DHT11_Data.temp_int);
  63.                         HMISends("t8.txt=\"");   //向串口屏发送电压值
  64.                         HMISends(table4);
  65.                         HMISends("\"");
  66.                         HMISendb(0xff);
  67.                 }
  68.                 if(USART_RX_STA&0x8000)
  69.                 {
  70.                         if(strcmp((char*)USART_RX_BUF,"moist")==0)
  71.                         {
  72.                                 JDQ=0;
  73.                                 delay_ms(1000);
  74.                         }
  75.                         else
  76.                         {
  77.                                 value=atof((char*)USART_RX_BUF);
  78.                         }
  79.                         memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
  80.                         USART_RX_STA=0;
  81.                 }
  82.                 if((temp>value)||(temp>2.5))
  83.                 {
  84.                         JDQ=0;
  85.                         BEEP=0;
  86.                 }
  87.                 else
  88.                 {
  89.                         JDQ=1;
  90.                         BEEP=1;
  91.                 }


  92.                 delay_ms(250);       
  93.         }                                                                                            
  94. }       
复制代码

所有资料51hei提供下载:
烟雾报警器.7z (3.08 MB, 下载次数: 113)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表