久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3376|回復: 1
收起左側

基于STM32智能火災報警系統程序

[復制鏈接]
ID:861056 發表于 2020-12-20 23:45 | 顯示全部樓層 |閱讀模式
STM32智能火災報警,包括了MQ2煙霧報警器的使用。

單片機源程序如下:
  1. #include "stm32f10x_adc.h"
  2. #include "stdlib.h"
  3. #include "delay.h"
  4. #include "sys.h"
  5. #include "oled.h"
  6. #include "bmp.h"
  7. #include "usart.h"
  8. #include "LED.h"
  9. #include "KEY.h"
  10. #include "ADC.h"
  11. #include "timer.h"
  12. #include "HUO.h"


  13. extern u16 k1,k2;
  14. extern u8 an;
  15. int main(void)
  16. {
  17.         u8 i = 0,t = 0,key_value = 0,fasong = 0,zhuangtai = 0;
  18.         u16 adcx = 0;
  19.         u16 adcx_index = 300;
  20.         u8 huo = 1;
  21.         u8 huo_flag = 0;
  22.         u8 string[10] = {0};
  23.         NVIC_Configuration();
  24.         delay_init();
  25.         uart_init(115200);                 //串口初始化為115200
  26.         
  27.         LED_Init();
  28.         KEY_Init();
  29.         HUO_Init();
  30.         Adc_Init();
  31.         OLED_Init();
  32.         OLED_Clear();
  33.         OLED_ColorTurn(0);//0正常顯示,1 反色顯示
  34.         OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉顯示
  35.         
  36.         for(i = 0;i<8;i++)
  37.         OLED_ShowChinese(i*16,16,i,16);//智能火災報警系統
  38.         OLED_Refresh();//更新顯示到OLED        
  39.         delay_ms(999);delay_ms(999);        
  40.         
  41.         OLED_Clear();        
  42. //0
  43.         for(i = 0;i<6;i++)//火焰采集值:
  44.         OLED_ShowChinese(i*16,0,i+18,16);
  45. //16
  46.         for(i = 0;i<2;i++)//火焰
  47.         OLED_ShowChinese(i*16,16,i+18,16);
  48.         OLED_ShowChinese(16*2,16,26,16);//閾
  49.         for(i = 0;i<2;i++)//值:
  50.         OLED_ShowChinese(i*16+16*3,16,i+22,16);
  51.         sprintf((char *)string,"%4d",adcx_index);//0300
  52.         OLED_ShowString(88,16,string,16);
  53. //32
  54.         for(i = 0;i<2;i++)//煙霧
  55.         OLED_ShowChinese(i*16,32,i+24,16);
  56.         for(i = 0;i<2;i++)//值:
  57.         OLED_ShowChinese(i*16+16+16,32,i+22,16);
  58.         for(i = 0;i<2;i++)//啟用
  59.         OLED_ShowChinese(i*16+16*4+8,32,i+27,16);
  60.         OLED_ShowChinese(16*6+8,32,23,16);//:
  61.         OLED_ShowChinese(16*7,32,30,16);//否
  62. //48
  63.         for(i = 0;i<2;i++)//安全
  64.         OLED_ShowChinese(i*16+16*3,48,i+33,16);

  65.         OLED_Refresh();//更新顯示到OLED        
  66.         
  67.         //TIM3_Int_Init(99,7199);//10Khz的計數頻率,計數到100為10ms  
  68.         
  69.         while(1)
  70.         {
  71.                 key_value = KEY_Scan(0);
  72.                 switch (key_value)
  73.                 {
  74.                         case KEY0_PRES:
  75.                                 if(adcx_index>100)adcx_index-=200;else adcx_index=500;
  76.                                 sprintf((char *)string,"%4d",adcx_index);
  77.                                 OLED_ShowString(88,16,string,16);
  78.                                 break;
  79.                         case KEY1_PRES:
  80.                                 huo_flag =! huo_flag;
  81.                                 OLED_ShowChinese(16*7,32,huo_flag?29:30,16);//是/否
  82.                                 break;
  83.                         case KEY2_PRES:
  84.                                 fasong = !fasong;
  85.                                 if(fasong == 1){LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}
  86.                                 else {LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(200);LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}
  87.                                 break;
  88.                         default:
  89.                                 break;
  90.                 }
  91.                
  92.                 t++;
  93.                 if(t==10)
  94.                 {
  95.                         adcx=Get_Adc_Average(ADC_Channel_1,10);
  96.                         sprintf((char *)string,"%4d",adcx);
  97.                         OLED_ShowString(88,0,string,16);
  98.                         huo = HUO_Scan();
  99.                         OLED_ShowNum(56,32,huo,1,16);
  100.                         
  101.                         if(huo_flag == 0)
  102.                         {
  103.                                 if(adcx <= adcx_index)
  104.                                 {
  105.                                         LED0 = 0;
  106.                                         for(i = 0;i<2;i++)//報警
  107.                                         OLED_ShowChinese(i*16+16*3,48,i+31,16);
  108.                                         zhuangtai = 1;
  109.                                 }
  110.                                 else
  111.                                 {
  112.                                         LED0 = 1;
  113.                                         for(i = 0;i<2;i++)//安全
  114.                                         OLED_ShowChinese(i*16+16*3,48,i+33,16);
  115.                                         zhuangtai = 0;
  116.                                 }
  117.                         }
  118.                         else
  119.                         {
  120.                                 if((adcx <= adcx_index)&&huo==1)
  121.                                 {
  122.                                         LED0 = 0;
  123.                                         for(i = 0;i<2;i++)//報警
  124.                                         OLED_ShowChinese(i*16+16*3,48,i+31,16);
  125.                                         zhuangtai = 1;
  126.                                 }
  127.                                 else
  128.                                 {
  129.                                         LED0 = 1;
  130.                                         for(i = 0;i<2;i++)//安全
  131.                                         OLED_ShowChinese(i*16+16*3,48,i+33,16);
  132.                                         zhuangtai = 0;
  133.                                 }
  134.                         }
  135.                         if(fasong == 1)zhuangtai?printf("1"):printf("0");//printf("報警\r\n"):printf("安全\r\n");
  136.                         OLED_Refresh();
  137.                         t=0;
  138.                 }
  139.                 delay_ms(20);        
  140.                
  141.         }
  142. }
