找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4982|回复: 1
收起左侧

基于单片机的GSM安防系统 论文+原理图+程序

[复制链接]
ID:140725 发表于 2016-10-11 15:54 | 显示全部楼层 |阅读模式
该项目并不完美,如果要做这个项目的朋友,有此项目帮助相信会容易很多。

在此说明一下该GSM发送短信的方式,这里采用的是PDU模式,但不是直接发送PDU短信,而是先把要发送的短信存到SIM卡上,再从SIM卡上转发出去。如果要直接发送,只要再代码内改一下相应的AT指令即可。

另外,PCB上与实际电路有点不符,因为当时做出板来后,焊上元件,但是还是有小小的问题,所以在硬件上调好后,就没有把PCB上的也改了。放心,原理图上是正确滴。

沐雨青林在此多谢各位的支持。

若需要该项目的相关芯片资料或者GSM实际调试返回指令的可以联系俺。对此有疑问的也可以问俺。

沐雨青林原创
基于AT89S52单片机的安防系统设计论文

指导老师:                                          谭雄乐

开发人员:                                          林国友
                                                                                                                徐健俊
任务分配:林国友(编写程序、硬件测试、硬件焊接、程序调试)。                              徐健俊(画PCB电路)。


  • 功能介绍
    通过AT89S52单片机主控,扫描检测红外、烟雾、煤气等传感器信号达到监控家里情况的效果。当信号发生时,S52单片机就会通过串口通信连接GSM模块向预先设定好的手机号码发送相应的警报情况。此时,单片机控制的外围电路会发生警报声,同时亮灯。只有当单片机接收到目标号码发送过来的控制短信后,才会关闭警报和指示灯。(由于本人势单力薄,所以程序的功能并不完善。在控制方面没有用定时控制警报发生后每隔一段时间发送短信到目标号码,直到接收到相应的控制短信才停止。同时在解除警报后也没有再发送短信到目标号码以示情况。)
警报发生:红外警报→发送“红外警报”短信
燃气警报→发送“燃气警报”短信
烟雾警报→发送“烟雾警报”短信
收到短信:“家里情况”→发送短信“一切正常”(无警报时)
“关闭红外”→关闭红外警报,关闭蜂鸣器,关红外指示灯
“关闭燃气”→关闭燃气警报,关闭蜂鸣器,关燃气指示灯
“关闭烟雾”→关闭烟雾警报,关闭蜂鸣器,关烟雾指示灯
“关闭所有”→关所有警报,关蜂鸣器,关警报指示灯,开正常指示灯
实物图:
硬件接线图请参考:AT89S52单片机的安防系统硬件接线图.doc
1.004.jpg
1.001.jpg 1.002.jpg 1.003.jpg
1.005.jpg
  • 程序说明及流程图
    • 主程序流程图
1.006.jpg
2键盘中断流程图
1.007.jpg
  • 硬件原理图及PCB
原理图:
1.008.jpg
AT89S52外围I/O接口:
P1.0~P1.7为矩阵键盘输入,P1.0~P1.3为行,P1.4~P1.7为列。
P0.3为蜂鸣器(低电平有效),P0.4~P0.7为LED指示灯(低电平有效)
P2.0~P2.2为安防信号扫描入口P2.1、P2.2、P2.0(高电平有效)
P2.0接红外探测器,P2.1接燃气探测器,P2.2接烟雾探测器
P3.0、P3.1用作串口接收发送,P3.2用作键盘外部中断输入,P3.6、 P3.7分别接24C02的SCL和SDA
RST按键复位,XTAL1、XTAL2接12M晶振
P0.0、P2.4~P2.7用作NOKIA5110显示屏。
PCB(硬件在调试时有更改,但相差不大):
1.009.jpg
  • 程序部分代码:
