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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19944|回復: 34
打印 上一主題 下一主題
收起左側

基于單片機GSM遠程控制報警設計 程序+原理圖

  [復制鏈接]
跳轉到指定樓層
樓主
給大家分享一個基于單片機GSM遠程控制報警設計
1.本設計為家庭防火防盜GSM報警器;
2.采用STC89C51/52單片機為控制核心,SIM900A為GSM模塊,MQ-2煙霧傳感器、數模轉換器ADC0832、人體紅外熱釋電模塊、1602液晶組成;
3.當檢測到有煙霧或煤氣時,MQ-2傳感器會發出電壓信號,單片機通過ADC0832檢測到該信號,就會將煙霧濃度值顯示到1602液晶上;
4.設置為布防狀態時,1)煙霧濃度值大于設定值,GSM模塊會發出短信報警,同時蜂鳴器報警。2)當人體紅外模塊檢測到有人時,GSM模塊會發出短信報警,同時蜂鳴器報警。
5. 一共有五個按鍵,一個復位按鍵、四個功能按鍵。分別為:打電話測試、發短信測試、布防、撤防。





GSM防盜報警器元清單


1. 7*9萬用板
2. stc89c51
3. 40腳IC座
4. 10uf電解電容
5. 30pf瓷片電容*2
6. 11.0592MHz晶振
7. 3p母座
8. 8腳母座
9. 9013三極管
10. 9012三極管
11. 25V470uF電解電容
12. 10k電阻*2
13. 5V有源蜂鳴器
14. 3mm紅色led
15. 3mm綠色led
16. 3mm黃色led
17. 1N4007二極管
18. 排針*4
19. 熱釋電模塊
20. SIM900A GSM模塊
21. 2.2k電阻*4
22. 220歐電阻
23. 按鍵*4
24. DC插座
25. 自鎖開關
26. 焊錫
27. 導線
28. USB電源線(粗)


加煙霧模塊
  • 1.7*9萬用板
  • 煙霧傳感器MQ-2
  • LM393
  • 8IC
  • 103電位器
  • 104獨石電容
  • 5.1Ω電阻
  • 1k電阻
  • 10k電阻
  • 排針*6

