已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川师范大学成都学院本科毕业设计XXXX大学本科毕业设计基于GSM的远程报警系统的设计学生姓名 所 在 系专业名称班 级学 号指导教师22XXXX大学本科毕业设计基于GSM的远程报警系统的设计学生: 指导教师:内容摘要:随着科技的发展和自动化水平的提高,温度的自动监测已经成为各行各业进行安全生产和减少损失采取的重要措施之一。特定场合下由于监测分站比较分散、偏远,采用传统的温度测量方式周期长、成本高,而且测量员必须到现场进行测量,因此工作效率非常低。不便于管理。 基于GSM的远程温度监测系统,设计采用美国Dallas公司生产的DSl8B20数字温度传感器,通过现有的GSM(Global System for Mobile communication)网络将监测结果以短信方式发送至相应的监控终端(如手机、PC机)。系统具有结构简单、可靠性高、成本低等特点,可广泛应用于桥梁混凝土测温、油气井场、电力电缆火灾监测、粮仓及物资仓库温度监测。关键字:GSM DSl8B20 远程温度报警 GSM-based remote temperature alarm systemAbstract:With the development of science and technology and raise the level of automation, automatic temperature monitoring of all walks of life have become the safe production and reduce the loss of one of the important measures taken. Specific occasions due to the sub-station to monitor the scattered, remote, the traditional way of measuring the temperature of the long and costly, and surveyor to the scene to be measured, so efficiency is very low. Not easy to manage.Bsed on the GSM remote temperature monitoring system,the United States to adopt the Dallas production company DS18B20 digital temperature sensor ,through the existing GSM network will monitor the results in order to send text messages to the control terminals (such as mobile phones ,PC machine ).System has a simple structure ,high reliability and low cost ,can be used as a bridge of concrete temperature ,oil and gas field wells ,power cable fire monitoring ,granary and warehouse supplies to monitor the temperatuer.Keyword: GSM DSl8B20 Remote temperature alarm 目 录一、绪论1(一)论题的研究意义1(二)国内外技术研究现状1(三)本设计的主要工作1二、GSM概述1(一)GSM的涵义及其特点1(二)GSM的发展现状2(三)GSM的技术资料2三、温度采集简介3(一)温度采集现状3(二)温度采集的硬件组成4四、基于GSM的远程温度采集的硬件系统设计6(一)单片机16F877A基本电路设计6(二)单片机与LCD显示电路的设计6(三)单片机与DS18B20数字温度采集电路的设计7(四)单片机与MXA232串行通信电路的设计8(五)接收电路中的报警电路设计8(六)发射电路的控制按键设计9五、基于GSM的远程温度采集软件的系统设计10六、结论及展望11感谢辞11附 录12附录一 设计电路原理图和PCB图12附录二 部分设计源代码13参考文献25一、绪论(一)论题的研究意义随着科技的发展和自动化水平的提高,温度的自动监测已经成为各行各业进行安全生产和减少损失所采取的重要措施之一。特定场合下由于监测分站比较分散、偏远,采用传统的温度测量方式周期长、成本高,而且测量员必须到现场进行测量,因此工作效率非常低。且不便于管理。本文提出了基于GSM的远程温度监测系统,采用美国Dallas公司生产的DSl8820数字温度传感器,通过现有的GSM网络将监测结果以短信方式发送至相应的监控终端(如手机、PC机)。系统具有结构简单、可靠性高、成本低等特点,可广泛应用于桥梁混凝土测温、油气井场、电力电缆火灾监测、粮仓及物资仓库温度监测。温度监测采用DS18B20非常适用于多点、恶劣环境下的温度监测系统。GSM模块利于系统集成,成本较低,运行稳定可靠,适用于远距离监测,不受地形条件的限制,有着广泛的应用前景。(二)国内外技术研究现状 温度是生产过程和科学试验中普遍且重要的物理参数。在工业生产中,为了高效生产,必须对生产过程中的主要参数,如温度、压力、流量、速度等进行有效控制。其中温度控制在生产过程中占有相当大的比例。准确地测量和有效地控制温度是优质、高产、低耗和安全生产的主要条件。目前国外在对温度采集方面做的很好。一些主要的温度传感器芯片都出自国外大多数厂家,如美信,德州仪器等等。而国内由于技术水平的限制,多在应用方面做出了很大的成就。就远程温度采集而言,是依赖于GSM网络的开通得以大行其道。(三)本设计的主要工作 本设计的主要工作为:在远端进行对温度数据的记录。如果温度过高或是过低,通过GSM模块发送信息,及时反馈给总服务器。总服务器对特定的情况做出相应的措施,减少损失。达到远程采集温度并报警的效果。二、GSM概述(一)GSM的涵义及其特点GSM全名为:Global System for Mobile Communications,中文为全球移动通讯系统,俗称全球通,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技术,即第一代GSM技术(2001年12月31日我国关闭了模拟移动网络)。GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低。(二)GSM的发展现状20世纪80年代中期,当模拟蜂窝移动通信系统刚投放市场时,世界上的发达国家就在研制第二代移动通信系统。其中最有代表性和比较成熟的制式有泛欧GSM ,美国的ADC(D-AMPS)和日本的JDC(现在改名为PDC)等数字移动通信系统。在这些数字系统中,GSM的发展最引人注目。1991年GSM系统正式在欧洲问世,网络开通运行。GSM系列主要有GSM900、DCS1800和PCS1900三部分,三者之间的主要区别是工作频段的差异。目前我国主要的两大GSM系统为GSM 900及GSM1800,由于采用了不同频率,因此适用的手机也不尽相同。不过目前大多数手机基本是双频手机,可以自由在这两个频段间切换。欧洲国家普遍采用的系统除GSM900和GSM1800另外加入了GSM1900,手机为三频手机。在我国随着手机市场的进一步发展,现也已出现了三频手机,即可在GSM900GSM1800GSM1900三种频段内自由切换的手机,真正做到了一部手机可以畅游全世界。(三)GSM的技术资料1.GSM系统的技术规范及其主要性能GSM标准共有12章规范系列,即:01系列:概述 ;02系列:业务方面 ;03系列:网络方面 ;04系列:MSBS接口和规约(空中接口第2、3层);05系列:无线路径上的物理层(空中接口第1层);06系列:话音编码规范 ;07系列:对移动台的终端适配;08系列;BS到MSC接口(A和Abis接口);09系列:网络互连;10系列:暂缺;11系列:设备和型号批准规范;12系列:操作和维护。2. GSM系统关键技术工作频段的分配 : (1)工作频段 我国陆地公用蜂窝数字移动通信网GSM通信系统采用900MHz频段: 890915(移动台发、基站收),935960(基站发、移动台收),双工间隔为45MHz,工作带宽为25 MHz,载频间隔为200 kHz。随着业务的发展,可视需要向下扩展,或向1.8GHz频段的GSM1800过渡,即1800MHz频段:17101785(移动台发、基站收),18051880(基站发、移动台收)双工间隔为95MHz,工作带宽为75 MHz,载频间隔为200 kHz。(2)频道间隔相邻两频道间隔为200kHz。 每个频道采用时分多址接入(TDMA)方式,分为8个时隙,即8个信道(全速率)。每信道占用带宽200 kHz/825 kHz。将来GSM采用半速率话音编码后,每个频道可容纳16个半速率信道。(3)多址方案GSM通信系统采用的多址技术:频分多址(FDMA)和时分多址(TDMA)结合,还加上跳频技术。(4)在时域和频域中的间隙在GSM系统中,每个载频被定义为一个TDMA帧,相当于FDMA系统的一个频道。每帧包括8个时隙(TS0-7)。每个TDMA帧有一个TDMA帧号。TDMA帧号是以3小时28分53秒760毫秒(204851268BP或者说20485126个TDMA帧)为周期循环编号的。每20485126个TDMA帧为一个超高帧,每一个超高帧又可分为2048个超帧,一个超帧是5126个TDMA帧的序列(6.12秒),每个超帧又是由复帧组成。帧分为两种类型: 26帧的复帧:它包括26个TDMA帧(268BP),持续时长120ms。51个这样的复帧组成一个超帧。这种复帧用于携带TCH(和SACCH加FACCH)。(5)无线接口管理在GSM通信系统中,可用无线信道数远小于潜在用户数,双向通信的信道只能在需要时才分配。这与标准电话网有很大的区别,在电话网中无论有无呼叫,每个终端都与一个交换机相连。3GSM信道 GSM中的信道分为物理信道和逻辑信道,一个物理信道就为一个时隙(TS),而逻辑信道是根据BTS与MS之间传递的信息种类的不同而定义的不同逻辑信道,这些逻辑信道映射到物理信道上传送。从BTS到MS的方向称为下行链路,相反的方向称为上行链路。逻辑信道又分为两大类,业务信道和控制信道。三、温度采集简介(一)温度采集现状温度是生产过程和科学试验中普遍且重要的物理参数。在工业生产中,为了高效生产,必须对生产过程中的主要参数,如温度、压力、流量、速度 等进行有效控制。其中温度控制在生产过程中占有相当大的比例。准确地测量和有效地控制温度是优质、高产、低耗和安全生产的主要条件。随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,在其他各个方面也得以体现.随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于当前社会,单片机控制器也存在于生活工具到工业应用的各个领域,例如生活工具的电梯、工业生产中的现场控制仪表、数控机床等。尤其是用单片机控制器改造落后的设备具有性价比高、提高设备的使用寿命、提高设备的自动化程度的特点。(二)温度采集的硬件组成1. DS18B20简介由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。 2. DS18B20工作特点DS18B20的性能特点:采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)。测温范围为-55+125,测量分辨率为0.0625。内含64位经过激光修正的只读存储器ROM。适配各种单片机或系统机。用户可分别设定各路温度的上、下限。内含寄生电源。3. DS18B20的组成内部组成DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图1所示。 64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。图1S18B20引脚分布 DS18B20高速暂存器共9个存存单元,如表1所示:表1 DS18B20高速暂存器序号寄存器名称作用序号寄存器名称作用0温度低字节以16位补码形式存放4、5保留字节1、21温度高字节6计数器余值2TH/用户字节1存放温度上限7计数器/3HL/用户字节2存放温度下限8CRC以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。表2 DS18B20温度存储器存储状态高8位SSSSS262524低8位232221202-12-22-32-44. DS18B20控制方法 在硬件上,DS18B20与单片机的连接有两种方法:一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。 表3 DS18B20的六条控制命令指令约定代码操作说明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中 重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPUCPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。四、基于GSM的远程温度采集的硬件系统设计(一)单片机16F877A基本电路设计该系统的MCU采用的是Microchip公司生产的16F877单片机。这个单片机的硬件系统设计简洁,并且堆栈采用硬件方式,这样就省略了专用的堆栈指令使得指令系统也得到了精练,其功率消耗极低,驱动能力强,使它能和多种外部电路模块结合使用。此外它与其他的单片机最大的不同之处在于采用了哈佛总线结构,在芯片内部将数据总线和指令总线分离,并且采用不同的宽度(数据总线8为,指令总线14位)进行处理。图2 16F877外围电路原理图(二)单片机与LCD显示电路的设计LCD显示电路是用1602芯片16F877单片机共同完成的,LCD1602能显示数字、英文、标点符号的显示芯片,它内部有自己的显示表格能自动查表显示出接收到的数据,16F877对其控制相对简单,符合本设计要求。图316F877与LCD1602显示电路原理图(三)单片机与DS18B20数字温度采集电路的设计DS18B20数字温度传感器采用的是SPI单总线结构进行数据的采集和传输的,其结构简单,运用灵活,易于16F877的控制操作,符合本设计的要求。DS18B20芯片各个管脚的功能如表3所示,其与16F877单片机的电路连接原理图如图4所示。表4 S18B20的各个管脚对应功能引脚名引脚序号引脚类型功能说明GND1P接地端DQ2I /O数据的输出端,为单总线结构控制VDD3P正电源端图4 DS18B20与16F877外围电路原理图(四)单片机与MXA232串行通信电路的设计采用MAX232作为串行通信的电平转换电路,实现数据的串行通信功能,不但硬件电路简单,而且16F877对其的控制也易于实现,符合设计要求。MAX232芯片与16F877单片机的电路连接原理图如图5所示。图5 MAX232与16F877外围电路原理图(五)接收电路中的报警电路设计由单片机的RB2端口的输出的电平来驱动蜂鸣器实现报警功能,但是由于RB2端口输出的电压比较微弱,为了保证蜂鸣器在特定的情况下能正常发出报警信号,因此在信号输入前增加了一个放大器。在使信号符合要求的同时电路结构也不复杂,这样完全符合设计要求。蜂鸣器与16F877单片机的电路连接原理图如图6所示。图6 蜂鸣器与16F877外围电路原理图(六)发射电路的控制按键设计按键电路的原理图如下:16F877图7 44键盘与16F877电路原理图五、基于GSM的远程温度采集软件的系统设计软件设计流程图及说明图8 软件设计流程图本设计监测软件主要包括初始化程序、信号采集处理程序和短消息收发程序等。初始化程序包括硬件初始化、定时器和串口初始化。信号采集和处理主要完成外部采集的温度转换。接收短消息采用查询方式。一旦短消息到达,调用串口接收程序解码短消息内容并做出相应处理。发送温度信号当温度达到警戒线时。调用发送指令将短消息发送到监测中心本文对GSM远程温度监测系统硬件和软件设计进行说明。报警方式在本地采用声音报警。为了方便观测人员查看实时温度。本设计将采集的温度实时显示在本地的LCD上面。六、结论及展望系统主要的任务是监测被控对象的温度。如果温度超过警戒温度就通过TC35i将报警信号发送到监测中心。监测中心做最后的处理。系统软件设计的重点在于单片机的编程。通过向TC35i写入不同的AT指令完成多种功能、本设计主要用来发送报警信息。监测软件主要包括初始化程序、信号采集处理程序和短消息收发程序等。初始化程序包括硬件初始化、定时器和串口初始化。信号采集和处理主要完成外部采集的温度转换。接收短消息采用查询方式。一旦短消息到达,调用串口接收程序解码短消息内容并做出相应处理。发送温度信号采用报警方式。调用发送指令将短消息发送到监测中心本文对GSM远程温度监测系统硬件和软件设计进行说明。温度检测采用DSl8820非常适用于多点、恶劣环境下的温度监测系统。GSM模块利于系统集成,成本较低,运行稳定可靠,适用于远距离监测,不受地形条件的限制。又由于TC35i型模块控制的温度监测仪的优点是控制中心具有可移动,覆盖范围广,实时性好,可靠性高,保密性好。以GSM网络作为无线传输网络,短消息业务经济实惠,适合远程移动监控中心站的管理。具有很广泛的应用前景。感谢辞 本设计是在我的指导老师汪光宅和刘强老师的认真指导下完成的。从设计的选题、研究内容和方案的确定到整个设计工作的进行以及最后撰写设计论文的整个过程,汪老师和刘老师都倾注了大量的心血和汗水,汪老师以他渊博的知识和丰富的工作经验给予我莫大的启迪和帮助,刘老师让我对怎样做一个完整的电子设计有了进一步加深理解,使我受益匪浅。同时,在论文完成时,汪老师也认真地检查了论文,并指出了其中的不足。在此,我向汪老师及刘老师致以崇高的敬意和深深地感谢!在几个月的设计时间里,我的朋友以及同学也给了我很大的帮助,他们不仅热心地帮助我查找资料,而且指出我在设计中所存在的问题,并给出了很好的建议。我能够顺利的完成设计,他们也功不可没。在此,我向我的朋友及同学致以我最深的谢意,感谢你们对我的帮助。感谢那些把自己的劳动成果无偿贡献出来的同学们。是你们帮助我少走了很多的弯路。在你们那里我学到了很多的知识。再次感谢。我以后也会和你们一样,把自己觉得好的东西都共享出来。最后把我觉得最应该感谢我的父母及亲人,是他们的辛勤劳作让我有了学习的机会。特别是在过去的四年当中,他们一如既往的支持我的学习事务。在此表示深深的感谢。附 录附录一 设计电路原理图和PCB图图9 电路原理图图10 已布线的pcb图附录二 部分设计源代码/*-LCD端口定义-*/#define DATADIRECTION TRISD/*DATAVALUEDIRECTION控制LCD IO口方向*/#define DATAVALUE PORTD/*定义DATAVALUEVALUE为LCD1602数据IO口*/#define CONTROLDIRECTION TRISE/*DATAVALUEDIRECTION控制LCD1602数据 IO口方向*/#define RS RE0 /*LCD1602数据,命令控制,1为数据,0为命令*/#define RW RE1 /*LCD1602读写控制,1为读,0为写*/#define EN RE2 /*LCD1602使能控制,1为使能,0为禁止*/void LcdWriteCommand(unsigned char command); /*LCD1602写命令*/void LcdWriteChar(unsigned char data); /*LCD1602显示字符*/void LcdInit(); /*LCD1602初始化*/void LcdDisplayString(const unsigned char str,unsigned char len,unsigned int time);Void LcdClear(); /*清屏*/Void LcdDelay(unsigned int n); /*LCD1602延时n个10ms*/Void LcdDelayNMs(unsigned int n) /*LCD1602延时n个10ms*/ unsigned int i;for(;n0;n-) for(i=100;i0;i-);Void LcdWriteCommand(unsigned char command)/*LCD1602写命令*/ DATAVALUE=command; RS=0; RW=0; EN=0; LcdDelayNMs(10); EN=1;void LcdWriteChar(unsigned char data) /*LCD1602显示字符*/ DATAVALUE=data; RS=1; RW=0; EN=0; LcdDelayNMs(10); EN=1;void LcdClear() /*清屏*/LcdWriteCommand(0x01);LcdWriteCommand(0x80);void LcdInit() /*LCD1602初始化*/ADCON1=0X07; /设定RA口、RE口为变通数字端口DATADIRECTION=0x00;CONTROLDIRECTION=0X00; LcdWriteCommand(0x01); LcdWriteCommand(0x38); LcdWriteCommand(0x0c); LcdWriteCommand(0x06); LcdWriteCommand(0x01);LcdWriteCommand(0x80);void LcdDisplayString(const unsigned char str,unsigned char len,unsigned int time)unsigned char i=0;char flag=0x40;unsigned char position=0x80;/LcdWriteCommand(0x01);/LcdWriteCommand(0x80);/LcdWriteChar( );for(i=0;i0)position=position+flag;LcdWriteCommand(position);flag=-flag;if(i%32=0)LcdDelayNMs(time);LcdWriteCommand(0x01);LcdWriteCommand(0x80);/LcdWriteChar( );if(stri!=0)&(stri!=r)&(stri!=n)LcdWriteChar(stri);/*-GSM模块函数定义-*/#include #define IGTDIRECTION TRISA0#define IGT RA0#define M 2 /向GSM发送命令#define N 6const unsigned char gsmcommandMN=ATE0r,ATr,;/*发送命令ATr后回显OK*/ /*发送命令ATE0r后回显OK*/*发送命令AT+CSQr后回显+CSQ: 29,99 OK*/*发送命令AT+CMGF=0r后回显OK*/const unsigned char commandcnmi=AT+CNMI=1,1,0,0,1r;/*发送命令AT+CNMI=1,1,0,0,1r后回显返回信息OK. 若收到短信则显示+CMTI: SM,22表示手机内短信数量*/const unsigned char commandcmgs = AT+CMGS=025r;const unsigned char smscontent =0X30,0X30,0X31,0X31,0X30, 0X30,0X30,0X44,0X39,0X31, 0X36,0X38,0X35,0X31,0X38, 0X39,0X30,0X32,0X38,0X31, 0X33,0X38,0X66,0X31,0X30, 0X30,0X30,0X38,0X30,0X31, 0X30,0X41,0X36,0X37,0X30, 0X39,0X35,0X43,0X30,0X46, 0X35,0X30,0X37,0X37,0X35, 0X31,0X36,0X35,0X34,0X46, 0X42,0X35,0X1A,r,0;/*const unsigned char smscontent =0X30,0X30,0X31,0X31,0X30, 0X30,0X30,0X44,0X39,0X31, 0X36,0X38,0X35,0X31,0X38, 0X39,0X30,0X32,0X38,0X31, 0X33,0X38,0X66,0X31,0X30, 0X30,0X30,0X38,0X30,0X31, 0X30,0X41,0X36,0X37,0X30, 0X39,0X35,0X43,0X30,0X46, 0X35,0X30,0X37,0X37,0X35, 0X31,0X36,0X35,0X34,0X46, 0X42,0X35,0X1A,r,0;/*gms相关函数定义*/void GSMDelayNMs(unsigned int n)unsigned int d=100; for(;n0;n-)d=100;do;while(-d);void GSMSendCommand(const unsigned char gsmcommand)LcdDisplayString(gsmcommand,strlen(gsmcommand),1000);GSMDelayNMs(1000);ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH);timeoutset=5;timeout=0;RCIF=0;RCIE=1;receivestrlen=0;T0IF=0;T0IE=1;Tmr0TimerStart(0);UsartSendString(gsmcommand,strlen(gsmcommand);while(timeouttimeoutset);T0IF=0;T0IE=0;RCIF=0;RCIE=0;LcdClear();/清屏LcdDisplayString(receivestr,receivestrlen,1000);GSMDelayNMs(1000);/启动GSMvoid GSMStart(void) ADCON1=0X07; IGTDIRECTION=0; IGT=0; GSMDelayNMs(300); IGT=1;void GSMInit()unsigned char i=0;LcdInit();/LCD1602初始化LcdClear();/清屏LcdDisplayString(lcd1602 ready!,strlen(lcd1602 ready!),1000);GSMDelayNMs(1000);UsartInit(9600);/串口初始化,baud为串口波特率GSMStart();LcdClear();/清屏LcdDisplayString(GSMStart!,strlen(GSMStart!),1000);GSMDelayNMs(1000);RCIF=0;RCIE=0;PEIE=1;GIE=1;for(i=0;i;unsigned char timercount=0;LcdClear();/清屏LcdDisplayString(commandcmgs,strlen(commandcmgs),1000);GSMDelayNMs(1000);ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH);RCIF=0;RCIE=1;receivestrlen=0;UsartSendString(commandcmgs,strlen(commandcmgs);i=10;while(i-)GSMDelayNMs(100); /Getp=strstr(receivestr,SK); /if(p!=NULL)ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH); GSMDelayNMs(150); /Get break;LcdClear();/清屏LcdDisplayString(smscontent,strlen(smscontent),1000);GSMDelayNMs(1000);ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH);timeoutset=150;timeout=0;RCIF=0;RCIE=1;receivestrlen=0;T0IF=0;T0IE=1;Tmr0TimerStart(0);UsartSendString(smscontent,strlen(smscontent);while(timeouttimeoutset);T0IF=0;T0IE=0;RCIF=0;RCIE=0;LcdClear();/清屏LcdDisplayString(receivestr,receivestrlen,1000);GSMDelayNMs(1000);/*void GSMDeleteSms(const unsigned char deletesmsindex)LcdClear();/清屏LcdDisplayString(commandcmgd,strlen(commandcmgd),1000);LcdDisplayString(deletesmsindex,strlen(deletesmsindex),1000);GSMDelayNMs(1000);UsartSendString(commandcmgd,strlen(commandcmgd);UsartSendString(deletesmsindex,strlen(deletesmsindex);GSMSendCommand(r);void GSMReadSms(const unsigned char readsmsindex) unsigned char i;unsigned int readsmstimeout=0,readsmstimeoutset=0;unsigned char hbyte=0,lbyte=0;unsigned char temp;bank1 unsigned char *p;LcdClear();/清屏LcdDisplayString(commandcmgr,strlen(commandcmgr),1000);LcdDisplayString(readsmsindex,strlen(readsmsindex),1000);GSMDelayNMs(1000);ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH);RCIF=0;RCIE=0;readsmstimeoutset=50000;UsartSendString(commandcmgr,strlen(commandcmgr);UsartSendString(readsmsindex,strlen(readsmsindex);RCIF=0;receivestrlen=0;UsartSendData(r);for(i=0;ireadsmstimeoutset) break; if(readsmstimeoutreadsmstimeoutset) break; receivestri = RCREG; RCIF=0;p=strstr(receivestr,nosms);if(p!=NULL)LcdClear(); /清屏LcdDisplayString(nosms,strlen(nosms),1000);GSMDelayNMs(1000);return;readsmstimeout=0;for(i=0;ireadsmstimeoutset) break; if(readsmstimeoutreadsmstimeoutset) return; temp = RCREG; RCIF=0; readsmstimeout=0;/接收两个字节的短信长度字符while(RCIF=0)if(+readsmstimeoutreadsmstimeoutset) break; te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论