基于智能公交站牌毕业设计.doc_第1页
基于智能公交站牌毕业设计.doc_第2页
基于智能公交站牌毕业设计.doc_第3页
基于智能公交站牌毕业设计.doc_第4页
基于智能公交站牌毕业设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

智能公交电子站牌系统设计摘 要:智能公交电子站牌是一种基于网络多媒体信息发布系统平台整合智能公交系统针对广大公交出行用户需求而推出的一种新型应用,该系统具备并且以网络多媒体信息发布系统平台为核心,充分利用gps定位系统、3g无线通信系统和公交运营管理中心后台系统的数据接口,将公交运营管理中心系统的实时运营数据通过网络多媒体信息发布系统平台实时发布到数字站亭,让公众通过该平台实时了解车辆到站信息、最新交通信息、天气和最新要闻等综合性相关信息,并通过数字站亭提供的触摸和按钮等实现信息查询和交互功能,利用信息发布系统平台所具有的互联网接入功能,可以建设成为一个端到端的完整互联网应用信息发布平台。关键词:智能电子站牌,无线通信,多媒体目 录智能公交电子站牌系统设计i第一章 绪论11.1 论文背景11.2 智能公交调度指挥管理系统1第二章 智能公交电子站牌系统功能22.1 公交车辆实时到站预报22.2 即时信息发布22.3移动智能监控22.4信息采集与显示转换自如22.5多媒体信息服务平台32.6公交站台显示屏人机交互界面4第三章 电子站牌系统工作原理53.1设备组成53.2设备工作原理5第四章 电子站牌系统硬件设计64.1 led电子显示屏驱动显示电路64.2 显示屏主控制电路84.3 存储电路114.3.1 存储电路芯片介绍114.3.2 存储电路134.4 实时时钟电路144.5 stc89c516rd+单片机内部看门狗的使用154.6 tc35i模块at指令及中文短信息的收发174.6.1单片机与tc35i的硬件接口174.6.2at指令介绍174.6.3单片机发送at指令的程序设计184.7 中文短信息的收发204.7.1 pdu模式及中文短信息的编码20第五章 结束语25参考文献26致谢27i致谢第一章 绪论1.1 论文背景利用卫星定位监控系统对公交车辆进行调度管理已经被普遍采用,韩国和日本是全球移动定位业务应用最为广泛的国家,韩国和日本的移动运营商和业务供应商已经逐步建立了比较完善的、基于位置的业务基础设施,移动定位产业价值链日益走向完善,移动定位业务已经渗透到了社会生活的各个方面,呈现规模化增长的态势。近几年来,国内两大移动运营商积极进行移动定位业务试验,相继推出基于不同技术的移动定位服务。随着城市建设和公交事业的飞速发展,公交企业为提高自身的管理水平、公交车辆的运行效率、降低能源浪费,运用高科技手段对企业进行管理被提到重要的日程上来。1.2 智能公交调度指挥管理系统车载终端分系统:完成车辆定位和报警;利用gsn网进行通讯;车内自动报站和广告信息显示等;公交中心调度管理分系统;实时将各车辆的定位信息显示在控制大屏幕上;以短信息向乘客发布跨线路、跨区域公交车辆运行情况;发布广告信息;车辆管理系统汇总等;电子站牌分系统:显示公交车辆预计、准路公交车运行情况;显示公益信息及广告信息。本文重点介绍智能公交调度指挥管理系统中电子站牌分系统的设计。第二章 智能公交电子站牌系统功能2.1 公交车辆实时到站预报站亭上部的显示屏将用于显示公交车辆的到站预报信息,包括线路预报、地点预报和时间预报。候车乘客可以直观清楚地了解到所等候车辆已驶达的站点、距离到达本站还要多长时间,缓解候车时的焦虑情绪。同时,候车乘客也能根据时间合理安排自己的等车计划。2.2 即时信息发布显示屏也可用于发布各类公共信息,如新闻摘要、政府公告、天气预报、路况信息、财经简讯等。另外,如出现突发性灾害天气和突发性疫情等紧急时间,电子公交站亭将成为有效的政府紧急信息发布平台,第一时间发布信息,成为城市突发公共时间应急系统的组成之一。2.3移动智能监控站亭顶部的无线监控摄像头可以实时监控公交站台周边客流、车流和治安等状况,是数字公交站亭系统的特色功能之一。这不仅方便了交管部门进行交通管理疏导,也有利于公安部门进行城市治安监控和管理,构建以城市公交站台和公交场站为网点的城市交通与治安监控体系。2.4信息采集与显示转换自如公交公司可以根据系统实时采集的相关数据,通过后台信息管理中心,实时查看车辆运行所在位置。车 载设备和站亭同属于信号采 集和传送系统的一部分,能采集和传送车辆所在位置等具体数据,通过信息管理中心的电子系统进行处理后发布到站亭的显示牌上就变成了等车人所看到的信息。2.5多媒体信息服务平台多媒体公交电子站牌由于站牌主机通过网络可以连接到后台,并且后台可以实时接入互联网,因此通过该平台可以实现人网交互功能,例如以数字站亭为核心点的周边商业信息查询,如周边1公里范围内的餐厅、药店、娱乐场所、运动场所、士多店等各类增值服务信息,这样充分利用多媒体信息发布系统平台优势将数字站亭变成一个便民服务平台。示意图2-1所示:图2-1:电子站牌示意图本系统主要由公交运营管理中心、多媒体视讯管理平台、智能电子站牌组成,智能电子站牌包括lcd显示屏、信息发布系统终端主机、3g通信模块等连接到internet,通过互联网网络实现信息远程发布和管理功能。系统的结构如下图2-2所示:图2-2:系统结构示意图2.6公交站台显示屏人机交互界面 智能触摸屏公交站牌,功能强大,不仅能告知市民所搭乘车辆的到达时间、距本站的距离,还可播送时政新闻、娱乐节目、气象信息、政府公告及与生活息息相关的一些便民信息。智能公交站牌除具备基本公交站牌功能外,还是一个公众信息发布平台和交通信息采集终端。市民可直观了解到本站车辆的上站信息,可利用触摸查询系统查询线路;可查找某一线路的起点、终点、首末班车时间、途径站点等;还可以输入某一个站点名称进行检索,系统会列出所有途经该站的线路;也可以输入出发地和目的地进行检索,系统可列出所有可直达的线路,如未找到直达线路则列出所有换乘方案,为使用者提供包括线路、途径站、换乘站在内的详细换乘信息,方便市民对自己的出行进行合理规划。市民在等候乘车的过程,通过电子站牌了解天气预报,公交线路调整等实用信息。如下图2-3所示:图2-3:触摸式公交站牌电子显示屏设想页面第三章 电子站牌系统工作原理3.1设备组成本系统主要由调度中心、电子站牌和车载设备组成。采用无线通信模式实现三者之间的信息传输,保证调度与司机之间的联系,以及向电子站牌发布车辆信息。系统设备总体结构图如下图3-1所示:图3-1:系统设备总体结构图3.2设备工作原理公交车将其位置信息和到站信息通过无线模块及时的发给最近的电子站牌,电子站牌收到此信息后,将信息放入寄存器内并打包发给下一个站牌;再接力向下传递;最后包含了所有车站和公交车的信息被传送到调度中心。调度中心将收到的信息经过处理,再接力式的传回给各电子站牌,实现车辆位置的动态显示和车辆预计到站时间的显示;调度中心也可将调度信息通过站牌传给车载设备,从而实现公交调度的智能化。第四章 电子站牌系统硬件设计4.1 led电子显示屏驱动显示电路 显示屏分成屏体和控制器两部分,屏体的主要部分是显示阵列以及有行列驱动电路。根据安装环境的空间以及考虑成本造价,决定使用多大尺寸的显示屏,从而决定了显示模块的数量,这里以88点阵为例,模块单位为256点阵,即需要16块点阵模块,如图4-1所示。汉字一般是256点阵,那么该屏可以一次显示4个汉字。vcc74hc15474hc59574hc595abcddataclkstr图4-1:显示驱动电路采用扫描方式进行显示时,分成两步,对于每行有一个行驱动器,各行的同名列共用一个列驱动器,由单片机给出行选通信号,从第一行开始依次对各行进行扫描,对于列,根据各列所存数据,确定相应的列驱动器是否将该列与行接通,如果接通,那么该行该列的led将亮,以同样方法进行显示全部各行都扫描一遍之后(一个扫描周期),再从第一行开始,进行下一个周期的扫描。只要一个扫描周期的时间比人眼1/25秒的滞留时间短,就不会感觉出闪烁现象。显示数据从驱动芯片到显示模块是以并行方式传输的,但显示数据从单片机到驱动芯片是以串行方式传输的,由于串行传输的控制电路简单,设计容易,缺点是串行数据传输需要很长的时间,不过这可以由软件来弥补,也可考虑单片机的控制速度。显示驱动电路由74hc595组成。74hc595输入端是8位串行移位寄存器,输出端是8位并行缓存器具有锁存功能。由于clk、load端相连,而数据线分开,这样在同一脉冲下,行列的数据可以同时进行传入,行列数据准备好后,启动load信号使所有数据同时输出并锁存,这样的设计较之传统方法提高了4倍的速度,占用i/o口少,由于clk, load引线较长,为避免线间干扰,在驱动6片74ls595之后再加驱动芯片74ls5244以驱动下一级驱动电路。led显示屏驱动电路的设计,与所用控制系统相配合,通常分为动态扫描型驱动及静态锁存型驱动二大类3。以下就动态扫描型驱动电路的设计为例为进行分析:动态扫描型驱动方式是指显示屏上的4行、8行、16行等n行发光二极管共用一组列驱动寄存器,通过行驱动管的分时工作,使得每行led的点亮时间占总时间的1/n,只要每行的刷新速率大于50hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。常规型驱动电路的设计一般是用串入并出的通用集成电路芯片如74hc595或mc14094等作为列数据锁存,以8050等小功率npn三极管为行驱动,而以达林顿三极管如tip127等作为行扫描管。如动态扫描型驱动方式是指显示屏上的4行、8行、16行等n行发光二极管共用一组列驱动寄存器,通过行驱动管的分时工作,使得每行led的点亮时间占总时间的1/n,只要每行的刷新速率大于50hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面常规型驱动电路的设计一般是用串入并出的通用集成电路芯片如74hc595或mc14094等作为列数据锁存,以8050等小功率npn三极管为列驱动,而以达林顿三极管如tip127等作为行扫描管。如以单色点阵、16行64列为一个基本单元,则需用8片74hc595、16个行扫描管,其工作原理为:将八片74hc595级连,共用一个串行时钟clk及数据锁存信号str。当第一行需要显示的数据经过88=64个clk时钟后将全部移入74hc595中,此时产生一个数据锁存信号str,使数据锁存在74hc595的后级锁存器中,同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行led的正端都接高平,显然第一行led管子的亮、灭取决于74hc595中所锁存的信号;在第一行led管子点亮的同时,在74hc595中移入第二行需要显示的数据,随后将其锁存,并同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行led管子点亮以此类推,当第十六行扫描过后再回到第一行,只要扫描速度足够高,就可形成一幅完整的文字或图像,其工作时序见图4-2。dataclkstr图4-2: 串行移位工作时序图4.2 显示屏主控制电路在控制领域51系列、pic系列以及avr系列单片机是常用的微型控制器,每个系列都有自己的优缺点,在某些方面都有自己的长处。在具体的设计当中要综合考虑,如单片机的资源是否满足系统要求,系统是否有严格的速度要求,系统对控制器的抗干扰能力,硬件的加密性,外围电路是否简单,是否有比较齐全的成熟的开发、调试工具,如果要生产的话,则还要考虑价格和供货渠道等因素。4.2.1 控制器的比较及选型pic系列单片机:pic单片机采用精简指令使其执行效率大为提高。pic系列8位cmos单片机具有独特的risc结构,数据总线和指令总线分离的哈佛总线(harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用cisc结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。pic有优越开发环境。pic在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。其引脚具有防瞬态能力,通过限流电阻可以接至220v交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。pic以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,pic采用熔丝深埋工艺,恢复熔丝的可能性极小。自带看门狗定时器,可以用来提高程序运行的可靠性5。avr系列单片机:是一种新型的单片机。运行速度快,一个时钟周期执行一条指令。硬件应用哈佛(harvard)结构,具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。avr单片机是多累加器型,数据处理速度快。超功能精简指令,具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。相当多的单片机只有一个累加器,就像一条独木桥,所有事都要通过累加器,速度慢。avr单片机系列中有128b4kb的sram静态随机数据存储器,可灵活使用指令运算、存放数据,中断响应速度快。avr像8051一样,有多个固定中断向量入口地址,可快速响应中断。高级c语言编程效率高。从高级语言c代码完成同一任务实例来比较,8 mhz avr单片机的速度相当于24 mhz的80c51单片机,avr比80c51快28倍。avr是低功耗单片机,具有休眠省电功能(power down)及闲置(idle)低功耗功能。一般耗电在12.5 ma;对于典型功耗情况,wdt关闭时为100 na,更适用于电池供电的应用设备。有的器件最低1.8 v即可工作。可多次烧写的flash,且具有多重密码保护锁死(lock)功能。i/o口功能强、驱动能力大,具有输入/输出、三态高阻输入,也可设定内部拉高电阻作输入端的功能,以便于应用到各种所需的场合(多功能i/o口)。51系列单片机:51系列是指是兼容intel公司51指令集的单片机系列的统名称。这种单片机所包括的硬件资源有:(1)一个8位的微处理器;(2)片内数据存储器ram,用以存放可以读/写的数据,如运算的中间结果、最终结果以欲显示的数据等;(3)片内程序存储器rom/eprom,用以存放程序、一些原始数据和表格;(4)四个8位并行i/o接口p0p3,每个口可以用作输入,也可以用作输出;(5)两个(或三个)定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;(6)五(或六个)个中断源的中断控制系统;(7)一个全双工uart接口(通用异步接收发送器)的串行i/o,用于实现单片机之间或单片机与微机之间的串行通信;(8)片内振荡器和时钟产生电路,但石英晶体和微调电容须要外接。可以看出mcs-51系列单片机也是一款功能强大的单片机。stc89c51rc/rd+系列单片机是宏晶科技推出的新一代超强抗干扰/ 高速/ 低功耗的单片机,指令代码完全兼容传统 8051 单片机,12 时钟 / 机器周期和6时钟/机器周期可任意选择,最新的d版本内部集成max810专用复位电路。特点如下:(1).增强6时钟/机器周期,12时钟/机器周期8051cpu;(2)工作电压:5.5v3.4v(5v单片机)/3.8v2.0v(3v单片机);(3)工作频率范围:040mhz,相当于普通8051的080mhz实际工作频率可达48mhz;(4)用户应用程序空间4k/8k/13k/16k/20k/32k/64k字节;(5)片上集成1280字节/512字节ram;(6)通用i /o口(32/36个)复位后为:p0/p1/p2/p3是准双向口/弱上拉(普通8 051传统i /o口),p0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为i /o 口用时,需加上拉电阻;(7)isp(在系统可编程)/iap(在应用可编程),无需专用编程器/仿真,可通过串口(p3.0/p3.1)直接下载用户程序,8k程序3秒即可完成一片;(8)eeprom功能;(9)看门狗;(10)内部集成 max810 专用复位电路(d 版本才有),外部晶体 20m 以下时,可省外部复位电路;(11)共3 个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用;(12)外部中断4路,下降沿中断或低电平触发中断,power down模式可由外部中断低电平触发中断方式唤醒;(13)通用异步串行口(uart),还可用定时器软件实现多个uart;(14)工作温度范围:075/40+85;(15)封装:pdip-40,plcc-44,pqfp-44。从以上几种型号单片机的比较中可以看出,pic单片机、avr单片机虽然在很多方面都有其特点,如在运行速度上,内部资源的配置等。但因其价格高,开发工具不及使用51系列单片机齐全,再考虑本系统对cpu的要求并不是很高,综合考虑还是选用已经普及的51内核的单片机。4.3 存储电路4.3.1 存储电路芯片介绍cy62256是一种32k的高集成度的ram,采用单一+5v电源供电,双列直插式28引脚soic封装,它存储容量大、集成度高、成本低,具有灵活的读写性和较图4-3:6cy62256芯片引脚排列好的数据非易失性等特点,其芯片的引脚排列如图4-3所示。功能引脚:a0a15 16位的地址输入端口; i/o0i/o7 8位输入和输出端口; ce 地址锁存使能端,用来控制锁存器; we、oe 读写选通信号端,(低电平有效) vcc、gnd 电源引脚74hc373三态输出的八路d透明锁存器,双列直插式soj-20封装,用于暂存数据信息的作用,其芯片引脚排列如图4-4所示。功能引脚:le 锁存器使能输入端; oe 三态允许控制端(低电平有效); d0d7 数据输入端; o0o7 输出端; vcc、gnd 电源引脚。图4-4: 74hc373芯片引脚排列4.3.2 存储电路 在控制系统中,采用soc型stc系列宏晶单片机stc89c516rd+同时扩展ram用于存放与显示屏对应的要显示的128b数据以及从gsm模块读取的信息。为了增大存放数据的容量,本设计采用了cy62256(32kb)进行数据的存储。它有15条地址总线,其中低8位地址由p0口经74hc373锁存器后提供,而且也作为8位数据i/o,高8位地址由p2口提供。存储电路原理图如图4-5所示。图4-5: 存储电路原理图从电路图中可以看出单片机与输出锁存器和存储器之间的接口很简单,采用了总线的传输方式,这种输出锁存器可以应用于任何需要额外数字输出的环境中。cy62256的地址输出被用来驱动74hc373锁存器使能输入端le(latch enable)。只要处理器访问那些分配给这种设备的存储区域,那么地址解码器将会触发锁存器以获取数据总线上的信息。因此,处理器会把一个字节的信息写入到锁存器地址区域中的任意地址上,接着这一字节的信息便会被输出到led组。采用动态扫描方式,用74hc373三态输出的八d透明锁存器进行16行的逐行扫描,利用人眼的视觉暂留效果,在显示屏上可以减少发热量,而且可以节省i/o资源。4.4 实时时钟电路在本系统中需要显示当前的日期、时间提示,因此我们使用一个时钟芯片,用来提供年、月、日、星期、小时、分钟等信息内容。我们选用dallas(达拉斯)图4-6: ds1302外形及管脚分布公司生产的时钟芯片ds1302,外形图如图4-6所示。ds1302 是dallas公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态 ram,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、月、年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过am/pm指示决定采用24或12小时格式。ds1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)res(复位),(2)i/o(数据线),(3)sclk(串行时钟)。时钟/ram 的读/写数据以一个字节或多达 31 个字节的字符组方式通信。ds1302工作时功耗很低 保持数据和信息时功率小于1mw。双电源管脚用于主电源和备份电源供应,如图4-7所示。图4-7: 实时时钟电路从图中可以看出x1、x2连接32.768mhz的晶体振荡器,用来产生ds1302的片外振荡脉冲,bt1脚连接一块纽扣的电池作为备用电源,sclk、i/o、rst脚接单片机,运用单总线方式控制。4.5 stc89c516rd+单片机内部看门狗的使用stc89c516rd+单片机通过向特殊功能寄存器wdt_contr写入指定的数据,来启动或复位内部看门狗。wdt_contr寄存器的各位及其功能如表4-1所示6。表4-1: wdt_contr寄存器mnemonicaddname76543210reset valuewdt_contre1hwdt control register-en_wdtclr_wdtidle_wdtps2ps1ps0xx00,000表中各位描述:(1)en_wdt 看门狗允许位,当设置为“1”时,看门狗启动。(2)clr_wdt看门狗清“0”位,当设置为“1”时,看门狗重新计数,硬件将自动清“0”此位。(3)idle_wdt 看门狗“idel”模式,当设置为“1”时,看门狗定时器在“空闲模式”计数。当该位清“0”时,看门狗计数器在“空闲模式”不计数。(4)ps2、ps1、ps0 看门狗定时器预分频设置控制位。看门狗预分频值如表2所示。看门狗溢出时间计算。看门狗溢出时间=(npre_scale32768)/oscillator frequency,例如,当系统晶振频率为12mhz,12时钟模式,则看门狗溢出时间= (12pre_scale32768)/12000000。见表4-所示,为看门狗定时器预分频值。了解了看门狗定时器特殊功能寄存器各位的功能,我们就可以使用汇编语言或者c语言来操作该寄存器。下面是使用c语言操作单片机内部看门狗的子程序。表4-2: 看门狗定时器预分频值ps2ps1ps0预分频(pre_scale)看门狗定时器溢出时间(ms)(12mhz晶振,12时钟模式)000265.50014131.00108262.101116524.2100321048.5101642097.11101284194.31112568388.6void reset_wdt(void)wdt_contr = 0x3f; /复位看门狗void init_wdt(void)wdt_contr = 0x3f; /看门狗初始化,使用12mhz晶振,设置为256分频,溢出时间大约5.46 s有了这两个子程序,在使用stc89c516rd+的内部看门狗的时候,在程序的开始处调用init_wdt函数,然后在主程序的适当位置调用reset_wdt函数就可以实现启动以及复位看门狗。一旦程序跑飞或者死机,在规定的时间内(例如本程序中的5.46s)没有调用reset_wdt函数,看门狗计数器就会溢出,同时发复位信号给单片机,重新启动系统。4.6 tc35i模块at指令及中文短信息的收发4.6.1单片机与tc35i的硬件接口单片机与tc35i是通过标准串口进行数据交换的。因此只需要使用一根串口通信电缆(db9)连接单片机的串口与tc35i的串口即可。单片机与tc35i的通信电缆连接方式如图4-8所示。单片机与tc35i的波特率都设置为9600bit/s、8位数据位、1位停止位、无校验位。图4-8: 单片机与tc35i的连接方式4.6.2at指令介绍单片机与tc35i通讯实现任何功能都是通过向tc35i发送at指令来实现的。在tc35i的用户手册中用来操作tc35i的at指令非常繁多,但常用的指令并不是很多。表4-3列出了常用的at指令。表4-3: 常用at指令at指令功能描述at联机命令at+csq查询信号质量at+creg?查询注册状况at+ipr设置串行通信的波特率at&v显示gsm模块当前的一些设置at+cmgf设置短信编码格式 1-text格式,0-pdu格式at+cnmi选择短消息到来时系统的提示方式at+cmgr读取一条短消息at+cmgl将sim卡中存贮的短消息列表at+cmgs发送短消息at+cmgd删除一条短消息4.6.3单片机发送at指令的程序设计单片机与gsm模块(tc35i)的软件接口其实就是单片机通过发送相关的at指令对gsm模块进行操作的技术。如设置短信息的编码方式、读取手机的短信息内容、删除短信息内容、列出手机中还未读的短消息等。执行1条指令,并非某些资料介绍的那么简单,事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数都有严格的规定,二者必须依据这些规定实现数据交换,否则,就会出现通信失败。需要重点说明的是,所有at指令的指令符号、常数、pdu数据包等都是以ascii编码形式传送的。比如“a”的ascii编码为41h,“t”的ascii编码为54h,数字“0”的asc编码为30h等。单片机通过串口向手机发送每一条指令后,必须以回车符作为该条指令的结束,回车符的ascii编码为0dh。例如,单片机向手机发送“at+cmgf=0”这条指令,其ascii编码序列为“41h、54h、2bh、42h、4dh、47h、46h、3dh、30h、0dh”,最后一个字节“0dh”就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。当手机接收到一条完整的at指令后,手机并不立即执行这条指令,而是首先把刚才接收到的at指令的全部asc编码序列全部反发送出来(含0dh),其次发送1个回车符和换行符的asc编码即0dh和0ah,最后执行该条指令。例如发送“at+cmgf=0”这条指令给gsm模块,如果通信成功,则gsm模块返回“at+cmgf=0 ok”,即单片机接收到的数据是该字符串的ascii码“41h 54h 2bh 43h 4dh 47h 46h 3dh 30h 0dh 0dh 0ah 4fh 4bh 0dh 0ah”这表示该条指令已经被成功的执行。遵循以上的at指令执行原则,通过单片机发送一条at指令到gsm模块的c语言程序如下:int8u code command_at3 = atr;/send at/* 函数名称: at_send* 功能描述: 发送at联机命令,通信正常返回ok* 输入: 无* 输出: 无* 全局变量: 无* 调用模块: start_timer2,uart_send,close_timer2, deal_with_error*/void at_send(void) int8u i, error_counter;error_counter = 0;serial_inter_close();while(1) ti = 0; ri = 0;for(i = 0; i 9; i+)reci = 0x00;start_timer2();/用定时器2做超时处理,在其他子程序中使用功能相同 uart_send(command_at,3);for(i = 0; i 9; i+)while(!ri);reci = sbuf;ri = 0;close_timer2();if(rec5 = o&rec6 = k) break;/返回ok说明通信成功else if(error_counter+5) /否则延时重发delaytx100ms(10);else deal_with_error();serial_inter_open();delaytx100ms(10); ri = 0;这个子函数的功能是向gsm模块发送“at”这条联机命令,通信正常则返回“ok”。如果要发送其他at指令,则只需要在程序的开始定义该条指令,例如要发送“at+creg?”,在头文件中需要定义int8u code command_creg9 = “at+creg?r”;其中指令末尾的“r”是回车符。4.7 中文短信息的收发4.7.1 pdu模式及中文短信息的编码短信收发的编码格式一共有三种:block模式, text模式和pdu(protocol description unit)模式。其中block mode已经逐渐被淘汰,目前很少用了。text mode是纯文本方式,可使用不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。pdu mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。text mode比较简单,而且不适合做自定义数据传输,我们就不讨论了。下面介绍的内容,是在pdu mode下发送和接收短消息的实现方法。pdu串表面上是一串ascii码,由“0”-“9”、“a”-“f”这些数字和字母组成。它们是8位的十六进制数,或者bcd码十进制数。pdu串不仅包含可显示的消息本身,还包含很多其他信息,如sms服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的pdu串,结构是不完全相同的。我们先用两个实际的例子说明pdu串的结构和编排方式。例1,发送一条pdu格式的中文短信息,地区的smsc号码是(短信中心号码)+8613800371500,目标号码+8615939026810,短信息内容是“你好!”,则从单片机发送到gsm模块的pdu可以是“0891683108301705f011000d91685139096218f0000801064f60597dff01”,如果使用默认的短信中心号码则pdu串可以是:“0011000d91685139096218f0000801064f60597dff01”。对照pdu编码的规范,各段含义如表4-4所示。例2,接收一条短信息,smsc号码是(短信中心号码)+8613800371500,对方号码是+8615893810886,则从gsm模块读取的pdu串为:“0891683108301705f0240d91685198830188f6000880401001156423064f60597dff01”,表4-5列出了对该pdu串的详细解释。表4-4: 发送pdu串分析分段含义说明08smsc短信中心地址长度共8个8 位字节包含9191smsc地址格式用国际格式号码(在前面加“+”)683108301705f0smsc短信中心号码8613800371500字节翻转后补“f”凑成偶数个11基本参数(tp-mti/vfp)发送tp-vp,用相对格式00消息基准值(tp-mr)00d目标号码长度共13个十进制数(不包含91,“f”)91目标地址格式用国际格式号码(在前面加“+”)685139096218f0目标号码8615939026810,补“f”凑成偶数个00协议标示(tp-pid)普通gsm类型,点对点方式08用户信息编码方式(tp-dsc)8bit编码01短消息有效期(tp-vp)(vp+1)*5分钟06用户信息度(tp-udl)实际长度6个字节4f60597dff01用户信息(tp-ud)“你好!”unicode编码表4-5: 接收pdu串详解分段含义说明08smsc短信中心地址长度共8个8 位字节(包含91)91smsc地址格式用国际格式号码(在前面加“+”)683108301705f0smsc短信中心号码8613800371500字节翻转后补“f”凑成偶数个24基本参数接收、无更多信息、有回复地址0d对方号码长度共13个十进制数(不包含91,“f”)91地址格式用国际格式号码(在前面加“+”)685198830188f6对方号补“f”凑成偶数个00协议标示(tp-pid)普通gsm类型,点对点方式08用户信息编码方式(tp-dcs)unicode编码80401001156423时间戳(tp-scts)08-04-01 10:51:46 时区2306用户信息长度实际长度6个字节4f60597dff01用户信息内容“你好!”从以上两个表格中内容我们可以看出:(1)若基本参数的最高位(tp-rp)为0,则没有回复地址的三个段。从internet上发出的短消息常常是这种情形。(2)smsc号码、手机号码和时间的表示方法,不是按正常顺序顺着来的,而是按照先存放地位字节后存放高位字节的规则形成的,而且要加“f”将奇数补成偶数。在pdu模式中,可以采用三种编码方式来对发送的内容进行编码,它们是u

温馨提示

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

评论

0/150

提交评论