復制代碼

所有資料51hei提供下載:
智能火災報警系統2_程序.7z (205.68 KB, 下載次數: 59)


回復

使用道具 舉報

ID:1 發表于 2020-12-21 00:52 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久激情网 | 青青草免费在线视频 | 岛国精品| 亚洲精品久久久久中文字幕欢迎你 | 欧美成人一区二区三区 | 亚洲一级黄色 | 午夜精品一区二区三区在线视 | 欧美综合一区 | 99精品国产一区二区青青牛奶 | 国产大片一区 | 2019天天操 | 国产日韩欧美一区二区 | 日韩国产一区二区三区 | 成人精品国产免费网站 | 日韩三级一区 | 九九久久精品 | 日日夜夜精品视频 | 在线āv视频 | 亚洲综合天堂网 | 免费超碰 | 国产精品久久 | 国产日韩欧美一区二区 | 久久久精彩视频 | 精品日韩一区二区三区 | 国产高清精品在线 | 中文字幕第5页 | 精品国产一区久久 | 欧美亚洲日本 | 在线视频成人 | 国产精品久久久亚洲 | 亚洲国产成人精品久久久国产成人一区 | 色网在线播放 | 一区二区免费在线观看 | 成人影院av | 日韩二区 | 偷拍自拍第一页 | 欧美一区二区在线播放 | 天天操夜夜爽 | 精品久久电影 | 久久99精品久久久久久秒播九色 | 久草青青草 |