基于单片机的远程控制器_第1页
基于单片机的远程控制器_第2页
基于单片机的远程控制器_第3页
基于单片机的远程控制器_第4页
基于单片机的远程控制器_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国矿业大学通信系统综合设计姓名:学号:专业:题目:基于单片机的远程控制器专题:单片机及GSM模块设计指导教师:设计地点:电工电子实验室时间:2023.11.302023年11月通信系统综合设计训练任务书学生姓名专业年级学号设计日期:2023年11月12日至2023年11月28日设计题目:基于单片机的远程控制器设计专题题目:单片机及GSM模块设计设计主要内容和要求:主要内容:使用单片机和GSM模块实现学习板与之间的短信沟通单片机实现的功能发送以及接受AT指令,并依据AT指令的内容完成相应控制。GSM实现的功能接受单片机的AT指令并产生相应动作,或者根据GSM网络的动作向单片机发送指令功能扩展要求可以通过短信远程控制单片机实现不同的控制功能。在此根底上载加上语音识别模块。指导教师签字:摘要:GSM〔GlobalSystemforMobilecommunication〕系统是目前基于时分多址技术的移动通信体制中,比拟成熟完善,且应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信信息效劳,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程。由于公众GSM网络在全球范围内实现了联网和漫游,建议上述系统不需再组建专用通信网络,所以具有实时传输数据功能的短信应用将得到迅速普及。笔者开发设计的基于GSM网络的温度数据采集与无线传输系统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。GSM系统是目前基于时分多址技术的移动通讯体制中比拟成熟、完善、应用最广泛的系统之一。目前已建成盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式,其主要提供话音、短信息、数据等多种业务J。基于GSM短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统,能广泛用于远程监控、定位导航、个人通信终端等,同时随着科技的飞速开展和人民生活水平的不断提高,的普及率越来越高,价格也越来越廉价,而且工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把作为信息传递的载体,与单片机控制的GSM模块结合起来构成应用系统有着强大的生命力和广阔的应用空间J。通过设计基于GSM模块的用控制的自动水闸,对用单片机控制GSM模块和通信、收发短信息进行探讨。关键字:单片机;短信息;PDU;GSM目录1AT89S51单片机简介..................................61.1AT89S51主要功能................................61.2AT89S51引脚功能...................................62SIM300介绍.....................................142.1SIM300特性................................142.2SIM300引脚功能...........................142.3.1借助串口调试助手V2.2软件..........................152.3.2指令AT+CPIN?AT+CSQAT+COPS?........................153短信的发送/读取的实现..............................173.1英文的发送/读取..................173.2中文的读取/发送..........................173.2.1中文短信的发送................................173.2.2中文短信的读取................................174程序代码..........................................185小结...........................................236参考文献..........................................241AT89S51单片机简介AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。1.1AT89S51主要功能1、为一般控制应用的8位单芯片2、晶片内部具时钟振荡器〔传统最高工作频率可至12MHz〕3、内部程式存储器〔ROM〕为4KB4、内部数据存储器〔RAM〕为128B5、外部程序存储器可扩充至64KB6、外部数据存储器可扩充至64KB7、32条双向输入输出线,且每条均可以单独做I/O的控制8、5个中断向量源,6个中断源9、2组独立的16位定时器10、1个全多工串行通信端口11、8751及8752单芯片具有数据保密的功能,与MCS-51兼容12、单芯片提供位逻辑运算指令13、5个中断优先级、2层中断嵌套中断;14、全双工串行通信口;15、看门狗〔WDT〕电路;16、全静态工作:0Hz-33MHz;17、三级程序存储器保密锁定;18、可编程串行通道;19、低功耗的闲置和掉电模式。1.2AT89S51引脚功能VCC:AT89S51电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间参加一20PF的小电容,可以使系统更稳定,防止噪声干扰而死机。RESET:AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能存放器之内容均被设成状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:"EA"为英文"ExternalAccess"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码〔存于外部EPROM中〕来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压〔Vpp〕。ALE/PROG:ALE是英文"AddressLatchEnable"的缩写,表示地址锁存器启用信号。AT89S51可以利用这支引脚来触发外部的8位锁存器〔如74LS373〕,将端口0的地址总线〔A0~A7〕锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为"ProgramStoreEnable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时〔EA=0〕,会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0〔P0.0~P0.7〕:端口0是一个8位宽的开路汲极〔OpenDrain〕双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口〔P1、P2、P3〕那么不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时〔即取用外部程序代码或数据存储器〕,P0就以多工方式提供地址总线〔A0~A7〕及数据总线〔D0~D7〕。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2〔P2.0~P2.7〕:端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,假设将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,假设是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。PORT1〔P1.0~P1.7〕:端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地假设将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3〔P3.0~P3.7〕:端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入端,高电平有效。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。2SIM300介绍SIM300是一款三频段GSM/GPRS模块,可在全球范围内的EGSM900MHz、DCS1800MHz、PCS1900MHz三种频率下工作,能够提供GPRS多信道类型多达10个,并且支持CS-1、CS-2、CS-3和CS-4四种GPRS编码方案。SIM300结构小巧,外形尺寸仅40mm*33mm*2.85mm,几乎可满足所有对产品尺寸有要求的工业应用,比方智能,掌上电脑和其他移动设备。模块与移动应用设备通过一个60引脚的板板连接器相连,它提供了模块与开发板的所有硬件接口,除了RF天线接口。SIM300内部功能模块有:1.键盘和SPI类型的LCD接口,方便用户开发自己的应用设备。2.具有调试和数据输出两个串口,帮助开发人员更容易开发产品。3.双音频通道,包含两个麦克风输入和两个话筒输出,由AT指令配置其工作模式。SIM300有两种RF天线接口:一种是天线连接器、一种是天线焊点。天线连接器型号为MURATAMM9329-2700,或者用户也可以通过天线焊点自己焊接天线。SIM300具有低功耗设计,睡眠模式下的电流消耗仅为2.5mA。SIM300内部集成了TCP/IP协议栈,并且扩展了TCP/IPAT指令,使用户利用该模块开发数据传输设备变得非常简单方便。2.1SIM300特性特性说明工作电压单电压供电,3.4—4.5V低功耗模式休眠模式下,工作电流典型值为2.5mA工作频段SIM300具有三个频段:EGSM900、DCS1800、PCS1900。频段频率可由AT指令设置,默认频段是EGSM900和DCS1800。与GSMPhase2/2+兼容。GSM类型小型移动基站〔MS〕发射功耗在频率EGSM900CLASS4下为2W在频率DCS1800和PCS1900CLASS1下为1WGPRS连接GPRS多时隙10级GPRS移动电台B级工作温度正常工作温度:-22℃~+55℃极限工作温度:-25℃~-20℃,+55℃~+70℃存储温度:-40℃~+80℃GPRS数据传输GPRS下行数据传输最大85.6kbpsGPRS上行数据传输最大42.8kbps编码方案:CS-1,CS-2,CS-3,CS-4SIM300支持PAP〔密码验证〕协议,此协议通常用于PPP连接SIM300集成了TCP/IP协议电路交换数据〔CSD〕支持分组播送控制信道〔PBCCH〕电路交换数据传输速率:2.4,4.8,9.6,14.4kbps,非透明传输支持非结构化补充数据业务〔USSD〕短消息支持点到点短消息移动发送和接受、文本、PDU模式短消息存储于SIM卡中支持CSD和GPRS模式的短消息发送,用户可以根据自己的需要来选择传输模式Group3Class1SIM接口支持1.8V和3V两种类型的SIM卡外接天线通过50Ω的天线连接器或天线连接板连接音频特性语音编码模式半速率〔ETS06.02〕全速率〔ETS06.10〕增强型全速率〔ETS06.50/06.60/06.80〕回波抑制双串行通信接口串口1的借口具有7根数据、状态线串口1可以被用作CSD、GPRS效劳和发送控制模块AT命令串口1可以使用多路复用功能,但是此时不能和串口2同时使用可支持的自动波特率为:1200bps~115200bps串口2的接口只有/TXD和/RXD两根数据线,没有状态和控制线串口2只能用来传输AT命令簿管理支持的簿类型:SM、FD、LD、RC、ON、MCSIM应用工具箱支持SATclass3、GSM11.14Release98实时时钟内部具有实时时钟,并有后备电池接口定时功能可以通过AT命令编程物理特征尺寸:40±0.15×33±0.15×3.3±0.3mm〔包括连接器〕40±0.15×33±0.15×2.85±0.3mm〔不包括连接器〕重量:8g固件升级内部固件通过串口升级2.2SIM300引脚功能电源引脚名称I/O说明直流特性VBAT板板连接器有八个电池引脚以连接供电电压。SIM300的工作电压VBAT=3.4V—4.5V,单电压供电。供电电压必须能在典型值上升到2A的传输脉冲中提供足够的电流。此八个引脚一般为电压引脚。Vmax=4.5VVmin=3.4VVnorm=4.0VVRTCI/O当电源不给系统供电时给实时时钟的电流输入。当主电源供电且备用电源为低电平状态时给备用电源的电流输出。Vmax=2.0VVmin=1.2VVnorm=1.8VInorm=20uAVDD_EXTO给外部电路供电3.0V。用户通过测试此引脚,可以判断系统的运行和关闭,为低电平时,系统关闭,相反,系统运行。Vmax=3.15VVmin=2.85VVnorm=3.0VInorm=60mAGND数字接地电源开关引脚名称I/O说明直流特性PWRKEYI系统启动按键的电压输入。用户启动和关闭系统时PWRKEY为低电平。由于系统响应软件需要一定的反响时间,用户启动或关闭系统时需要按住按键几秒。VILmax=0.3*VBATVIHmin=0.7*VBATVImax=VBAT音频接口引脚名称I/O说明直流特性MIC1PMIC1NI正负音频输入MIC2PMIC2NI附加正负音频输入SPK1PSPK1NO正负音频输出SPK2PSPK2NO附加正负音频输出BuzzerO蜂鸣器输出AGND模拟接地一般用途输入输出引脚名称I/O说明直流特性KBC0~KBC4O一般用途输出引脚〔GPO〕可由AT指令配置其输出电压的上下。所有GPO未由AT指令配置时初始化默认低电平。VILmin=0VVILmax=0.3*VDD_EXTVIHmin=0.7*VDD_EXTVIHmax=VDD_EXT+0.3VOLmin=GNDVOLmax=0.2VVOHmin=VDD_EXT-0.2VOHmax=VDD_EXTKBR0~KBR4ISPI_DATAI/OSPI_CLKOSPI_CSOSPI_D/COSPI_RSTONetworkLEDOGPIO8I/O一般输入输出端口串口1接口引脚名称I/O说明直流特性DTRIDataTerminalReady数据终端就绪VILmin=0VVILmax=0.3*VDD_EXTVIHmin=0.7*VDD_EXTVIHmax=VDD_EXT+0.3VOLmin=GNDVOLmax=0.2VVOHmin=VDD_EXT-0.2VOHmax=VDD_EXTRXDIReceiveData接收数据TXDOTransmitData发送数据RTSIRequesttoSend请求发送CTSOCleartoSend去除发送RIORingIndicator响铃侦测DCDODataCarrierdetection数据载体检测串口2接口DBGTXO用于调试和通信的串口DBGRXISIM卡接口引脚名称I/O说明直流特性SIM_VDDOSIM卡的电源引脚1.8V/2.8V可由软件选择SIM_I/OI/OSIM卡数据输出VILmin=0VVILmax=0.3*SIM_VDDVILmin=0.7*SIM_VDDVIHmax=SIM_VDD+0.3VOLmin=GNDVOLmax=0.2VVOHmin=SIM_VDD-0.2VOHmax=SIM_VDDSIM_CLKOSIM卡时钟SIM_PRESENCEISIM卡检测SIM_RSTOSIM卡复位音频模数转换引脚名称I/O说明直流特性ADC0I一般用途模数转换输入电压值范围:0~2.4V2.3GSM模块串口测试2.3.1借助串口调试助手V2.2软件正常方式发送〔ASCII码方式〕在发送框中输入ATI后,再按ENTER键,最后点击手动发送选项框。测试结果如下列图2-1所示。图2-1图2-12、16进制方式ATI的16进制是4154490D,选择十六进制发送复选框,输完后点手动发送〕。测试结果如图2‐2所示。图2-2图2-2如果测试返回成功了,就可以继续下面的指令测试。2.3.2指令AT+CPIN?AT+CSQAT+COPS?1、AT+CPIN?用于查询SIM卡的状态,主要是PIN码。输入指令:AT+CPIN?返回:+CPIN:READY说明状态正常,返回的是其它值可能是没放SIM卡现在选择用16进制显示〔选择十六进制显示后,再手动发送一次〕,结果如下:41542B4350494E3F0D0D0A2B4350494E3A2052454144AT+CPIN?+CPIN:READY590D0A0D0A4F4B0D0A;OK(在数值下面是对应的英文字符,0D0A是回车换行,每次模块都返回)2、AT+CSQ用于查询信号,如果没有信号,要查看天线是否连接。输入指令:AT+CSQ返回:+CSQ:26,0//说明信号强度是10选择用16进制显示,结果如下:41542B4353510D0D0A2B435351AT+CSQ+CSQ3A2032362C300D0A0D0A4F4B0D0A:26,0OK(在数值下面是对应的英文字符,0D0A是回车换行,每次模块都返回)3、AT+COPS?用于查询SIM卡移动提供商,只有连上网络后才有,其它状态时都为空。输入指令:AT+COPS?返回:+COPS:0,0,"CHINAMOBILE"//提供使用商为:中国移动选择用16进制显示,结果如下:41542B434F50533F0D0D0A2B43AT+COPS?+C4F50533A20302C302C224348494E41204D4F42494C45OPS:0,0,"CHINAMOBILE220D0A0D0A4F4B0D0A"(在数值下面是对应的英文字符,0D0A是回车换行,每次模块都返回)以上状态正常就可以进行短信、语音测试了。3短信的发送/读取的实现3.1英文的发送/读取读一条英文短信一定要保证开发板测试成功,即保证模块正常读取SIM卡后,连接上网络。1、设置短信提示功能输入指令:AT+CNMI=2,1再按ENTER键后点“手动发送〞:指令功能:短信提示,状态有OK回复。再输入:AT+CMGF=1,按ENTER键,“手动发送〞;功能是:英文方式发送,状态有OK回复。然后向SIM卡发送一条英文短信,收到+CMTI:〞SM〞,1,表示有短信到达,存在SIM卡的第一个位置。(本文中由于测试时已经向SIM发过四条短信,所以显示+CMTI:"SM",5)2、读取短信输入AT+CMGR=5再按ENTER键,选择“手动发送〞,其功能是:读取指定“5〞里的内容,回复短信报文。其中“RECUNREAD〞10/06/07,15:02:08+32为日期,内容是:abc如果再读一次就会稍微不同于上面显示,RECREAD表示已读。英文短信的发送先输入AT+CMGF=1再按ENTER后选择“手动发送〞,功能:英文方式发送,回复OK。再输入AT+CMGS=〞〞按ENTER键后点“手动发送〞,功能:向输入的号码发送短信,回复>,收到>后才可输入内容abc,再点“手动发送〞。最后的关键步骤是短信内容的结束:点“十六进制发送〞,然后在指令区输入1A〔1是数字,不是字母l〕,点击手动发送之后等待返回,收到:+CMGS:11表示发送成功。3.2中文的读取/发送3.2.1中文短信的发送“星海科技〞=1\*GB3①变换号码中文短信要比英文复杂点,先把号码进行16进制编码,编码的方法如下:=2\*GB3②短信内容编码短信内容“星海科技〞,通过Chinese_Unicode.exe进行16进制编码后:“661F6D7779D16280〞。如果你要发送的也有中文英文,那么也要将他们全部放入进行转换=3\*GB3③PDU格式编码PDU格式编码:号码〔11位〕+国际接入码86〔2位〕=13位,16进制表示0D,接入码中国地区用91表示,短信在效劳器存放时间,A0。那么总的一起要发送的PDU内容说明如下〔下面的文字对应pdu的解析〕:0011000D91683136329810F50008A0661F6D7779D16280前序|目的号码长度|国际|目的号码(两位一反)|8bit方式|允许时间|短信长度|短信内容(Unicode)发送中文短信步骤:001100:前序是一定要的,一般不更改0D9168:13位号码0D,91国际接入码,68中国的区号86。3136329810F5:刚刚进过变换的号码0008:发送方式8bitA0:发送保存时间661F6D7779D16280:要发送的内容=4\*GB3④发送1.先输入AT+CMGF=0再按ENTER键后,点“手动发送〞,状态恢复:OK2.计算PDU总长度,总长度=你要发送的中文字数*4/2+15。比方我们这次发送4个字,那么总长度=4*4/2+15=23.要发送的中文字数*4(中文对应的ascii码个数)再输入AT+CMGS=23再按ENTER键后,点“手动发送〞;收到>后才可输入“手动发送〞。此次输入是不需要加回车的,请注意,因为一会要参加0x1a结束符号了4.结束短信内容:点“十六进制发送〞,在指令区输入1A后,点“手动发送〞,等待发送成功,收到如下图:+CMGS:19表示发送成功。注:1.at+cscs="GSM"采用GSM方式2.at+cmgf=0设置PDU模式,发送中文短信需要这个3.at+cmgs=<长度>发送PDU短信3.2.2中文短信的读取首先要保证开发板测试成功,即保证模块正常读取SIM卡后,连接上网络。1.设置短信提示功能输入指令:AT+CNMI=2,1再按ENTER键后点“手动发送〞;指令功能:短信提示,状态有OK回复。再输入:AT+CMGF=0,按ENTER键,“手动发送〞;状态有OK回复。然后向SIM卡发送一条中文短信,收到+CMTI:〞SM〞,11,表示有短信到达,存在SIM卡的第11个位置。2.读取短信输入AT+CMGR=11再按ENTER键,选择“手动发送〞,其功能是:读取指定“11〞里的内容。+CMGR:0,,28其中0表示短信没有被读过,如果是1表示已读;28是长度;12:21:32+3208为短信内容长度661F6D7779D16280中文短信内容如果再读一次就会有区别。此时读到的是中文信息Unicode码,要进过转换才可以看出他的内容。4程序代码#include<REGX52.H>#defineucharunsignedchar#defineuintunsignedintucharnum,temp,i,j,js,js1;ucharvolatileGsmRcvAt[50]={0};ucharvolatileGsmRcv[50]={0};ucharvolatileGsmRcvCnt=0;ucharvolatileGsmAtFlag=0;ucharvolatileduanxinFlag=0;sbitLED5=P1^0;sbitLED6=P1^1;sbitLED7=P1^2;sbitLED8=P1^3;sbitLED9=P1^4; codecharS_Tab[8]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};codeucharzxm[16]= {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};codeucharzwm[8]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};voidSerialInit(){ TMOD=0x20; TH1=0xF4; TL1=0xF4; TR1=1; SM0=0; SM1=1; REN=1; EA=1;ES=1;}voidSerialSendChars(char*str){ while(*str!='\0') { SBUF=*str; while(!TI); TI=0; str++; }}voiddelay_ms(uintn) {uchara,b;uintc;for(c=n;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--);}ucharkey_scan(void) { num=20; P3=0xfb; temp=P3; temp&=0xfb; while(0xfb!=temp) { delay_ms(5); temp=P3; while(0xfb!=temp) { temp=P3; switch(temp) { case0xeb:num=11;break; case0xdb:num=10;break; case0xbb:num=9;break; case0x7b:num=8;break; } } } P3=0xf7; temp=P3; temp&=0xf7; while(0xf7!=temp) { delay_ms(5); temp=P3; while(0xf7!=temp) { temp=P3; switch(temp) { case0xe7:num=15;break; case0xd7:num=14;break; case0xb7:num=13;break; case0x77:num=12;break; } } } returnnum; }voiddelay_50ms(intt){ intj; for(;t>0;t--) for(j=6245;j>0;j--) ;}voidmain(){ charflag; SerialInit();SerialSendChars("ati\r"); delay_50ms(20); SerialSendChars("ati\r"); delay_50ms(20); SerialSendChars("ati\r"); delay_50ms(20); GsmAtFlag=0; LED5=0; LED6=0; LED7=0; LED8=0; while(1) { SerialSendChars("AT+CMGD=1\r"); delay_50ms(20); while(GsmAtFlag==0); if(GsmRcvAt[0]=='O'&&GsmRcvAt[1]=='K') { break; } } SerialSendChars("AT+CNMI=2,1\r"); delay_50ms(20); SerialSendChars("AT+CMGF=1\r"); LED5=1; LED6=1; LED7=1; LED8=1; while(1) { js=key_scan(); if(js!=20) { js1=js; P0=zxm[js1%16]; P2=zwm[0]; switch(js1) { case0x09:SerialSendChars("ATH\r");break; } } if(GsmAtFlag==1) { GsmAtFlag=0; duanxinFlag=1; if(GsmRcvAt[0]=='R'&&GsmRcvAt[1]=='I'&&GsmRcvAt[2]=='N'&&GsmRcvAt[3]=='G') { flag=0x10; } elseif(GsmRcvAt[0]=='N'&&GsmRcvAt[1]=='O'&&GsmRcvAt[2]==''&&GsmRcvAt[3]=='C'&&GsmRcvAt[4]=='A') { flag=0x20; } elseif(GsmRcvAt[0]=='+'&&GsmRcvAt[1]=='C'&&GsmRcvAt[2]=='M'&&GsmRcvAt[3]=='T'&&GsmRcvAt[4]=='I') { LED6=0; SerialSendChars("AT+CMGR=1\r"); } elseif(GsmRcvAt[0]=='O'&&GsmRcvAt[1]=='K') { LED6=1; } elseif(GsmRcvAt[0]=='+'&&GsmRcvAt[1]=='C'&&GsmRcvAt[2]=='M'&&GsmRcvAt[3]=='G'&&GsmRcvAt[4]=='R') { LED7=0; GsmAtFlag=0; while(GsmAtFlag==0); if(GsmRcvAt[0]=='1') { flag=0x01; } elseif(GsmRcvAt[0]=='2') { flag=0x02; } elseif(GsmRcvAt[0]=='3') { flag=0x04; } elseif(GsmRcvAt[0]=='4') { LED9=0; flag=0x08; } SerialSendChars("AT+CMGD=1\r"); LED7=1; }// Uart1Send(GsmRcvAt[0]); i=0; while(GsmRcvAt[i]!=0) { GsmRcvAt[i]=0; i++; } } if(duanxinFlag==1) { if(flag==0x01) { P1=0xff; for(i=0;i<16;i++) for(j=0;j<8;j++) { P0=zxm[i]; P2=zwm[j]; delay_50ms(1); } } if(flag==0x02) { P2=0xff; for(i=0;i<8;i++) { P1=S_Tab[i]; delay_50ms(1); } for(i=0;i<8;i++) { P1=S_Tab[7-i]; delay_50ms(1); } } if(flag==0x04) { P2=0xff; P1=0xaa; delay_50ms(1); P1=0x55; delay_50ms(1); } if(flag==0x08) {

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论