
单片机控制GSM模块实现短信收发.docx
21页单片机控制 GSM 模块实现短信收发【摘 要】借助系统模型,阐明 GSM 模块收发短信的基本概念以及串口控制SMS 的基本原理详细介绍用单片机 AT89C51 控制 GSM 模块工作的硬件和软件实现过程,介绍了单片机 AT89C51 和 MSC1210 内部结构和性能,并对AT89C51 和 MSC1210 的性能、用途进行了比较,特别提出了 MSC1210 在高精度温度采集中所体现出别的芯片所不及的优势大对怎样用单片机控制GSM 模块收发短信进行探讨,也对程序设计的主体思想作了细致的分析致介绍了 SMS 的体系结构以及在当今社会中 SMS 应用的新领域.本系统技术较先进,科技含量高运行速度快,精度高第一节 引言随着科技的飞速发展和人民生活水平的不断提高,的普及率越来越高, 更新也越来越快,价格也越来越便宜因为工作的无线网络覆盖范围广, 在信息传递方面性能稳定、可靠,所以把作为信息传递的载体,与单片机 结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数 据传输、远程监控等领域更是受到了广泛的关注本软件的设计基于 GSM 网络的温度数据采集与无线传输系统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。
系统模型图如图 1-1 所示终端处理模块PC 机GSM 模块1GSM 网络GSM 模块2单片机 1单片机 1单片机单片机 2单片机 1单片机存储器E2PROMMSC12101210温度数据数据采集模块数据收发模块本系统由数据采集部分、数据接收和发送部分、终端处理部分等三个模块组成数据采集模块将采集到的温度数据存入存储器中数据收发模块采用双单片机共用 E2RPOM 的方式,单片机 2 控制数据从存储器转存入 E2PROM 中;单片机 1 负责将数据从 E2PRROM 中读出,并经 GSM 模块 2 借助 GSM 网络将数据发送出去,单片机 1 不仅控制数据的发送,也控制数据的接收在这里 E2PROM 是温度数据临时存储和上传的中转站终端处理模块负责将接收到的数据交给计算机处理,并将处理后的结果存放到数据库中,以供查询当终端处理模块需要向 GSM 模块 2 发送控制命令时,GSM 模块 2 接收过程正好与上述过程相反,从而实现数据的自动双向传递系统中三个模块相互独立,彼此又相互依赖,共同完成数据的传输数据收发模块在系统中起着承上启下的作用,是系统的核心模块该模块以双单片机为核心,以 RS232 通信接口,在物理层上实现与 GSM 模块的连接。
由于篇幅的限制,本文主要介绍单片机控制这一模块工作的软件实现过程旨在对怎样用单片机控制 GSM 模块收发短信息进行探讨第 2 2 节 工作原理及其软件设计2.1 串口控制 GSM 的原理单片机与 GSM 模块一般采用串行异步通信接口,通信速度可设定,采用这 种 RSM232 电缆方式进行连接时,数据传输的可靠性较好RS232 接口方式连接, 通过串行接口与 GSM 模块连接,电路比较简单,所涉及的芯片包括单片机 AT89C51 和 GSM 模块 TC35I需要说明的是,该接口通过 I2C 总线扩展了一个 EEPROM 存储器芯片 AT24C64,它的主要作用是存储数据,而且断电信息也不会 丢失,这些特性正是存储数据所必须的现在市场上大多数均支持 GSM07.05 规定的 AT 指令集该指令集是 ETSI(欧洲通信技术委员会)发布的,其中包含了对 SMS 的控制利用 GSM 手 机的串行接口,单片机向收发一系列的 AT 命令,就能达到控制 GSM 模块收 发 SMS 的目的必须注意的是,用单片机实现时,编程必须注意它发送指令与 接收到的响应都是字符的 ASCII 码A T 命令集是从 TE (Term inal Equ ipmen t, 终端设备) 或 DTE (Data Term inal . Equ ipmen t, 数据终端设备) 向 TA (Term inal A dap ter, 终端适配器) 或 DCE (Data Circu it Term inat ing Equ ipmen t ) 发送的。
通过 TA、TE 发送 A T 命令来控制 M S (Mob ileStat ion, 移动基站) 的功能与 GSM 网络业务进行交互用单片机控 制 GSM 模块收发短信息所涉及以的 AT 指令如表 2-1 所列AT 指令功 能 描 述AT联机AT+OFF关机并重新启动AT+CSDH=0在 TEXT 模式下在返回值中不显示详细的头信息ATE0关闭回显AT+CMGF=1选择短信格式为 TEXT 模式AT+CMGS发送短信息AT+CMGR读取短信息AT+IPR改变波特率AT+CMGD=0删除全部短信息AT+CSCA设置短消息中心AT+CREG?网络注册表 2-12.2 软件实现2. 2. 1 上位机模块和下位机模块半双工通信协议的实现2.2.1.1 应答和重发上位机模块和下位模块的通信双方遵照半双工通信方式进行,即数据传 送是双向的但是,任何时刻只能由其中的一方发送数据,另一方接收数 据,因为 EEPROM 的读出和写入不能同时进行为了避免一方在发送信息帧 时(这里的信息帧指的是下位机模块发送的数据帧和上位机模块发送的命令帧,下同),另一方也会发送数据,必须把信道变成半双工方式尽管 这样效率可能不如全双工方式,但通过此举牺牲效率可以换取模块工作性 能的稳定。
双方采取的顺序是:发→收到应答后→再发按照整个系统的设计思路,上位机模块(即图 1-1 中的 GSM 模块 1, 下同)发送的帧包括命令帧、确认帧和非确认帧;下位机模块(即图 1-1 中的 GSM 模块 2,下同)发送的帧包括数据帧、确认帧和非确认帧其中确 认帧和非确认帧是发送数据后等待对方发送的应答帧,以此作为继续发送 下一帧和重新发送上一帧的依据命令帧和数据帧是信息帧,当一方先发 送完信息帧,如果收方接收到对方的信息帧,而又没有信息帧需要发送, 那么情况就比较简单,收方将根据信息帧的正确与否决定发送确认帧还是 非确认帧,以使对方决定是继续发送还是重新发送;如果此刻收方也有信 息帧需要发送,那么收方将不立即发送应答帧,而是立即发送本方的信息 帧给对方,并等待对方对此帧的应的应答帧,在收到对方的应答帧后,收方将依据应答帧的内容(即确认帧或者是非确认帧,下同)决定是继续发 送下一信息帧,还是重新发送原来的信息帧如果由于链路本身不可靠等 因素造成应答帧的丢失,收方将在一定时间内因为没有收到应答帧而延时 重发原来的信息帧在收到对方的应答帧后,收方将继续发送下一信息帧, 并等待对方的应答帧,如此反复,直到收方全部发送完信息帧。
在本方收 到对方最后一个应答帧后,表明本方全部的信息帧发送完毕然后收方将 发送对方仍然等待的应答帧,通知对方收到的信息帧正确与否2.2.1.2 延时重发在双方通信过程中,有两个时间 t1 和 t2,分别表示重新发送信息帧的 最大延时t1 表示一方发送完信息帧到收到对方应答帧的时间,如果等待 应答帧的时间超过了 t1,则发方会重新发送原来的信息帧;当收方接收到 对方发送的信息帧,如果收方此时有需要发送的信息帧,则收方此时不发 送应答帧,而是发送信息帧给对方也就是说,利用对方等待收方应答帧 的时间 t1 内,收方插入发送本文的信息帧,同样本方的发送也存在一个延 时重发的问题在规定的时间内,如果没有收到对方应答帧,收方也同样 需要重发原来的信息帧,这个规定的时间就是 t2显然由于收方是利用间 隙时间发送本方信息帧,所以 t2、+CMGS、+CMGR、OK根据接收到的不同参数,下位机模块将转向不 同的操作步骤,判断并改变标志位的值比如,如果某时刻接收到>, 这表明呼叫对方模块号码获得成功,接下来需要发送数据这时 SHELL0077H~00EDH…1F12H~1F88H1F89H~1FFFH函数将检查发送不同数据所代表的标志位 f_sending、f_ack、f_nack, 从而决定需要发送何种类型的数据。
2.3 短信数据的处理—ExecData 函数进入时钟中断调用 SHELL 函数时,如果接收到了返回的参数 +CMTI,表明上位机模块向下位机模块发送了短信数据,可能是命令帧, 也可能是确认帧或者非确认帧在这种情况下,SHELL 函数需要对短信 内容进行分析,并根据短信的内容进行不同的处理,负责完成以上功能 的就是 ExecData 函数,它是被 SHELL 函数调用的,用来分析并处理短 信数据第 3 3 节 系统硬件介绍3.1 系统核心部分---单片机 AT89C51单片机 AT89C51 有内部 RAM,可以作为各种数据区使用,内部闪电存 储器存放数字时钟的控制程序它的主要功能是控制 74LS138 和 74LS47,实现对 LED 显示器的位控和段控,完成时间的转换计算,并把 计算的时间转换到相应的显示段码,控制 LED 显示器以动态扫描方式进 行时、分、秒的显示AT89 系列单片机是 ATMEL 公司生产的这是当前 最新的一种电擦写 8 位单片机,与 MCS-51 系列完全兼容,有超强的加密 功能,可完全替代 87C51/52 和 8751/52与 87C51 相比,AT89 系列的优越性在于,其片内闪电存储器的编程 与擦除完全用电实现;数据不易挥发,可保存 10 年;编程/擦除速度快,全 4K 字节编程只需时 3s,擦除时间约用 10ms;AT89 系列了实现编 程;也可借助线进行远距离编程。
AT89C51 是一种低功耗、高性能内含 4K 字节闪电存储器(Flash Memory)的 8 位 CMOS 微控制器这种器件系以 ATMEL 高密度不挥发存储 技术制造,与工业标准 MCS-51 指令系统和引脚完全兼容片内闪电存储 器的程序代码或数据可写入,亦可通过常规的编程器编程例如, MP-100 这样一种经济型的编程器,它支持通用 EPROM 等各种存储器、 PAL、GAL 以及 INTEL、ATMEL 和 PHILIPS 等各公司的全系列 51 单片机的 编程ME5103 和 ME5105 仿真器支持 AT89 系列所有器件的调试、仿真和 编程3.1.1.89C51 具有下列主要性能:◇ 4KB 可改编程序 Flash 存储器(可经受 1,000 次的写入/擦除周期)◇全静态工作:0Hz~24MHz◇三级程序存储器保密◇ 128 X 8 字节内部 RAM◇ 32 条可编程 I/O 线◇ 2 个 16 位定时器/计数器◇ 6 个中断源◇可编程串行通道◇片内时钟振荡器另外,89C51 是用静态逻辑来设计的,其工作频率可下降到 0 Hz, 并提供两种可用软件来选择的省电方式——空闲方式(Idle Mode)和 掉电方式(Power Down Mode)。
在空闲方式中,CPU 停止工作,而 RAM、定时器/计数器、串行口和中断系统都继续工作在掉电方式中, 片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保 存片内 RAM 中的内容,直到下一次硬件复位为止3.1.2.89C51 的引脚及功能3.1.2.1 主要电源引脚Vcc 电源端GND 接地端3.1.2.2 外接晶体引脚 XTAL1 和 XTAL2XTAL1 接外部晶体的一个引脚在单片机内部,它是构成片内振 荡器的反相放大器的输入端当采用外部振荡器时,该引脚接收振荡器 的信号,既把此信号直接接到内部时钟发生器的输入端XTAL2 接外部晶体的另一个引脚在单片机内部,它是上述振荡器 的反相放大器的输出端采用外部振荡器时,此引脚应悬浮不连接3.1.2.3 控制或与其它电源复用引脚 RST、ALE//PROG、/PSEN 和 /EA/VppRES 复位输入端 当振荡器运行时,在该引脚上出现两个机器周期 的高电平将使单片机复位。
