




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TianjinUniversityofTechnologyandEducation毕业设计论文基于GSM网络的现代化智能家居监控系统设计与实现ThedesignandimplementationofRemotehouseintelligentmonitoringandcontrolsystembasedonGSMnetwork2010年6月摘要随着GSN网络的迅速普及移动通信技术的飞速发展,新技术和新业务的开发和应用已提到十分重要的位置。将GSM技术运用于实现家庭智能报警具有实际应用价值。该系统以单片机AT89S52为核心作为控制模块,由GSM无线通信模块、传感器数据信息采集模块、液晶显示模块和报警模块组成。通过传感器模块中光电传感器和温度传感器采集相关信号,经A/D转换模块转换成单片机可处理的数字信号,经过语音报警模块发出相关报警信号,将该信号通过GSM短信模块,借助GSM移动网络,以中文短消息,直接把报警地点的情况反映到您的屏幕上。该系统具有安全保密性高,又不需要组建专用网络和维护网络,网络覆盖面广,因此与传统的监控系统相比有着其独特的优势。关键词:智能监控;AT89S52单片机;GSM网络;传感器;报警系统;
ABSTRACTWiththerapidpopularizationofGSMnetworksandthefastdevelopmentofmobilecommunicationtechnology,newtechnologiesandserviceshavebeensteppeduptoanall-importantposition.GSMtechnologywillbeappliedtoachievepracticalapplicationofintelligentalarmhomevalue.ThesystemisMCUAT89S52thecoreasacontrolmodule,whichisconsistoftheGSMwirelesscommunicationmodule,sensordataacquisitionmodule,LCDmoduleandalarmmodule.Photoelectricsensormodulethroughthesensorandtemperaturesensoracquisition-relatedsignals,throughtheA/Dconvertermoduleintodigitalsignalswhichasinglechipcanhandle,afterissuingtherelevantalarmvoicealarmmodulesignals,thesignalisthroughtheGSMSMSmodule,withGSMmobilenetwork,throughChineseshortmessage,directlytothealarmlocationisreflectedtoyourmobilephonescreen.Thetheoryisverysimpleandhashighsecurity,andthereisnoneedtosetupspecialnetworksandtomaintainthem,moreovertheareaofGSMnetworkscoveringisverywide,sothismethodhasmanyparticularadvantagesoverconventionalmonitoringsystem.KeyWords:Intelligentmonitoring;AT89S52singlechipmicrocomputer;GSMnetworks;Sensor;Alarmsystem
目录MACROBUTTONInsertCrossReference1 引言 ④P3端口,该口是带有内部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P3口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在AT89S52中,同样P3口还用于一些复用功能,如表1-2所列。在对Flash编程和程序校验期间,P3口还接收一些控制信号。表3-1-3-2P3端口引脚与复用功能表端口引脚复用功能RXD(串行输入口)TXD(串行输出口)(外部中断0)(外部中断1)T0(定时器0的外部输入)T1(定时器1的外部输入)(外部数据存储器写选通)(外部数据存储器读选通)RST复位输入端。在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。在SFRAUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。DISRTO位的默认状态,是复位高电平输出功能使能。ALE/地址锁存允许信号。在存取外部存储器时,这个输出信号用于锁存低字节地址。在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。在需要时,可以把地址8EH中的SFR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。程序存储器允许信号。它用于读外部程序存储器。当AT89S52在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。/Vpp外部存取允许信号。为了确保单片机从地址为0000H~FFFFH的外部程序存储器中读取代码,故要把EA接到GND端,即地端。但是,如果锁定位1被编程,则EA在复位时被锁存。当执行内部程序时,EA应接到Vcc。在对Flash存储器编程时,这条引脚接收12V编程电压Vpp。XTAL1振荡器的反相放大器输入,内部时钟工作电路的输入。XTAL2振荡器的反相放大器输出。GSM无线通信模块——TC35i目前,国内已经开始使用的GSM模块有很多,而且这些模块的功能、用法差别不大。本设计采用的是西门子TC35系列的TC35i。这种无线模块功能上与TC35兼容,设计紧凑,大大缩小了用户产品的体积。TC35i与GSM2/2兼容、双频(GSM900/GSM1800)、RS232数据接口,该模块及射频电路和基带与一体,向用户提供标准的AT命令接口,为数据、语音、短消息和提供快速、可靠、安全的传输,方便用户的应用开发及设计。设计选用GSM模块TC35i,给出其和PC机的通信电路,实现远地数据的传输。其工作模式如图1、图2所示。GSM模块中电源电路分为充电电池和稳压电源模块两部分:充电电池主要为整个系统提供3.6V工作电压,同时产生MAX3238所需要的高电平;三端电源模块LM7806将外部+12V直流电源转换为+6V,连到ZIF连接器的11、12引脚,在充电模式下,为TC35i提供+6V、500mA的充电电源。启动电路由开漏极三极管和上电复位电路组成。模块上电10ms后(电池电压须大于3V),为使之正常工作,必须在15脚()加时长至少为100ms的低电平信号,且该信号下降沿时间小于1ms。启动后,15脚的信号应保持高电平。TC35i外围电路如下图所示:图3-2-5TC35i外围电路AT指令说明常用AT指令如下:AT指令功能AT+CMGCSendanSMScommend(发出一条短信息命令)AT+CMGDDeleteSMSmessage(删除SIM卡内存的信息)AT+CMGFSelectSMSmessageformat(选择短消息信息格式:0-PDU;1-文本)AT+CMGLListSMSmessagefrompreferredstore(列出SIM卡中的短消息格式PDU/TEXT:0“RECUNREAD”为未读,1“RECREAD”为已读,2“STOUNSENT”为待发,3“STOSENT”为已发,4“ALL”为全部AT+CMGRReadSMSmessage(读短消息)AT+CMGSSendSMSmessage(发短消息)AT+CMGWWriteSMSmessagetomemory(向SIM内存中写入待发的短消息)AT+CNMINewSMSmessagestorage(显示新收到的短消息)AT+CPMSPreferredSMSmessagestorage(选择短消息内存)AT+CSCASMSservicecenteraddress(短消息中心地址)AT+CSCBSelectcellbroadcastmessagemessages(选择蜂窝广播信息)AT+CSMPSetSMStextmodeparameters(设置短消息文本模式参数)PDU编码规则目前,发送短消息常用Text和PDU(ProtocolDataUnit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由ABCDEFGHIJKLM十三项组成。A:短信息中心地址长度,2位十六进制数(1字节)B:短信息中心号码类型,2位十六进制数。C:短信息中心号码,B+C的长度将由A中的数据决定。D:文件头字节,2位十六进制数。E:信息类型,2位十六进制数。F:被叫号码长度,2位十六进制数。G:被叫号码类型,2位十六进制数,取值同B。H:被叫号码,长度由F中的数据决定。I:协议标识,2位十六进制数。J:数据编码方案,2位十六进制数。K:有效期,2位十六进制数。L:用户数据长度,2位十六进制数。M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。单片机与TC35i的软件接口及控制原理单片机与TC35i的软件接口其实就是单片机通过AT指令控制的控制技术,首先设置TC35i模块的工作模式:AT+CMGF=n,n=0为PDU模式;n=1为文本模式;通常设置为PDU模式,在这种模式下,能传送或接受透明数据(用户自定义数据)。AT+CMGR=n为读TC35i模块短消息数据,n为短消息号。AT+CMGL=n为列出TC35i模块内的短消息,n=0是未读的短消息,n=1位已读的短消息,n=2位未发送的短消息,n=3为已发送的短消息n=4为所有短消息。AT+CMGD=n为删除TC35i模块的短消息,n为短消息编号。RS-232串行接口RS-232是在任何时候都常用的接口之一。它不仅已经被内置于每台PC,而且已被内置于从微控制器到主机的多种类型的电脑和与它们连接的设备。RS-232的最通常得用处是连接到一个Modem,其他拥有RS-232接口的设备包括打印机,数据采集模块,测试装置和控制回路。你也可以将RS-232用在任何类型得计算机之间的简单连接中。RS-232是设计来处理两台设备之间的通信的,距离限制为50到100f,这决定于波特率和电缆类型。因为RS-232端口被广泛应用,它的另一个用途是与一个将这个接口转换成另一种类型的适配器相连。例如,一个简单的回路将一个RS-232端口转换成一个RS-485端口,这个端口可以和多台设备相连并且可以使用更长的导线连线。RS-232连接使用非平衡导线。尽管一个非平衡的状态听起来像是一些应该避免的东西,在这里它仅仅是指导线中的信号的电气特性。在一条非平衡导线中,信号电压加到一条导线上,所有的信号电压都使用一个公共的接地线。这种类型的接口的另一个术语是单端。特性RS232有几个优点:它是无处不在的。每一台PC机都有一个或更多的RS232端口。更新的计算机现在支持其他诸如USB这样的串行接口,但是RS232可以做很多USB无法做的事情。在微控制器中,接口芯片使得将一个5V串口转换成RS-232变得很容易。连接距离可以达到50到100ft。大多数的外设接口都不会用于太长的距离。USB连接最长可以达到16ft,PC机的并口打印机接口与主机的距离可以达到10到15ft,或者利用IEEE-1284B型驱动器可以达到30ft。但是RS-232可以使用更长的电缆。如果每一个RS-232端口与一个Modem相连,你可以使用网在世界范围内发送数据。对于一个双向连接,你只需要3条导线。一个并行连接一般需要8条数据线,两条或者更多的控制信号线,和几条接地线。所有的导线和更大的连接器使得价格累计起来就比较高了。RS-232的缺点包括以下这些:如果连接的另一头需要并行数据,它不得不将这个串口数据转换成并行数据。但是利用一个UART,这很容易实现。串口是如此的有用,以至于寻找一个未用的串口可能会比较困难。PC机可以有多个串口,但是一个系统可能无法为每一个串口分配一个唯一的中断请求信号。大多数的微控制器只有一个硬件串口。其中,RS-232电平转换电路如下所示:图3-2-4RS-232电平转换电路在一个连接中不能有超过2台以上的设备。指定的最大数据传输速率是每秒20000位。但是,很多接口芯片可以超过这个数值,尤其是在短程连接上。很长的连接需要一个不同的接口。双向RS-232通信的3个基本信号如下:TD:将数据从DCE传输到DCE也被称作TX和TXD。RD:将数据从DCE传输到DTE。也被称作RX和RXD。SG:信号地。也被称作GND和SGND。电压RS-232的逻辑电平用正负电压表示,而不是只用5VTTL和CMOS逻辑的正电压信号表示。在一个RS-232的数据输出(TD),一个逻辑0被定义为等于或者高于+5V,而一个逻辑1被定义为等于-5V或者比低于-5V。换言之,信号使用负逻辑,在这种逻辑中,负的电压为逻辑1。控制信号使用相同的电压,但是使用的是正逻辑。一个正的电压表示这项功能为开,而一个负的电压表示这个功能为关。RS-232接口芯片反向转换这些信号。在一个UART的输出引脚,一个逻辑1数据位或者一个关控制信号接近于5V,它在RS-232的接口产生一个负电压。一个逻辑0数据位或者一个开控制信号接近于0V,它在RS-232接口产生一个正电压。因为一个RS-232接收器可能位于一条长电线缆的末端,等到信号到达接收者的时候,它的电压可能已经削弱了或者加载了噪声信号。考虑到这种情况,在接受方最低要求的电压要比在驱动器处要低。一个比+3V高得多的输入在RD处是一个逻辑0,或者在一个控制输入处是一个开。一个比-3V要低得多的输入在RD处为一个逻辑1,或者在一个控制输入处为一个关。根据这个标准,在-3V和+3V之间的一个输入的逻辑电平没有定义。噪声容限,或者电压容限,是输出电压和输入电压的区别所在。RS-232的大电压波动导致一个比5VTTL逻辑宽得多的噪声容限。例如,即便一个RS-232驱动器的输出为最小的+5V,它也会在接受方削弱或者噪声峰值大到2V,并且仍旧是一个有效逻辑0。很多RS-232输出有更宽的电压波动:±9V和12V是很平常的事情。这些都导致更宽的噪声容限。最大允许的电压波动是15V,尽管接受方必须不受任何损害地处理高达25V的电压。使用的另外两个与RS-232有关的术语是Mark和Space。Space是逻辑0,而Mark是逻辑1。这两个术语是多年以前机械记录仪二进制数据的,他们分别代表物理标记和空白。计时限制TIA/EIA-232包括最小和最大计时规定。所有的RS-232接口芯片都符合这个规定。指定的旋转速度限制了接口的最大比特率。旋转率是当输出切换时电压变化的快慢的量度,并且描述了一个输出的电压变化的瞬间速度。一个RS-232驱动器的旋转速度必须是每毫秒30V或者更少。限制旋转速度的好处是它通过事实上消除由于电压偏转引发的问题来改进信号质量,电压偏移发生在传输有着快速上升和下降节拍的信号的长距离连线上。但是旋转速度也限制了一个连接的最大速度。在30V/us的速度下,一个输出需要0.3us从+5V切换到-5V。RS-232的规定的最大波特率为20kbps,这个速度转换成一个比特宽度为50us,或者在允许的最快旋转速度下为166倍的切换时间。事实上,因为UART在位的中间附近读取输入数据,并且还因为大多数的时间参考时钟是非常准确的,你可以安全的使用短到5到10倍的切换时间的位的宽度。考虑到这些,有的接口芯片允许115kbps或者更高的波特率,即使这违反了这个标准的建议。除了有一个最大的切换速度之外,RS-232驱动器还必须符合最低标准以确保信号不在逻辑状态之间的未定义区域停留。对于控制信号和其他40bps和更低的信号,信号线必须花费不超过1ms的时间在有效的逻辑1和逻辑0之间的传送区域,对于其他数据和时间信号,这个限制是4%的位宽,或者在20bps下为2us。信号的上升和下降次数也要尽可能的接近相等。在5V逻辑和RS-232之间转换很多微控制器有异步串口,但是它们的输出和输入使用5V逻辑而不是使用RS-232电压。将5V落连接到一个RS-232端口需要转换到RS-232电平和从RS-232电平转换到5V逻辑。利用5V逻辑,我假定了TTL或者CMOS逻辑芯片使用的逻辑电平,这些芯片是由一个单一的+5V电源供电,信号电平以接地电平作为参考。对于TTL逻辑,一个逻辑低输入不高于0.8V。一个逻辑高输出必须至少为2.4V,而一个逻辑高输入必须至少为2V。利用这些逻辑电平,一个接口可以有0.4V的噪声信号而不至于产生错误。这些逻辑电平应用在初期的,标准的7400系列的TTL逻辑和他的派生系列,包括74LS74F和74ALSTTL。较早的利用NMOS技术制造的微控制器也使用这些逻辑电平。大多数的CMOS芯片定义了不同的逻辑电平,并且有更宽的噪声容限。一个逻辑低CMOS输出不高于0.1V,而一个逻辑低输入可以高达20%的电源电压,或者对于5V的电源输入可以达到1V。一个逻辑高输出至少为4.9V,而一个逻辑高输入必须至少达到电源电压的70%,或者对于5V电源输入而言达到3.5V。使用这样的逻辑电平的系列包括4000系列,74HC和74AC。有的CMOS芯片有TTL兼容输出。这使得他们可以直接和CMOS或者TTL逻辑项链。遵循这个惯例的芯片包括74HCT逻辑系列和大多数的微控制器。传感器数据信息采集模块传感器数据信息采集模块主要是采集外部信息:温度传感器是用来感测外界温度,若超过温度限制,则会出现“有火灾”报警信息;光电传感器是用来感测是否有异物进入,若出现感应,则会出现“有人闯入”报警信息。再将这些信息传输到AT89S52单片机控制模块,以进行后面的报警操作。图3-3传感器采集模块电路原理图温度传感器1、DS18B20特点(1)单线结构,只需一根信号线和CPU相连。(2)不需要外部元件,直接输出串行数据。(3)可不需要外部电源,直接通过信号线供电,电源电压范围为3.3V~5V。(4)测温精度高,测温范围为:一55℃~+125℃,在-10℃~+85℃(5)测温分辨率高,当选用12位转换位数时,温度分辨率可达0.0625℃(6)数字量的转换精度及转换时间可通过简单的编程来控制:9位精度的转换时间为93.75ms:10位精度的转换时间187.5ms:12位精度的转换时间750ms。(7)具有非易失性上、下限报警设定的功能,用户可方便地通过编程修改上、下限的数值。(8)可通过报警搜索命令识别哪片DS18B20采集的温度超越上、下限。2、DS18B20引脚及管脚功能介绍DS18B20的常用封装有3脚、8脚等几种形式,如图1所示。各脚含义如下:DQ:数字信号输入/输出端。GND:电源地端。VDD:外接供电电源输入端(在寄生电源接线时此脚应接地)。3、DS18B20内部结构简要介绍:DS18B20的内部结构主要有64位光刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器等组成。(1)64位光刻ROM是生产厂家给每一个出厂的DS18820命名的产品序列号,可以看作为该器件的地址序列号。其作用是使每一个出厂的DS18820地址序列号都各不相同,这样,就可以实现一根总线上挂接多个DS18820的目的。(2)DS18B20中的温度传感器完成对温度的测量,输出格式为:16位符号扩展的二进制补码。当测温精度设置为12位时,分辨率为O.0625℃,即O.0625其中,S为符号位,S=1,表示温度为负值;S=0,表示温度为正值。例如+125℃的数字输出为07D0H,-55(3)DS18B20中的低温触发器TL、高温触发器TH,用于设置低温、高温的报警数值。DS18B20完成一个周期的温度测量后,将测得的温度值和TL、TH相比较,如果小于TL,或大于TH,则表示温度越限,将该器件内的告警标志位置位,并对主机发出的告警搜索命令做出响应。需要修改上、下限温度值时,只需使用一个功能命令即可对TL、TH写入,十分方便。(4)DS18B20中的高速暂存器是一个9字节的存储器。开始两个字节为被测温度的数字量,第3、4、5字节分别为TH、TL、配置寄存器的复制,每一次上电复位时被重写。配置寄存器有R0、R1组成,其值决定温度转换的精度位数、转换时间等。第7字节为测温计数的剩余值。第8字节为测温时每度的计数值。第9字节读出的是前8个字节的CRC校验码,通过此码,可判断通讯是否正确。4、DS18B20的测温原理DS18B20的测温原理图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随着温度变化时其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-555、DS18B20的读写操作介绍(1)ROM操作命令:=1\*GB3①读命令(33H):通过该命令主机可以读出DS18B20的ROM中的8位系列产品代码、48位产品序列号和8位CRC校验码。该命令仅限于单个DS18B20在线的情况。=2\*GB3②选择定位命令(55H):当多片DS18B20在线时,主机发出该命令和一个64位数,DS18B20内部ROM与主机一致者,才响应命令。该命令也可用于单个DS18B20的情况。=3\*GB3③查询命令(0F0H):该命令可查询总线上DS18B20的数目及其64位序列号。=4\*GB3④跳过ROM序列号检测命令(OCCH):该命令允许主机跳过ROM序列号检测而直接对寄存器操作,该命令仅限于单个DS18B20在线的情况。=5\*GB3⑤报警查询命令(0ECH):只有报警标志置位后,DS18B20才相应该命令。(2)存储器操作命令:=1\*GB3①写入命令(4EH):该命令可写入寄存器的第2、3、4字节,即高低温寄存器和配置寄存器。复位信号发出之前,三个字节必须写完。=2\*GB3②读出命令(0BEH):该命令可读出寄存器中的内容,复位命令可终止读出。=3\*GB3③开始转换命令(44H):该命令使DS18B20立即开始温度转换,当温度转换正在进行时,主机这时读总线将收到O;当温度转换结束时,主机这时读总线将收到1。若用信号线给DS18820供电,则主机发出转换命令后,必须提供至少相应于分辨率的温度转换时间的上拉电平。=4\*GB3④回调命令(088H):该命令把EEROM中的内容写到寄存器TH、TL及配置寄存器中。DS18b20上电时能自动写入。=5\*GB3⑤复制命令(48H):该命令把寄存器TH、TL及配置寄存器中的内容写到EEROM中。=6\*GB3⑥读电源标志命令(084H):主机发出该命令后,DS18B20将进行响应,发送电源标志,信号线供电发O,外接电源发1。(3)DS18B20的复位及读写时序:=1\*GB3①复位:对DS18B20操作之前,首先要将它复位。复位时序为:(a)主机将信号线置为低电平,时间为480~960μS。(b)主机将信号线置为高电平,时间为15~60μS。(c)DS18B20发出60~240μS的低电平作为应答信号。主机收到此信号后,才能对DS18B20作其它操作。=2\*GB3②写操作:主机将信号线从高电平拉至低电平,产生写起始信号。从信号线的下降沿开始,在15~60μS的时间内DS18B20对信号线检测,如信号线为高电平,则写1,如信号线为O,则写0,从而完成了一个写周期。在开始另一个写周期前,必须有1μS以上的高电平恢复期。=3\*GB3③读操作:主机将信号线从高电平拉低至低电平1μS以上,再使数据线升为高电平,产生读起始信号。从主机将信号线从高电平拉低至低电平起15~60μS的时间内,DS18B20将数据放到信号线上,供主机读取。从而完成了一个读周期。在开始另一个读周期前,必须有1μS以上的高电平恢复期。6、DS18B20与单片机的典型接口设计以MCS51单片机为例,图3-3-6中采用寄生电源供电方式,P1-1口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管和89S51的P1-0来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送接收口必须是三态的。主机控制DS18B20完成温度转换必须经过3个步骤:初始化、ROM操作指令、存储器操作指令。假设单片机系统所用的晶振频率为12MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写3个子程序:INIT为初始化子程序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始,实际在实验中不用这种方式,只要在数据线上加一个上拉电阻4.7kΩ,另外2个脚分别接电源和地。图3-3-6DS18B20与处理器连接图光电传感器光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测物体有无的光电传感器.光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个真空管放大器上。在金属圆筒内有一个小的白炽灯作为光源。这些小而坚固的白炽灯传感器就是今天光电传感器'>光电传感器的雏形。图3-3-2光电传感器的介绍工作原理=1\*GB2⑴光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的。光电传感器在一般情况下,有三部分构成,它们分为:发送器、接收器和检测电路。=2\*GB2⑵发送器对准目标发射光束,发射的光束一般来源于半导体光源,发光二极管(LED)、激光二极管及红外发射二极管。光束不间断地发射,或者改变脉冲宽度。=3\*GB2⑶接收器有光电二极管、光电三极管、光电池组成。在接收器的前面,装有光学元件如透镜和光圈等。在其后面是检测电路,它能滤出有效信号和应用该信号。此外,光电开关的结构元件中还有发射板和光导纤维。=4\*GB2⑷三角反射板是结构牢固的发射装置。它由很小的三角锥体反射材料组成,能够使光束准确地从反射板中返回,具有实用意义。它可以在与光轴0到25的范围改变发射角,使光束几乎是从一根发射线,经过反射后,还是从这根反射线返回。分类和工作方式⑴槽型光电传感器把一个光发射器和一个接收器面对面地装在一个槽的两侧的是槽形光电。发光器能发出红外光或可见光,在无阻情况下光接收器能收到光。但当被检测物体从槽中通过时,光被遮挡,光电开关便动作。输出一个开关控制信号,切断或接通负载电流,从而完成一次控制动作。槽形开关的检测距离因为受整体结构的限制一般只有几厘米。⑵对射型光电传感器若把发光器和收光器分离开,就可使检测距离加大。由一个发光器和一个收光器组成的光电开关就称为对射分离式光电开关,简称对射式光电开关。它的检测距离可达几米乃至几十米。使用时把发光器和收光器分别装在检测物通过路径的两侧,检测物通过时阻挡光路,收光器就输出一个开关控制信号。⑶反光板型光电开关把发光器和收光器装入同一个装置内,在它的前方装一块反光板,利用反射原理完成光电控制作用的称为反光板反射式(或反射镜反射式)光电开关。正常情况下,发光器发出的光被反光板反射回来被收光器收到;一旦光路被检测物挡住,收光器检测不到光时,光电开关就动作,输出一个开关控制信号。⑷扩散反射型光电开关它的检测头里也装有一个发光器和一个收光器,但前方没有反光板。正常情况下发光器发出的光收光器是找不到的。当检测物通过时挡住了光,并把光部分反射回来,收光器就收到光信号,输出一个开关信号。电气连接图图3-3-3光电传感器电气连接图液晶显示模块方案1——采用LED液晶显示屏采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.方案2——采用点阵式数码管显示采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种显示.3.4.3方案3——采用1602液晶显示器LCD1602液晶模块主要实现时间显示,最大程度上的方便大家,使得该系统更加人性化。采用1602液晶显示器,微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,且在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。故采用1062液晶显示器。它与单片机的电路连接图如下:图3-4-3单片机与液晶电路连接图根据显示的容量可以分为1行16个字、2行16个字、2行20个字等字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1、主要功能:A、40通道点阵LCD驱动;B、可选择当作行驱动或列驱动;C、输入/输出信号:输出,能产生20×2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6);D、通过单片机控制将所测的频率信号读数显示出来。2、初始化方法用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法;(1)利用内部复位电路进行初始化:下面指令是在初始化过程中执行的。清屏(DISPLAYCLEAR);功能设置(FUNCTIONSET);DL=1:8Bit接口数据;N=0:1行显示;F=0:5×7dot字形;显示开/关控制(DISPLAYON/OFFCONTROL)D=0:显示关;C=0:光标关;B=0:消隐关表输入方式设置(ENTRYMODESET)I/D=1:(增量):S=0:无移位:(2)软件复位如果电路电源不能满足复位电路的要求的话,那么初始化就要用软件来实现。清显示0000000001光标返回000000001*置输入模式00000001I/DS显示开/关控制0000001DCB光标或字符移位000001S/CR/L**置功能00001DLNF**置字符发生存储地址0001字符发生储存器地址(AGG)置字符存储器地址001显示数据存储器地址(ADD)读忙标志或地址01BF计数器地址(AC)写数到CGRAM或DDRAM10要写的数从CGRA或DDRAM读数11读出的数据其中,1602液晶模块内部的控制器的11条控制指令如下表所示。表3-4-31602液晶模块内部的控制器的11条控制指令报警模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。简单易懂,还易用音乐作为其报警声音,所以我选择用蜂鸣器作为本次设计的报警系统。图3-5-1报警电路原理图蜂鸣器的介绍1.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。2.蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。蜂鸣器方案选择方案一:压电式蜂鸣器=1\*GB2⑴压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。=2\*GB2⑵多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。方案二:电磁式蜂鸣器=1\*GB2⑴电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。=2\*GB2⑵接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。经过论证,方案二更易于实现,且原理易于掌握,所以用电磁式蜂鸣器作为报警系统,其驱动原理是:电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发生的,因此需要一定的电流才能驱动它,单片机I0引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路,最终选择通过三极管C8550来放大驱动蜂鸣器。将蜂鸣器正极接到VCC电源上,负极接到三极管的发射极E,三极管的基极B经过限流电阻10K后由单片机的P引脚控制,当P输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。程序中改变单片机引脚P输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色音调的声音;另外改变P输出高低电平的占空比,则可以控制蜂鸣器的声音大小。系统程序的设计该系统的软件设计采用C语言实现。分主程序与子程序,子程序中又主要包括传感器采集信息程序、单片机最系统控制程序、液晶显示程序、报警程序、GSM短消息程序等几个子程序模块。主程序流程图单片机与GSM模块的通信程序按欧洲GSM的AT命令协议要求编写程序,AT指令使用方法参见前文,其程序流程如图4-1。开始开始AT89S52初始化SIM卡在否TC35i初始化是否收到短信命令处理短信并删除等待TC35i启动完毕传感器采样采样值正常与否调用液晶显示子程序判断故障类型调用蜂鸣器报警子程序调用短信报警子程序YYYNNN图4-1主程序流程图中断子程序流程图温度传感器子程序DS18B20的操作中,延时分两种:短时间延时和较长时间延时。片机系统所用的晶振频率为12MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写3个子程序:INIT为初始化子程序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始。开始开始初始化DS18B20存在ROM操作命令存储操作命令YN读取温度值返回图4-2-1液晶显示子程序根据系统需要设计相应的1602显示程序,在Proteus中可以先仿真成功后在烧制到单片机AT89S52中。汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,送上要显示的汉字根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,直到32B显示完就可以LCD上得到一个完整汉字。图图4-2-2液晶显示程序流程图开始在第一行显示超出行尾设置显示位置为第二行第一列在第二行显示结束显示字符到行尾或到字符串结束字符串显示完毕显示字符到行尾或到字符串结束YYYYNNN系统调试根据方案设计要求,调试过程共分三大部分,硬件调试,软件调试,软件和硬件联调(即系统调试)。电路按模块逐个调试,各模块调试通过后再联调。程序先在最小系统板调试,通过后再软硬联调。硬件测试静态调试线路的检查:通过目测和使用万用表,检查线路连接的正确性,有无断路或短路,有无虚焊的存在等。检查各主要元器件是否因为焊接而损坏,比如数码管等。核对元件:检察元件是否安装正确,有无损坏等。检查电源系统:在加入集成电路之前,应检查加入电源的品质,包括电源的电压以及负载能力等。只有当电源满足要求后,才能加上所有的元器件进行上电调试。联机调试虽然经过了静态测试,但仍有不少的硬件故障要在软硬件联机调试中才能发现。所以联机调试很有必要,具体操作如下:测试晶振电路和复位电路:这是单片机应用系统工作的最基本的条件,可用示波器或逻辑笔进行检查。测试存储器:将数据写入存储单元并读回比较,写入与读出的数据如果是一致的则表示存储单元能正常工作,否则有短路,断路或器件损坏的情况。测试I/O口和I/O设备:编写简单的测试程序,单独支持某一I/O口和与之相连的I/O设备,如果能自如的支配或控制,则表明I/O通道的工作正常。将GSM模块接上电源后,插上SIM卡,看电源灯是否闪烁,用USB串口线与电脑连接,利用串口工具测试GSM模块是否能成功发送短信。测试成功后用串口线与单片机连接进行整个系统调试。通过以上的检测,如果各个测试环节,如果最终各环节都正常,那么硬件测试应该没问题了。软件测试程序模块编写完成后,首先通过汇编和编译。有些开发软件的功能比较强,能够模仿单片机的运行模式,直接在pc机上就可以调试编写的软件。对于大多数情况,还是需要把程序装入单片机系统中进行联机调试。直到每一个程序模块调试成功。本设计中用C51编程软件KeiluVision3进行编写AT89S52单片机的源程序(汇编语言和C语言),对其中的部分电路进行仿真,Keil编译器把汇编语言编写的源程序与Keil内涵的库函数装配在一起,然后分别有C51编译器编译生成目标文件(.obj)最后产生.hex程序代码,利用C51下载软件ISP将程序代码下载到目标单片机AT89S52的Flash中。系统调试焊接完所有模块后,就要对系统的静态测试,就是对组成系统的各个模块分别进行功能测试,使其实现预定功能。在对各个模块调试完毕之后,再对整个系统进行整机联调。连接好电源,注意正负极性,连接好所有的I/O口,编写简单的测试程序,单独支持某一I/O口和与之相连的I/O设备,如果能自如的支配或控制,则表明I/O通道的工作正常。通过以上的检测,如果各个测试环节,如果最终各环节都正常,那么硬件测试应该没问题了。程序模块编写完成后,首先通过汇编和编译。有些开发软件的功能比较强,能够模仿单片机的运行模式,直接在pc机上就可以调试编写的软件。对于大多数情况,还是需要把程序装入单片机系统中进行联机调试。直到每一个程序模块调试成功。当硬件调试和软件模块调试之后,就可以进行系统调试。在系统调试时,应将全部硬件电路都接上,应用程序模块也都组合好,进行全系统软硬件调试。系统调试的任务是排除软硬件中的残留错误。使整个系统能够完成预定的工作任务,达到要求的技术性能指标。测试结果基于GSM网络的家庭报警系统,通过利用GSM的SMS传输数据。经过我多次模拟试验,证明上述系统设计性能良好,没有出现数据丢失的现象。证明上述设计是正确的。但在调试和试用阶段也遇到了如下问题:(1)接口电平的电缆接口电平一般是3V左右,单片机系统的工作电压一般为2.7~5.5V,范围较宽,为保证数据传输的正确,需在接口加RS-232电平转换电路。(2)部分地区无法使用一些城市的SMS平台不允许使用缺省短消息服务中心号码的协议,只需在发送的PDU数据前面几个字节加上中心号码即可,详见本文发送实例。(3)不能接收已正确发送的短消息除GSM的SMS信道拥塞原因外,主要是PDU中PID字节的设置,使得收到的信息要存入SIM卡,而SIM卡已满,故不再接收信息。改变PID的设置即可。(4)收不到开机前的短消息主要是发送数据时,对短消息有效时间VP值设置不当造成的。总之,通过硬件仿真的交叉调试平台并借助硬件测试工具ProteusISIS和Keilvsion3完成了对部分硬件电路的测试,为实现整个监控模块的功能奠定了基础。通过对GSM模块中短信实现协议的理解,使用相应的AT指令完成了短信的发送,并确定了短信收发双方所遵从的协议规定。整个设计基本有效完成。结论本设计借助最可靠、最成熟的GSM移动网络,以最直观的中文短信息形式,直接把报警信息反映到您的上。当家中出现紧急信息时,安装在相应部位的传感器马上就能检测到,并且会立即把信号传送到控制中心,经过一系列信号转化后,转换后的信号通过GSM网络传送到你的上,即是先把信息送到SMS服务平台,而后通过基站传送出去。整个传送过程只需几秒种的时间,能够准确地通知家中被检测的那一部分出了问题,以便于主人能够及时的采取补救措施。首先,硬件部分我们从五个模块着手,首先是通过传感器模块采集到家中的紧急信息,将信息传到微处理器上,由核心控制模块AT89S52单片机,转而控制报警模块、液晶显示模块,这样,同时发出报警声音和显示报警具体信息,再通过GSM模块以实现远程监控功能,将报警信息发送到事主上,保证事主能够及时根据报警信息进行抢救。其次,软件部分在对芯片的管脚功能和用法以及整个GSM网络有充分的了解后,根据设计要求设计硬件电路,包括传感器采集信息电路、单片机控制电路、GSM模块连接电路,再编写所需要的程序,然后通过软件编程,实现了对家庭系统的远程监控和报警功能,这样,基本实现了预期的目标。总的来说,系统设计结构清晰,资源利用合理,不失为一款高性价比的方案。
参考文献[1]张俊.SMS短消息传输的远端控制技术及其实现I-j-]仪器仪表学报,2003,[2]胡汉才.单片机原理及其接口技术.清华大学出版社,1996[3]吴兴惠.传感器与信号处理.电子工业出版社,1998[4]何希才.传感器及其应用电路.电子工业出版社,2001[5]鲁昌华.基于GSM无线防盗报警系统的研制[J].电子测量与仪器学报,2006[6]赵继文.传感器与应用电路设计.科学出版社,2002[7]房小翠.单片微型计算机与机电接口技术.国防工业出版社,2003[8]刘迎春,叶湘滨.《传感器原理》.国防科技大学出版社,2005.[9]梁廷贵.现代集成电路实用手册.科学技术文献出版社,2002[10]李建忠.单片机原理及应用.西安电子科技大学出版,2002[11]秦大兴.基于GPRS模块MC35i的监测系统设计EJ].仪表技术与传感器,2007[12]沈旭日.电子系统设计实践.华中科技大学出版社,2004[13]吴金戌.,2001[14]李良隙.如何使用AT命令来控制Modem工作[J].电脑新时代,2002[15]唐桃波,陈玉林.基于AT89C52的智能无线安防报警器.电子设计应用,2003[16]杨治洁.单片机原理与应用.中国人民大学出版社,2009[17](美)拉帕波特《无线通信原理与应用》北京航空航天大学出版社,2002[18]李广弟,朱月秀.冷祖.单片机基础第3版.北京航空航天大学出版,2007[19]]王福瑞等.单片微机测控系统设计大全.北京航空航天大学出版社,1998[20]李肇庆,韩涛.《串口技术》.国防工业出版社,2005附录一:电路原理图附录二:控制源程序#include"GSMgn.h"#include"GSMhead.h"/***********主程序***************/voidmain(void){ system_server=SYS_SMSR; LED_tc=0;LED_1=1;LED_2=1;LED_3=1;LED_4=1; Sys_Init(); Initialize_Model();delay1ms(2000);//延时2S start();send_sms();//发一次短信 while(1){}}ucharF=0,chinit,chping,chname;sbitLED1=P1^0;sbitLED2=P1^1;sbitLED3=P1^2;sbitLED4=P1^3;sbitLED=P1^4;uintTime,Time1;voiddelay1ms(uintx){ for(Time=0;Time<x;Time++)for(Time1=0;Time1<120;Time1++);}/**********************************************************************C51中字符串函数的扩充**********************************************************************/ucharstrsearch(uchar*ptr2){//查字符串*ptr2在*ptr1中的位置//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中//返回:0没有找到//1-255从第N个字符开始相同uchari,j,k;ucharflag;if(ptr2[0]==0)return(0);flag=0;for(i=0,j=0;i<MAX_TM-2;i++){if(uart_buff[i]==ptr2[j]){//第一个字符相同for(k=i;k<MAX_TM-2;k++,j++){if(ptr2[j]==0)//比较正确return(i+1);//返回值是整数,不含0if(uart_buff[k]!=ptr2[j])break;}j=0;}}return(0);}/**********************************************************************AT指令发送程序**********************************************************************/ucharSend_AT_Command(uchartype){//发送AT指令//其他用para_tempAT_Command_Type=type;send_count=0;switch(type){caseRESET_TC35: //复位TC35strcpy(uart_buff,"AT+CFUN=1,1");break;caseCHECK_PIN: //检查当前是否要输入PIN码strcpy(uart_buff,"AT+CPIN?");break;caseTC35_INIT: //TC35初始化命令strcpy(uart_buff,"ATE0V0");break;//0D0A544333350D0AcaseSIM_ID:strcpy(uart_buff,"ATE0V0+CMGF=1+CNMI=2,1");break;caseAT_IPR:strcpy(uart_buff,"AT+IPR=9600"); break;caseSMSS_ID:strcpy(uart_buff,"ATE0V0^SSMSS=1+CNMI=2,1");break;caseSMS_CMGF: //SMS接收方式,strcpy(uart_buff,"ATE0V0+CMGF=0");break;casePHONE_WRITE: //存号码strcpy(uart_buff,"AT+CPBW=");strcat(uart_buff,para_temp);break;casePHONE_READ: //读本strcpy(uart_buff,"AT+CPBR=");strcat(uart_buff,&read_tmp);uart_buff[9]=0x0d; uart_buff[10]=0x0a;uart_buff[11]=0x00; uart_buff[12]=0x00;break;caseSMS_CMGR: //读一个短信strcpy(uart_buff,"AT+CMGR=");strcat(uart_buff,para_temp);break;caseSMS_CMGS: //写一个短信strcpy(uart_buff,"AT+CMGS=");strcat(uart_buff,para_temp);break;caseSMS_CMGD: //删除一个短信strcpy(uart_buff,"AT+CMGD=");strcat(uart_buff,para_temp);break;caseCMGS_MUB://发报警短信内容strcpy(uart_buff,para_temp);break;caseAT_COMMAND:break;default:receive_count=0;return(TRUE);}ES=1;strcat(uart_buff,"\x0d\x00");//在命令后加入CRsend_count=0; //设置发送指针receive_count=0;AT_Command_Status=COMMAND_WAIT; //设置接收成功标志timer_S_cnt=0;txd_rxd_bit=0;at_send_bit=0;TI=1; //开始发送数据RI=0; //清除接收标志if(type==TC35_INIT){while(timer_S_cnt<6){if(AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)return(TRUE);}}elseif((type==SMS_CMGR)){while(timer_S_cnt<6){if(AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)return(TRUE);}}elseif((type==CALL_ID)){while(timer_S_cnt<2){if(AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)return(TRUE);}}else{while(timer_S_cnt<6){if(AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1){return(TRUE); }}}return(FALSE);}voidSys_Init(void){//话机启动的初始化程序,包含键盘与定时器,串口等 //TH0=(65536-46080)/256;//重新装入定时25mS的初值到TH0,TL056320 //TL0=(65536-46080)%256; //65536-(11.0592/12)*20MS*1000=To1843247104 //1ms定时0.9216M(记数频率) //1ms记数次 //16位2^16-x=922x=64614FC66 //定时器里不断放fc66,不用怀疑51定时器得到的1ms的精确性吗//TH0=0xf6;//TL0=0x50;TH0=0xB8;TL0=0x00;//20ms的时钟基准//串口中断TI=0;RI=0;SCON=0x50; //选用方式1TMOD=0x20;TMOD=(TMOD&0xf0)|1;//MODE1TH1=0xfd;//波特率为9600TL1=0xfd;PCON=0x00;//倍频0x80IE=0xb0; //EAXXET2ESET0EX0ET1EX111000000TR1=1; //enableTIMER1ES=1;TR0=1;ET0=1;ET1=0;EA=1;timer_1S_cnt=0;receive_count=0;send_count=0xff; //表示禁止发送,可以接收}//======================================================================//========================进行SIM卡中的1到20条短信号码的读==============================================//======================================================================ucharREAD_TEL(ucharr){//读短信号码1-20个//ucharr;para_temp[0]=(r/10)+0x30;para_temp[1]=(r%10)+0x30;para_temp[2]=0x0d;para_temp[3]=0x00;para_temp[4]=0x00;para_temp[5]=0x00;para_temp[6]=0x00;para_temp[7]=0x00;para_temp[8]=0x00;para_temp[9]=0x00;para_temp[10]=0x00;para_temp[11]=0x00;//timer_S_cnt=0;while(timer_S_cnt<1&&(AT_Command_Status==COMMAND_WAIT))watch_dog_clear;Send_AT_Command(SMS_CMGR);timer_S_cnt=0;//while(timer_S_cnt<1&&(AT_Command_Status==COMMAND_WAIT))watch_dog_clear;send_count=0;if(strsearch("CMGR:0,,0")){//+CMGR:0,,0没有短信返回 //timer_S_cnt=0;while(timer_S_cnt<1)watch_dog_clear;ES=1; //设置发送指针receive_count=0; send_count=0xff; RI=0;return(FALSE);}elseif(uart_buff[1]==0x0d&&uart_buff[0]==0x34){ return(FALSE);}else{if(AT_Command_Status==COMMAND_ERROR) return(FALSE);elsereturn(TRUE);}}//============================================//==========读写短信程序//====================================================voidread_sms(){uchari,r,j,t;for(r=1;r<20;r++){timer_tmp=0;// while(timer_tmp<15)watch_dog_clear;//if(strsearch("+CMTI:"))return;//是否有新短信num_tmp1=r;if(READ_TEL(r)!=1){//读一个短信at+cmgr=1-19读指令if(strsearch("+CMTI:"))return;continue;}//TEL_temp[18]读出对方号码t=2; i=0; for(j=15;j<25;j++){ if((uart_buff[j]==0x22)&&(uart_buff[j+1]==',')&&uart_buff[j+2]==0x22) break;}j=j+3;if(uart_buff[j]=='+')j=j+3; for(;j<40;j++){ if(uart_buff[j]==0x22) break; para_temp[t++]=uart_buff[j]; TEL_temp[i++]=uart_buff[j]; } TEL_temp[i++]=0x0d; TEL_temp[i++]=0x00; para_temp[t++]=0x0d; para_temp[t++]=0x00;para_temp[t++]=0x00;//号码设置 if((i=strsearch("CHN"))){//发中文//有些比较重要的东西你可以存到卡就,重新开机也没有问题 system_server=SYS_ALARM; return; } elseif((i=strsearch("TLA"))){//存号码1para_temp[0]=0x31; para_temp[1]=',';Send_AT_Command(PHONE_WRITE);//PHONE_WR//IO_OUT=0; system_server=SYS_NUMSAVE;//储存号码标志 return; } elseif((i=strsearch("TLB"))){//存号码2para_temp[0]=0x32; para_temp[1]=',';Send_AT_Command(PHONE_WRITE);//PHONE_WR//IO_OUT=0; system_server=SYS_NUMSAVE;//储存号码标志 return; } elseif((i=strsearch("TLC"))){//存号码3para_temp[0]=0x32; para_temp[1]=',';Send_AT_Command(PHONE_WRITE);//PHONE_WR//IO_OUT=0; system_server=SYS_NUMSAVE;//储存号码标志 return; }else{para_temp[0]=(num_tmp1/10)+0x30; para_temp[1]=(num_tmp1%10)+0x30; para_temp[2]=0x0d;para_temp[3]=0x00; Send_AT_Command(SMS_CMGD); timer_S_cnt=0;// while(timer_S_cnt<10&&(AT_Command_Status==COMMAND_WAIT))watch_dog_clear; for(i=10;i<=MAX_TM-3;i++){ uart_buff[i]=0;}Send_AT_Command(SIM_ID); return; }}}voidsend_sms(){//发送短信 ucharj=1,i=1;Send_AT_Command(SIM_ID);switch(sms_tmp){casesmss_save://发送英文TMP_BUF=0; do{ para_temp[TMP_BUF]=TEL_temp[TMP_BUF]; TMP_BUF++;}while(TMP_BUF<=18);para_temp[TMP_BUF]=0x00; Send_AT_Command(SMS_CMGS);j=0; para_temp[j++]='S';para_temp[j++]='A'; para_temp[j++]='V';para_temp[j++]='E';para_temp[j++]=':';para_temp[j++]=0x20;para_temp[j++]='O';para_temp[j++]='K';para_temp[j++]=0x1a;para_temp[j++]=0x0d; para_temp[j++]=0x00;para_temp[j]=0x00;Send_AT_Command(CMGS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论