欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机的公用电话网远程控制器的设计.doc

    • 资源ID:2122195       资源大小:3.72MB        全文页数:29页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的公用电话网远程控制器的设计.doc

    第 1 页 基于单片机的公用电话网远程控制器的设计摘要: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第 2 页1 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)为 4KB 4、 内部数据存储器(RAM)为 128B 5、 外部程序存储器可扩充至 64KB 6、 外部数据存储器可扩充至 64KB 7、 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 引脚功能VCCVCC: AT89S51 电源正端输入,接+5V。 VSSVSS: 电源地端。 XTAL1XTAL1:第 3 页单芯片系统时钟的反相放大器输入端。 XTAL2XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接 上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: AT89S51 的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平 提升至高电平并保持两个机器周期以上 的时间,AT89S51 便能完成系统重置的 各项动作,使得内部特殊功能寄存器之 内容均被设成已知状态,并且至地址 0000H 处开始读入程序代码而执行程序。EA/VppEA/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 程序代码时,此引脚会被当成 程序规划的特殊功能来使用。 PSENPSEN: 此为“Program Store Enable“的缩写,其意为程序储存启用,当 8051 被设成 为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通AT89S51 第 4 页常这支脚是接到 EPROM 的 OE 脚。AT89S51 可以利用 PSEN 及 RD 引脚分别启用存在外部的 RAM 与 EPROM,使得数据存储器与程序存储器可以合并在一起而共用 64K 的 定址范围。 PORT0PORT0(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,外部数据存储器的读取信号。第 5 页RSTRST: 复位输入端,高电平有效。当振荡器复位器件时,要保持 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 下为 1W GPRS 连接GPRS 多时隙 10 级 GPRS 移动电台 B 级 工作温度正常工作温度:-22+55 极限工作温度:-25-20,+55+70第 6 页 存储温度:-40+80 GPRS 数据 传输GPRS 下行数据传输最大 85.6kbps GPRS 上行数据传输最大 42.8kbps 编码方案:CS-1,CS-2,CS-3,CS-4 SIM300 支持 PAP(密码验证)协议,此协议通常用于 PPP 连接 SIM300 集成了 TCP/IP 协议 电路交换 数据 (CSD)支持分组广播控制信道(PBCCH) 电路交换数据传输速率:2.4,4.8,9.6,14.4kbps,非透明传输 支持非结构化补充数据业务(USSD) 短消息支持点到点短消息移动发送和接受、文本、PDU 模式 短消息存储于 SIM 卡中 支持 CSD 和 GPRS 模式的短消息发送,用户可以根据自己的需要来 选择传输模式 传真Group 3 Class 1 SIM 接口支持 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 命令编程 物理特征尺寸:40±0.15×33±0.15×3.3±0.3mm(包括连接器)40±0.15×33±0.15×2.85±0.3mm(不包括连接器) 重量:8g 固件升级内部固件通过串口升级2.2 SIM300 引脚功能电源 引脚名称I/说明直流特性第 7 页O VBAT板板连接器有八个电池引脚 以连接供电电压。SIM300 的 工作电压 VBAT=3.4V4.5V, 单电压供电。供电电压必须 能在典型值上升到 2A 的传输 脉冲中提供足够的电流。此 八个引脚一般为电压引脚。Vmax=4.5V Vmin=3.4V Vnorm=4.0VVRTCI/ O当电源不给系统供电时给实 时时钟的电流输入。当主电 源供电且备用电源为低电平 状态时给备用电源的电流输 出。Vmax=2.0V Vmin=1.2V Vnorm=1.8V Inorm=20uAVDD_EXTO给外部电路供电 3.0V。用户 通过测试此引脚,可以判断 系统的运行和关闭,为低电 平时,系统关闭,相反,系 统运行。Vmax=3.15V Vmin=2.85V Vnorm=3.0V Inorm=60mAGND数字接地 电源开关 引脚名称I/ O说明直流特性PWRKEYI系统启动按键的电压输入。 用户启动和关闭系统时 PWRKEY 为低电平。由于系统 响应软件需要一定的反应时 间,用户启动或关闭系统时 需要按住按键几秒。VILmax=0.3*VBAT VIHmin=0.7*VBAT VImax=VBAT音频接口 引脚名称I/ O说明直流特性MIC1P MIC1NI正负音频输入音频直流特性见章节 3.9.4MIC2P MIC2NI附加正负音频输入SPK1P SPK1NO正负音频输出SPK2P SPK2NO附加正负音频输出BuzzerO蜂鸣器输出 AGND模拟接地第 8 页 一般用途输入输出 引脚名称I/ O说明直流特性KBC0KBC 4OKBR0KBR 4ISPI_DATAI/ O SPI_CLKO SPI_CSO SPI_D/CO SPI_RSTO Network LEDO一般用途输出引脚(GPO)可 由 AT 指令配置其输出电压的 高低。所有 GPO 未由 AT 指令 配置时初始化默认低电平。GPIO8I/ O一般输入输出端口VILmin=0V VILmax=0.3*VDD_EXT VIHmin=0.7*VDD_EXT VIHmax=VDD_EXT+0.3 VOLmin=GND VOLmax=0.2V VOHmin=VDD_EXT-0.2 VOHmax=VDD_EXT串口 1 接口 引脚名称I/ O说明直流特性DTRIData Terminal Ready 数据终 端就绪 RXDIReceive Data 接收数据 TXDOTransmit Data 发送数据 RTSIRequest to Send 请求发送 CTSOClear to Send 清除发送 RIORing Indicator 响铃侦测 DCDOData Carrier detection 数 据载体检测VILmin=0V VILmax=0.3*VDD_EXT VIHmin=0.7*VDD_EXT VIHmax=VDD_EXT+0.3 VOLmin=GND VOLmax=0.2V VOHmin=VDD_EXT-0.2 VOHmax=VDD_EXT串口 2 接口 DBGTXO DBGRXI用于调试和通信的串口SIM 卡接口 引脚名称I/O说明直流特性 SIM_VDDOSIM 卡的电源引脚1.8V / 2.8V 可由软件选择 SIM_I/OI/OSIM 卡数据输出 SIM_CLKOSIM 卡时钟 SIM_PRES ENCEISIM 卡检测SIM_RSTOSIM 卡复位VILmin=0V VILmax=0.3*SIM_VDD VILmin=0.7*SIM_VDD VIHmax=SIM_VDD+0.3 VOLmin=GND VOLmax=0.2V第 9 页VOHmin=SIM_VDD-0.2 VOHmax=SIM_VDD 音频模数转换 引脚名称I/O说明直流特性 ADC0I一般用途模数转换输入电压值范围:02.4V2.3 GSM 模块串口测试 2.3.12.3.1 借助串口调试助手借助串口调试助手 V2.2V2.2 软件软件 1、正常方式发送(ASCII 码方式) 在发送框中输入 ATI 后,再按 ENTER 键,最后点击手动发送选项框。测试结果如下图 2-1 所示。 2 、16 进制方式 ATI 的 16 进制是 4154490D,选择十六进制发送复选框,输完后点手动发送)。 测试结果如图 22 所示。 图 2-1第 10 页如果测试返回成功了,就可以继续下面的指令测试。 2.3.22.3.2 指令指令 AT+CPIN?AT+CPIN? AT+CSQAT+CSQ AT+COPS?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 图 2-2第 11 页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 是回车换行,每次模块都返回) 以上状态正常就可以进行短信、语音测试了。第 12 页 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、向 13632389015 发送英文短信:abc 先输入 AT+CMGF=1 再按 ENTER 后选择“手动发送”,功能:英文方式发送, 回复 OK。再输入 AT+CMGS=”13632389015” 按 ENTER 键后点“手动发送”,功 能:向输入的号码发送短信,回复>,收到>后才可输入内容 abc,再点“手动发送” 。 第 13 页最后的关键步骤是短信内容的结束:点“十六进制发送”,然后在指令区输 入 1A(1 是数字,不是字母 l),点击手动发送之后等待返回,收到: +CMGS:11 表示发送成功。3.2 中文的读取/发送3.2.13.2.1 中文短信的发送中文短信的发送 下面的内容是:向手机 13632389015 发送中文短信:“ 星海科技” 变换号码变换号码 中文短信要比英文复杂点,先把号码进行 16 进制编码, 编码的方法如下: 首先, 对方手机号码 8613632389015 ,进行转换(两位一反): 3136329810F5 ,号码的最后一位为单数则高位加补 F。 第 14 页 短信内容编码短信内容编码 短信内容“星海科技”,通过 Chinese_Unicode.exe 进行 16 进制编码后: “ 661F 6D77 79D1 6280” 。 如果你要发送的也有中文英文,那么也要将他们全部放入进行转换 PDUPDU 格式编码格式编码 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 再点“手动发送” 。 第 15 页此次输入是不需要加回车的,请注意,因为一会要加入 0x1a 结束符号了 4. 结束短信内容:点“十六进制发送”,在指令区输入 1A 后,点“手动发送”,等待发送成功,收到如图所示:+CMGS:19 表示发送成功。 注:1. at+cscs=“GSM“ 采用 GSM 方式 2. at+cmgf=0 设置 PDU 模式,发送中文短信需要这个 3. at+cmgs= 发送 PDU 短信 3.2.23.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 中文短信内容如果再读一第 16 页次就会有区别。 此时读到的是中文信息 Unicode 码,要进过转换才可以看出他的内容 。第 17 页4 程序代码#include #define uchar unsigned char #define uint unsigned int uchar 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= 第 18 页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;第 19 页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;c>0;c-)for(b=142;b>0;b-)for(a=2;a>0;a-);uchar key_scan(void) num=20;P3=0xfb; temp=P3;temp 第 20 页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 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;第 21 页void delay_50ms(int t) int j; for(;t>0;t-) for(j=6245;j>0;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);第 22 页if(GsmRcvAt0 = 'O' 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(“ATD15150013904;r“);break;case 0x09: SerialSendChars(“ATHr“);break;if(GsmAtFlag = 1) GsmAtFlag = 0;第 23 页duanxinFlag=1; if(GsmRcvAt0 = 'R' else if(GsmRcvAt0 = 'N' else if(GsmRcvAt0 = '+' SerialSendChars(“AT+CMGR=1r“); else if(GsmRcvAt0 = 'O' else if(GsmRcvAt0 = '+' GsmAtFlag = 0; while(GsmAtFlag = 0);if(GsmRcvAt0 = '1')第 24 页flag=0x01; else if(GsmRcvAt0 = '2') flag=0x02; else if(GsmRcvAt0 = '3')flag=0x04; else if(GsmRcvAt0 = '4') LED9=0; flag=0x08; SerialSendChars(“AT+CMGD=1r“); LED7=1;/Uart1Send(GsmRcvAt0);i = 0; while(GsmRcvAti != 0) GsmRcvAti = 0; i+; 第 25 页if(duanxinFlag = 1)if(flag=0x01) P1=0xff;for(i=0;i= 2)/ for(i=0; i= 99) GsmRcvCnt = 0; ES = 1;第 28 页5 小结通过以上的分析不难发现,整个程序错综复杂,函数之间相互牵扯。标志位 在程序的实现过程中扮演着非常重要的角色,正是依靠这些标志位,程序才能很 好地实现各个功能之间的切换,而标志位的值是通过 OSM 模块返回的参数修改的。 因此程序的实现过程应该是阅读参数修改标志位发送指令。 主函数、时钟中断和串口中断程序、SHELL 函数、ExecData 函数贯穿整个程 序的主线和核心部分,对它们的分析可以理解程序的主体思想,这也正是笔者着 重介绍的原因所在。然而这些函数和中断程序的实现,还需要依靠其它函数的配 合,比如基于 I2C 总线的 E2PROM 操作函数、字符串操作函数以及串口发送函数等, 由于篇幅所限,在此不再介绍。GSM 网络本身是不完全可靠的,可能会发生帧发送 错误、帧丢失的现象。但是由于重发、延时重发机制的存在,程序可以最大程度 避免上述情况的发生。在实际应用过程中,模块运行正常,性能稳定,实时性好。6 参考文献1 邹燕碧,高鹰·自适应滤波算法综述J·广州大学学报(自然科学版), 202,1(2):44-50· 2 潘松,黄继业,曾毓·SOPC 技术实用教程M, 北京:清华大学出版社, 205:150-166· 3 覃景繁,欧阳景正·一种新的变步长自适应滤波算法J·数据采集与处理, 1997,12(3): 171-194· 4 XinytmGnrtrfrDSeso·lxSseeeaooPVrin91 UseFsGuide·pdf·2007· 5 李国峰·数字通信中自适应滤波器的研究 D天津:南开大学,2002 2 李鸿用单片机控制手机收发短信息J电子技术应用,021:422002(1) 24-26 3 李艳华,陈慧明单片机控制 GSM 手机的技术 及应用J单片机与嵌入式系统应用,2005 (2):73-75第 29 页附录

    注意事项

    本文(基于单片机的公用电话网远程控制器的设计.doc)为本站会员(恋****泡)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开