《[信息与通信]51单片机控制TC35模块.doc》由会员分享,可在线阅读,更多相关《[信息与通信]51单片机控制TC35模块.doc(77页珍藏版)》请在三一办公上搜索。
1、 西门子GSM模块 (TC35/TC35i/MC35/MC35i) 开发(评估)板是采用51单片机+TC35(GSM)为核心部件综合实验板。单片机采用STC89C51系列MCU,最高工作速度可达90MHz,片内FLASH程序存储器和8K左右的片内EEROM,多达36个通用I/O口。通过RS232实现ISP编程; TC35(TC35i/MC35/MC35i)无线GSM/GPRS通信模块, 集成了标准的RS232接口以及SIM卡,可以在PC机上用AT命令通过串口对它进行设置。这使它成为在声音和数据通讯上通用的一个GSM/GPRS双频终端产品。 你可以快速的把它应用到产品开发上,同时它也可以作为产品
2、的一个组成部分和产品结合在一起。在无线短信工业控制、远程通讯,现场监控等诸多无线通讯领域开发板将会给您的工作带来极大的便利.该板方便用户实验、开发,根据用户的设计思维自由组合很快将思想变为产品,无论用户有无GSM方面的知识累积,该板都是良好助手。硬件说明:STC89Cxx,最高频率可达90MHz,片内4K以上FLASH程序存储器,8K左右的片内EEROM ,512B-1208B片内RAM,36个IO口。TC35模块,集成了标准的RS232接口以及SIM卡。1个LED指示灯:一个电源指示。LM2941 4.2V电源IC。ISP接口(用于程序下载、串口监视)。RS232接口ISP;支持串口调试12
3、V直流电源输入,带电源指示灯8路LED发光管指示板载话筒、听筒接口,接上话筒、听筒后可以实现语音通话功能。板载数字式温度传感器DS18B20专用接口,用户可以通过编程实现温度值的无线传输应用。16通道开关量输出,其中8路接继电器控制输出,另8路TTL电平输出可供用户扩展。 (继电器控制负载:250V/10A) TC35模块串口通信模式可以选择:可以分别与单片机进行串口通信,或者模块与PC机电脑完成串口通信。实验说明: 短信收发实验。 话音呼叫实验。 AT指令实验。GSM串口调试助手软件 2010年6月24日更新发布 这是我们为TC35开发板专门编写了GSM串口调试助手软件,调试AT指令,测试模
4、块工作更为方便、快捷,功能强大。大家可以从窗体中看到上半部分为知名的串口调试助手软件全部功能,下面我们专门编写了GSM调试功能,同时支持SIM300 GRPS模块的调试。TC35模块通过电脑联机,DEMO程序。这是模块DEMO测试程序,我们可以用来读取模块预存的各种出厂信息,以及发送中文短信的实例应用。 直接点击图片放大观看。这是模块DEMO测试程序,我们可以用来读取模块预存的各种出厂信息,以及发送英文短信的实例应用。 直接点击图片放大观看。另一款TC35模块测试程序,这个程序可以完成拨号操作,同时实时显示模块操作的各条AT指令,上图为连接模块初始化成功的反馈信息 “OK”。另一款短信发送接收
5、软件。 8路LED发光管指示 与PC电脑连接的RS232串口8路继电器控制输出 8路继电器输出接线柱,每路分别3个接线孔,分别为:公共端、常开端、常闭端。手机SIM卡座 打开卡座,插入GSM手机SIM卡即可。下面我们一起来看一下开发板提供的“TC35通过单片机收发短信和控制继电器例子程序”。 先来看一下我们的“西门子 Siemens TC35 GSM 开发板”的短信控制指令介绍与使用方法:1. 给开发板供上12v直流电源后,板子上LD1点亮,表明开发板已经正常上电。 2. 此时会看到LD2一闪一秒,亮灭间隔时间相同,此状态表明TC35正处于搜寻网络状态。大概一分钟以后(不确定具体时间,看当时所
6、处环境的信号强度)。 3. 当LD2出现短灭常亮的状态时,表明TC35已经搜寻到网络信号,处于待机状态。 4. 此时可以通过手机发送指令通过TC35模块接收来实现对单片机的控制,进而实现对继电器的控制。 以下为具体指令介绍: 假如模块SIM卡上的手机号码为:13675857933 通过手机发送短信到13675857933;指令如下: 1.打开继电器 发送open?(?代表选择第几个继电器,注意open是小写),如发送open1到目标号码,片刻后将会看到板子上的D2灯点亮,并听到继电器打开的声音,此时可以发现继电器1已经打开,此时手机将收到来自目标号码的自动回复,回复内容为:Operate Su
7、ccessfully!。此时表明此次操作已经成功。如果你发送的指令错误,手机将会收到来自目标手机的短信提醒,告诉你当前的操作失败,操作失败的短信回复内容为:Operate Failed,try again!此时你可以检查是否发送正确指令给模块,再次操作!(板子上一共有8路继电器,所以发送的指令如下open1,open2,open3,open4,open5,.open8,一次只能打开一个继电器,下一次操作不会影响前一次的操作)。 2.关闭继电器 发送shut?(?代表选择第几个继电器,注意shut是小写),如发送shut1到目标号码,如果先前继电器1是处于开启状态的话,则会看到如下结果,LD2灯
8、熄灭,并会听到“咔嚓“声响表明继电器1已经关闭。如果先前继电器是处于关闭状态的话则不会有任何反应。一会儿以后手机将收到来自目标号码的自动回复,回复内容为:Operate Successfully!。此时表明此次操作已经成功。如果你发送的指令错误,手机将会收到来自目标手机的短信提醒,告诉你当前的操作失败,操作失败的短信回复内容为:Operate Failed,try again!过一会儿你可以检查是否发送正确指令给模块,再次操作!(板子上一共有8路继电器,所以发送的指令如下shut1,shut2,.shut8,一次只能打开一个继电器,下一次操作不会影响前一次的操作)。 3扩展开关的开启与关闭 在
9、板子的右边J4排针是扩展开关的接口,开启的方式同继电器的方式一样。唯一不同的open后面的指令,openA表示打开开关1,shutA表示关闭开关1。板子上共有八个开关,所以open或者shut后面操作对象的范围(AH)。过一会儿手机将收到来自目标号码的自动回复,回复内容为:Operate Successfully!。此时表明此次操作已经成功。如果你发送的指令错误,手机将会收到来自目标手机的短信提醒,告诉你当前的操作失败,操作失败的短信回复内容为:Operate Failed,try again!此时你可以检查是否发送正确指令给模块,再次操作! 4.继电器,开关的全部打开和全部关闭 发送指令op
10、enO表示打开所有继电器和开关,shutS表示关闭所有继电器和开关。过一会儿手机将收到来自目标号码的自动回复,回复内容为:Operate Successfully!。此时表明此次操作已经成功。如果你发送的指令错误,手机将会收到来自目标手机的短信提醒,告诉你当前的操作失败,操作失败的短信回复内容为:Operate Failed,try again!此时你可以检查是否发送正确指令给模块,再次操作! 5. 状态查询 发送open?代表查询开关状态,如发送open?到开发板上SIM卡的号码,片刻之后,将会收到来自目标号码的短信:如:111111000000000 Operate Successfull
11、y! 的短信.其中1表示此路继电器处于开着的状态.0表示现在继电器处于关闭状态.以下为部分实验演示图片:首先,将我们的短信控制继电器的程序烧入STC89C51芯片后,插上12V外接电源,SIM卡找到网络信号成功注册后,此时会看到LD2一闪一秒,亮灭间隔时间相同,此状态表明TC35正处于搜寻网络状态。大概一分钟以后(不确定具体时间,看当时所处环境的信号强度)。下面,我们准备打开第一路继电器。我们使用的是Nokia6300手机,编缉短信内容为:open1 , 发送到号码为13675857933的开发板,接着手机显示“正在发送短信”,发送成功后,手机显示“已发送至XXXXXXXX号码”,之后,开发板
12、收到了短信指令,随即打开第一路继电器,并反馈控制成功的短信给手机操作者。我们现在看到板子上的D2灯点亮,并听到继电器打开的声音,此时可以发现继电器1已经打开,此时手机将收到来自目标号码的自动回复,回复内容为:Operate Successfully!。此时表明此次操作已经成功。我们现在来测试一下全开继电器的功能,编缉短信内容为:openO , 发送到号码为13675857933的开发板,发送成功后,手机显示“已发送至XXXXXXXX号码”,之后,开发板收到了短信指令,随即打开全部继电器,并反馈控制成功的短信给手机操作者。我们现在来测试一下关闭第一路继电器的功能,编缉短信内容为:shut1 ,
13、发送到号码为13675857933的开发板,发送成功后,手机显示“已发送至XXXXXXXX号码”,之后,开发板收到了短信指令,随即关闭第一路继电器,并反馈控制成功的短信给手机操作者。 这是我们给开发板上电时,通过串口调试助手软件看到的,TC35模块初始化时的各条指令。注意:+8613800571500 是浙江省杭州地区的移动短信服务中心号码,您给开发板使用不同地区的SIM卡,请在程序中设置正确的当地ISP移动电话服务商提供的短信中心号码。这是收到来自13185018567手机短信后的指令情况,开发板做出控制继电器的动作后,反馈给手机用户“Operate Successfully!”的成功控制短
14、信信息。这是我们提供的“TC35通过单片机收发短信和控制继电器例子”源程序代码,使用Keil C环境编写,大部分语句都加了中文注释,让开发者很容易上手,缩短了二次开发的周期,提高了开发效率。 部分程序代码截图。 函数的定义与说明。 短信指令的识别与继电器的控制代码。初始化TC35模块代码。 下面我们再来看一下V1.2版的精美照片,以及一些独特的细节设计:这是V1.2版的 西门子 Siemens TC35/TC35i GSM 开发板 , 左边是GSM天线和天线连接线。三种通信方式跳线:PC与单片机通信;PC与TC35/TC35I模块通信;单片机与TC35/TC35I模块通信。如果要使用电脑来收发
15、短信或进行语音呼叫实验,请将跳线设置成:PC与TC35/TC35I模块通信。如果要给单片机芯片烧写程序,即完成ISP下载功能, 请将跳线设置成:PC与单片机通信。如果要使用单片机来控制TC35/TC35I模块,请将跳线设置成:单片机与TC35/TC35I模块通信。V1.2版中新增的模块开机按钮,方便用户上电时,进行手动开机。V1.2版中新增的螺丝定位孔,位于PCB板四周,在模块附近新增了两个天线定位孔,以适合不同孔径的GSM天线安装。一流的波峰焊生产加工工艺,焊点非常漂亮、整洁。下面我们准备给开发板加装GSM天线,我们来一起看一下。首先把天线连接线的一头与TC35/TC35I模块的天线口相连,
16、 注意:该接口比较脆弱的,拔插时请千万小心,不可乱用力,一定要对准了再下压。 将天线连接线的线头与TC35/TC35I模块的天线孔对准了,再压下去,听到“喀喳”一声,说明连接到位了,如果需要将其再取下,请务必小心,慢慢将线头拔出。一头已连接好的天线连接线,另一头准备固定在开发板定位孔上。 取下天线头上的垫片和垫圈,准备将其固定在板子上。将天线连接线穿过PCB板的过孔,然后将天线头固定在PCB板上。 最后,再将GSM天线拧上即可。开发板的硬件版本号在PCB板上有标,如图所示为V1.2新版。如果拆下天线时,可以将小红帽套上天线端子,以免灰尘进入,保护其接触良好。-西门子 TC35i模块介绍 TC3
17、5i新版西门子工业GSM模块是一个支持中文短信息的工业级GSM模块,工作在EGSM900和GSM1800双频段,电源范围为直流3.34.8V ,电流消耗休眠状态为3.5mA,空闲状态为25mA,发射状态为300mA(平均),2.5A峰值;可传输语音和数据信号, 功耗在EGSM900(4类)和GSM1800(1类)分别为2W和1W ,通过接口连接器和天线连接器分别连接SIM卡读卡器和天线。SIM电压为3V/1.8V,TC35i的数据接口(CMOS电平)通过AT命令可双向传输指令和数据,可选波特率为300b/s115kb/s , 自动波特率为1.2kb/s115kb/s。它支持Text和PDU格式
18、的SMS(Short Message Service,短消息),可通过AT命令或关断信号实现重启和故障恢复,中文资料如下:TC35i由供电模块(ASIC)、闪存、ZIF连接器、天线接口等6部分组成。作为TC35i的核心基带处理器主要处理GSM终端内的语音和数据信号,并涵盖了蜂窝射频设备中的所有模拟和数字功能。TC35i硬件设计:TC35i模块有40个引脚,通过一个ZIF(Zero Insertion Force,零阻力插座)连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。TC35i的第15引脚是正电源输入脚通常推荐值4.2V,第610引脚是电源地。11
19、、12为充电引脚,可以外接锂电池,13为对外输出电压(共外电路使用),14为ACCU-TEMP接负温度系数的热敏电阻,用于锂电池充电保护控制。15脚是启动脚IGT,系统加电后为使TC35i进入工作状态,必须给IGT加一个大于100ms的低脉冲,电平下降持续时间不可超过1ms。1623为数据输入/输出,分别为DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和DCD0。tc35i模块的数据输入/输出接口实际上是一个串行异步收发器,符合ITU-T RS232接口标准。它有固定的参数:8位数据位和1位停止位,无校验位,波特率在300bps115kbps之间可选,默认9600。硬
20、件握手信号用RTS0/CTS0,软件流量控制用XON/XOFF,CMOS电平,支持标准的AT命令集。其中18脚RXD、19脚TXD为TTL的串口通讯脚,需要和单片机或者PC通讯。TC35i使用外接式SIM卡, 2429为SIM卡引脚,SIM卡同TC35i是这样连接的:SIM上的CCRST、CCIO、CCCL、CCVCC和CCGND通过SIM卡阅读器与TC35i的同名端直接相连,ZIF连接座的CCIN引脚用来检测SIM卡是否插好,如果连接正确,则CCIN引脚输出高电平,否则为低电平。TC35i的第32脚SYNC引脚有两种工作模式,一种是指示发射状态时的功率增长情况,另一种是指示TC35i的工作状
21、态,可用AT命令AT+SYNC进行切换,本模块使用的是后一种。当LED熄灭时,表明TC35i处于关闭或睡眠状态;当LED为600 ms亮/600ms熄时,表明SIM卡没有插入或TC35i正在进行网络登录;当LED为75 ms亮/3s熄时,表明TC35i已登录进网络,处于待机状态。30、31、32脚为控制脚,其中30为RTC backup,31为Power down,32 为SYNC。3538为语音接口,35、36接扬声器放音。37、38可以直接接驻极体话筒来采集声音(37是话筒正端,39是话筒负端)TC35I开发技巧:模块的供电电压如果低于3.3V会自动关机。同时模块在在发射时,电流峰值可高达
22、2A。同时在此电流峰值时,电源电压(送入模块的电压)下降值不能超过0.4V。所以该模块对电源的要求较高,电源的内阻+FFC联接线的电阻必需小于200m。单片机通过两根I/O口控制TC35的开关机、复位等,通过串口与TC35进行数据通信,通信速率为9600Kbps,采用8位异步通讯方式,1位起始位,8位数据位,1位停止位。TC35模块输入输出的TTL正电平逻辑不是+5V,而是+2.9V,因此必要时加端口保护。新版德国西门子工业级GSM模块TC35i套装 ,清单如下:1、TC35i模块一个2、SIM卡座一个3、GSM天线转接线一根 4、GSM小天线一根 5、40芯专用排线及接插件一个TC35i模块
23、的详细英文PDF资料 下载 TC35I西门子工业GSM模块 250元一个40芯0.5mm间距扁平排线3厘米长 5元一个40PIN 间距0.5mm 翻盖式专用排线卡座 5元一个 主要用于连接TC35I与目标板的连接。 TC35I专用天线转接线 10元一根 村田头转成SMA接口,主要用于TC35I模块和GSM天线的连接。是每个西门子模块必备的产品.GSM小天线(SMA接口) 10元一个这是SIM卡座 5元一个 LM2941CS 7元一片 它是开关型可调高性能微波电路专用稳压芯片,上图中最左边的第一脚是电压调整端,提供1.28V的基准电压,可以通过外围两个电阻的分压比能灵活改变输出电压,第二脚是控制
24、端,高电平时关闭电源模块,低电平时模块正常工作,第三脚是地,第四脚是电源输入端,第五脚是电压输出端,例如TC35理想工作电压是4.2V。很多客户对TC35I不太熟悉,对如何调试无从下手,我们以TC35I试验板为例来简单说一下,首先将内正外负的12V直流电源接通试验板的插座中,测量LM2941CS的第5脚是否输出4.2V的直流电压?如果没有检查2941的第2脚是否接地?然后通过排线连接TC35I,插好手机卡并接好天线转接线和GSM天线,再通电测量TC35I的第15脚是否有4.2V电压?将TC35I的第16脚也就是单片机的P1.3脚对地短路一下,这时TC35I就能启动,等1分钟后,用其他电话拨打手
25、机卡号,如果不能接通重点检查排线座和SIM卡的6根线是否有接触不良?如果能接通说明TC35I正常,如果直接用单片机调试是非常困难的,可以将TC35I的串口脱离单片机通过RS232电平转换后连接电脑的串口,先用我们开发的短信息收发专用软件(点击下载) 进行测试,如果能正常工作再用串口调试助手软件(点击下载)进行AT命令测试。最后用单片机调试。以下是我们对TC35i模块进行维修中的照片,TC35和TC35i使用上基本上差不多,在外观形状上,TC35i比TC35略有不同。取下TC35i模块的屏蔽罩这是取下屏蔽罩后的样子,内部还有IC。使用热风枪对BGA芯片进行焊接使用热风枪对BGA芯片进行焊接进行串
26、口调试时,可以先发送AT,看看TC35I模块是否能回答AT OK,如果行说明串口部分硬件正常,如果不能回复,请顺着串口的两根PCB走线检查,看看4053的两根飞线是否连接正确?TC35I排线座上的两根串口线是否接触不良?如果TC35I和单片机的供电电压相同,可以去掉220欧姆的保护电阻。还有AT命令比较复杂,不同生产日期的TC35I模块的AT指令可能有一些区别,请客户以实践为准耐心调试,一个复杂的系统完全指望别人是不可能成功的,请务必保持一定的心理准备。-点击这里可以下载到详细的TC35I英文使用说明书-点击这里可以下载到简编的中文AT指令集下面我们列举一些常用的AT指令:控制端发送的AT指令
27、TC35回答指令的功能备注ATOK通讯握手AT+CLCCOK来电话时有信号输出串口输出:RINGAT+CMGL=0读取全部未读过的SMS消息AT+CMGL=2列出已有的短信息AT+CMGL=4读取全部SMS消息AT+CMGR=X读取第X条短消息AT+CMGF=0用PDU格式AT+CMGD=X删除第X条短消息AT+CGSN读取TC35I的序列号例如:351254004238596AT+CSCA显示短信息中心地址AT+CMGW写短信息并存储。ATD051383082087; 拨打051383082087电话注意需要最后的分号AT+CNMI=1,1,2OK设置收到短消息提示例如:+CMTI:“SM”
28、,4 4表示手机内短消息数量这是用串口调试助手成功发送的中文短信息完整过程,短信中心号码:13800513500 短信接收方号码:13306285091 短信内容:晚上好123 红色表示发送的内容,蓝色表示接收到的数据,黑色表示备注。 AT(回车)通讯握手OKAT+CMGF=0 设置为PDU模式,因为要发送中文汉字OKAT+CMGS=6 发送短消息的字节数 表示可以接收数据0891683108503105F011000B813103265890F10008A90C665A4E0A597D003100320033 包含短信中心、接收方手机号码和短信内容的数据1A 发送结束标志,一定要十六进制大写
29、模式,不是ASIC码!(可以在串口调试助手中勾选十六进制选项)只有最后发送1A十六进制码后短信才会被成功发出!+CMGS: 45 OK 表示第45条短信发送成功下面分析这条信息:08表示短消息中心地址长度;91表示短消息中心号码类型;68-中国代码3108200905F0表示短消息房层中心号码;1380 0290 5000103表示发送短消息的编码方式;0D表示目的地址长度;91表示目的地址类型;683199312523F9表示接收短消息的手机号码为13991352329(前面68是固定的,后面的手机号码每2位掉换一下位置,最后一位前面加入F)3208表示发送中文字符方式;0C表示短消息长度;
30、665A4E0A597D003100320033表示发送中文字符的UNICODE码汉字的中文内码: 665A晚 4E0A上 597D好 00311 00322 00333。单片机实现短信自动发送进行短信发送的前提是短信内容的正确编码。经过以上对短信发送过程的分析,可以通过单片机对其进行实现。下面是实现程序例程:/*-函数名:PDU_SMS()功能 :发送短信参数说明:SMS_Center为短信中心号码 11位SMS_Telenum为短信接收方的号码 11位SMS_Context为短信的内容-*/int PDU_SMS(char *SMS_Center, char *SMS_Telenum, c
31、har *SMS_Context,char is_GB)int i,j;unsigned char len,time;char lens3;time=0;for(i=0;i300;i+) PDU_Codei=PDU_ti;/*-设置短信中心号码-*/for (i = 0, j = 0; i strlen(SMS_Center) / 2; i+)PDU_Code6+(j+) = SMS_Center2 *i + 1;PDU_Code6+(j+) = SMS_Center2 *i;PDU_Code6+j+ = F; /在最后补上的FPDU_Code6+j = SMS_Centerstrlen(SM
32、S_Center) - 1;/*-*/*-设置接收号码-*/for (i = 0, j = 0; i 4) 9 ? (len 4) + 55: (len 4) + 48;PDU_Code45 = (len &0x0f) 9 ? (len &0x0f) + 55: (len &0x0f) + 48;/*-*/*-编码短信内容-*/if(is_GB=0)/如果不是GB码,短信内容为ascii码字符串for (i = 0,j=0; istrlen(SMS_Context);i+)szzh16(SMS_Contextj+,lens);PDU_Code46+i*4 = 0;PDU_Code46+i*4+
33、1 = 0;PDU_Code46+i*4+2 = lens0;PDU_Code46+i*4+3 = lens1;PDU_Code46+i*4 = 0x1a;PDU_Code46+i*4+1 = 0xff; else /短信内容为GB码,如果要使手机能够显示,改到UNICODE编码for (i = 0,j=0; istrlen(SMS_Context);i+)szzh16(int)SMS_Contextj+,lens);PDU_Code46+i*2 = lens0;PDU_Code46+i*2+1 = lens1;PDU_Code46+i*2 = 0x1a;PDU_Code46+i*2+1 =
34、0xff; /*-*/if(PDU_HandShake()do/LCD_PutChn(5,96,SS.);/if(is_GB)PDU_EnablePDU();if(is_GB=0)PDU_SetLength(Strlen(SMS_Context)*2);elsePDU_SetLength(Strlen(SMS_Context);PDU_Send(PDU_Code);/LCD_PutEng(5,96,SS);for(i=0;i25;i+)delay(20000); sbufcounter=0;/LCD_PutNum16(5,96,time);counter=0;time+;/判断是否发送成功,如
35、果不成功继续发送,最多4次,如仍不成功,返回0while(strpos(sbuf+strlen(sbuf)-20,G)=-1&time4);if(strpos(sbuf+strlen(sbuf)-20,G)=-1)return 0;elsereturn 1; /成功的话返回0else/LCD_PutEng(5,96,LL);sbufcounter=0;/LCD_PutEng(0,0,sbuf);counter=0;return 0;以上程序成功实现短信的发送,其中的一些函数限于篇幅可自行实现。(6)单片机对短信的读取与解码单片机可以通过AT指令对短信猫中的短信进行读取,并对读入的短信数据进行分
36、析与解码。读出的短信格式与发送时的短信编码大致是相同的。下面给出相应的程序例程,读者可以在自行实验中对照验证。1. 读取某一条短信,并将其进行显示/*-函数名:LAD_SMS()(short for Load And Display the Short MessageS)功能:用户函数,读取第n条短信,并在LCD的(x,y)位置显示出来-*/unsigned char LAD_SMS(unsigned char n,unsigned char x,unsigned char y)unsigned char i,len,t;char temp5;char temp13;/IN_Draw_Blan
37、korBlackRect(0,20,30,72,0);szzh10(n,temp1); /将n转为相应的字符串,如n=21,则字符串为21,用以与AT指令拼接。t=85;clear_sbuf();counter=0;send_s(AT+CMGR=);/AT+CMGR为读取短信的AT指令send_s(temp1);/上面所得的字符串send(0x0d);send(0x0a);for(i=0;i10;i+) delay(10000); /等待读取完毕sbufcounter=0; /在收到的数据末尾附加0temp0=sbuf23;temp1=sbuf24;temp2=sbuf25;temp3=0;i
38、f(sbuf25!=0x0d) t+;for(i=0;i短信空);delay(50000); return 0;len-=20;if(len90)/LCD_PutEng(5,96,MTL);/LCD_PutChn(x,y,短信太长);delay(50000); return 0;for(i=0;ilen;i+)temp0=sbuft+2*i;temp1=sbuft+2*i+1;temp2=0;sbufi=_hex_(temp); /收到的短信内容是内存方式的显示表示,转为十六进制数sbufi=0;Analysis_Pro();/解码后的内容在sbuf中,此函数对其进行显示输出/LCD_PutE
39、ng(x,y,inf_bw.Date);/LCD_PutEng(x,y,sbuf+29); delay(50000);clear_sbuf();counter=0;return 1;2. 检测新短信/*-函数名:Check_New()功能:用户函数,检测有无新的短信,如果有返回1,否则返回0-*/unsigned char Check_New()int i;send_s(AT+CMGL=0); /AT+CMGL=0为读取新短信的AT指令send(0x0d);send(0x0a); /发送回车delay(10000); /等待接收完毕if(sbuf12=O) return 0xff;if(sbuf12=+) for(i=18;i23;i+)if(sbufi=,) sbufi=0;return atoi(sbuf+19); /返回新短信的位置 3. 删除某条短信/*-函数名:Delete()功能:用户函数,删除第n条短信-*/unsigned char Delete(unsigned char n)char t10;char t15;strcpy(t,AT+CMGD=); /AT+CMGD为删除短信的AT指令szzh10(n,t1);strcpy(t+8,t1);while(Send_