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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7303|回復: 2
收起左側

GSM模塊的51單片機火災煙霧報警器原理圖與程序設計

  [復制鏈接]
ID:899025 發表于 2021-4-3 23:17 | 顯示全部樓層 |閱讀模式
    本系統主要由單片機和GSM短信模塊組成,借助最可靠、最成熟的GSM移動網絡,以最直觀的中文短消息或電話形式,直接把報警地點的情況反映到您的手機屏幕上。   
  
(1)該設計包括硬件和軟件設計兩個部分。模塊劃分為數據采集、鍵盤控制、報警等模塊子函數。
  
(2)本震動防盜報警系統由震動傳感器、報警器、單片機控制電路、LED控制電路及相關的控制管理軟件組成。用戶終端完成信息采集、處理、數據傳送、功能設定、本地報警等功能。
  
(3)系統可實現功能。當人員外出時,可把報警系統設置在外出布防狀態,探測器工作起來,當有人闖入時,設置在監測點上的震動傳感器變換成電信號,經放大電路、比較電路送至門限開關,打開門限閥門送出TTL 電平至STC89C51單片機,經單片機處理運算后驅動執行報警電路使警號發聲。
  
(4)系統工作的穩定性和可靠性也是追求的重要指標。至于報警可采用聲光信號。

電路原理圖如下:
51hei.png

單片機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #include <absacc.h>                  //頭文件
  4. #define uint unsigned int
  5. #define uchar unsigned char          //宏定義

  6. //按鍵
  7. sbit key1=P1^0;           //布防
  8. sbit key2=P1^1;           //撤防
  9. sbit key3=P1^2;           //緊急報警

  10. sbit BUZZ=P0^4;           //蜂鳴器
  11. sbit rsd=P0^6;           //傳感器輸入
  12. sbit LED_B=P2^2;   //布防指示燈
  13. sbit LED_S=P2^0;   //發送消息指示燈
  14. sbit LED_BJ=P2^5;  //報警指示燈

  15. uchar code PhoneNO[]                ="00310035003500300032003200330032003700300036"; //接受號碼,這是轉碼后的 15502232706(就是003+最后一位就是手機號的數字,如:手機號是138,轉碼后就是003100330038)
  16. //uchar code PhoneNO[]                ="00310038003300390032003000310033003600300037"; //接受號碼,這是轉碼后的 18392013607

  17. uchar code somebody[]                ="73AF588370DF96FE6D535EA68FC79AD8FF0C8BF76CE8610FFF01FF01FF01";        //環境煙霧濃度過高,請注意!!!                                                                                                  

  18. uint TIME_50ms=0;           //計時的最小分辨率50ms
  19. uint time_continue;           //繼續計時
  20. bit flag=0,flag_BF=0;  //布防標志位
  21. bit flag_time_start=0; //開始計時標志位
  22. bit again=0;                   //再次計時
  23. bit flag_alam;                   //報警標志位
  24. bit SOS;
  25. bit flag_continue;
  26. bit into_BF=0;

  27. void delay(uint z)//延時函數
  28. {
  29.         uint x,y;
  30.         for(x=z;x>0;x--)
  31.         for(y=110;y>0;y--);
  32. }

  33. void Uart_init()
  34. {
  35.         TMOD= 0X20;                //T1  方式2  ,8位   自動重裝   
  36.         TH1=0Xfd;
  37.         TL1=0Xfd;            //9600
  38.         TR1=1;                     // 定時器1啟動  
  39.         SM0=0;            // 設置串口的工作模式
  40.         SM1=1;             //方式1

  41.         REN=0;                  // 允許串口接收數據          

  42.         ES=0;              // 串口中斷應許
  43.         EA=1;                 // 開啟中斷
  44. }

  45. void SendASC(uchar d)
  46. {
  47.        
  48.         SBUF=d;
  49.         while(!TI);

  50.         TI=0;
  51. }

  52. void SendString(uchar *str)       
  53. {
  54.         while(*str)
  55.         {
  56.                 SendASC(*str) ;
  57.                 str++;
  58.                 //delay_uart(1);
  59.         }
  60. }

  61. void TIME()
  62. {
  63.         if(flag==0)
  64.         {
  65.                 delay(50);
  66.                 TIME_50ms++;
  67.                 if(TIME_50ms%10==0)
  68.                 LED_B=!LED_B;
  69.                
  70.                 if(TIME_50ms>=100)
  71.                 {
  72.                         TIME_50ms=0;
  73.                         flag_BF=1;
  74.                         LED_B=0;
  75.                         flag_time_start=0;
  76.                         again=1;
  77.                 }       
  78.         }
  79.         else
  80.         {
  81.                 delay(50);
  82.                 TIME_50ms++;
  83.                 if(TIME_50ms%10==0)
  84.                 {
  85.                         LED_B=!LED_B;
  86.                         if(flag_alam==1)
  87.                         {
  88.                                
  89.                                 if(flag_continue==0)
  90.                                 {
  91.                                         flag_continue=1;
  92.                                         time_continue=TIME_50ms;
  93.                                 }
  94.                                 BUZZ=!BUZZ;
  95.                                 LED_BJ=BUZZ;
  96.                                 if(TIME_50ms>=time_continue+100)
  97.                                 {
  98.                                         BUZZ=1;
  99.                                         LED_BJ=1;
  100.                                         flag_continue=0;
  101.                                         flag_alam=0;
  102.                                         time_continue=0;
  103.                                 }       
  104.                         }
  105.                 }
  106.                 if(TIME_50ms>=1200)
  107.                 {
  108.                         LED_B=0;
  109.                         TIME_50ms=0;
  110.                         flag_time_start=0;
  111.                         again=1;
  112.                 }
  113.         }
  114. }

  115. //按鍵掃描函數
  116. void keyscan()
  117. {
  118.         if(key1==0&&flag_BF==0)//布防
  119.         {
  120.                 delay(5);//延時
  121.                 if(key1==0)
  122.                 {
  123.                         LED_B=0;
  124.                         flag=0;
  125.                         flag_time_start=1;
  126.                 }
  127.                 while(key1==0);
  128.         }
  129.         if(flag_time_start==1)
  130.         {
  131.                 TIME();
  132.         }
  133.         if(key2==0)
  134.         {                          
  135.                 delay(5);//撤防
  136.                 if(key2==0)
  137.                 {
  138.                         BUZZ=1;        //關閉蜂鳴器
  139.                         LED_BJ=1;
  140.                         flag_alam=0;
  141.                         flag_BF=0;
  142.                         flag=0;
  143.                         flag_time_start=0;
  144.                         LED_S=1;
  145.                         LED_B=1;
  146.                 }
  147.                 while(key2==0);
  148.         }
  149.         if(key3==0)
  150.         {
  151.                 delay(5);
  152.                 if(key3==0)
  153.                 {
  154.                         SOS=1;
  155.                         flag_alam=1;
  156.                 }
  157.                 while(key3==0);
  158.         }
  159. }

  160. void GSM_work()
  161. {
  162.         if(rsd==0&&flag_BF==1)
  163.         flag_alam=1;
  164. /*        else
  165.         BUZZ=1;         */
  166.         if((rsd==0&&flag_BF==1&&again==1)||SOS==1)
  167.         {
  168.                 LED_S=0;
  169.                 BUZZ=1;
  170.                 SendString("AT+CMGF=1\r\n");       
  171.                
  172.                 delay(1000);
  173.                
  174.                 SendString("AT+CSCS=\"UCS2\"\r\n");       
  175.                
  176.                 delay(1000);
  177.                
  178.                 SendString("AT+CSMP=17,0,2,25\r\n");       
  179.                
  180.                 delay(1000);
  181.                
  182.                 SendString("AT+CMGS=");        //信息發送指令 AT+CMGS=//
  183.                 SendASC('"');
  184.                 SendString(PhoneNO);   
  185.                 SendASC('"');
  186.                 SendASC('\r');                        //發送回車指令//
  187.                 SendASC('\n');                        //發送換行指令//
  188.                
  189.                 delay(1000);

  190.                 SendString(somebody);
  191.        
  192.                 delay(1000);
  193.                
  194.                 SendASC(0x1a);
  195.                
  196.                 if(SOS==0)
  197.                 {
  198.                         again=0;
  199.                         flag_time_start=1;
  200.                         flag_alam=1;
  201.                                
  202.                 }
  203.                 else if(SOS==1&&flag_time_start==1)
  204.                 {
  205.                         TIME_50ms=0;
  206.                         flag_BF=1;
  207.                         LED_B=0;
  208.                         flag_time_start=0;
  209.                         again=1;
  210.                 }
  211.                
  212.                 LED_S=1;
  213.                 SOS=0;
  214.                 flag=1;
  215.         }
  216. }       
  217. void main()
  218. {       
  219.         Uart_init();
  220.         while(1)
  221.         {
  222.                 keyscan();
  223.                 GSM_work();
  224.         }          
  225. }
