基于无线数传模块的公交车报站系统
- 七月 29th, 2008
Bus have became the most necessary means of transportation of wage-earners and students already, the public bus-stop announce system at present has the pronunciation function and can reveals the serial numbers and names of stops . But on one hand announcing the stops manually by the driver will increase the driver’s labor intensity, and on the other hand because of the driver’s wrong announce or failing to announce, it may cause passengers to leave by mistake or failing to leave . The phenomenon inferred above may run a negative influence on the public transit greatly, and can cause a lot of unnecessary influence on the passengers. For this reason, it is essential to study the bus-stop auto-announce system.
The main content researched in this thesis is the bus-stop auto-announce system based on the wireless transceiver module .This system announces the stop while the bus gets to the station in 10 to 20 meters, and it can reveals the serial number and name of stop with LED , when a bus gets to the master station ,it can send the information of its arrival to the master station which can help the master station to plan a schedule.Meanwhile, in order to prevent the matter that the system fail to run because of breakdown of this system, it also fits driver’s manual stop announce system.
The thesis analyses the overall scheme of the system and concrete frames of each module at first. Then it recommends MCS80C51 single chip microcomputer used to control this system, wireless transceiver module used to receive and send information of announcing , knowledge of PM50 pronunciation chip , the manual keyboard and LED used for announcing etc. In the end , it summarizes this system briefly and put forward the future developments of bus system.
KEY WORDS bus-stop auto-announce, 80C51 single chip microcomputer, pm50, wireless transceiver module, LED
摘要 I
ABSTRACT II
第一章 绪论 1
1.1 研制目的和发展现状 1
1.2 报站系统的新发展 3
1.3 论文组织结构 4
第二章 总体方案 5
2.1 工作原理 5
2.2 模块简介 6
2.2.1 接收模块 6
2.2.2 发送模块 6
2.2.3 无线模块的使用 7
第三章 硬件电路设计 9
3.1 硬件总体电路设计 9
3.1.1 PROTELL99 软件简介 9
3.1.2 软件使用中的问题 10
3.2 RX100芯片介绍及其应用 12
3.2 TX100芯片介绍及其应用 14
3.3 单片机控制部分 15
3.3.1 单片机的发展历史 15
3.3.2 单片机的应用 16
3.3.3 单片机的基本结构 16
3.3.4 80C51单片机的引脚功能 17
3.3.5 串行通信 18
3.4 语音报站部分 19
3.4.1 语音芯片简介 19
3.4.2 芯片管脚 20
3.4.3 应用电路 21
3.4.4 智能语音芯片的制作流程 22
3.5 显示报站和手动报站部分 24
3.5.1 LED数码管显示部分 24
3.5.2 按键部分 26
第四章 系统软件实现 29
4.1 软件设计思想 29
4.2 MCS-51指令系统介绍 29
4.3 串行通信口的工作方式及关键代码 31
4.4 程序流程图 32
第五章 结论 35
5.1 总结 35
5.2 前景和展望 35
结束语 38
参考文献 39
附录1 总体设计图 41
附录2 完整程序 43
摘要
公交车已经成为一般工薪族和学生族出门必须的交通工具,目前公交车上采用的公交报站系统具有语音和显示报站的基本功能,但由于报站时采用司机手动切换,一方面增加了司机的劳动强度,另一方面由于司机的误报或漏报,造成乘客误下或漏下,对于公交运营产生了很大负面影响,更会对乘客造成很多不必要的影响。为此,研究公交车自动报站系统是非常必要的。
本文主要研究的是基于无线数传模块的公交车自动报站系统,该系统在公交车到站前10到20米语音报站,并且有LED数码管显示,到总站时公交车可向总站发送到站信息,方便总站安排公交车次;同时,为了防止自动报站系统故障时不能报站,该系统也设置了司机手动报站系统。
本文首先介绍了系统的总体方案和各个模块的具体框架图;然后介绍了控制该系统的MCS80C51单片机,收发报站信息的无线数传模块,用来语音报站的PM50语音芯片和手动报站的键盘和LED数码管等知识;最后对该系统进行了简要总结并提出对未来公交车系统的展望。
关键词 自动报站,80C51单片机,语音芯片pm50,无线数传模块,LED
ABSTRACT
第一章 绪论
1.1 研制目的和发展现状
随着社会的发展,公交车已经成为我们许多人出行必不可少的交通工具,在日常生活中,我们经常会遇到这样的情况:公交车每到一站,都需要人为的按报站器,有时会过站再按,有时甚至不报站,给不少乘客带来不便;即使有售票员报站,也会因其地方口音,使外来乘客产生误解,引起不必要的麻烦,而准确的报站则直接影响到我们的正常日程。
目前公交车上采用的公交报站系统具有语音和显示报站的基本功能,但由于报站时采用司机手动切换,一方面增加了司机的劳动强度,另一方面由于司机的误报或漏报,造成乘客误下或漏下,对于公交运营产生负面影响。全自动公交车语音文字报站系统是针对公共汽车公司需求设计而成,与其他同类产品区别在于:采用全自动的方式进行自动报站,完全不需要驾驶员在进站前操作键盘,防止司机分散注意力,真正实现自动报站功能,将公交报站器提高一个新档次,是传统公交报站器更新换代的产品。同时可以与LED电子显示条屏配套应用,实现语音、文字同时报站功能,为公交车装备现代化,提高服务档次起到本产品应尽的责任。
目前的公交车自动报站系统主要有以下三种:
第一种是GPS(Global positioning system,全球定位系统)自动报站系统,现在已经正式上市,他可通过GPS全球定位技术(误差在4米以内)确定公交车位置,自动报出车辆所在站名,以及服务用语,在特殊情况下还可以把手动报站,车内呼叫等功能一并实现,还可以连接车内LED(Light emitting diode ,发光二极管)大屏显示广告以及站台信息,该系统还可以和GPRS( General Packet Radio Service, 通用分组无线业务)通讯系统连接,实现实时监控公交车运行请况,实现总调度过程。
GPS 系统是由美国国防部开发的高精度卫星导航系统。用户通过用户设备接收GPS 卫星信号,经信号处理而获得用户位置、速度等信息,最终实现利用GPS 进行导航和定位的目的。GPS 语音自动报站系统,采用先进的卫星定位技术彻底改变了传统公交车语音报站器必须由司机操控才能工作的落后方式,进站、出站自动播报站名及服务用语,准确、及时、完全不需要人工介入,是公交车语音报站器的一项技术革命,它将为公交车的管理人员和乘客带来福音,实现了公交车报站器的完全智能化。目前,国内GPS 语音自动报站系统处于试验阶段,仅有北京,广州、青岛等几个城市采用GPS 语音自动报站技术。
基于GPS 的公交车自动报站系统能完全实现预定的功能,能大大降低司乘人员的劳动强度,加大公共交通运营管理力度,增强公交车管理的科学性。对维护运营秩序、提高运营效率、保证运营安全和促进智能公交的发展都具有积极意义。目前的系统还存在一些不足,在有些城市,因为树木、高楼的遮挡,存在有些路段接收不到GPS 信号的问题,这就需要利用陀螺仪等其它辅助定位系统和GPS 定位相结合进行定位。系统下一步发展趋势,是GPS 自动报站系统和GPRS 技术和GIS(Geographic information system,地理信息系统) 相结合,即把GPS 定位、GPRS 无线通信网和城市地理信息系统结合起来,对城市的车辆进行实时的控制与管理,形成城市的智能交通网络,进一步促进城市交通的发展。
第二种是基于电磁波理论的公交车自动报站系统。
可利用公交车上现有的移动电视来接收电磁波,从而显示信息,并在车底部安装线圈并通以微量电流;在距站点数百米处的车道下埋设数匝线圈,其两端连向站牌;并在站牌上安装相关装置。
公交车以一定速度在路上行驶,在到站前会经过路下线圈,路下线圈切割车上通电线圈所产生的磁场而产生感应电流。电流流经站牌,触动内部装置,使站牌发送出电磁波。在车上的乘客就能从荧屏上获取相关报站信息。
该系统的优点是能准确报站,不但给乘客带来方便,而且能让司机更加专心于驾驶,加强了道路安全性。但是铺设价格昂贵,其可靠性也没有实际验证,现在只有部分专家支持,并没有实际使用。
第三种是基于单片机的公交车自动报站系统,而这种系统又大致由两种技术支持。
其中一种的技术关键是对车轮转轴的转角的脉冲进行计数,将计数值与预置值对比,即可确定报站时刻,达到准确自动的目的。以AT89C51为CPU(Central Processing Unit,中央处理器)在中断处理程序中对外来脉冲计数,利用ISD4004输出语音。系统完成后就可以上机调试,使用时可用配套的烧写器将站与站之间的距离写入单片机内,如果不知道距离可以在机上采用手动方式输入,使装置处于输入状态,出站时按下录入键,到站时按下确定键,就可以将站与站之间对应的数据写入单片机。使用中如果出现错报,采用手动调整即可。该方式应用89C51单片机的高速计数器端口进行脉冲计数,以距离来控制报站时刻,首次实现了模糊控制,改变现有设备的不足。做到简单实用自动化程度高。传感器在公交车上的应用极大的提高了设备功能。
但是在改变线路或者增加站台等情况时,修改程序比较复杂,尤其是遇到突发状况时司机的任何解决突发状况的方法都将使该系统不能正常运作,目前该系统在实际中使用较少。
另外一种基于单片机的公交车自动报站系统就是利用无线数传模块来实现的。每个站牌上设一个发送装置(主要是TX100芯片),每辆公交车上设一个接收装置(主要是RX100芯片),发送装置不断发送信号,接收装置即公交车在离站10到20米的时候接收到信号,然后就自动语音报站,同时设有LED数码管显示和手动报站装置。这种就是该论文中设计的报站系统,接下来的论文将详细介绍。
这种报站系统软件编写简单,修改容易,而且芯片价格低廉,大批生产比GPS系统达到更高的性价比,是公交车自动报站系统的较佳选择。
另外,现实生活中,如果调度室能够掌握每辆公交车的到站情况,可以提高公交系统的工作效率。 但公交线路多处于繁华地带。如果采用有线方式来传输数据,不但铺设线路的施工复杂、成本高,而且,如果日后公交线路需要变更(如车站位置更改) ,改变链路会十分麻烦。
在前面提到的GPS系统中这个问题解决的比较好。还有一种便捷的无线数据传输途径是通过移动通信中的发送手机短消息方式,即在每个车站安装手机短消息收发系统,以发送短消息的方式来传输到站信息。 但是公交车站间通信次数比较多,通信费用会比较高。 既便捷又经济的方法是在每个车站安装无线数传模块来传输数据。 但若采用以调度室为基站的主从方式进行通信,需要很大的发射功率来保证覆盖所有的车站,同时车站也要有很大的发射功率来保证基站能收到车站上传的信号。 因此,采用基于令牌传输方式的无线接力数据通信是最理想的选择。
采用基于令牌传输方式的无线接力数据通信比较复杂,在该论文中的自动报站系统对这个问题的处理比较简单,只是在到达总站的时候公交车才会发送信息给总站,方便总站调度。
1.2 报站系统的新发展
目前大多数公交车报站系统设计主要考虑为公交车内的乘客服务,没有考虑到在站台等车乘客的需求。虽然站台有站牌,但对于盲人、识字不多以及对乘座公交车不太熟悉的人来说,还不是很方便;再加之,到达同一站台的公交车较多,也很容易引起乘客的混淆。
有关专家在原公交报站系统的基础上应用射频芯片NRF401设计了一款无线公交车报站系统,在该系统中,公交车内通过半自动报站设计的同时把该车的相关信息通过由NRF401组建的无线电路传送到站台,完成即将到站车辆的预报以及显示该车所经路线基本情况【1】。通过在站台增加语音播报和动态文字显示设计,使原来仅有一个站牌来提供简单静态线路信息的站台成为一个公交信息亭。方便了乘客乘车,有效地提高了公交运营公司的服务质量。
在系统中无线通信电路采用无线射频收发一体型芯片NRF401组建,当公交车快到达站台时,车内自动报站的同时通过无线收发电路把该路车车次、上下行等情况传输到站台,站台接收电路收到信息后送给单片机,由单片机控制完成站台的语音播报和液晶显示。
系统的硬件设计中充分考虑了性价比,用最少的器件设计出满足要求的硬件电路。该系统的总体结构以AT89C52单片机为核心,由ISD1420语音电路、模拟射频电路、LCD(Liquid Crystal Display,液晶显示屏)显示电路等组成。
本系统应用NRF401芯片来实现无线通信降低了系统成本,同时对单片机数据通信的差错采用循环冗余码控制和反馈重传方式,大大提高了数据通信可靠性,误码率很小。语音播报软件设计,使语音自然流畅,完个符合人们的自然习惯,同时为进一步设计功能更多、更人性化的公交报站系统做了技术铺垫。
2006年开始,济南部分地区就已经有这种公交智能预报系统。希望公交车报站系统能够越来越完善,越来越人性化。
1.3 论文组织结构
该课题以单片机为基础,重点研究无线数传模块以及语音芯片和单片机之间的数据收发问题,最后研制出可以实际应用的公交车自动报站系统。
论文共分五章,组织如下:
第一章绪论,主要说明研究课题的目的和研究意义,然后介绍公交车自动报站系统的发展和国内外的研究现状,最后介绍了本文的主要研究内容和论文的结构。
第二章总体方案,介绍了该系统的工作原理和各个模块的工作原理。
第三章硬件设计方案,介绍了总体硬件电路图和硬件设计中使用到的单片机,无线数传模块,语音芯片,键盘和数码管等有关内容。
第四章软件设计方案,介绍了系统各个部分的程序流程。
第五章是结论和展望。
第二章 总体方案
2.1 工作原理
该系统的工作原理如图2.1所示,安装在站牌及其他建筑物上的发射模块每隔3秒钟发射一次该站的地址信号,当汽车行驶到发射模块的作用半径时,检测接收到的地址信号,如果该地址刚好是该车的行驶路线停靠点,自动报站器发出一次报站音,显示一次站点名称,并为下一次报站做准备。
图2.1 工作原理图
该报站器的具体功能如下:
1) 公交车离站台十米到二十米识别并自动报站,通过语音和LED数码管显示报站。
2) 报站器设手动按键,另设站点编号LED显示,方便手动报站,到哪一站只要按下相应编号的键即可。
3) 到达总站时,总站会收到公交车发送的到站信息,方便总站调度。
4) 后台管理软件具有报站信息管理和写入修改功能。具体功能如下:
A、 建立每路车的站点信息(地址),对应的语音和显示报站信息文件,要求在同一文件中,并且一一对应。
B、 信息文件方便修改、保存、打印。
C、 信息文件可以通过串口写入到报站器中。
2.2 模块简介
2.2.1 接收模块
接收模块采用51系列单片机、发送模块 TX100、接收模块RX100以及键盘组成,系统组成框图如图2.2所示。
图2.2 接收模块组成框图
车载无线接收模块由上图所示的六部分组成,单片机是核心部分,通过指令来控制其他各个部分的运作;RX100接收模块用于接收每个车站所发送的信号,以方便自动报站;TX100发送模块只在到达总站时发送信号方便总站调度;语音芯片部分用于语音报站;串口部分接LED数码管,用于显示报站;键盘为手动报站部分,用于司机手动报站。
汽车在离站20米左右将收到信号,当汽车收到某一信号两次或三次时,在没有其它信号的情况下,单片机根据还原的语音信号,通过语音合成芯片播放报站和广告语音。当汽车在拐弯处或相邻两条线路间时,会收到两个或多个无线信号,产生这种情况,单片机会选择暂时不报站,延时一段时间,取收到信号最多的站名来报,或者报汽车行驶在某站到某站之间。
2.2.2 发送模块
车站无线发送模块采用无线发射模块TX100,采用8051单片机控制,控制内容包含发射时间间隔,发送数据内容。系统组成框图见图2.3所示。
图2.3 车站无线发送模块
发射模块的数据更改采用写片器进行,通过修改单片机中的数据,达到将需要发射的数据代码(主要是汉字编码)写入单片机中,从而实现报站语音的修改。发射部分采用太阳能电池加充电电池双电源供电,保证发射部分在无光照情况下能工作。
2.2.3 无线模块的使用
无线模块使用时应注意如下几点:
1. 无线模块电源和用户数字电源(如:单片机系统等数字系统电源)应在系统总电源接入出一点相联;
2. 无线模块电源地应和用户系统的总电源的相联;
3. 发射和接收模块的距离应保持两米以上的距离;
4. 附近尽量避免有同频干扰源;
5. 电源尽量选用经过稳压模块和电容处理后的电源,在带负载的情况下,用示波器观察电压的波动小于1‰,即5mV;
6. 发送数据包格式建议先发射5个以上的字节55H,再发射一个字节FFH,最后发射数据;
7. 建议把RF部分和其它应用电路系统分开供电,以最大限度降低电磁串扰;
8. 工作状态时一定注意不能插拔天线;
上面注意事项中部分注释如下所示:
1. 通信距离指在无遮挡开阔地,使用导线作天线,天线离地1.5 米,4800bps(幅移键控)/9600bps(频移键控)数据率,收发模组均处于静止状态,433.92MHz 频点,BER(位误码率)< 时所测得。
2. 幅移键控模组不适合移动中通信;频移键控模组在高速移动中(相对速>60Km/h)通信时,可靠通信距离大致会减半。
3. 架高天线或使用高增益定向天线会有利于通信的稳定或提高可靠通信距离。同样的,通过在软件中使用编码、交织以及前向纠错技术,会等效提高接收增益,从而达到提高可靠通信距离的目的,一般软件纠错带来的等效增益在2-5dB(FSK)左右,具体值与算法及使用环境的不同而不同。
第三章 硬件电路设计
3.1 硬件总体电路设计
发送部分和接收部分的详细电路图见附录1和附录2。
3.1.1 PROTELL99 软件简介
随着电子技术的飞速发展和新型电子元器件的不断涌现,现代电子电路已经变得越来越复杂。如何快捷,有效,准确的完成电子电路的设计工作,已经成为广大设计人员十分关心的问题。而另一方面,微型计算机技术的迅猛发展,为我们提供了一个进行电路附注设计的完美平台。Protell 99 是Protell Technology公司与1999年推出的运行与Windows系统下的EDA(Enterprise Digital Assistant, 企业数据处理终端)电子辅助设计软件【2】。
在之前,许多软件公司都推出了自己的电子线路辅助设计工具。电路设计者在进行电路设计的时候常常采用不同公司开发的工具,这意味着设计者不仅需要掌握这些数目众多的软件使用方法,而且还要能够熟练地在这些软件之间进行文件交换操作,并适应各种软件的使用风格。随着电子线路辅助设计功能的不断强大,这些工具也变得越来越难以学习和使用,给设计者带来了很多困扰。
而Protell 99 被设计成了一个客户/服务器应用程序,完全消除了上述问题带来的困扰。在Protell 99 提供的集成的客户/服务器环境中,设计者可以运行各种服务器程序组件,如原理图设计服务器,网络表生成服务器,电路仿真服务器,PCB(Printed Circuit Board,印制板)设计服务器和自动布线服务器等。不论是Protell 99 本身的组件还是来自第三方的设计组件,都可以很容易地 嵌入到Protell 99中,以增强其应用功能。
客户程序提供给设计者一些基本的使用资源,如菜单,快捷栏,工具栏,状态栏,工程管理器等等,设计者对这些资源可以自由定义,建立便于自己使用的菜单,快捷键,工具栏等。
Protell 99 虽然包含有数目众多的服务器程序,但基本上可以分为5个组件:
1) 原理图设计组件
2) PCB设计组件
3) 自动布线组件
4) 可编程逻辑器件组件
5) 电路仿真组件
各部分功能分述如下:
原理图设计组件可以进行原理图和层次原理图的设计。设计者可以将整个电路系统分为几个小系统,小系统又可分为几个功能模块,功能模块再分为几个基本的模块,最后,设计者进行基本模块的设计,并依照各层次的关系将基本模块组织起来,完成整个电路系统的设计。相反,设计者也可以从基本模块的设计着手,实现自底向上的设计。
PCB设计组件的主要功能是用于设计出印制电路板图,其设计分辨率可以达到0.000mil(mil为英制毫吋单位,1mil=0.0254mm),能够设计的工作层数达32层,设计的最大版面面积为 ,板上元器件的最小旋转角度可达度。
和原理图设计组件一样,PCB设计组件也提供有强大的编辑功能,如库文件创建,修改功能和报表输出等功能。另外,它与自动布线组件相结合。有助于设计者摆脱沉重的手动布线工作,并且由于其具备在线式的设计规则检查功能,所以在岁大程度上避免了设计者的失误。
自动布线组件是为PCB设计组件服务的,用以实现电路板布线的自动化。它作为一个服务器程序,内嵌于PCB设计组件中。自动布线组件基于人工智能技术,它可对PCB板进行优化设计,所采用的拆线似的多层迷宫式布线等算法,可以同时进行全部信号层的自动布线,并进行优化。
设计者可以采用两种方法进行可编程逻辑器件设计:1)在原理图设计组件中使用专用的PLD(Programmable Logic Device,可编程逻辑器件)库”Symbols.lib”来进行器件的设计。2)采用CUPL语言来编写PLD的功能描述文件。完成可编程逻辑器件的设计后,设计者对器件进行编译操作,生成熔丝文件,用以制作具备特定功能的元器件。
设计者可依据库中提供的仿真元件库”sim.ddb”,在原理图设计组件中进行电路设计,最后使用电路仿真组件对所设计的电路进行仿真,并根据输出信号的状态调整电路的设计。显然,这个组件给设计者的电路设计工作带来了极大的不便,有助于减少设计者工作中的失误。
3.1.2 软件使用中的问题
1,Protel中常用元件的封装:
以下元件在Protel DOS Schematic Libraries.ddb,Miscellaneous Devices.ddb(以上是schlib)Advpcb.ddb,Transistors.ddb,General IC.ddb(以上是PCBlib)等库文件中,可以使用通配符”*”进行查找:(如表3.1所示)
提醒:使用封装时最好少用水平/垂直翻转功能;自己建好的元件库或者PCB,一定要1:1的打印出来,和实际比较,以确保无误;有条件的话,尽量先买好器件,再定封装,可以节省很多时间。
表3.1 常用原件封装表
电阻,小电感 axial0.3/axial0.4 0805/0603等
小电容 RAD0.1/ RAD0.2 0805/0603等
电解电容 (RB.2/.4) 1210/1812/2220等
小功率三极管 TO-92A/B SOT-23
大功率三极管(三端稳压) T0-220
小功率二极管 DIODE-0.4
双列IC DIPxx SO-xx(xx代表引脚数)
有源晶振 DIP14(保留四个顶点,去掉中间10个焊盘)
四方型IC 大部分需要自己用向导画,尺寸参照datasheet
接插件 SIPxx/IDCxx DB9/DB25
2,由SCH生成PCB时提示出错:
sch编辑界面中选择design–>updatepcb,在出现的对话框中按”Preview Change”按钮,选中 Only show Errors会列出所有错误:
1.footprint not found :确保所有的器件都指定了封装;确保指定的封装名与PCB中的封装名一致;确保你的库已经打开或者被添加。
2.node not found :确认没有”footprint not found” 类型的错误;编辑PCBlib,将对应引脚名改成没有找到的那个node。
3.Duplicate sheet number :degisn-options-organization,给每张子电路图编号。
4.二极管的引脚错误:这是Protel99SE的一个经典问题,它的pcb库和sch库的引脚名不同, 一个叫1,2;一个叫A,K。修改办法:新建一个封装,统一用12或者AK。
3,电容,二极管,三极管等器件的极性问题【3】:
直插铝电解:负极附近有黑色的”-”标记,如果没有剪腿的话,长腿为正。
贴片钽电解:有横杠的一头为正。
二极管: 有圈的一头为负。
4, 一些基本概念和术语:
OC(Open Drain):集电极(漏极)开路输出,使用上拉电阻后可以适应不同的接口电平,并具有”线与”的功能(即两个输出端直接相连就可以实现”and”逻辑)。
上拉下拉:即将输出节点通过电阻连接到电源(上拉)或地(下拉)。OC输出器件必须使用上拉电阻以输出高电平,此外为了加大输出引脚的驱动能力也常使用上拉电阻(典型的如单片机)。
阻值的选择原则包括:从节约功耗及芯片的灌电流能力考虑应当足够大;从确保足够的驱动电流考虑应当足够小;对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在1k到10k之间选取。对下拉电阻也有类似道理。
rail-to-rail:即”轨到轨”,指输出(或输入)电压范围与电源电压相等或近似相等,在低电压和单电源系统中很有用。
TBD:To Be Determined,未定参数,常见于Preview版datasheet,通常意味着芯片还没有正式投产。
3.2 RX100芯片介绍及其应用
RX100 ASK无线接收模组功能结构图如图3.1所示【4】。
图3.1 RX100 ASK无线接收模组功能结构图
其典型应用电路为图3.2所示。
图3.2 RX100典型应用电路
使用该芯片的注意事项如下:
用户需把RF部分和其它应用电路系统分开供电,以最大限度降低电路的串扰;如果经过试验验证,在满足用户使用要求的前提下也可以集中供电。
为保证最佳之使用效果,用户应使用标准50欧天线以保证最大辐射效率,如果使用普通导线作天线,导线长度请参考下式计算:
导线长度=7135/TX100中心频率(MHz)cm
常用频点天线长度列表于3.2:
表3.2 常用频点天线长度表
中心频率(MHz) 230 315 433.920 470 867
天线长度 (cm) 31 22.7 16.4 15.2 8.2
由于RX100 ASK无线接收模组没有待机模式,在需要极低功耗的系统设计中,由于RX100的工作电流小,可以使用一个74HC系列的门电路(如74HC14)输出给其供电,并采用1:X接收监听方式侦测发送数据包,这样的处理可以将整个RF接收部分的功耗降低到几十个μA以内。
RX100 ASK无线接收模组工作电源为4.5-7V,对于电池供电的系统(2.7-4.5V),应该使用其他电路进行升压转换。
3.2 TX100芯片介绍及其应用
TX100 ASK无线发送模组功能结构图如图3.3所示【5】。
图3.3 TX100 ASK无线接收模组功能结构图
其典型应用电路为图3.4所示。
图3.4 TX100典型应用电路
使用该芯片的注意事项如下:
用户需把RF部分和其它应用电路系统分开供电,以最大限度降低电路的串扰;如果经过试验验证,在满足用户使用要求的前提下也可以集中供电。
TX100模块在1.8V-5.5V工作电源下均可以可靠工作,但其工作电流及RF辐射功率会有很大差别;不同工作电压下,数据接口部分电平要求于下:
发送使能(TXEN):”1″信号=Vcc±0.3V “0″信号=公共地电平±0.3V
发送数据(DATA): 1.5V<”1″信号<6V “0″信号=公共电平±0.3V
接口驱动电流 : IH >0.5 mA 。
为保证最佳之使用效果,用户应使用标准50欧天线以保证最大辐射效率,如果使用普通导线作天线,导线长度请参考下式计算:
导线长度=7135/TX100中心频率(MHz) cm
常用频点天线长度列表于表3.3:
表3.3 常用频点天线长度表
中心频率(MHz) 230 315 433.920 470 867
天线长度 (cm) 31 22.7 16.4 15.2 8.2
直接使用单片机串口进行无线通信时,为提高接收机灵敏度,并减小因为错位引起的误码,请参考实用手册中的数据帧结构,并在接收端采用帧同步数据接收。
在需要极低功耗或高速率的系统设计中,用户可直接使用I/O口线并采用华荣汇的脉码调制方式来传送数据。如果采用串口来传送,请注意串口的空闲状态为”1″电平(MASK=1),在传送结束后应该把TXEN和DATA端全置低,以进入待机模式。
在从待机状态返回时(TXEN从”0″变为”1″),需要等待大约1-2mS后才可以开始数据传送;否则在数据率超过1200bps时,传送数据的第1位将可能丢失。
3.3 单片机控制部分
3.3.1 单片机的发展历史
第一阶段(1976-1978):单片机的探索阶段。探索计算机的单芯片集成,单片机(Single Chip Microcomputer)的定名即缘于此。产品以Intel公司的MCS-48为代表。
第二阶段(1978-1982):单片机的完善阶段。体现工控特性的位地址空间及位操作方式;增加了许多突出控制功能的指令。产品以Intel公司的MCS-51为代表。
第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
第四阶段(1990-):微控制器全面发展阶段。在各领域广泛应用,出现高速、大寻址范围、强运算能力的通用型单片机及小型廉价的专用单片机。
3.3.2 单片机的应用
单片机在智能仪表中的应用:单片机广泛应用于各种仪器仪表,使仪器仪表智能化,提高测量的自动化程度和精度。
单片机在机电一体化中的应用:机电一体化是机械工业发展的方向。机电一体化产品是指集机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,如数控机车。单片机作为控制器,可提高产品的自动化、智能化程度。
单片机在实时控制中的应用:如工业测控、航空航天、机器人。
单片机在分布式多机系统中的应用。
单片机在人类生活中的应用:如各种家用电器、玩具。
单片机在计算机外围设备、网络产品的应用【6】。
3.3.3 单片机的基本结构
单片机的系统结构框图如图3.5所示。
图3.5 单片机系统框图
各组成部分介绍如下【7】:
1) 中央处理器(CPU):中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2) 内部数据存储器(RAM(Random-access memory, 随机存取存储器)):8051内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算的中间结果或用户定义的字型表。
3) 内部程序存储器(ROM(Read-Only memory,只读存储器)):8051共有4K字节程序存储器(ROM),用于存放用户程序和数据表格
4) 定时/计数器:8051有两个16位的可编程定时/计数器,以实现定时或计数,当定时/计数器产生溢出时,可用中断方式控制程序转向。
5) 并行输入输出(I/O(INPUT/OUTPUT,输入/输出))口:8051共有4个8位的并行I/O口(P0、 P1、P2、P3),用于对外部数据的传输。
6) 串行口:8051内置一个全双工异步串行通信口,用于与其它设备间的串 行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
7) 中断控制系统:8051具备较完善的中断功能,有五个中断源(两个外中断、两个定时/计数器中断和一个串行中断),可基本满足不同的控制要求,并具有2级的优先级别选择。
8) 时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的时序脉冲,但需外接晶体振荡器和振荡电容。
9) 位处理器:又称为布尔处理器,以状态寄存器中的进位标志位C为累加位,可进行置位、复位、取反、等于0转移等位操作。位处理操作是通过运算器实现的。
10)总线:以上部件都是通过总线连接起来,系统的地址信号、数据信号和控制信号都是通过总线传送的。总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。
3.3.4 80C51单片机的引脚功能
MCS-51是标准的40引脚双列直插式集成电路芯片【8】。
MCS-51单片机芯片40条引脚的定义及简单功能说明如下:
P0.0 ~ P0.7: P0口8位双向口线。
P1.0 ~ P1.7 :P1口8位双向口线。
P2.0 ~ P2.7 :P2口8位双向口线。
P3.0 ~ P3.7 :P3口8位双向口线。
ALE:地址锁存控制信号。在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
PSEN:外部程序存储器读选通信号。在读外部ROM时,PSEN有效(低电平),以实现外部ROM单元的读操作。
EA:访问程序存储控制信号。当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
VSS:地线。
VCC:+5 V电源。
P3口线的第二功能。P3的8条口线都定义有第二功能。
3.3.5 串行通信
在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。
而在该系统中无线数传模块就是接在单片机的串行通信口【9】。
按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。
1. 异步通信(Asynchronous Communication)
在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据均是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。
在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。(字符帧(Character Frame)也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成。)
异步通信的另一个重要指标为波特率。(波特率(baud rate)为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。)
2. 同步通信(Synchronous Communication)
同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符。但是单同步字符帧和双同步字符帧均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。
3.4 语音报站部分
3.4.1 语音芯片简介
PM50系列智能语音芯片是某公司2003年最新开发的智能语音产品,它既是语音播放电路,也是智能单片机。其音质水平、价格都要略优于著名的ISD电路,同时也有21KHZ高保真音质。而其开发设计简单度、智能控制的简单度、整体性价比等指标要远胜过ISD,而如果用量超过1~3万片,可以原样投产掩膜片,价格更低至五~十分之一。可以说,该芯片连同具有USB(Universal Serial Bus,通用串行总线)电脑接口的atvoc-PM50语音编程开发系统一起,开创了数码语音电路的新纪元,是智能语音电路的一场革命。
该芯片由专用的语音单片机和FLASHRAM存储器集合构成,它既有几秒到200秒的多段语音播放功能,也有单片机可编程的智能特性,大规模复杂电路已经缩微到只有COB28封装(18*36mm)的印板上,可以方便地作为DIP28封装的标准集成电路来使用。
其主要特点为:
(1)使用上可以和普通音乐片一样简单方便
(2)FLASHRAM结构,可以反复擦写录入,寿命在1万次以上
(3)电源电压3~6V,静态电流1uA,工作电流50mA
(4)直接驱动8欧姆0.5瓦的喇叭
(5)一系列多规格可互换,开发系统共用
(6)录制的语音可分1~8段或128段
(7)自带八个输入端口,九个输出端口,功能均可由用户自定义
(8)开发系统采用最新的USB电脑接口
(9)开发用的电脑软件系超智能傻瓜图形设计,外行也能使用
(10)配合编程软件可以开发出并行、串性、智能型等多种控制模式
(11)开发系统支持用户对PM50芯片在线编程(ISP)
(12)音质比著名的ISD产品略好,同时也有21KHZ高保真音质。
(13)最小系统的外围电路只需一只振荡电阻、一只电源滤波电容。
(14)有13/20/50/100/250/400秒多个时间档次可选。
(15)完成开发和试验生产后,直接用源文件投产掩模芯片,电路设计、音质效果、功能性能不变。
3.4.2 芯片管脚
PM50芯片管脚如图3.6所示:
图3.6 PM50芯片管脚图
其各脚定义为表3.3所示:
1 、电源电压为3~6V,静态电流约1uA 。
2 、 振荡电阻上拉到正电源,在正常品质下振荡电阻一般取值240K标准值是255K;在高级品质(HQ(High Quality,高品质))下 振荡电阻一般取值120K 。
3 、任何喇叭端严禁接地或串接喇叭后直接接地或正电源。
4 、PM50 板上可以焊接两个器件:滤波电容0.1UF,振荡电阻240K,可选贴片器件。装上后,外部不需要再装。另外在PM50编程器内部已装有240K振荡电阻,测试或演示时PM50板上无须再装振荡电阻【10】。
表3.3 PM50管脚定义表
脚号 名称 用途 脚号 名称 用途
1 GND 电源地端 28 FM 编程端
2 FC 编程端 27 FD 编程端
3 FA 编程端 26 FK 编程端
4 K1 输入1 25 R 硬件复位
5 K2 输入2 24 O1 输出1
6 K3 输入3 23 O2 输出2
7 K4 输入4 22 O3(LED2) 输出3
8 K5 输入5 21 O4 输出4
9 K6 输入6 20 O5 输出5
10 K7 输入7 19 O6 输出6
11 K8 输入8 18 O7 输出7
12 ROSC 振荡电阻 17 O8 输出8
13 SP1/DAC 喇叭端1 16 LED1 指示灯
14 SP2 喇叭端2 15 VDD 正电源端
3.4.3 应用电路
DAC(Digital Audio Compress,数字音频标准)方式,PM50芯片的13脚(SP1/DAC)作为音频输出,14脚(SP2)悬空。如图3.7所示。
图3.8是89C2051单片机与PM50芯片接口的电路原理图,同时也是测试PM50语音合成效果的发码测试板,能够令用户选择播放PM50中的任意一段或多段的组合。
图3.8 单片机与PM50芯片连接图
图3.7 DAC方式
3.4.4 智能语音芯片的制作流程
1制作音源文件,如果是做正规商业化产品,一般需要到广播电台、电视台、电影制片厂去录制音源,制作方会在正规录音棚、邀请专业播音员、在专业录音编辑设备及录音师的操作下录制,然后提供一盒磁带或一张光盘给你。你用录音磁带卡座或CDROM将声音文件转进电脑,制作成一个或几个WAV文件,即有了音源文件。如果只是做实验,可以自己对着电脑声卡的话筒直接录音,或用电脑播音员软件将需要的文字转换成对应的普通话读音,都是录制成WAV文件。
2编辑音源文件,在电脑中利用音频编辑软件,如GOLDWAVE、COOLEDIT等,将音源文件做相应的处理,如降噪、去掉杂音、淡入淡出、剪辑、混音等等。注意,形成的WAV文件为单声道,22.5KHZ取样,16BIT采样位数文件较为合适。本软件会自动做转换工作把该源文件转成相应格式。
3调入音源文件,在PM50中只要是WAV文件都可以用,软件会自动做格式转换工作。在Wav filename的空栏目里点击,就可以选择调用相应的WAV文件,调入后就可以直接试听这文件的声音,在second栏目会自动给出这段语音的时间长度,如果要删除或重选,就点按中间的X按钮;装完后,在Total Sound Length栏目中自动显示总时间长度。
4编辑烧录文件,在PM50中在Function栏目里选择输入的控制功能;在OUTPUT栏目里选择输出的控制功能。然后,点击”SAVE”按钮,将烧录文件取名字、存盘。软件会将该烧录文件存成*.PM5文件名,这时,点击”WritePM50″按钮就开始烧写语音电路组件了,当进度条显示100%后即烧录完成。
5测试语音电路组件,烧录完文件后,即可以在PM50烧录器上按键听取声音情况,如满意即可拔下语音电路组件使用;如不满意,重复上述操作重新编辑就好了。
另外,还有一些注意事项:
要想录制好的语音芯片放音效果都达到自己理想的要求,这就需要在制作音源时保证声音的效果达到最好,一般录音采用44.1K采样率,立体声16位的录音方式。
制作PM50语音芯片,如果只做一般的语音处理,通常有一种”嘶嘶”的噪声,这就需要用COOLEDIT着重做下面几点处理:
1,假设音源是44K采样的立体声,首先进行转换采样方式的处理;运行软件”Edit-Convert Sample Type”,将采样率(Sample Rate)设定为22050Hz,然后将Quality的滑动条选到最右High Quality,数值显示是999;然后在同一个对话框内将立体声改变成单声道,具体操作”Channels-Mono”;最后是分辨率Resolution选择16bit确定完成。
2,待转换过程结束后,会得到一个单声道的波形;试听声音,将声音中不需要的杂音(破音、嘶嘶声、啪啪声)去掉,一般的操作步骤如下。观察波形,并试听声音,一般字与字之间,段与段之间的停顿部分会有相对明显的噪声,选中您认为是噪声的部分做静音处理,操作”Effects——Silence”。破音,”啪啪”声一般出现在波形有大的跳变的位置,在停顿的位置也经常回出现”啪啪”,声,这时应该将对应位置的波形幅值做一定的调整,操作”Effects—–Amplitude—–Amplify”,调整对话框中放大常数Constant Amplification。对于语音开始和结束部分、停顿处有”啪啪”声的,一般做”淡入淡出”处理, 操作和上一操作在同一对话框中,选中另一标签Fade(衰减),选择预制的”Fade in , Fade out”即可。
3,消除噪声后,适当的提高声音的幅值,提高信噪比(S/N)。操作”Effects—–Amplitude—–Hard Limiting”,在对话框中Limit Max Amplitude to框中填写15~20dB,这是一般值,应该根据声音不同做适当调整。
3.5 显示报站和手动报站部分
3.5.1 LED数码管显示部分
常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示【11】。
1.数码管简介
1) 数码管结构
图3.9 数码管外形及结构图
数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 ~9、字符A ~ F、H、L、P、R、U、Y、符号”-”及小数点”.”。数码管的外形结构如图3.9所示。数码管又分为共阴极和共阳极两种结构(如图3.9右)。
2) 数码管工作原理
共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
3) 数码管字形编码
要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。对照图7.10(a),字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示”0″,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数码管的字型编码应为:00111111B(即3FH)。依此类推。
2.静态显示接口
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。
3.动态显示接口
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。
采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。
4.显示报站电路如图3.10所示:
图3.10 显示报站电路
3.5.2 按键部分
微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL(Transistor-Transistor Logic,逻辑门电路)逻辑电平,以便与通用数字系统的逻辑电平相容。
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图3.11所示,抖动时间的长短与开关的机械特性有关,一般为5~10 ms。
图3.11 抖动示意图
在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。
一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。
一个完善的键盘控制程序应具备以下功能:
(1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。
(2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。
(3) 准确输出按键值(或键号),以满足跳转指令要求。
图3.12 独立式按键典型应用图
单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。
1.独立式按键结构(也就是本系统采用的结构)
独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图3.12所示。
独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。
2. 立式按键的软件结构
独立式按键的软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
第四章 系统软件实现
4.1 软件设计思想
该系统一般情况下采用自动报站,只有在自动报站系统出现故障的情况下才采用手动报站,所以编写程序的时候应当注意,要优先手动报站部分,只有在没按下键的情况下才自动报站。
车载无线接收模块和车站无线发送模块在编写程序的时候可以借鉴单片机中多机通信中的主从机结构:车站看作主机,各个公交车看作从机。单片机的串行口方式的方式2,3就适合这种主从式的通信结构。
主机向从机发送地址信息(即车站代码),等待从机应答,一旦有从机应答就检测是否是所需停靠从机,若是则发消息让其报站,不是则继续呼叫。
从机在建立与主机通信之前始终处于监听状态,一旦监听到信息就判断是否是该公交车该停靠的车站,是则回馈信息给车站,并报站。
具体程序见附录2。
4.2 MCS-51指令系统介绍
采用助记符表示的汇编语言指令格式如下:
标号:操作码 操作数或者操作数地址;注释
标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由1~8个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。
操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。
操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPL A指令;有两个操作数,如MOV A,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。
注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。
寻找操作数地址的方式称为寻址方式。MCS-51指令系统有以下几种寻址方式:
1. 寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。
如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器,对应地址为08H~0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H。
2. 直接寻址
直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。
例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。
3. 立即数寻址
立即数寻址是指将操作数直接写在指令中。
例如,指令MOV A,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。
4. 寄存器间接寻址
寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。
在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。
设R0=3AH,内部RAM 3AH中的值是65H,则指令MOV A,@R0的执行结果是累加器A的值为65H。
5. 变址寻址
变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。
例如,指令MOVC A,@A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,@A+DPTR的执行结果是累加器A的内容为55H。
6. 相对寻址
相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。
例如,指令SJMP 54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。
设指令SJMP 54H的机器码80H 54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。
7. 位寻址
位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。
位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元,位地址为00H~7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义。
4.3 串行通信口的工作方式及关键代码
串行口由以下部分构成:
首先是数据缓冲器SBUF,发送SBUF和接收SBUF共用一个地址99H。
1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。
发送指令:MOV SBUF,A
2)接收SBUF存放已接收成功的8位数据,供CPU读取。
读取串行口接收数据指令:MOV A,SBUF
然后是串行口控制/状态寄存器SCON(98H),SCON共八位,各位的分述如下:SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位。RB8:接收的第9位数据位或停止位。TI:发送中断标志,发送一帧结束,TI=1,必须软件清零。RI:接收中断标志,接收一帧结束,RI=1,必须软件清零。
还有节电控制寄存器PCON,SMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。
串行接口的工作方式有四种,由SM0,SM1选择。方式0为同步移位寄存器方式,用于扩展并行I/O接口。方式1为8位数据异步通讯方式。方式2和方式3为9位数据异步通讯方式【12】。
在接收端的程序编写如下:
MVSTR: MOV SCON,#0B0H;方式2,SM2=1,REN=1允许接收
SR1: JBC RI,SR2;监听状态
SJMP SR1
SR2: MOV A,SBUF;取出呼叫地址
XRL A,#01H;是呼叫本机么
JNZ SR1
CLR SM2;是则取消监听
MOV SBUF,#01H;发出应答信号
WABT1: JBC TI,SR3
SJMP WBT1
SR3: JBC RI,SR4;等待主机发送
SJMP SR3
SR4: JNB RB8,BTT;是复位信号么
SETB SM2;是则恢复监听状态
SJMP SRI
BTT: MOV A,SBUF;联络成功,取发送的数据
MOV 40H,A
在发送端的程序编写如下:
MASTR: MOV SCON,#98H;
MA1: MOV SBUF,#01H;
WAIT1: JBC TI,WAIT2;
SJMP WAIT1;
WAIT2: JBC RI,MA1;
SJMP WAIT1;
ma1: mov A,SBUF;
XRL A,#01H;
JZ ATT;
ERR: MOV SBUF,#00H;
WAIT3: JBC TI,ERR1;
SJMP WAIT3;
ERR1: SJMP MA1
ATT: CLR TB8
MOV SBUF,#01H
4.4 程序流程图
接收端主程序流程图(图4.1):
图4.1 接收端主程序流程图
发送端主程序流程图(图4.2):
图4.2 发送端主程序流程图
第五章 结论
5.1 总结
随着社会的发展,公交车已经成为人们日常出行必备的交通工具,而随着人们环保意识的增强,公交车必将取代私家轿车成为主流交通工具。这样就要求公交车各方面设备都实现自动化,本文主要研究了一种基于无线数传模块的公交车自动报站系统。
该系统采用最常用的51系列单片机,无线数传模块RX100和TX100,以及性价比较高的PM50语音芯片研制出了价格低廉,使用方便,改写容易的公交车自动报站系统,实现了以下功能:
1) 公交车到站前10到20米语音和显示报站;
2) 公交车内设手动按键,方便在自动报站系统出错时司机手动报站;
3) 公交车到总站时向总站发送信息,方便总站调度;
本论文的主要工作可分为以下部分:
1)简要介绍了现今存在的几种比较先进的公交车自动报站系统,分析了他们各自的优缺点,提出本文所研究的系统。
2)介绍了该系统的详细设计框图和各模块功能。
3)在此基础上,对各个模块中的各个部分进行了详细介绍,并对各芯片的使用方法和PROTELL 99 画图软件进行了介绍。
经过三个月努力的学习和研究,该设计终于基本完成了。这期间,作者查阅了很多相关资料,进一步学习了单片机结构与原理,51单片机指令系统,各个芯片的使用方法和PROTELL 99 软件的绘图方法等知识,并积累了一些单片机系统开发的经验,为以后的工作奠定了更好的基础。
由于时间和技术水平等方面的限制,该系统还是存在很多不完善的地方,研究过程中绘制的硬件图和编写的程序都比较理想化,用PROTELL99画的图也没有成功转化为PCB图,在实际调试中还有很多问题有待解决。以后我将把该系统不断完善,争取做出优秀的成果为公交车今后的发展做出贡献。
5.2 前景和展望
在国内,人们还是更加青睐私家车,希望能够驾驶私家车出行,但是越来越多的私家车必然对环境造成极大的影响,我们应当致力于公交车事业的发展,让人们的交通工具首选公交车。目前,已经出现并有待进一步发展的公交车自动化设备有如下几种:
1)更加完善和使用的自动报站系统;
2)智能投币箱。智能投币箱与普通投币箱最大的不同就是多了个显示屏,上面能够清楚地显示乘客投币数额,乘客如果投币不足,显示屏就只显示硬币数额,而不鸣响,足额投币,则像刷卡一样鸣叫一声,的确方便了司机监督乘客投币,如个别乘客使用假币或者用游戏机板或其他物品冒充硬币时,机器也会立刻报警。
3)公交车智能预报系统。过对所有运行公交车的监控,实现对公交运行车辆运行状况的及时预报。广大乘客在公交站点通过智能预报显示屏就能清楚地了解公交车即将到来的准确站距。
另外,目前在美国一些大城市实施的快速公共汽车交通系统BRT(Bus Rapid Transit,快速公交系统)就是美国为改进公共巴士服务质量所进行的大规模的工作。美国各大中城市波士顿、夏洛特、丹佛、芝加哥、洛杉矶、路易维尔、匹兹堡等地方都开始实施这个项目【13】。
BRT系统是一种介于轻轨交通LRT(Light Rail Transit,轻轨交通)与常规公交NB(Normal Bus,常规公交)之间的新型运营系统,它利用现代公交技术配合智能交通和运营管理,使传统的公交系统达到LRT的基本功能和服务水平,其投资及运营成本又较轻轨交通低,除发达国家城市外,许多发展中国家也都纷纷规划、建设BRT系统。
BRT是公交智能化建设中走在前面的一步棋,而随着信息化社会的到来,信息技术及相关高新技术得到开发并应用于交通系统的管理,为”公交优先”政策的实施提供了先进的技术手段。可以说,智能交通系统的发展预示着公交系统管理信息化、智能化将成为21世纪的发展方向。
根据公交智能化的思路,围绕运营管理者和乘客等用户,分别有以下技术手段来实现公交的智能化:
①公交运营调度和车队管理的智能化。近年来,美国在公共交通的车队管理方面,以车辆、提高服务(供给)效率与质量和乘客安全为核心,积极吸取各种基于车辆的智能公共交通系统APTS(Advanced Public Transportation System,智能公共交通系统)技术以及车辆和车队调度营运的新理念,提高公共交通的有效性和可靠性,使公交方式对潜在的乘客和服务区更具吸引力。
②地理信息系统是一种特殊的计算机数据管理系统,最常见的应用是在城市公交路线管理、调度管理及相应的信息、传送等,此外还用于路线服务质量评价、线路调整优化和路线规划等领域。
随着可获得的(公共或个人)数据资料的不断增多,GIS在公共交通领域的应用也将越来越广泛。毫无疑问,当计算技术和通讯能力进一步提高、获得的空间数据更加精确时,GIS在公共运输系统中的应用和影响将会更为广泛和深刻,尤其是对特殊运输方式和有特殊交通需求的地区。
③公交运营软件系统。通过公交运营软件系统可以实现多种公交方式和多种公交运输功能的自动化、流水线化和一体化运营。运营管理中计算机的应用,如计算机辅助调度服务监控、管理控制和数据采集(以及提供数据的APTS(AutomaticPictureTransmissionSystem,自动图像传输系统)技术)等,能够使营运调度、线路规划、乘客服务等部门具有更高的效率,发挥更大的作用。
④交通信号优先系统。交通信号优先控制系统在公交车辆通过交叉口时,让交通信号(提前)变成绿灯,从而让车辆更快通过交叉口。这种技术很早就已用于救护车的信号优先控制。在公交优先技术中,在信号交叉口让公交车或轨道交通优先通行,可以保证其调度运行的准时性。
参考文献
[1] 郭黎利,袁冰冰. 公交车站间的无线接力数据通信[D]:[硕士学位论文]. 哈尔滨:哈尔滨工程大学,2004.
[2] 赵晶.PROTELL 99 高级应用[M].北京:人民邮电出版社,2000.1~15.
[3] Protel PCB99SE电路板设计[M].北京:清华大学出版社,2001.58~62.
[4] HRH内部办公系统.Rx100产品手册[EB/OL].
http://www.smartrf.com.cn/cn/txt/rx100.pdf,2002-5.
[5] HRH内部办公系统.Tx100产品手册[EB/OL].
http://www.smartrf.com.cn/cn/txt/tx100.pdf,2002-5.
[6] 杨文龙.单片机原理及应用[M].西安:西安电子科技大学出版社.2000.78~81.
[7] 马忠梅等.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,1997.114~124.
[8] 沈德金、陈粤初.MCS-51系列单片机接口电路与应用程序实例[M]. 北京:北京航空航天大学出版社,1995.3~6.
[9] 谢瑞和.串行技术大全[M]. 北京:清华大学出版社,2003.21~24.
[10] 中青世纪公司. pm50语音芯片资料[EB/OL].
http://www.atvoc.com/gsjs/gsjs.htm.2003-4.
[11] PHLIP Semiconductors公司.DATAHANDBOOK 80C51-base 8-bit Microcontrollers[M] .1995. 95~100.
[12] 曹琳琳,曹巧媛.单片机原理及接口技术[M].长沙:国防科技大学出版社,2000.112-147.
[13] 山东房产超市论坛.智能公交专用帖[EB/OL].
http://bbs.sdfccs.com/List.asp?BoardID=272.2007-3.
[14] 许连华,李学庆. 基于GPS 的公交车自动报站系统[J]:计 算 机 工 程, 2005 年, 第23 期:191~218.
[15] 洪锡军,李显明,郭新贵,李从心. Windows9X下串行通信技术探讨[J]:计算机工程,2001年,第九期:81~99.
[16] 何学文,刘建兵.Winodws98/NT环境下串行通信的设计与实现[J]:南方冶金学院学报,2002年,2月刊:23~39.
[17] 李启炎. Protel 99se 应用教程–印刷电路板设计[M]. 上海:同济大学出版社,2005.2~5.
[18] 冯建华,赵亮. 单片机应用系统设计与产品开发[M].北京: 人民邮电出版社,2004.198~206.
[19] 万福君,潘孙峰.单片机微机原理系统设计与应用[M].合肥:中国科技大学出版社,2001.140~155.
[20] 罗云斌.汇编语言全接触[EB/OL].http://www.VJStudio.net,2005-8.
附录1 总体设计图
发送端总体设计图如图附一所示:
图附一 发送端总体设计图
接收端总体设计图如图附二所示:
图附二 接收端总体设计图
附录2 完整程序








