何小映
西安航空学院电气系,陕西 西安 710077
目前的城市公交售票有两种形式:无人售票和有人售票,对于无人公交来说,乘客只需要打卡或者投币即可,无所谓远近,一律都是同样的价钱,比较方便;另一种形式是有人售票,主要是中巴车及部分站点较多的大巴车,这部分车辆由售票员根据路途的远近收取相应的票价,所以售票员需要记住所有站点的名称及站数,对于站点比较多的公交来说,往往出现记错站收错钱的情况。本文针对这一具体情况,设计出一种公交车计价系统,有效地解决了这一问题,售票员只需要点击起点、终点及站名,进行两到三次按键选择即能自动计算出相应的价格,即方便又快捷准确。
该系统的整体框图如图1所示:
图1 系统框图
该系统主要包括键盘、单片机、液晶显示器三大部分,系统以单片机为核心,加上键盘和液晶显示器,实现了起点站和终点站的选择,也实现了站名和站数的显示,并能根据站数自动计算出应缴纳的费用。
整个硬件以单片机89S52为核心,主要电路包括键盘与单片机的接口电路以及单片机与液晶显示器的接口电路两部分,其他的辅助电路包括时钟电路和复位电路,现将主要电路分别进行介绍。
键盘一般有独立式和行列式两种,中巴车的站数比较多,基本上都在三十个以上,比如设计中以西安504路中巴车为例,该线路共有39个站,由于站数比较多,所以键盘采用行列式结构[1]。设计中采用5行8列的结构,行线是P1.0~P1.4,列线是P3.0~P3.7,在行列交汇处布下40个键,键盘接口如图2所示。
图2 键盘接口
另外还有两个键用于选择起点站和终点站,采用独立式结构,其中起点站由P2.6控制,终点站由P2.7控制。
显示器采用液晶显示器PG12864[2],与单片机的连接由P2.0~P2.4提供控制信号,由P0口提供数据信号。显示字体采用16*16点阵结构,显示4行,每行8个字符。字符由子模软件产生。
图3 程序流程图
在PG12864上面一共显示4行信息,系统上电或复位后显示的初始信息是第1行显示:“起点:”、第2行显示:“终点:”、第3行显示:“站数:”、第4行显示:“价格:”。
软件主要包括键盘处理程序、显示程序两部分,程序采用C51语言[3]编写,程序流程图如图3所示。
其中,12864初始化完成12864的初始信息设置,包括:光标指针设置、图形区首地址、图形区宽度设置、显示方式及显示状态设置。12864显示4行的初始信息如2.2部分所示。这些工作完成后,等待站属性键按下,站属性键是指起点站还是终点站,分别由P2.6、P2.7表示,当都没按下时则一直等待,若P2.6按下,则行号为0,表示是起点站,站名将在第1行显示,第一行的行号为0;若P2.7按下,则行号为1,表示是终点站,站名将在第2行显示,第2行的行号为1。接下来等待站点键按下,若无键按下则等待,若有键按下则读其键值,键值从1到39,读到键值后,根据前述行号,从相应行的相应列开始显示站名,站名控制在五个字以内。接下来在第3行显示站数,格式为:起点站序号——终点站序号,最后在第4行显示价格,价格依据起点站和终点站的站数差取不同的值,起步价0.5元,最多4元,三站内0.5元,28站及以上都是4元。显示器截图如图4所示。
图4 显示器截图
在图4中,曲江池是第3站,西门外是第23站,两站之间相差20个站,价格是3.0元。
该系统不仅适用于有人售票公交系统的票价计算,也适用于有类似计算要求的场合,该系统减轻了售票员的记忆负担,能提供及时准确的票价计算,不会出现人为算错价格的情况,具有一定的实用性。
[1]刘建华.单片机原理及应用技术[M].上海科学技术出版社,2010.06:86
[2]杨斌等.微机原理与接口技术试验及课程设计[M].西南交通大学出版社,2005.10:122
[3]刘文涛.单片机语言C51程序设计[M].原子能出版社,2004.07:1~139