用单片机实现公交车的自动考核与报站
扫描二维码
随时随地手机看文章
1 引言
现今社会中,许多中小城市对公交车辆进行考核,大都采用人工考核的方式,该方式存在诸多缺点,例如,对车辆到达每一站的时间以及行驶途中存在的压客、超速、超载等问题,无法进行有效的监督,更重要的是它浪费了大量的人力资源,因此,急需一种系统对公交车辆进行有效的管理。
通过市场调查,现在对公交车辆进行管理,主要有两种方式:一是GPS自动考核系统,另一种是在站牌上设一信号发射装置,供车辆到站时判别。前一种方式虽然比较先进,但其价格昂贵,对中小城市的公交公司来说,只会增加其负担。而且更为重要的是,它需要对原有的站牌进行改造,程序烦琐。虽然属于同步考核方式,但对车辆塞车等情况仍无能为力。候车乘客通过站牌虽可知道车辆与本站的距离,但到达的确切时间仍无法确定,考核效果也不理想;后一种方式利用车辆收到信号和失去信号的时间间隔判别车辆停靠本站的时间,但此系统在实际应用中,可以说是效果很差,站牌上电力的供应、发射装置的稳定性、车辆上接收器灵敏度的不一性及路对面站的干扰等情况都严重影响了考核。
近年来,单片机技术迅猛发展,广泛应用于诸多领域,由于单片机具有可编程性及很好的存储扩展性等许多优点,因此萌生了用单片机来实现公交车辆的自动考核与报站。
2 系统的功能
(1)自动报站功能:当车辆到达某一停车站点时,系统自动报站,无需手动按键。
(2)自动考核功能:自动记录车辆中途停车的时间和行驶的里程数,自动记录超速、低速行驶的时间和里程数。
(3)显示时间功能。
3 系统设计原理
公交车较一般车辆有个明显的特点,就是它行驶的路线固定,从起点到终点中途经过的站、路口也是固定的。因此,从起点到任一站、任一路口的距离是相对不变的,任意两站之间、路口之间以及站与路口之间的距离也是不变的。我们利用这一特点,首先把从始发站出发的公交车到达每一站、每一路口行驶的里程数(确切地说是一个范围,即经过反复试验,得到的到达某站或路口的数据范围)记录在系统中,公交车在实际运行中,如果行驶的里程达到某某范围(范围的最低值),则自动报站(包括提示是路口等等),此即实现了自动报站功能。对于自动考核中的超速、低速的判断,只需在系统中设置一计数器(计算车轮转过的圈数),用单位时间内车轮转过的圈数来判断车速超、低速情况,同时将超、低速时的时间和行驶的里程数记录在系统中。这样,在车辆回到总站后,只要读取系统内部的数据,就可以知道车辆在运行途中的停靠站及超、低速行驶情况。对于车辆停车时间的记录,实现的方法是在车辆停止转动时就开始计时,在车轮开始转动时停止计时,并将计时时间保存在系统中。由于车辆停车时间的长短和停车时的时间都被记录下来,就可以杜绝一些公交车在站点延时拉客以及未到达站点就中途停车拉客的现象。这里要说明的是:所谓里程数=车轮转数*车轮周长。
图1 语音录放电路
4 系统硬件设计
该系统硬件设计按功能模块划分,可分为四部分:最小系统、显示部分电路、计数部分电路和语音电路。下面结合每一个功能模块,来介绍一下如何用单片机来实现公交车辆的自动考核与报站。
(一)最小系统
最小系统由89C51、RAM、锁存器、时钟电路、复位电路五部分组成。这是该系统的核心,所有的指令都是由89C51发出的。
RAM:由于车辆在行驶过程中需要记录大量的数据,比如车辆中途停车的时间、慢速行驶的时间、超速的时间等等,而89C51内部只有256B的数据存储器RAM,其中128B用户可以使用,数据容量根本无法满足系统的需要,故须外接RAM。
锁存器:89C51虽然有P0、P1、P2、P3四个八位的I/O口,但是只有P0口能够直接用于对外部存储器的读/写操作,而P0口还要输出外部存储器的低8位地址(高8位地址直接由89C51的P2口输出)。为了避免数据和地址的信号冲突,这时候就需要在89C51和RAM之间加上一锁存器(实验中采用 74LS373),从而使数据与地址分时输出。
时钟电路:系统要稳定的工作必须有可靠的时钟。本系统采用内部时钟方式,外接6MHZ的晶振,晶振和电容(15P)组成并联谐振荡回路,从而使89C51内部的电路产生自振荡。
复位电路:即在89C51的RESET端出现一保持10ms的高电平时,单片机复位。系统将手动复位和上电复位结合在一起。
(二)显示部分电路
显示部分主要是显示时间的。在该系统设计中,由于89C51本身自带的并行口有限,故在系统中采用8155对并行口进行扩展。我们用8155PB口输出段码(即待显示的数据),利用8155PA口的低四位(PA0、PA1、PA2、PA3),经过一个74LS154(四—十六译码器)译码后产生16个位选信号,某一位选信号有效,与之相对应的LED灯即被点亮。我们在此采用的是动态显示方式,该方式较静态显示方式的明显优点即其占用的I/O口资源少,从而不必再对89C51进行I/O口扩展。
(三)计数部分电路
车辆在运行过程中,我们如何计算车辆行驶的里程,如何判断车辆超速、低速,这些都是通过计数部分电路来实现的。我们只要记录下车轮的转数,然后用它乘以车轮周长就可以得到车辆行驶的里程数。而对于车速,设定系统以某一固定时间间隔(比如5秒)来采集计数值(即车辆转数),用这一数值乘以车轮周长得出车辆行驶的里程,再除以时间从而得到车速,这样我们就可以判断车辆的超速、低速情况了。其实计数电路非常简单,它仅仅利用到89C51的外部中断INT0,每当此引脚有下跳沿信号,计数器即加1(系统中采用16位计数器,最大计数值可达到65535)。在进行实验的过程中,我们发现,模拟车轮产生的脉冲干扰很大,采用软件延时,效果不甚理想,而且影响到显示(用以显示的LED灯产生明显的抖动),故想到在INT0端采用硬件延时。而RS触发器在此方面有良好的特性,因此在INT0引脚与产生脉冲的车轮之间加上一RS触发器。
(四)语音部分电路
自动考核与报站系统的报站功能主要是由语音部分电路来实现的。实验中我们使用的语音芯片为ISD4002-120P,该芯片的存储时间仅为120秒,只可用于实验室阶段,实际应用中可以更换存储时间长的芯片。由于车辆在运行途中,只需报站,而无需录音,故我们采用图1所示电路对语音芯片进行录音。
开关在“REC”端是录音状态,按住“AN”键不放,指示灯亮即可对着话筒讲话录音,松键录音停止并形成一段。再按则录下一段。按“STOP”键复位,再录音时又从第一段开始。开关在“PLAY”一侧是放音状态,按一下“AN”即播放一段录音,一段结束后自动停止放音,再按“AN”键则播放下一段。
把录好的芯片放到系统中,当车辆行驶的里程数达到某一段范围时,我们利用语音芯片的快进功能,跳到相应的语音段开始放音从而实现自动报站。
5 系统软件设计
系统软件采用模块化结构,主要由主程序、计数中断子程序、时间中断子程序等级成。下面列出了主程序流程图(如图2)和计数中断子程序流程图(如图3):
6 结束语
总的看来,本系统采用了一种比较新颖的思路,用单片机来实现公交车辆的自动考核和报站。能够对公交车辆进行有效的管理,投入市场的前景较好。在实际运用的时候,可以在系统中扩展键盘,以防止公交车行驶路线发生变化以及出现一些异常情况时,改用键盘控制报站。
参考文献
[1]何立民.MCS-51系列单片机应用系统设计:系统配置与接口技术.北京:北京航空航天大学出版社,1990年。
[2]刘乐善,叶济忠.微型计算机接口技术原理及应用.湖北:华中理工大学出版社,1996年。