ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:113.05KB ,
资源ID:17785097      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17785097.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的短信收发系统设计文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的短信收发系统设计文档格式.docx

1、功 能 描 述AT+OFF关机并重新启动AT+CSDH=0在TEXT模式下在返回值中不显示详细的头信息ATE0关闭回显AT+CMGF=1选择短信格式为TEXT模式AT+CMGS发送短信息AT+CMGR读取短信息AT+CMGD=0删除全部短信息2.2 软件实现2.2.1 上位机模块、下位机模块2.2.1.1 应答和重发 上位机模块和下位模块的通信双方遵照半双工通信方式进行,即数据传送是双向的。但是,任何时刻只能由其中的一方发送数据,另一方接收数据,因为EEPROM的读出和写入不能同时进行。为了避免一方在发送信息帧时(这里的信息帧指的是下位机模块发送的数据帧和上位机模块发送的命令帧,下同),另一方

2、也会发送数据,必须把信道变成半双工方式。尽管这样效率可能不如全双工方式,但通过此举牺牲效率可以换取模块工作性能的稳定。双方采取的顺序是:发收到应答后再发。 按照整个系统的设计思路,上位机模块(即图1-1中的GSM模块1,下同)发送的帧包括命令帧、确认帧和非确认帧;下位机模块(即图1-1中的GSM模块2,下同)发送的帧包括数据帧、确认帧和非确认帧。其中确认帧和非确认帧是发送数据后等待对方发送的应答帧,以此作为继续发送下一帧和重新发送上一帧的依据。命令帧和数据帧是信息帧,当一方先发送完信息帧。2.2.1.2 延时重发 在双方通信过程中,有两个时间t1和t2,分别表示重新发送信息帧的最大延时。t1表

3、示一方发送完信息帧到收到对方应答帧的时间,如果等待应答帧的时间超过了t1,则发方会重新发送原来的信息帧;当收方接收到对方发送的信息帧,如果收方此时有需要发送的信息帧,则收方此时不发送应答帧,而是发送信息帧给对方。图2.1.1-1以下位机模块先发数据帧为例,阐述双方通信的具体实现过程。图2.2.1-1 下位机模块2.2.2 帧格式GSM模块通过异步通信接口实现对SMS的控制共有三种接入协议:Block Mode;基于AT指令的Text Mode;基于AT指令PDU Mode。本系统发送和接收的数据都是基于数字的温度数据和命令字,为了保证系统的适用性,SMS的收发采用TEXT模式。TEXT模式是基

4、于字符的,更具体地说是基于ASCII码的一种结构模式。在该模式下,模块发送和接收的信息帧格式如下:表2.2.2-1 发送接收帧头帧序号数据校验子 信息帧包括数据帧和命令帧。帧头表示数据帧的标记,是由固定的字符“WQ”构成。 帧序号表示数据帧的序号,由两个字节组成。帧序号表示下位机模块发送的递增数据帧序号和上位机模块发送的命令帧序号。为了简化帧结构,命令帧的序号统一为00H。除了信息帧外,双向传递的还有应答帧,它包括确认帧和非确认帧。确认帧是双方反馈给发方的应答帧,表示收方已经正确接收到了发方发送的信息帧。确认帧格式仅包括两个字段,且两个字段的内容都是固定的,即帧头“WQ”和数据字段“ACK”,

5、确认帧格式如下。表2.2.2-2 帧格式WQACK 非确认帧是收方给发方的应答帧,表示收方收到的是无效的信息帧,其格式与确认帧格式类似,帧格式如下。表2.2.2-3 信息帧NACK2.2.3 EEPROM空间的分配采用8KB的EEPROM,按照每77个字节为一个块进行划分,共106块,如图2.2.3-1所示。第00、01块留作系统使用,第02块第105块是数据块,用作存放数据。图2.2.3-1 EEPROM空间的分配2.2.4 收发端与采集端的握手协议 收发端与采集端共用一个存储器,即双CPU对同一个EEPROM进行操作。实现方案是分别使两个微处理器的一个I/O脚相连,两个CPU采用查询方式对

