【毕业论文】基于gsm的门控及sms报警系统设计与实现内容摘要:
情和电话呼入,根据判断结果,进入短信报警子程序或电话判断子程序分别执行。 个人参数设置主要用来设定用户用作报警的电话号码、个性化报警短信文字等。 软件的一项重要工作是协议转换,GSM模块以及手机支持的是GSM协议,要想使得单片机能够控制GSM 模块的短信收发,必须将相应的控制指令、报警状态等数据转换为相关格式,例如,手机短信支持的PDU或Unicode码格式。 用户终端系统设计的核心部分是单片机与GSM无线模块的通信,串口通信与AT命令的设置和使用是程序设计的难点。 ATH 电话挂机AT+CMGR 读短消息AT+CMGS 发短消息AT+CLCC 显示新打来的电话号码ATD 呼叫命令12系统软件设计采用模块化设计思想,主要分为单片机系统初始化模块、通信模块初始化模块、身份验证模块、数据传输模块、数据采集模块、报警控制输出模块等组成。 图2 程序流程图 各模块软件设计 初始化模块单片机初始化部分将AT89S52串口设置为工作方式1即8位数据开始单片机初始化成功。 GSM 模块初始化打开串口与 GSM 通信建立接收标志为1。 接收来电并做出处理判断来电号码并开门成功。 有报警信息。 报警信息处理并发送成功。 3 秒。 3 秒。 YNYY YYYNNNNNNY位和一位停止位;定时器选用定时器1的工作方式2即8位自动重装定时器、波特率设为9600bit (),且TMOD=0x20H,SMOD=1,所以定时器1初值分别为TH1=0FDH,TL1=0FDH。 以下为主程序进行CPU 初始化设置。 void Baudrate_Init(void){ TMOD = 0x20。 // T1使用工作方式2 TH1 = 0xFD。 // 设置T1初值 TL1 = 0xFD。 SCON = 0x50。 // 串口通信,工作方式1,波特率9600bit/s,允许接收 TR1 = 1。 // T1开始计数 ET1 =0。 //定时器1中断关} GSM 初始化模块void ATE_Send(void) { INT8U i, error_counter。 error_counter = 0。 while(1) { TI = 0。 RI = 0。 for(i = 0。 i 6。 i++) rec[i] = 0x00。 Uart_send(Command_AtE,4)。 for(i = 0。 i 6。 i++)14 { while(!RI)。 rec[i] = SBUF。 RI = 0。 } if(rec[2] == 39。 O39。 amp。 amp。 rec[3] == 39。 K39。 ) //返回ok说明通信成 break。 else if(error_counter++5) //否则延时重发 Delay1ms(1000)。 } RI = 0。 Delay1ms(1000)。 //先清零再延时。 } 单片机发送 AT 指令的程序设计单片机与 GSM 模块(TC35i)的软件接口其实就是单片机通过发送对应正确的 AT 指令对 GSM 模块进行操作的技术。 如设置短信息的编码方式、读取手机的电话本、发送短信息、电话挂机、拨打手机等。 执行 1 条指令,并非某些资料介绍的那么简单,事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数都有严格的规定,二者必须依据这些规定实现数据交换,否则,就会出现通信失败。 因此,做好单片机与 GSM 模块通信,了解 AT 指令执行过程就很重要。 表 2 列出 AT 指令执行过程。 需要重点说明的是,所有 AT 指令的指令符号、常数、PDU 数据包等都是以 ASCII 编码形式传送的。 表 2 AT 指令的执行过程指令 步骤单片机发送,手机接收字节 手机发送,单片机接收字节含义1 41H54H0DH3 发送 AT 指令2 41H54H0DH3 手机应答3 0DH0AH 2 回车换行4FH4BH 2 OK 连接成功445H52H52H4FH52H5 ERROR 连接失败AT5 0DH0AH 2 回车换行1 41H54H2BH43H4DH47H46H3DH30H0DH10 发送 AT+CMGF=0 指令2 41H54H2BH43H4DH47H46H3DH30H0DH10 手机应答AT+CMGF=03 0DH0AH 2 回车换行164FH4BH 2 OK 连接成功445H52H52H4FH52H5 ERROR 连接失败5 0DH0AH 2 回车换行 中文短信息的收发 PDU 模式及中文短信息的编码短信收发的编码格式一共有三种:Block 模式 , Text 模式和PDU(protocol description unit)模式。 其中 Block Mode 已经逐渐被淘汰,下面介绍的内容,是在 PDU Mode 下发送和接收短消息的实现方法。 PDU 串表面上是一串 ASCII 码,由“0”“9” 、 “A”“F”这些数字和字母组成。 它们是 8 位的十六进制数。 PDU 串不仅包含可显示的消息本身,还包含很多其他信息,发送和接收的 PDU 串,结构是不完全相同的。 用一个实际的例子说明 PDU 串的结构和编排方式。 例 1,发送一条 PDU 格式的中文短信息,地区的 SMSC 号码是(短信中心号码)+8613800371500,目标号码+8615939026810,短信息内容是“你好。 ” ,则从单片机发送到 GSM 模块的 PDU 串可以是“0891683108301705F011000D91685139096218F0000801064F60597DFF01”,如果使用默认的短信中心号码则 PDU 串可以是:“0011000D91685139096218F0000801064F60597DFF01”。 对照 PDU 编码的规范,各段含义如表 3 所示。 表 3 发送 PDU 串分析分段 含义 说明08 SMSC 短信中心地址长度共 8 个 8 位字节包含 9191 SMSC 地址格式 用国际格式号码(在前面加“+”)683108301705F0SMSC 短信中心号码 8613800371500 字节翻转后补“F”凑成偶数个11 基本参数(TPMTI/VFP)发送 TPVP,用相对格式00 消息基准值(TPMR) 00D 目标号码长度 共 13 个十进制数(不包含91, “F”)91 目标地址格式 用国际格式号码(在前面加“+”)685139096218F0目标号码 8615939026810,补“F”凑成偶数个00 协议标示( TPPID) 普通 GSM 类型,点对点方式08 用户信息编码方式(TPDSC)8bit 编码1801 短消息有效期(TPVP)(VP+1)*5 分钟06 用户信息度(TPUDL) 实际长度 6 个字节4F60597DFF01用户信息(TPUD) “你好。 ”Unicode 编码08 用户信息编码方式(TPDCS)Unicode 编码80401001156423时间戳(TPSCTS) 080401 10:51:46 时区 2306 用户信息长度 实际长度 6 个字节4F60597DFF01用户信息内容 “你好。 ” 短信报警程序设计短信报警程序是来完成报警功能的,首先判断有警情没,若有则发送报警短信,若发送成功,则退出子程序,不成功则在 3S 内重发报警短信,3S 后退出子程序,若无警情,直接退出子程序。 其流程图如图 3 所示: GSM 模块的接打电话程序设计单片机根据呼叫的电话号码,来控制门的开关,从而来完成门控功能。 当有单片机检测到有电话呼入时,就将号码存储,接着与设置的用户号码比较,若是用户号码,则挂断电话,打开大门,若不是,则退出子程序。 身份验证程序流图如图 4 所示: 数据传输模块根据不同的要求,串口数据的发送是可以知道时间的,所以采用查询方式,而接受是不确定的,所以接收采用中断的方式。 在与模块握手连接成功后,通过 字符串发送函数就可将数据缓存区中欲发送的数据发送。 发送数据的原理与建立连接时的基本相同,但数据的接收是通过串口中断接收函数完成的,同时将接收YYNYNN报警短信处理并发送有警情。 成功。 3 秒。 退出子程序图 3 短信报警程序流图到的数据必须先放入接收缓存区。 系统调试软件使用20 初期阶段的调试初期调试主要是采用AT指令调试精灵来调试GSM模块。 主要先熟悉AT 指令的使用,AT指令调试精灵是方寸自主研发的一款用于调试各个厂家AT指令集的实用工具,该软件 功能强大,运行稳定,支持市场上大部分GSM/GPRS猫,通过它不仅可以测试GSM猫上所支持的AT 指令,而且可以收发短信,发短信时可以看到需要运行的相关AT 指令和 PDU编码,当有新短消息到时,系统会自动收短信并显示在屏幕上,该安装包包含Nokia、Siemens等AT指令集以供用户调试和熟悉AT指令,开放部分源代码,可以在此平台上开发出高性能的短信应用程序。 程序设计阶段的调试在熟悉了AT指令的基础上开始构建自己的设计思路、设计方法、实现方法等一系列的问题需要去解决,这时候我主要采用串口调试助手和超级终端来把AT指令一步一步地转化为16进制的数据去代替,这需要要一些时间去使用端口侦探软件来调试,这是最终用单片机来完成这些AT指令操作的不可缺少的阶段。 对与完成单片机与模块之间的成功通信很重要。 其中端口侦探超比较好用,级终端与串口调试助手相比存在一些不足。 YYY有呼叫。 存储来电号码成功。 判断来电是否为设置号码。 开门并挂机退出子程序NNN图 4 身份验证程序流程图7 系统设计中出现的问题及解决办法 排除调试阶段出现无法监视的方法在调试过程中,很希望可以看到程序执行到何处了,数据是结果如何。 因为由于 GSM 模块要求的波特率非常的严格,一般是不可以使用仿真器进行仿真调试的。 这时可以用电脑的串口调试助手并接在 GSM 上,就可以方便地监视到所发的数据和所收到的数据了,也大大的增加也调试的效率。 排除仿真器总端上出现乱码的方法22设计初期需在超级终端等串口调试软件中进行 AT 指令的调试,但经常会遇到不能与 GSM MODEM 进行正常通信或总是在仿真终端上出现乱码,此时检查串口是否保证正常连接,计算机的串口引线与 GSM MODEM 的串口引线应是一一对应的。 GSM MODEM与仿真终端应设置相同的通信速率。 当初次使用 GSM MODEM 时,在仿真终端上设置为通信速率 9600bps、8 位数据位、无较验位、1位停止位。 8 小结目前,利用移动运营商提供的无线网络实现远程监控和数据传输已被广泛应用于各个领域。 尤其是基于单片机的GSM数据传输方案在GSM 门控报警终端、自动抄表系统等远程遥测遥控系统中的应用更是倍受关注。 我们经过两个月的试验调试,我们设计的以 AT89S52 单片机作为控制核心的智能门控报警系统,达到了预期的设计要求。 本系统具有实时记录出入数据、使用方便、安全可靠等优点。 特别适合于家庭公司,企事业单位,小区的安防系统等场所。 随着 GSM 网络技术的应用与发展,将 GSM 模块应用在门控系统中,性价比高,具有很好的应用前景,基于 GSM 模块的门控系统在硬件的不断完善,程序会更加的优化,性能会更好,将来会有一个不错的发展空间。 当然,此系统设计还存在很多不足之处,需要不断的升级、完善,今后将会近一步增强其功能,使其不断的完善。 致谢本论文是在徐老师的悉心指导下完成的,徐老师渊博的科学知识、远见卓识的科学创新和严谨的治学态度都给了我深远的影响。 在设计阶段徐老师在资料搜集、程序调试、论文写作等方面都给予我严格的要求和关键性的指导,在此衷心感谢两个月徐李老师对我的关心和指导。 这次的毕业设计是由我们小组二人共同完成的,正是我们的团结合作、坚持不懈才能取得现在的结果。 所以在这里还要感谢胡永战同学的鼎力帮助,他给我提出了不少建议,使我思路开阔,程序也因此更加完善。 同时周围的同学也给了我很多的帮助,在这里一并向他们表示感谢。 最后,再次向各位领导、各位老师致以衷心的感谢。 参考文献24[1]张刚毅,彭喜元,[M]. 北京:高等教育出版社,[2]杨将新,李。【毕业论文】基于gsm的门控及sms报警系统设计与实现
相关推荐
下一个硬件复位为止。 结构特点 8位CPU; 片内振荡器和时钟电路; 32根I/O线; 外部存贮器寻址范围ROM、RAM64K; 2个16位的定时器/计数器; 5个中断源,两个中断优先级; 全双工串行口; 布尔处理器。 4 系统单元电路的设计 照明负载LED外施电压后在其内部会产生受激电子跃迁光辐射。 按照不同半导体基本材料的物理特性,所产生的光波长是不同的。
构成不同档次的数控系统。 (3)网络化 机床联网可进行远程控制和无人化操作。 通过机床联网,可在任何一台机床上对其它机床进行编程、设定、操作、运行,不同机床的画面可同时显示在每一台机床的屏幕上。 (4)通用型开放式闭环控制模式 采用通用计算机组成总线式、模块化、开放式、嵌入式体系结构,便于裁剪、扩展和升级,可组成不同档次、不同类型、不同集成程度的数控系统。
织和调度、企业资源配置、 生产物流管理等一线从事业务操作和基层经营管理工作的高素质技能人才。 9 表 1 物流管理专业建设项目监测指标一览表 建设内容 监测指标 2020年 10月 2020年 10月 校企 合作 签订 合作协 议的企业数 (个) 9 11 合作企业接收 的顶岗 实习学生 (人) 20 30 合作企业接收就业 的 学生数 (人) 10 15 合作开发课程数(门) 2 4
涂荧光材料,荧光材料在受到蓝光激励时会发出黄光,蓝光和黄光的 混合物形成白光 [8]。 由于 LED 是直流供电器件,很容易制成直流灯具,广泛应用于直流系统,如太阳能灯具产品。 应首选平光型超高亮 LED 或平光型与束光型超高亮 LED 组合使用,将多个 LED 集中于一起,排列组合成一定规则的 LED 发光源。 超高亮白光LED 发光源既要保证有一定的照射强度,又要使其具有较高的光效
图 6 磁浮子液位计的结构图 图 7 磁浮子液位计的原理图 液位计下方可装上排污阀,当需要时可打开排污阀,排除污垢。 而上方设有排空螺栓,需要时可旋松螺栓排除空气。 2. 设计依据 基于水位测量,我首先想到的是浮子式液位计,因为它结构简单,工作 可靠,测量范围较大,不易受到外界环境的影响,并且能连续指示 水位。 但由于试验流体为易结垢的高硬度水,久而久之,浮子也会受到腐蚀
1) { buf[2]=buf[1]。 delay1ms(100)。 buf[1]=buf[0]。 delay1ms(100)。 buf[0]= press。 delay1ms(100)。 sc=buf[2]*100+buf[1]*10+buf[0]。 } } /***************PID 服务程序 *************/ void PID( ) { double e0,e1