主函数代码:
  1. /****************************************************************
  2. ****************************************************************
  3. ****                            main.c  主函数                                                        *****
  4. ****                                                                                                                *****
  5. ****                                本程序都是采用PDU格式                                        *****
  6. ****************************************************************
  7. ****************************************************************/


  8. #include
  9. #include
  10. #include
  11. #include
  12. #include
  13. #include
  14. #include

  15. extern bit scan_Security();//安全监控扫描
  16. //警报扫描初始化  初始化所有检测电平,等待警报电平进入
  17. extern void init_security();
  18.                
  19. extern uchar idata phonenum[15];//存放要发送对象的号码
  20. extern uchar Nindex[];//存放发送到SIM卡中短信返回的index
  21. extern void test_code(uchar n_delay,uchar n_wait);/*测试函数*/
  22. void init_pho_msg();//号码和短信初始化

  23. void main()
  24. {
  25.         
  26.         lcd_disp0();
  27.         I2C_Init();//I2C总线初始化

  28.         P0_4=0;//
  29.         LCD_clear();//清屏
  30.         LCD_write_String(8,4,"GSM");
  31.         disp16_16(2,2,16);//安
  32.         disp16_16(4,2,17);//防
  33.         disp16_16(6,2,18);//系
  34.         disp16_16(8,2,19);//统
  35.         delayms_100ms();

  36.         init_interrupt();                        //外部中断0初始化  键盘
  37.         init_security();                        //警报扫描初始化

  38.         P0_4=1;//
  39.         P0_5=0;//
  40.         LCD_clear();//清屏
  41.         disp16_16(0,0,29);//指
  42.         disp16_16(2,0,30);//导
  43.         disp16_16(4,0,31);//老
  44.         disp16_16(6,0,32);//师
  45.         LCD_write_char(':');
  46.         disp16_16(2,2,33);//谭
  47.         disp16_16(4,2,34);//雄
  48.         disp16_16(6,2,35);//乐

  49.         init_uart();                                //初始化串口
  50.         while(!connect_gsm());                  //发送联机指令
  51.         test_code(1,0);//

  52.         P0_5=1;//
  53.         P0_6=0;//
  54.         LCD_clear();//清屏
  55.         disp16_16(0,0,20);//制
  56.         disp16_16(2,0,21);//作
  57.         disp16_16(4,0,22);//人
  58.         LCD_write_char(':');

  59.         init_gsm();                                        //禁止回显,设置为pdu模式
  60.         
  61.         P0_6=1;//
  62.         P0_7=0;//
  63. //        LCD_clear();//清屏
  64.         disp16_16(2,2,23);//林
  65.         disp16_16(4,2,24);//国
  66.         disp16_16(6,2,25);//友
  67.         
  68.         disp16_16(2,4,26);//徐
  69.         disp16_16(4,4,27);//健
  70.         disp16_16(6,4,28);//俊
  71.         while(!connect_gsmnet());         //获取网络注册情况
  72.         init_sim();                                        //不接受广播短信
  73.         test_code(5,0);//响铃500ms提示初始化成功

  74.         init_pho_msg();//号码和短信初始化
  75.         P0_7=1;//
  76.                                                                
  77.         test_code(1,0);//响铃100ms提示进入系统监控状态
  78.         while(1)
  79.         {               
  80.                 scan_Security();//安全监控扫描
  81.                 key_out();//键盘处理跳出               
  82.                 Chk_Read_Do();//检测读取新短信执行控制命令

  83.         }
  84.          
  85. }

  86. //号码和短信初始化
  87. void init_pho_msg()
  88. {
  89.         uchar i,n_addr=0x0;
  90. //读取目标号码到phonenum
  91.         for(i=0,n_addr=0x0;i<13;i++)
  92.                 I2C_On(I2C_SrRECV, 0xA0, n_addr++, &phonenum[i], 1);//读n_addr地址内容到phonenum
  93.         phonenum[13] = '';
  94.         if(phonenum[12]<0 && phonenum[12]>9)
  95.         {
  96.                 strcpy(phonenum,"8618998361948");//设定初始号码
  97.                 for(i=0,n_addr=0x0;i<14;i++)
  98.                 {
  99.                         I2C_On(I2C_SEND, 0xA0, n_addr++, &phonenum[i], 1);//写phonenum内容到n_addr地址
  100.                         delayms_10ms();
  101.                 }
  102.                 phonenum[13] = '';
  103.                 while( !init_Send_sms_sim(phonenum) );                //初始化将所有要发送的短信写到SIM卡
  104.         }
  105.         LCD_clear();//清屏
  106.         LCD_write_String(0,0,"Read Phone number");
  107.         LCD_write_String(0,2,phonenum);
  108.         
  109.         delayms_1000ms();        
  110. }
复制代码

AT89S52单片机的安防系统硬件接线说明
红外:蓝(信号负输入)青(信号正输入)黑(9V电源负)红(9V电源正)
燃气:蓝(信号负输入)青(信号正输入)黑(9V电源负)红(9V电源正)
烟雾:蓝(信号负输入)青(信号正输入)黑(9V电源负)红(9V电源正)
具体接线请看图上注解
1.005.jpg

1.012.jpg
注意:燃气和红外的蓝色线不需要接上
1.018.jpg
1.019.jpg
1.020.jpg
1.021.jpg
1.022.jpg
1.023.jpg
1.024.jpg
1.025.jpg
1.026.jpg

元件清单:
芯片:AT89S52、MAX232、TLP521-4光耦。
传感器:红外、烟雾、燃气


按键 17个
串口(针) 1个
AT89S52 底座 1个
16针底座 2个
DC直插式电源座(普通) 1个
蜂鸣器 1个
11.0592晶振 1个
PNP管 1个
HT7133A 1个
LM7805稳压管 1个
电容104
电容22uF(复位键用) 1个
电容22pF(晶振用) 2个
LED灯 5个
电阻10K(复位) 1个 (R10)
电阻1K 7个 (R1,R2,R3,R5,R6,R14,R15,R16,R20)
电阻330 3个 (R4,R7,R8)
二极管(键盘用) 4个
排针、排座若干


注意:原理图中的C1电容在PCB封装中删除了,那是不对的,当时我们做好后,就因为这个原因,屏幕显示就出问题了。

具体请看原件参数图
0.png
0.png
0.png 0.png

0.png
所有资料打包下载地址(包含论文+程序+原理图等全套资料):
http://www.51hei.com/bbs/dpj-4591-1.html
回复

使用道具 举报

ID:289826 发表于 2021-9-26 21:51 | 显示全部楼层
谢谢分享哈, 正在学习发送短信。。。。。。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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