6、此I/O端进行查询。如果某时候收发端查询到本地I/O端为高电平,则单片机1拥有此存储器的操作权,可以对EEPROM进行读写操作。2.2.5 程序的设计2.2.5.1 主函数的设计思路 开机上电后,程序在主函数中运行,单片机和GSM模块分别进行初始化。单片机的初始化包括设置串口工作方式、波特率,并初始化变量参数和标志位。GSM模块初始化包括重新启动、关闭回显、设置在TEXT模式下的返回值中不显示详细的头信息、选择短信格式为TEXT模式、开发串口中断准备接收数据。2.3 短信数据的处理 进入时钟中断调用SHELL函数时,如果接收到了返回的参数+CMTI,表明上位机模块向下位机模块发送了短信数据,可

7、能是命令帧,也可能是确认帧或者非确认帧。在这种情况下,SHELL函数需要对短信内容进行分析,并根据短信的内容进行不同的处理,负责完成以上功能的就是ExecData函数,它是被SHELL函数调用的,用来分析并处理短信数据。3 系统硬件介绍3.1 系统核心部分 单片机AT89C51有内部RAM,可以作为各种数据区使用,内部闪电存储器存放数字时钟的控制程序。它的主要功能是控制74LS138和74LS47,实现对LED显示器的位控和段控,完成时间的转换计算,并把计算的时间转换到相应的显示段码,控制LED显示器以动态扫描方式进行时、分、秒的显示。AT89系列单片机是ATMEL公司生产的。这是当前最新的一

8、种电擦写8位单片机,与MCS-51系列完全兼容,有超强的加密功能,可完全替代87C51/52和8751/52。3.1.1 89C51具有下列主要性能4KB可改编程序Flash存储器(可经受1,000次的写入/擦除周期)全静态工作:0Hz24MHz三级程序存储器保密 128 X 8字节内部RAM 32条可编程I/O线3.1.2 89C51的引脚及功能3.1.2.1 主要电源引脚 Vcc 电源端 GND 接地端3.1.2.2 外接晶体引脚 XTAL1接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生

9、器的输入端。 XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。3.1.2.3电源复用引脚 RES 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。 ALE/PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。3.1.2.4 输入/输出引脚 P0.0 P0.7、P10.P1.7、P2.0 P2.7 和P3.0P3.7 P0端口(P0.0 P0.7) P0是一个8位