復制代碼

以上資料51hei提供下載:
1-源程序.rar (170.47 KB, 下載次數: 67)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:651497 發表于 2021-4-23 23:41 來自手機 | 顯示全部樓層
樓主可以再發一下么,損壞啦,好人一生平安
回復

使用道具 舉報

ID:1105846 發表于 2023-12-23 18:44 | 顯示全部樓層
感謝樓主,很有幫助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩高清中文字幕 | 日本一区二区不卡 | 亚洲国产专区 | 密桃av | 日日夜夜天天综合 | 国产农村妇女精品一区 | 久久这里只有精品首页 | www.久久 | 国产免费一区二区 | 日日噜噜噜夜夜爽爽狠狠视频, | 国产精品毛片一区二区在线看 | 久久国产精品99久久久久 | 国产精品视频 | cao视频 | 久久激情视频 | 国产三区在线观看视频 | 亚洲一av | 成人二区 | 99久久精品免费 | 国产精品久久久久久久久免费 | 日韩欧美视频在线 | 欧美一级久久 | 久久精品国产99国产精品 | 香蕉视频黄色 | 欧美在线高清 | 亚洲二区视频 | 亚洲精品久久久9婷婷中文字幕 | 国产精品久久久久久久久婷婷 | 九色在线视频 | 男人久久天堂 | 成人av网站在线观看 | 成人av一区 | 欧美群妇大交群中文字幕 | 久久精品亚洲欧美日韩精品中文字幕 | 国产福利一区二区 | 亚洲色综合 | 不卡欧美 | 久久精品国产一区二区三区不卡 | 伊人网站视频 | 9191av| 欧美成视频在线观看 |