毕业设计(论文)-基于单片机的远程控制器.doc_第1页
毕业设计(论文)-基于单片机的远程控制器.doc_第2页
毕业设计(论文)-基于单片机的远程控制器.doc_第3页
毕业设计(论文)-基于单片机的远程控制器.doc_第4页
毕业设计(论文)-基于单片机的远程控制器.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

通信系统综合设计 第 32页中国矿业大学通信系统综合设计姓 名: 学 号: 专 业: 题 目: 基于单片机的远程控制器 专 题: 单片机及GSM模块设计 指导教师: 设计地点:电工电子实验室 时 间: 2012.11.30 2012 年 11 月 通信系统综合设计训练任务书学生姓名 专业年级 学号 设计日期: 2012年 11月 12日 至 2012年 11月28 日设计题目:基于单片机的远程控制器设计专题题目:单片机及GSM模块设计设计主要内容和要求:1. 主要内容: 使用单片机和GSM模块实现学习板与手机之间的短信沟通 2. 单片机实现的功能 发送以及接受AT指令,并依据AT指令的内容完成相应控制。3. GSM实现的功能 接受单片机的AT指令并产生相应动作,或者根据GSM网络的动作向单片机发送指令 4. 功能扩展要求 可以通过手机短信远程控制单片机实现不同的控制功能。在此基础上载加上语音识别模块。指导教师签字:摘要:GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通信体制中,比较成熟完善,且应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程。由于公众GSM网络在全球范围内实现了联网和漫游,建议上述系统不需再组建专用通信网络,所以具有实时传输数据功能的短信应用将得到迅速普及。笔者开发设计的基于GSM网络的温度数据采集与无线传输系统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。GSM系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的系统之一。目前已建成盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式,其主要提供话音、短信息、数据等多种业务J。基于GSM短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统,能广泛用于远程监控、定位导航、个人通信终端等,同时随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,价格也越来越便宜,而且手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机控制的GSM模块结合起来构成应用系统有着强大的生命力和广阔的应用空间J。通过设计基于GSM模块的用手机控制的自动水闸,对用单片机控制GSM模块和手机通信、收发短信息进行探讨。关键字:单片机;短信息;PDU;GSM目 录 1 AT89S51单片机简介6 1.1 AT89S51主要功能6 1.2 AT89S51引脚功能62 SIM300介绍142.1 SIM300特性142.2 SIM300引脚功能142.3.1 借助串口调试助手V2.2 软件152.3.2 指令AT+CPIN? AT+CSQ AT+COPS?153 短信的发送/读取的实现173.1 英文的发送/读取173.2 中文的读取/发送173.2.1 中文短信的发送 173.2.2 中文短信的读取174 程序代码185小结236 参考文献241 AT89S51单片机简介AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。1.1 AT89S51主要功能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.2 AT89S51引脚功能VCC:AT89S51 电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.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脚两个机器周期的高电平时间。 2 SIM300介绍SIM300是一款三频段GSM/GPRS模块,可在全球范围内的EGSM 900MHz、DCS 1800MHz、PCS 1900MHz三种频率下工作,能够提供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天线接口:一种是天线连接器、一种是天线焊点。天线连接器型号为MURATA MM9329-2700,或者用户也可以通过天线焊点自己焊接天线。SIM300具有低功耗设计,睡眠模式下的电流消耗仅为2.5mA。SIM300内部集成了TCP/IP协议栈,并且扩展了TCP/IP AT指令,使用户利用该模块开发数据传输设备变得非常简单方便。2.1 SIM300特性特性说明工作电压单电压供电,3.44.5V低功耗模式休眠模式下,工作电流典型值为2.5mA工作频段SIM300具有三个频段:EGSM900、DCS1800、PCS1900。频段频率可由AT指令设置,默认频段是EGSM900和DCS1800。与GSM Phase 2/2+兼容。GSM类型小型移动基站(MS)发射功耗在频率EGSM900 CLASS 4下为2W在频率DCS1800和PCS1900 CLASS 1下为1WGPRS连接GPRS多时隙10级GPRS移动电台B级工作温度正常工作温度:-22+55极限工作温度:-25-20,+55+70存储温度:-40+80GPRS数据传输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模式的短消息发送,用户可以根据自己的需要来选择传输模式传真Group 3 Class 1SIM接口支持1.8V和3V两种类型的SIM卡外接天线通过50的天线连接器或天线连接板连接音频特性语音编码模式半速率(ETS 06.02)全速率(ETS 06.10)增强型全速率(ETS06.50/06.60/06.80)回波抑制双串行通信接口串口1的借口具有7根数据、状态线串口1可以被用作CSD传真、GPRS服务和发送控制模块AT命令串口1可以使用多路复用功能,但是此时不能和串口2同时使用可支持的自动波特率为:1200bps115200bps串口2的接口只有/TXD和/RXD两根数据线,没有状态和控制线串口2只能用来传输AT命令电话簿管理支持的电话簿类型:SM、FD、LD、RC、ON、MCSIM应用工具箱支持SAT class 3、GSM 11.14 Release 98实时时钟内部具有实时时钟,并有后备电池接口定时功能可以通过AT命令编程物理特征尺寸:400.15330.153.30.3mm(包括连接器) 400.15330.152.850.3mm(不包括连接器)重量:8g固件升级内部固件通过串口升级2.2 SIM300引脚功能电源引脚名称I/O说明直流特性VBAT板板连接器有八个电池引脚以连接供电电压。SIM300的工作电压VBAT=3.4V4.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正负音频输入音频直流特性见章节3.9.4MIC2PMIC2NI附加正负音频输入SPK1PSPK1NO正负音频输出SPK2PSPK2NO附加正负音频输出BuzzerO蜂鸣器输出AGND模拟接地一般用途输入输出引脚名称I/O说明直流特性KBC0KBC4O一般用途输出引脚(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_EXTKBR0KBR4ISPI_DATAI/OSPI_CLKOSPI_CSOSPI_D/COSPI_RSTONetwork LEDOGPIO8I/O一般输入输出端口串口1接口引脚名称I/O说明直流特性DTRIData Terminal Ready数据终端就绪VILmin=0VVILmax=0.3*VDD_EXTVIHmin=0.7*VDD_EXTVIHmax=VDD_EXT+0.3VOLmin=GNDVOLmax=0.2VVOHmin=VDD_EXT-0.2VOHmax=VDD_EXTRXDIReceive Data 接收数据TXDOTransmit Data 发送数据RTSIRequest to Send 请求发送CTSOClear to Send 清除发送RIORing Indicator 响铃侦测DCDOData Carrier detection 数据载体检测串口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一般用途模数转换输入电压值范围:02.4V2.3 GSM模块串口测试 2.3.1 借助串口调试助手V2.2 软件 1、 正常方式发送(ASCII码方式)在发送框中输入ATI后,再按ENTER 键,最后点击手动发送选项框。测试结果如下图2-1 所示。 图2-12 、16 进制方式 ATI的16进制是4154490D,选择十六进制发送复选框,输完后点手动发送)。测试结果如图22所示。 图2-2如果测试返回成功了,就可以继续下面的指令测试。 2.3.2 指令AT+CPIN? AT+CSQ AT+COPS? 1、 AT+CPIN? 用于查询 SIM 卡的状态,主要是 PIN 码。输入指令:AT+CPIN? 返回: +CPIN:READY 表明状态正常,返回的是其它值可能是没放 SIM 卡 现在选择用 16 进制显示(选择十六进制显示后,再手动发送一次),结果如下:41 54 2B 43 50 49 4E 3F 0D 0D 0A 2B 43 50 49 4E 3A 20 52 45 41 44 A T + C P I N ? + C P I N : R E A D Y 59 0D 0A 0D 0A 4F 4B 0D 0A ; O K (在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回) 2、 AT+CSQ 用于查询信号,如果没有信号,要查看天线是否连接。输入指令:AT+CSQ 返回: +CSQ:26,0 / 表明信号强度是 10 选择用 16 进制显示,结果如下:41 54 2B 43 53 51 0D 0D 0A 2B 43 53 51 A T + C S Q + C S Q 3A 20 32 36 2C 30 0D 0A 0D 0A 4F 4B 0D 0A : 2 6 , 0 O K (在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回) 3、 AT+COPS? 用于查询 SIM 卡移动提供商,只有连上网络后才有,其它状态时都为空。输入指令:AT+COPS? 返回: +COPS: 0,0,CHINA MOBILE / 提供使用商为:中国移动 选择用 16 进制显示,结果如下:41 54 2B 43 4F 50 53 3F 0D 0D 0A 2B 43 A T + C O P S ? + C 4F 50 53 3A 20 30 2C 30 2C 22 43 48 49 4E 41 20 4D 4F 42 49 4C 45 O P S : 0 , 0 , C H I N A M O B I L E 22 0D 0A 0D 0A 4F 4B 0D 0A (在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回) 以上状态正常就可以进行短信、语音测试了。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”里的内容,回复短信报文。 其 中 “REC UNREAD ”短信没有读过,+8613632389015 为 发 信方号码,10/06/07,15:02:08+32 为日期,内容是:abc 如果再读一次就会稍微不同于上面显示,REC READ 表示已读。 2、 英文短信的发送 1、向发送英文短信:abc 先输入 AT+CMGF=1 再按 ENTER 后选择“手动发送”,功能:英文方式发送,回复 OK。再输入 AT+CMGS= 按 ENTER 键后点“手动发送”,功能:向输入的号码发送短信,回复,收到后才可输入内容 abc,再点“手动发送”。 最后的关键步骤是短信内容的结束:点“十六进制发送”,然后在指令区输入 1A(1 是数字,不是字母 l),点击手动发送之后等待返回,收到:+CMGS:11 表示发送成功。3.2 中文的读取/发送3.2.1 中文短信的发送 下面的内容是:向手发送中文短信:“ 星海科技” 变换号码中文短信要比英文复杂点,先把号码进行16 进制编码, 编码的方法如下: 首先, 对方手机号码8613632389015 ,进行转换(两位一反):3136329810F5 ,号码的最后一位为单数则高位加补F。 短信内容编码短信内容“星海科技”,通过Chinese_Unicode.exe 进行16 进制编码后:“ 661F 6D77 79D1 6280” 。 如果你要发送的也有中文英文,那么也要将他们全部放入进行转换 PDU格式编码PDU 格式编码:手机号码(11 位)+ 国际接入码86(2 位)=13 位,16 进制表示0D,接入码中国地区用91 表示,短信在服务器存放时间,A0。 那么总的一起要发送的 PDU 内容说明如下(下面的文字对应 pdu 的解析): 001100 0D 91 68 3136329810F5 0008 A0 661F 6D77 79D1 6280 前序 目的号码长度国际目的手机号码( 两位一反) | 8bit 方式允许时间短信长度短信内容 (Unicode) 发送中文短信步骤: 001100 :前序是一定要的,一般不更改 0D9168 :13位号码0D,91国际接入码,68中国的电话区号86。 3136329810F5:刚才进过变换的号码 0008:发送方式8bit A0:发送保存时间 661F 6D77 79D1 6280:要发送的内容 发送1.先输入 AT+CMGF=0 再按ENTER 键后,点“ 手动发送” ,状态恢复: OK 2. 计算PDU 总长度,总长度 = 你要发送的中文字数*4/2 + 15。 比如我们这次发送4个字,那么总长度=4*4/2+15=23. 要发送的中文字数*4(中文对应的ascii码个数) 3. 再输入 AT+CMGS=23 再按ENTER键后,点“ 手动发送” ;收到 后才可输入 内容 0011000D91683136329810F50008A008661F6D7779D16280再点“手动发送”。 此次输入是不需要加回车的,请注意,因为一会要加入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 是长度; 91683108200005F0 为短信中心号码:+8613800200500 0D 为短信号码长度91683136329810F5 对方号码 +8613632389015 01607221122323 日期 10/06/27, 12:21:32+32 08 为短 信内容长度 661F6D7779D16280 中文短信内容如果再读一次就会有区别。 此时读到的是中文信息 Unicode 码,要进过转换才可以看出他的内容 。4 程序代码#include #define uchar unsigned char#define uint unsigned intuchar num,temp,i,j,js,js1;uchar volatile GsmRcvAt50 = 0;uchar volatile GsmRcv50 = 0;uchar volatile GsmRcvCnt = 0;uchar volatile GsmAtFlag = 0;uchar volatile duanxinFlag = 0;sbit LED5=P10;sbit LED6=P11;sbit LED7=P12;sbit LED8=P13;sbit LED9=P14; code char S_Tab8= 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, ; code uchar zxm16= 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, ; code uchar zwm8= 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, ;void SerialInit()TMOD=0x20;TH1=0xF4;TL1=0xF4;TR1=1;SM0=0;SM1=1;REN=1;EA = 1; ES = 1;void SerialSendChars(char *str)while(*str!=0)SBUF=*str;while(!TI);TI=0;str+; void delay_ms(uint n) uchar a,b; uint c; for(c=n;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-); uchar key_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) case 0xeb:num=11;break; case 0xdb:num=10;break; case 0xbb:num=9;break; case 0x7b:num=8;break; P3=0xf7; temp=P3; temp &=0xf7; while(0xf7!=temp) delay_ms(5);temp=P3;while(0xf7!=temp) temp=P3; switch(temp) case 0xe7:num=15;break; case 0xd7:num=14;break; case 0xb7:num=13;break; case 0x77:num=12;break; return num;void delay_50ms(int t)int j; for(;t0;t-) for(j=6245;j0;j-) ; void main()char flag;SerialInit(); SerialSendChars(atir);delay_50ms(20);SerialSendChars(atir);delay_50ms(20);SerialSendChars(atir);delay_50ms(20);GsmAtFlag = 0;LED5=0;LED6=0;LED7=0;LED8=0;while(1)SerialSendChars(AT+CMGD=1r);delay_50ms(20);while(GsmAtFlag = 0);if(GsmRcvAt0 = O & GsmRcvAt1 = K )break;SerialSendChars(AT+CNMI=2,1r);delay_50ms(20);SerialSendChars(AT+CMGF=1r);LED5=1;LED6=1;LED7=1;LED8=1;while(1) js=key_scan(); if(js!=20) js1=js; P0=zxmjs1%16; P2=zwm0; switch(js1) case 0x08: SerialSendChars(ATr);break; case 0x09: SerialSendChars(ATHr);break; if(GsmAtFlag = 1)GsmAtFlag = 0;duanxinFlag=1;if(GsmRcvAt0 = R & GsmRcvAt1 = I & GsmRcvAt2 = N & GsmRcvAt3 = G) flag=0x10; else if(GsmRcvAt0 = N & GsmRcvAt1 = O & GsmRcvAt2 = & GsmRcvAt3 = C & GsmRcvAt4 = A) flag=0x20; else if(GsmRcvAt0 = + & GsmRcvAt1 = C & GsmRcvAt2 = M & GsmRcvAt3 = T & GsmRcvAt4 = I)LED6=0;SerialSendChars(AT+CMGR=1r);else if(GsmRcvAt0 = O & GsmRcvAt1 = K)LED6=1;else if(GsmRcvAt0 = + & GsmRcvAt1 = C & GsmRcv

温馨提示

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

评论

0/150

提交评论