10、漏极开路型双向I/O端口。P1端口(P1.0 P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入在对Flash编程和程序验证时,P1接收低8位地址。P2端口 (P2.0P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。P3端口(P3.0P3.7) P3 是一个带有内部上拉电阻的8位双向I/O端口。在89C51中,P3端口还用于一些专门功能,这些兼用功能见表3.1.2-1表3.1.2-1 P3端口兼用功能表 端口引脚 兼 用 功 能 P3.0RXD (串行输入

11、口) P3.1TXD (串行输出口) P3.2/INT0 (外部中断0) P3.3/INT1 (外部中断1) P3.4T0 ( 定时器/计数器0的外部输入) P3.5T1 (定时器/计数器1的外部输入) P3.6/WR (外部数据存储器写选通) P3.7/RD (外部数据存储器读选通)3.1.3 Flash存储器的编程 AT89C51单片机内部有一个4K字节的Flash PEROM。这个Flash存储阵列通常是处于已擦除状态(既存储单元的内容为FFH),随时可对它进行编程。编程接口可接收高电压(12V)或低电压(Vcc)的允许编程信号。低电压编程方式可很方便地对AT89C51内的用户系统进行编

12、程;而高电压编程方式则可与通用的EPROM编程器兼容。AT89C51的程序存储器阵列是采用字节写入方式编程的,既每次写入一个字节。要对片内的PEROM程序存储器写入任何一个非空字节,都必须用片擦除方式将整个存储器的内容清除。3.1.3.1 对Flash存储器编程编程前,必须建立好地址、数据和相应的控制信号。编程单元的地址加在P1端口和P2端口的P2.0P2.3(11位地址为0000H0FFFH),数据从P0端口输入。引脚P2.6、P2.7和P3.6、P3.7的电平选择见表2。/PSEN应保持低电平,而RST应保持高电平。/EA/VPP是编程电源的输入端,按要求加入编程电压。ALE/PROG端输

13、入编程脉冲(应为负脉冲信号)。编程时,采用420 MHz的振荡器。对AT89C51编程的步骤如下: 在地址线上输入要编程单元的地址。在数据线上输入要写入的数据字节。激活相应的控制信号。在采用高电压编程方式时,将/EA/VPP端的电压加到12V。每对Flash存储阵列写入一个字节或每写入一个程序加密位,加一个ALE/PROG编程脉冲。 改变编程单元的地址和要写入的数据,重复上述步骤,直到全部文件编程完毕。每个字节写入周期是自动定时的,通常不大于1.5ms。数据查询方式AT89C51单片机用数据查询方式来检测一个写周期是否结束。在一个写周期期间,如果想读出最后写入的哪个字,则读出数据的最高位(P0

14、.7)是原来写入字节最高位的反码。3.1.3.2 程序的校验 如果加密位LB1和LB2没有被编程,那么就可以对AT89C51内部已编好的程序进行校验。程序存储器的地址仍由P1端口和P2端口的P2.0P2.3输入,数据由P0端口输入。/PSEN保持低电平,而ALE、/EA和RST保持高电平。3.2 GSM模块MZ28MZ28是中兴通讯推出的GSM无线双频调制解调器,主要为语音传输、短信发送和数据业务提供无线接口。MZ28集成了完整的射频电路和GSM的基带处理器,特别适合于迅速开发基于GSM无线网络的无线应用产品。图3.2-1 原理3.3 单片机MSC1210在许多传统行业中,多路高精度温度采集系

15、统是不可或缺的。电厂、石化行业、钢铁厂以及制药厂等企业使用了大量的各类测温器件,如热电阻、热电偶等,这些器件需要定期校准;在严格执行GMP规范的制药厂等企业,高温灭菌需要定期进行灭菌率的验证;在某些要求进行严格的温度控制的场合,也需要进行多点高精度温度测量。这些工作往往需要一多路高精度测温系统来完成。3.3.1 MSC1210具有以下主要特性 3个16位的定时器,16位PWM波输出; 多达21个中断源; 32个数字输入/输出端口,带有看门狗; 8路ADC提供24位分辨率可编程的无丢失码解决方案; 可编程增益放大(PGA)在1128之间可调,极大提高了ADC精度; 带FIFO的SPI端口,双UA

16、RT; 64TQFP封装,MSC1210系列的硬件和引脚完全兼容,必要时可以互换。3.3.2 MSC1210的增强功能 作为智能高精度测温模块的核心,MSC1210完成了微弱信号的多路切换、信号缓冲、PGA编程放大、24位-A/D转换、数字滤波、数据处理、信号校准以及SPI通讯等功能。 MSC1210集成了一个8通道24位-A/D转换器,采用8051兼容内核。与ADuC824相比,其有如下增强的功能: 采用非常灵活的FLASH与SRAM存储器配置,可以对片上FLASH进行分区,根据需要设定程序FLASH与数据SRAM所占的比例。改写次数可达一百万次,数据可保存100年。 片上RAM为1280B

17、,有34个高电流驱动I/O,可以设外部存储器的存取时间,使用双数据指针提高存取速度,具有完善的节电功能,还有电压监视器、21个中断源、3个16位定时器计数器以及内部时间间隔计数器(TIC)。4 SMS的体系结构GSM标准中定义的点-点短消息服务使得短消息能在移动台和短消息服务中心之间传递。这些服务中心是通过称为SMS- GMSC的特定MSC同GSM网络联系的。SME:Short Messaging Entity,短消息实体。它可以接收或改善短消息,位于固话系统、移动基站或其他服务中心内;SMSC:Short Message Service Center,短消息服务中心,负责在基站和SME间中继

18、、储存或转发短消息;移动台(ME)到SMSC的协议能传输来自移动台或朝向移动台的短消息,协议名为SMTP(Short Message Transmission Protocol);SMCGWMS或SMCGMSC:SMS-Gateway MSC,SMS网关。接收由SMSC发送的短消息,向HLR查询路由信息,并将短消息传送给接收者所在基站的交换中心;5 结束语通过以上的分析不难发现,整个程序错综复杂,函数之间相互牵扯。标志位在程序的实现过程中扮演着非常重要的角色,正是依靠这些标志位,程序才能很好地实现各个功能之间的切换,而标志位的值是通过OSM模块返回的参数修改的。因此程序的实现过程应该是阅读参数

19、修改标志位发送指令。主函数、时钟中断和串口中断程序、SHELL函数、ExecData函数贯穿整个程序的主线和核心部分,对它们的分析可以理解程序的主体思想,这也正是笔者着重介绍的原因所在。然而这些函数和中断程序的实现,还需要依靠其它函数的配合,比如基于I2C总线的EEPROM操作函数、字符串操作函数以及串口发送函数等,由于篇幅所限,在此不再介绍。GSM网络本身是不完全可靠的,可能会发生帧发送错误、帧丢失的现象通过这次毕业设计,让我进一步了解了单片机的相关内容,对程序的编写也有了进一步的加强,但是这次设计过程中遇到了许多难题,由于对相关知识基础不够扎实,概念比较模糊,在设计中不能正确地写出相关程序

20、内容。忠心的感谢尊敬的XX老师!本毕业设计在XX老师的悉心指导下完成。毕业设计期间,甚至在平时的学习当中,XX老师给与我极大的帮助和指导,正是他的精心指导,是我在获取知识的同时,综合管理也得到了较大的提高,这将对我今后的学习、工作产生深远的影响。藉此毕业设计完成之际,谨向长期指导和栽培我的XX老师表示真诚的感谢! 感谢XX学院提供了良好的学习、实践环境,感谢老师的教导,你们给了我一生最宝贵的财富。最后,谨借此机会向所有关心、支持和帮助过本人的同学。朋友致以最真挚的谢意!附录:程序/*sms for GSM*/#include AT89*51.hreg51.hATcommend.hExecDat

21、a.hScanKey.hShell.hReceivePara.h/*初始化串行端口*/int_rs232() /*通信协议:192000 N 8 1*/ int inbufl20;/*接收缓存*/ SCON=0x50; TMOD=0x20; TH1=0xFF; TR1=1; TI=1;tx_char(unsigned char c)/*发送字符*/ while(1)/*循环*/*判断TI是否为1*/if(SCON&0x02)=0x02) break;/*清除发送中断标志TI=0*/TI=0;SBUF=c;/*将字符送至串行输出缓冲器*/tx_str(char *str)/*送出字符串*/cha

22、r i; for(i=0;i127) count3=0; inbuf1count3=ch; checksum= ch-128; else count3+; checksum = ch; if( (count3=(INBUF_LEN-1) & (!checksum) ) read_flag=1; /如果串口接收的数据达到INBUF_LEN个,且校验没错, /就置位取数标志 /*初始化定时器*/int_timer(); TMOD=60H;/*设置定时器1为工作方式2,250us周期*/ TH1=0FFH; TL1=03H;/*初始化gsm模块*/int_gsm() tx_strl(AT+OFF);

23、/*关机并重启*/ tx_strl(ATE0);/*关闭回显*/ tx_strl(AT+CSDH=0);/*设置在TEXT模式下的返回值中不显示详细的头信息*/ tx_strl(AT+CMGF=1);/*选择短信格式为TEXT模式*/ EA=1;/*总中断允许*/ ES=1;/*打开串口中断准备接收数据*/ ET1=1;/*打开时钟中断*/*时钟中断shell函数*/void shell() interrupt 3int ReceivePara();/*开启串口接收返回参数,并存到ReceivePara中,在ReceivePara.c文件中实现*/int Handle;int Commend;

24、int ScanKey();/*按键扫描,返回操作码*/*该函数在ScanKey.c中实现*/switch(ScanKey)/*call(),sendsms(),readsms,deletesms()等函数在shell.c文件中实现*/case call: call(); break;/*呼叫对方模块号码*/case sendsms: sendsms();break;/*发送数据*/case readsms: readsms();/*阅读短信*/case deletesms: deletesms();/*删除短信*/switch(ReacevePara)case : SendData(); /

25、*呼叫对方模块号码获得成功,接下来需要发送数据*/case CMGS: CMGS(); /*在ReceibePara.c文件中实现*/case CMGR: CMGR();/*在ReceibePara.c文件中实现*/case CMTI: ExeData(); /*转短信数据处理函数*/case OK: OK();/* 短信数据的处理-ExecData函数*/*Commend_handle();Ack_handle();Nak_handle();三个函数的实现在ExecDat.c中*/ExecData()switch(Handle)case Commend: Commend_handle();/*处理命令帧*/case Ack: Ack_handle();/*处理确认帧*/case

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1