單片機源程序:
  1. //文件包含
  2. #include "reg52.h"
  3. #include "uart.c"
  4. #include "lcd1602.h"
  5. #include "DHT11.C"

  6. //宏定義
  7. #define uchar unsigned char
  8. #define uint  unsigned int

  9. //按鍵定義
  10. sbit KEY1= P1^6;
  11. sbit KEY2= P3^2;
  12. sbit KEY3= P3^3;
  13. sbit KEY4= P3^4;
  14. sbit BEE = P1^0;
  15. sbit HW  = P1^3;

  16. //ADC定義
  17. sbit  CS=P3^5;      
  18. sbit CLK=P3^7;      
  19. sbit DIO=P3^6;

  20. //字符數組
  21. uchar code Tab0[] = {"0123456789.     "};
  22. uchar code Tab1[] = {" it is readying "};
  23. uchar code Tab2[] = {"     it is ok   "};
  24. uchar code Tab3[] = {"smoke is     ppm"};
  25. //uchar code Tab3[] = {" the GSM system "};
  26. uchar code Tab4[] = {"   'C     %     "};
  27. uchar code Tab5[] = {"in calling      "};
  28. uchar code Tab6[] = {"in sending      "};
  29. uchar code Tab7[] = {" ON OFF"};

  30. uchar GSM_flag=0;
  31. uchar temp,Set_temp=40;          //溫度
  32. uchar shidu,Set_shidu=100;         //濕度
  33. uchar smoke=0,Set_smoke=50;         //煙霧
  34. uchar HW_reg=0;

  35. //設置短信接收人
  36. //uchar code PhoneNO[]= "00310035003700320039003300390030003100330037";                 // 15729390137
  37. uchar code PhoneNO[]= "00310038003700350031003900310039003600350034 ";                 //  18751919654
  38. //設置電話接聽人
  39. uchar code PhoneNO1[]= "18751919654";
  40. //uchar code PhoneNO1[]= "15729390137";
  41. //主人您好!我是您的管家!
  42. uchar code Text1[]= "4E3B4EBA60A8597DFF016211662F60A876847BA15BB6FF01";
  43. //主人,溫度過高,可能著火了,快回家看看!
  44. uchar code Text2[]="4E3B4EBAFF0C6E295EA68FC79AD8FF0C5BB64E2D53EF80FD7740706B4E86FF015FEB56DE5BB6770B770BFF01";
  45. //主人,家中有人闖入,您的家可能被盜了!
  46. uchar code Text3[]="4E3B4EBA002C5BB64E2D67094EBA95EF5165FF0C60A876845BB653EF80FD88AB76D74E86FF01";
  47. //煙霧濃度過大,可能著火了!快回家看看吧!
  48. uchar code Text4[]="70DF96FE6D535EA68FC75927FF0C53EF80FD7740706B4E86FF015FEB56DE5BB6770B770B5427FF01";

  49. //ADC0832函數,帶返回值
  50. unsigned int  A_D()
  51. {
  52.         unsigned char i,dat;
  53.         CS=1;   //一個轉換周期開始
  54.         CLK=0;  //為第一個脈沖作準備
  55.         CS=0;  //CS置0,片選有效
  56.         
  57.         DIO=1;    //DIO置1,規定的起始信號  
  58.         CLK=1;   //第一個脈沖
  59.         CLK=0;   //第一個脈沖的下降沿,此前DIO必須是高電平
  60.         DIO=1;   //DIO置1, 通道選擇信號  
  61.         CLK=1;   //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數據用于選擇通道,這里選通道CH0
  62.         CLK=0;   //第二個脈沖下降沿
  63.         DIO=0;   //DI置0,選擇通道0
  64.         CLK=1;    //第三個脈沖
  65.         CLK=0;    //第三個脈沖下降沿
  66.         DIO=1;    //第三個脈沖下沉之后,輸入端DIO失去作用,應置1
  67.         CLK=1;    //第四個脈沖
  68.         for(i=0;i<8;i++)  //高位在前
  69.         {
  70.                 CLK=1;         //第四個脈沖
  71.                 CLK=0;
  72.                 dat<<=1;       //將下面儲存的低位數據向右移
  73.                 dat|=(unsigned char)DIO;          //將輸出數據DIO通過或運算儲存在dat最低位
  74.         }                                 
  75.         CS=1;          //片選無效
  76.         return dat;         //將讀出的數據返回     
  77. }

  78. //主函數
  79. void main(void)
  80. {
  81.          uchar G,S,B;
  82.           LCD1602_Init();                                        //1602液晶屏初始化
  83.         LCD1602_Display(LINE1,Tab1,0,16);                //準備界面
  84.          BEE=0;                                                                        //開機提示
  85.         Delay_ms(50);
  86.         BEE=1;
  87.         Uart_init();

  88.          Delay_ms(500);                                       //等待GSM模塊穩定
  89.         SendString("AT\r\n");
  90.         BEE=0;                                                       //提示已穩定
  91.         Delay_ms(50);
  92.         BEE=1;

  93.          while(1)
  94.         {        
  95.                 LCD1602_Display(LINE1,Tab3,0,16);                //準備完畢
  96.                 LCD1602_Display(LINE2,Tab4,0,13);                //準備完畢
  97.                 smoke=A_D();
  98.                 RH();
  99.                 temp=U8T_data_H;         //溫度
  100.                 shidu=U8RH_data_H;         //濕度        
  101.                 if(1)
  102.                 {
  103.                         B=temp/100;
  104.                         S=temp%100/10;
  105.                         G=temp%10;
  106.                         LCD1602_Display(LINE2,Tab0,B,1);
  107.                         LCD1602_Display(LINE2+1,Tab0,S,1);
  108.                         LCD1602_Display(LINE2+2,Tab0,G,1);
  109.                         B=shidu/100;
  110.                         S=shidu%100/10;
  111.                         G=shidu%10;
  112.                         LCD1602_Display(LINE2+7,Tab0,S,1);
  113.                         LCD1602_Display(LINE2+8,Tab0,10,1);
  114.                         LCD1602_Display(LINE2+9,Tab0,G,1);
  115.                         B=smoke/100;
  116.                         S=smoke%100/10;
  117.                         G=smoke%10;
  118.                         LCD1602_Display(LINE1+9,Tab0,B,1);
  119.                         LCD1602_Display(LINE1+10,Tab0,S,1);
  120.                         LCD1602_Display(LINE1+11,Tab0,G,1);
  121.                 }
  122.                 Delay_ms(100);
  123.                
  124.                 //第一個按鍵,打電話測試
  125.                 if(KEY1==0)
  126.                 {
  127.                         Delay_ms(10);
  128.                         if(KEY1==0)
  129.                         {
  130.                                 BEE=0;                                           //提示進入按鍵
  131.                                 Delay_ms(20);
  132.                                 BEE=1;
  133.                                 LCD1602_Display(LINE2,Tab5,0,16);
  134.                                 SendString("ATD");                        //打電話指令
  135.                                 SendString(PhoneNO1);  
  136.                                 SendASC(';');
  137.                                 SendASC('\r');                        //發送回車指令
  138.                                 SendASC('\n');                        //發送回車指令
  139.                                 Delay_ms(2000);
  140.                                 SendString("ATH\r\n");                //主動掛斷
  141.                                 Delay_ms(100);
  142.                         }
  143.                 }
  144.                 //第二個按鍵
  145.                 if(KEY2==0)
  146.                 {
  147.                         Delay_ms(10);
  148.                         if(KEY2==0)
  149.                         {
  150.                                 BEE=0;                                           //提示進入按鍵
  151.                                 Delay_ms(20);
  152.                                 BEE=1;
  153.                                 LCD1602_Display(LINE2,Tab6,0,16);
  154.                                 SendString("AT+CMGF=1\r\n");        
  155.                                 Delay_ms(100);                        
  156.                                 SendString("AT+CSCS=\"UCS2\"\r\n");        
  157.                                 Delay_ms(100);               
  158.                                 SendString("AT+CSMP=17,0,2,25\r\n");
  159.                                 Delay_ms(100);        
  160.                                 SendString("AT+CMGS=");        //信息發送指令 AT+CMGS=//
  161.                                 SendASC('"');
  162.                                 SendString(PhoneNO);   
  163.                                 SendASC('"');
  164.                                 SendASC('\r');                        //發送回車指令//
  165.                                 SendASC('\n');                        //發送回車指令//
  166.                                 Delay_ms(100);                                
  167.                                 SendString(Text1);  
  168.                                 Delay_ms(100);                        
  169.                                 SendASC(0X1A);
  170.                                 Delay_ms(1000);                                       
  171.                         }
  172.                 }
  173.                 //第三個按鍵,布防
  174.                 if(KEY3==0)
  175.                 {
  176.                         Delay_ms(6);
  177.                         if(KEY3==0)
  178.                         {
  179.                                 BEE=0;                                           //提示進入按鍵
  180.                                 Delay_ms(20);
  181.                                 BEE=1;
  182.                                 GSM_flag=1;        
  183.                                 LCD1602_Display(LINE2+13,Tab7,0,3);               
  184.                         }
  185.                 }
  186.                 //第四個按鍵,撤防
  187.                 if(KEY4==0)
  188.                 {
  189.                         Delay_ms(6);
  190.                         if(KEY4==0)
  191.                         {
  192.                                 BEE=0;                                           //提示進入按鍵
  193.                                 Delay_ms(20);
  194.                                 BEE=1;
  195.                                 GSM_flag=0;
  196.                                 LCD1602_Display(LINE2+13,Tab7,4,3);
  197.                         }
  198.                 }
  199.                 //紅外
  200.                 if(HW==1)
  201.                 {
  202.                         Delay_ms(10);
  203.                         if(HW==1)
  204.                         {
  205.                                 BEE=0;                                           //提示進入按鍵
  206.                                 Delay_ms(100);
  207.                                 BEE=1;
  208.                                 if(GSM_flag==1)
  209.                                 {
  210.                                         HW_reg++;
  211.                                         if(HW_reg>=10)
  212.                                         HW_reg=10;
  213.                                 }
  214.                         }
  215.                 }
  216.                 //進入布防模式
  217.                 if(GSM_flag==1)
  218.                 {
  219.                         //有人闖入
  220.                         if(HW_reg>=1)
  221.                         {
  222.                                 HW_reg=0;
  223.                                 SendString("AT+CMGF=1\r\n");        
  224.                                 Delay_ms(100);                        
  225.                                 SendString("AT+CSCS=\"UCS2\"\r\n");        
  226.                                 Delay_ms(100);               
  227.                                 SendString("AT+CSMP=17,0,2,25\r\n");
  228.                                 Delay_ms(100);        
  229.                                 SendString("AT+CMGS=");        //信息發送指令 AT+CMGS=//
  230.                                 SendASC('"');
  231.                                 SendString(PhoneNO);   
  232.                                 SendASC('"');
  233.                                 SendASC('\r');                        //發送回車指令//
  234.                                 SendASC('\n');                        //發送回車指令//
  235.                                 Delay_ms(100);                                
  236.                                 SendString(Text3);  
  237.                                 Delay_ms(100);                        
  238.                                 SendASC(0X1A);
  239.                                 Delay_ms(1000);                        
  240.                         }
  241.                         //溫度過高,可能著火了
  242.                         if(temp>=Set_temp)
  243.                         {
  244.                                 SendString("AT+CMGF=1\r\n");        
  245.                                 Delay_ms(100);                        
  246.                                 SendString("AT+CSCS=\"UCS2\"\r\n");        
  247.                                 Delay_ms(100);               
  248.                                 SendString("AT+CSMP=17,0,2,25\r\n");
  249.                                 Delay_ms(100);        
  250.                                 SendString("AT+CMGS=");        //信息發送指令 AT+CMGS=//
  251.                                 SendASC('"');
  252.                                 SendString(PhoneNO);   
  253.                                 SendASC('"');
  254.                                 SendASC('\r');                        //發送回車指令//
  255.                                 SendASC('\n');                        //發送回車指令//
  256.                                 Delay_ms(100);                                
  257.                                 SendString(Text2);  
  258.                                 Delay_ms(100);                        
  259.                                 SendASC(0X1A);
  260.                                 Delay_ms(1000);                                
  261.                         }
  262.                         //煙霧濃度過高,可能著火了
  263.                         if(smoke>=Set_smoke)
  264.                         {
  265.                                 SendString("AT+CMGF=1\r\n");        
  266.                                 Delay_ms(100);                        
  267.                                 SendString("AT+CSCS=\"UCS2\"\r\n");        
  268.                                 Delay_ms(100);               
  269.                                 SendString("AT+CSMP=17,0,2,25\r\n");
  270.                                 Delay_ms(100);        
  271.                                 

  272. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

下載:
程序.rar (77.9 KB, 下載次數: 553)
2-原理圖.rar (104.56 KB, 下載次數: 456)

評分

參與人數 2黑幣 +10 收起 理由
一修 + 5 很給力!
jinmei1314 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏25 分享淘帖 頂9 踩
回復

使用道具 舉報

沙發
ID:268395 發表于 2018-4-11 16:11 | 只看該作者
謝謝大神
回復

使用道具 舉報

板凳
ID:310049 發表于 2018-4-17 14:38 | 只看該作者
正好要做這個,謝謝大神
回復

使用道具 舉報

地板
ID:315505 發表于 2018-4-24 17:04 | 只看該作者
這個并沒有遠程控制吧,僅僅一個短信通知
回復

使用道具 舉報

5#
ID:315723 發表于 2018-4-27 11:55 | 只看該作者
好貴呀這個
回復

使用道具 舉報

6#
ID:293762 發表于 2018-5-14 21:06 | 只看該作者
謝謝分享!
回復

使用道具 舉報

7#
ID:293401 發表于 2018-5-17 19:43 | 只看該作者
為什么有紅外模塊又有熱釋電模塊。
回復

使用道具 舉報

8#
ID:331760 發表于 2018-5-18 19:11 | 只看該作者
仿真的時候串口收不到消息啊
回復

使用道具 舉報

9#
ID:334737 發表于 2018-5-22 18:59 | 只看該作者
正好要做這個,謝謝大神
回復

使用道具 舉報

10#
ID:336060 發表于 2018-5-22 21:25 | 只看該作者
記錄一下,剛開始學習
回復

使用道具 舉報

11#
ID:336768 發表于 2018-5-23 19:57 | 只看該作者
看起來很不錯,程序對我來說有些難
回復

使用道具 舉報

12#
ID:364607 發表于 2018-8-9 22:59 | 只看該作者
給力,謝謝大佬分享
回復

使用道具 舉報

13#
ID:380389 發表于 2018-8-14 07:56 來自手機 | 只看該作者
謝謝樓主分享,很實用學習一下
回復

使用道具 舉報

14#
ID:403095 發表于 2018-9-27 15:27 | 只看該作者

謝謝樓主分享
回復

使用道具 舉報

15#
ID:92231 發表于 2019-3-24 09:36 來自手機 | 只看該作者
我是菜鳥,所以先收藏后慢慢再學
回復

使用道具 舉報

16#
ID:398105 發表于 2019-3-24 15:52 | 只看該作者
謝謝分享
回復

使用道具 舉報

17#
ID:506025 發表于 2019-4-7 00:23 來自手機 | 只看該作者
哇就是這個 想要關于gsm的程序
回復

使用道具 舉報

18#
ID:490515 發表于 2019-4-11 16:29 | 只看該作者
想請問下,電話號碼和短信的內容是什么規律
回復

使用道具 舉報

19#
ID:350104 發表于 2019-4-24 09:38 | 只看該作者
先下載了  看看先  這個東西用的好的話 確實不錯
回復

使用道具 舉報

20#
ID:520266 發表于 2019-4-24 10:52 | 只看該作者
好東西,感謝樓主分享
回復

使用道具 舉報

21#
ID:540699 發表于 2019-5-17 15:02 | 只看該作者
程序真好
回復

使用道具 舉報

22#
ID:355206 發表于 2019-5-20 22:06 | 只看該作者
很給力!
回復

使用道具 舉報

23#
ID:355206 發表于 2019-5-20 22:06 | 只看該作者
干啥右臂呀
回復

使用道具 舉報

24#
ID:715816 發表于 2020-3-28 09:44 | 只看該作者
特別需要的資料謝謝!
回復

使用道具 舉報

25#
ID:195740 發表于 2020-4-6 14:10 | 只看該作者
感謝分享,第一次接觸這個,不過應該沒問題
回復

使用道具 舉報

26#
ID:455529 發表于 2020-4-18 13:13 | 只看該作者
BEE是什么引腳啊
回復

使用道具 舉報

27#
ID:528744 發表于 2020-5-25 20:39 | 只看該作者
感謝大神
回復

使用道具 舉報

28#
ID:702292 發表于 2020-10-22 13:59 | 只看該作者
請問,用開關代替傳感器模塊咋測試
回復

使用道具 舉報

29#
ID:850686 發表于 2020-11-28 14:51 來自手機 | 只看該作者
謝謝樓主分享。先收藏以后慢慢看
回復

使用道具 舉報

30#
ID:822053 發表于 2021-4-30 20:42 | 只看該作者
啦啦啦啦啦i 發表于 2019-4-11 16:29
想請問下,電話號碼和短信的內容是什么規律

要轉碼
回復

使用道具 舉報

31#
ID:922250 發表于 2021-5-20 08:47 | 只看該作者
知識很詳細,很給力
回復

使用道具 舉報

32#
ID:922250 發表于 2021-5-21 08:10 | 只看該作者
作者的設計思路非常好
回復

使用道具 舉報

33#
ID:863386 發表于 2021-6-6 13:16 | 只看該作者
很有參考價值
回復

使用道具 舉報

34#
ID:972895 發表于 2021-10-18 04:26 | 只看該作者
這個非常好,實用!
回復

使用道具 舉報

35#
ID:699512 發表于 2021-10-18 11:00 | 只看該作者
有做過的沒,按這個能做出來不?我也想試一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品视频一区 | 久久久久99 | 奇米久久久 | 久久91精品国产一区二区三区 | 国产日产欧产精品精品推荐蛮挑 | 久久久久国产一区二区三区四区 | 羞羞视频网站在线观看 | 欧美日韩电影一区 | 国产一伦一伦一伦 | 国内精品视频免费观看 | 成人国产一区二区三区精品麻豆 | 九九热久久免费视频 | 国产精品波多野结衣 | 欧美9999| 天天综合91| 亚洲精品久久久久久首妖 | 国产成人综合在线 | 国产九九九 | 午夜伊人 | 国产精品久久av | 久久999 | 性欧美精品一区二区三区在线播放 | 91免费在线视频 | 成人做爰69片免费观看 | 欧美free性| 久久免费精品视频 | 国产精品美女久久久久久免费 | 日韩精品一区二区三区视频播放 | 久久久久精 | 欧美一区二区在线播放 | 天天天操 | 亚洲久久 | 国产成人精品免费视频大全最热 | 亚洲精品久久久久中文字幕欢迎你 | 欧美日韩亚洲视频 | 日韩精品一区二区三区视频播放 | 日韩久草| 成人国产精品久久久 | 91成人在线| 国产在线看片 | 欧美精品日韩 |