6j@%bB,P:x(s44606电子园51单片机学习网;m!gHT4h|3J-\9X
2 系统的功能 电子园51单片机学习网xv4~@4X)v Pw
(1)自动报站功能:当车辆到达某一停车站点时,系统自动报站,无需手动按键。 电子园51单片机学习网.m H/a)\1t3E6\c
(2)自动考核功能:自动记录车辆中途停车的时间和行驶的里程数,自动记录超速、低速行驶的时间和里程数。
_LN G-_+U"xe.Z44606(3)显示时间功能。 电子园51单片机学习网a1d+\ vt
w v*Zx%LmZ446063 系统设计原理 电子园51单片机学习网"Z&w5\a5B!p
公交车较一般车辆有个明显的特点,就是它行驶的路线固定,从起点到终点中途经过的站、路口也是固定的。因此,从起点到任一站、任一路口的距离是相对不变的,任意两站之间、路口之间以及站与路口之间的距离也是不变的。我们利用这一特点,首先把从始发站出发的公交车到达每一站、每一路口行驶的里程数(确切地说是一个范围,即经过反复试验,得到的到达某站或路口的数据范围)记录在系统中,公交车在实际运行中,如果行驶的里程达到某某范围(范围的最低值),则自动报站(包括提示是路口等等),此即实现了自动报站功能。对于自动考核中的超速、低速的判断,只需在系统中设置一计数器(计算车轮转过的圈数),用单位时间内车轮转过的圈数来判断车速超、低速情况,同时将超、低速时的时间和行驶的里程数记录在系统中。这样,在车辆回到总站后,只要读取系统内部的数据,就可以知道车辆在运行途中的停靠站及超、低速行驶情况。对于车辆停车时间的记录,实现的方法是在车辆停止转动时就开始计时,在车轮开始转动时停止计时,并将计时时间保存在系统中。由于车辆停车时间的长短和停车时的时间都被记录下来,就可以杜绝一些公交车在站点延时拉客以及未到达站点就中途停车拉客的现象。这里要说明的是:所谓里程数=车轮转数*车轮周长。 电子园51单片机学习网u!fuJFo!K
电子园51单片机学习网7YO8U9tiYy1i
电子园51单片机学习网9C!{q ZQU,EF
图1 语音录放电路(电击看大图)
/vm L#gN44606 电子园51单片机学习网4K#E R2rmw8_*V.T
+a)N}I2x446064 系统硬件设计
Vq1y&A!~Z44606该系统硬件设计按功能模块划分,可分为四部分:最小系统、显示部分电路、计数部分电路和语音电路。下面结合每一个功能模块,来介绍一下如何用单片机来实现公交车辆的自动考核与报站。
^ [-g8UtOO/TE%j.}44606(一)最小系统 电子园51单片机学习网6\)nt D$P
最小系统由89C51、RAM、锁存器、时钟电路、复位电路五部分组成。这是该系统的核心,所有的指令都是由89C51发出的。 电子园51单片机学习网dys/R%a1x,Z
RAM:由于车辆在行驶过程中需要记录大量的数据,比如车辆中途停车的时间、慢速行驶的时间、超速的时间等等,而89C51内部只有256B的数据存储器RAM,其中128B用户可以使用,数据容量根本无法满足系统的需要,故须外接RAM。
,V-@hn'\_ P}2D |44606锁存器:89C51虽然有P0、P1、P2、P3四个八位的I/O口,但是只有P0口能够直接用于对外部存储器的读/写操作,而P0口还要输出外部存储器的低8位地址(高8位地址直接由89C51的P2口输出)。为了避免数据和地址的信号冲突,这时候就需要在89C51和RAM之间加上一锁存器(实验中采用74LS373),从而使数据与地址分时输出。 电子园51单片机学习网.gJ T#EW^]Nn rF
时钟电路:系统要稳定的工作必须有可靠的时钟。本系统采用内部时钟方式,外接6MHZ的晶振,晶振和电容(15P)组成并联谐振荡回路,从而使89C51内部的电路产生自振荡。 电子园51单片机学习网]k Atl1w)D
复位电路:即在89C51的RESET端出现一保持10ms的高电平时,单片机复位。系统将手动复位和上电复位结合在一起。
f,J"Q8I/]6o!T44606(二)显示部分电路
3Lu a4y%| @*bg:~LL44606显示部分主要是显示时间的。在该系统设计中,由于89C51本身自带的并行口有限,故在系统中采用8155对并行口进行扩展。我们用8155PB口输出段码(即待显示的数据),利用8155PA口的低四位(PA0、PA1、PA2、PA3),经过一个74LS154(四—十六译码器)译码后产生16个位选信号,某一位选信号有效,与之相对应的LED灯即被点亮。我们在此采用的是动态显示方式,该方式较静态显示方式的明显优点即其占用的I/O口资源少,从而不必再对89C51进行I/O口扩展。 电子园51单片机学习网l.H:Su p
(三)计数部分电路 电子园51单片机学习网c ~`y6g,Ex9r
车辆在运行过程中,我们如何计算车辆行驶的里程,如何判断车辆超速、低速,这些都是通过计数部分电路来实现的。我们只要记录下车轮的转数,然后用它乘以车轮周长就可以得到车辆行驶的里程数。而对于车速,设定系统以某一固定时间间隔(比如5秒)来采集计数值(即车辆转数),用这一数值乘以车轮周长得出车辆行驶的里程,再除以时间从而得到车速,这样我们就可以判断车辆的超速、低速情况了。其实计数电路非常简单,它仅仅利用到89C51的外部中断INT0,每当此引脚有下跳沿信号,计数器即加1(系统中采用16位计数器,最大计数值可达到65535)。在进行实验的过程中,我们发现,模拟车轮产生的脉冲干扰很大,采用软件延时,效果不甚理想,而且影响到显示(用以显示的LED灯产生明显的抖动),故想到在INT0端采用硬件延时。而RS触发器在此方面有良好的特性,因此在INT0引脚与产生脉冲的车轮之间加上一RS触发器。
I^}j A] [44606(四)语音部分电路
)iB5T,IB"K$iW44606自动考核与报站系统的报站功能主要是由语音部分电路来实现的。实验中我们使用的语音芯片为ISD4002-120P,该芯片的存储时间仅为120秒,只可用于实验室阶段,实际应用中可以更换存储时间长的芯片。由于车辆在运行途中,只需报站,而无需录音,故我们采用图1所示电路对语音芯片进行录音。 电子园51单片机学习网h|1j ?2Nf$@mp
开关在“REC”端是录音状态,按住“AN”键不放,指示灯亮即可对着话筒讲话录音,松键录音停止并形成一段。再按则录下一段。按“STOP”键复位,再录音时又从第一段开始。开关在“PLAY”一侧是放音状态,按一下“AN”即播放一段录音,一段结束后自动停止放音,再按“AN”键则播放下一段。
\y3QI\ Z?!R44606把录好的芯片放到系统中,当车辆行驶的里程数达到某一段范围时,我们利用语音芯片的快进功能,跳到相应的语音段开始放音从而实现自动报站。
9P zQ*^ I0]44606
fr"]&iA8V_R446065 系统软件设计 电子园51单片机学习网iDW]l4\:C
系统软件采用模块化结构,主要由主程序、计数中断子程序、时间中断子程序等级成。下面列出了主程序流程图(如图2)和计数中断子程序流程图(如图3):
*Z3Ce}2a9hU c44606
q0VR9td8y V-u44606]"z a z n44606
8`a g8A&pL"gtS44606
`7hef@'|446066 结束语
3}0?iQ0H44606总的看来,本系统采用了一种比较新颖的思路,用单片机来实现公交车辆的自动考核和报站。能够对公交车辆进行有效的管理,投入市场的前景较好。在实际运用的时候,可以在系统中扩展键盘,以防止公交车行驶路线发生变化以及出现一些异常情况时,改用键盘控制报站。
a/t? X#CUG8?i44606
Vz:{0a!}9T+P O|6P44606参考文献
,S#C O r1t+W f1\?E44606电子园51单片机学习网w#w8n(w3BX
[1]何立民.MCS-51系列单片机应用系统设计:系统配置与接口技术.北京:北京航空航天大学出版社,1990年。
6YWN*|0J iX ^+?44606[2]刘乐善,叶济忠.微型计算机接口技术原理及应用.湖北:华中理工大学出版社,1996年。电子园51单片机学习网Y,[$Uv {6n G%Nm4z
文章评论(0条评论)
登录后参与讨论