很有帮助 能不能将图附发来看看呢
不知道发错没有 我想看看的是这个基于无线数传模块的公交车报站系统
的图 可以的画 麻烦发到我邮箱哦 shadowbendd@163.com
能把这里需要的图给我发来吗 我做 毕业设计用 谢谢 Email: wangkui1561@sina.com
找找看吧
能把这里需要的图给我发来吗
我做学校设计 急用啊
帮忙 谢谢
bbc0574025@126.com
你好,可以把图和程序给我发一份吗?谢谢lizewei52@yahoo.com.cn
你好!你写的文章挺不错,我也想要图和程序,能否给我也发一份,不胜感激!
你好,你的文章对我做毕业论文很有帮助,能不能把图和程序也发一份给我啊?
Your Comment…
你的文章对我很有帮助 可不可以把图和程序也发一份给我呀?huayin05@126.com
很不错啊,能不能也发给我一份图和程序参考参考 kjkuan@126.com 谢谢啦
能给我把那些图看一下吗?
我设计就是这。
就差那些图了我希望您能帮我
我会很感谢您的。
谢谢。
大哥 能发个图给小弟吗 谢谢
本人邮箱bbc05740252126.com
哈,我也想要啊,zh115@tom.com,谢谢!
403058253@qq.com
能把图和程序也发我一份吗,真的很感谢!
能把图和程序发我一份啊,不胜感激!xuxinxia2006@126.com
楼主,能不能将图附发来看看?
谢谢。不胜感激。
楼主,你好。我正在做公交车自动报站系统的设计,也想用无限数据这块,可是掌握的知识有限,能不能把图跟程序发给我下做为参考,不胜感激!!!!