陈琨韶 何远英
摘 要:通过MCS-51单片机模拟实现一个小型地铁报站系统的运行过程,其中用于搭建硬件电路的是常见的电子元器件,用于编程的软件也是常用的单片机汇编语言,简单明了,对于单片机的教学和学习有一定的辅助及促进作用。
关键词:MCS-51单片机 地铁 报站系统 仿真软件
地铁行业日新月异,人们对它的关注也越来越多,笔者在平时和学生聊天的过程中发现,大家对其先进的报站系统颇有兴趣,刚好笔者在从事单片机这门课的教学,如何用我们常用的MCS-51单片机模拟实现一个小型的地铁报站系统呢?笔者从硬件和软件两个方面来谈谈报站系统的设计与实现,希望对正在学习或者希望学习单片机的电子爱好者有一定的帮助。
一、基本思想
乘坐过广州地铁的人都知道,地铁报站指示镶嵌在每一节车厢的大门上方位置,通过小灯的颜色、闪烁、声音及必要的标识指引行驶的方向和目的地。本系统通过LED灯模拟指示牌上的小灯,通过两块MCS-51单片机控制小灯的亮、灭及闪烁,驱动蜂鸣器发出“嘀、嘀”的响声模拟地铁车厢门关闭前的提醒音,并驱动点阵流动显示各站点信息,具体工作过程如下。
步骤一:按下进站按钮启动地铁,站点1(首发站)的指示灯亮,显示屏显示首发站信息(本系统模拟广州地铁一号线,显示“始发站:广州东站”),与此同时数码管显示60秒关门倒计时,倒计时最后10秒驱动蜂鸣器发出“嘀、嘀”的关门警报声。
步骤二:在60秒首发站倒计时后,站点2指示灯闪烁(此时地铁已关门向站点2驶去,下一站点的指示灯闪烁),显示屏显示下一站信息(如“下一站:体育西”);按下进站按钮(表示地铁到达站点2),闪烁的小灯变成常亮,显示屏信息更新为第二站信息(如“体育西站到了”),与此同时数码管显示30秒关门倒计时,倒计时最后10秒驱动蜂鸣器发出“嘀、嘀”的关门警报声。
步骤三:在30秒倒计时后,站点3指示灯闪烁,显示屏显示下一站信息(如“下一站:杨箕”);按下进站按钮,闪烁的小灯变成常亮,显示屏信息更新为第三站信息(如“杨箕站到了”),与此同时数码管显示30秒关门倒计时,倒计时最后10秒驱动蜂鸣器发出“嘀、嘀”的关门警报声。
重复步骤三,站点指示小灯将被依次点亮表示已经经过的站点,直到最后一站。这里小灯“亮”表示已经经过或者正在停靠的站点,小灯“灭”表示还未到达的站点。如遇站点是中转站,倒计时60秒,即首发站和中转站倒计时60秒,其余站点倒计时30秒。
到达终点站后,所有站点小灯亮,显示屏显示终点站信息(如“终点站:西朗站到了”),当再一次按下进站按钮时,表示列车折返,反方向行驶。此时,原来的终点站变成了起点站,原来的起点站变成了终点站,相应站点的指示灯亮,显示屏显示始发站信息(如“始发站:西朗站”),倒计时60秒关门。重复之前正向行驶的步骤,直到到达终点站(原来的首发站)。具体流程图如图1所示。
图1 系统工作流程图(模拟广州地铁一号线部分站点)
二、硬件设计
结合设计思想,通过单片机仿真软件“Proteus 7 Professional”绘制硬件电路图如图2所示。
图2 硬件电路图
本系统采用两片80C51单片机,一片控制小灯和数码管,另一片控制点阵显示屏的显示,由于篇幅所限,图2所给的只是仿真图,单片机的时钟、复位、供电等部分电路未画出(具体可参考电路实现的元件清单)。
此外,图2所示的界面是启动之后按下进站按钮,地铁处于首发站的倒计时状态,其中第一盏小灯亮,数码管倒计时60秒,显示屏滚动显示“始发站:广州东站”。在接下来的动作中,操作者只需要在每次倒计时完后按下“进站按钮”模拟地铁到站,小灯、数码管、显示屏即可随着到站的不同变换显示信息。
为了更好地说明电路,下面对电路总图进行分解说明。
第一部分是80C51控制小灯、数码管、蜂鸣器等器件。注意仿真图和实物图的区别,在实际接线时要根据实物的管脚进行连接。本系统采用共阳极数码管,其中80C51的P0.0~P0.7脚分别接数码管一的a~dp脚,80C51的P2.0~P2.7分别接数码管二的a~dp脚。
第二部分为80C51控制点阵显示屏。其中为了实现第一、二两部分的同步操作,使两块单片机P3.5口和P3.6口相互连接,通过第一块单片机的端口控制第二块单片机,实现两部分功能的同步。显示屏是循环滚动显示地铁报站信息,选用四个共阳极8×8LED点阵,当按下第一部分的进站按钮时,通过P3.5和P3.6控制显示屏显示信息的变化。
三、软件设计
本程序使用汇编语言编制,单片机仿真软件“Proteus 7 Professional”实现仿真调试,通过仿真之后再分别烧录到两块80C51单片机芯片中,实现对小灯、蜂鸣器、显示屏等的控制,具体源代码可以分为两部分。
第一部分为80C51控制小灯、数码管、蜂鸣器源代码,主要由下列几段程序组成:程序初始化;列车上行控制程序段;列出下行控制程序段;显示及语音播报控制程序段。
第二部分为80C51控制点阵显示屏源代码,主要由下列几段程序组成字符扫描程序段;字码表;字符显示控制程序段。
附:部分程序代码
;------------------------列车上行时,各车站指示灯状态变化的控制程序段
UPLINE:CLR p3.6
CLR C
LOOP1: RLC A
MOV P1,A
JBC F0,LOOP
ACALL DELAY
RRC A
MOV P1,A
JBC F0,LOOP
ACALL DELAY
AJMP LOOP1
;-------------------------列车下行时,各车站指示灯状态变化的控制程序段
DOWNLINE:CLR p3.6
CLR C
LOOP2: RRC A
MOV P1,A
JBC F0,LOOP
ACALL DELAY
RLC A
MOV P1,A
JBC F0,LOOP
ACALL DELAY
AJMP LOOP2
四、电路实现
结合硬件及软件设计,具体电路实现分两部分说明如下。
第一部分的具体实物电路实现如图3所示。
其中在图3所示的电路图中,还有部分元器件因为走线和美观问题放在了单片机下面。为了增加趣味和可读性,在元器件表面做了地铁模拟站点等必要的标识。
图3 第一部分电路实现图
本系统只模拟了广州地铁一号线的8个站点,其中“广州东站”为始发站,“公园前”为中转站,均设计了60秒的关门倒计时,其余站点为30秒的倒计时。每个站点由一盏LED小灯指示,进站按钮由一个不带自锁的点动开关实现。
第二部分的具体实物电路实现如图4所示。
图4 第二部分电路实现图
这里LED点阵驱动电路的扫描信号行列各有16条,其中行扫描信号直接使用单片机的两个P口(本设计为P0口和P2口)共16路驱动,列扫描则使用一个4对16译码器(74LS154)驱动,这个译码器是将输入的16进位码,解码输出低态扫描信号。输出低态扫描信号经过限流电阻,连接到PNP晶体管的基极,再经晶体管放大后即可推动LED工作。
此外,电路的实现均采用手工布线及焊接,其中第二部分在焊接时因走线较多,对元件的放置、走线及焊接技术均有一定的要求,如对于初学者可使用印制电路板。
其主要元件清单见下表。
表
序号 符号 名称 规格型号 数量(只)
1 D1-D9 发光二极管 9
2 R1-R8 电阻 220Ω 8
3 U1-U2 七段LED数码管 BS242 2
4 R9-R25 电阻 1kΩ 17
5 R26 电阻 470Ω 1
6 R27 电阻 10kΩ 1
7 Q1-Q17 三极管 9012 17
8 LS 蜂鸣器 1
9 D9 续流二极管 IN4001 1
10 C1-C4 电容 30pF 4
11 C5-C6 电容 10μF 2
12 晶振 12MHz 2
13 U3-U4 单片机 AT80C52 2
14 SW1-SW2 按钮 2
15 U5 译码器 74HC154 1
16 LED点阵 8×8 4
17 R28 排阻 10kΩ 1
18 VCC 直流电源 5V 1
五、小结
1.结论
本设计通过对日常生活的所见进行模拟及实现,能有效激发学生对单片机的学习兴趣,也可作为教师新课导入示教使用,促进单片机的教学。此外,本设计还可作为学生技能社团的活动项目之一,既加深学生对单片机应用的认识,又在一定程度上巩固单片机相关编程语言的学习。
2.不足及改进
虽然本系统已较完整地实现了基本设计思想提出的要求,但还存在以下几点不足:一是本系统只能较好地显示倒计时时间及发出关门警报声,在站点显示的硬件设计方面还未能简化,成本也相对较高;二是程序设计稍显复杂,可再完善简化,可读性方面也需加强;三是版面设计不够美观,如果作为示教用,则需要对焊接技术和布线方面再进行改进;四是因不良移动或保存,容易出现焊点松动造成虚焊、脱焊,可结合PROTEL等制板软件及PCB制板技术进行改良。
参考文献:
[1]周兴华.手把手教你学单片机[M].北京:北京航空航天大学出版社,2006.
[2]高平.单片机技术与应用实验与实训[M].北京:电子工业出版社,2008.
[3]周向红.51系列单片机应用与实践教程[M].北京:北京航空航天大学出版社,2008.
[4]张义和.例说8051[M].北京:人民邮电出版社,2006.
(作者单位:广州市轻工高级技工学校)