出租车计价系统的设计.docx
《出租车计价系统的设计.docx》由会员分享,可在线阅读,更多相关《出租车计价系统的设计.docx(58页珍藏版)》请在冰豆网上搜索。
![出租车计价系统的设计.docx](https://file1.bdocx.com/fileroot1/2023-2/23/456e800f-9268-41c2-be5f-1e57afae5836/456e800f-9268-41c2-be5f-1e57afae58361.gif)
出租车计价系统的设计
出租车计价系统的设计
摘要
本论文在掌握出租车计价器的相关理论知识的基础上,设计了一种基于单片机的智能化出租车计价器。
在深入了解国内外相关技术研究现状之后,从硬件和软件两方面出发,完成了出租车计价系统的设计。
本课题具有一定的现实意义。
系统采用AT89C51单片机作为主控单元,实现时钟显示,里程统计和费用计算,语音播报,票据打印等功能,并且在液晶屏上显示信息。
系统充分发挥人性化的特点,利用ISD1420的语音功能,配合TG12864E液晶模组,模拟实现带语音提示的出租车计价系统。
比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示等功能。
完成了系统的硬件设计,同时用C语言编写了源程序,对系统的软件进行了设计。
系统所设计的由单片机控制的出租车计价器,为出租车行业提供了新的应用领域,使计费功能得到了完善。
关键词:
AT89C51单片机;TG12864E液晶模组;C语言
DesignofTaximeterSystem
Abstract
ThispaperisonthedesignandfunctionofakindofintelligenttaximeterIdesignedbasedonMCU,accordingtorelevanttheoriesoftaximeter.Thistaximetersystemisdesignedfromthepointsofbothhardwareandsoftware,onthebasisofin-depthunderstandingofrelevantdomesticandforeigntechnologyresearch.Thisissuehasapracticalsignificance.
AT89C51MCUusedasamaincontrolunit,thissystemhasthefunctionofdisplayingtheclock,mileagestatisticsandcost,voice-broadcasting,printingpapers,theinformationofwhichwillbedisplayedontheLCDscreen.Fromthepointofhardware,thissystemgivesthedriverandthepassengersrelevantinformationabouttheconditionsofthetaxiandthedifferentchargingratesandchargesondifferentconditionbysimulatinghumanvoicewiththevoicefuntionofISD1420,theTG12864ELCDmodules,andbysimulatingtherealcondition.Fromthepointofsoftware,thesystemisloadedwithprograminC-language.
Thiskindoftaximeterprovidesanewapplicationareaforthetaxiindustryandimprovesthebillingfunctions.
KeyWords:
AT89C51MCU;TG12864ELCDModule;CLanguage
引言
随着科学技术的发展,计算机技术带来了科研和生产的许多重大飞跃,特别是单片机的应用已经渗透到生产和生活中的各个方面,有力的推动了社会的发展。
单片机以其功能强、体积小、集成度高、功耗低、价格便宜、工作可靠、使用方便等特点,受到广大科技工作者的好评。
随着性能的不断提高,单片机的应用范围越来越广,在计算机应用领域已占日益重要的地位。
它的应用程度已经成为衡量一个国家科学技术水平的一项重要指标。
出租车计价器就是单片机的一个典型的应用。
现在市面上的出租车计价器品种繁多,功能强大。
作为一个毕业设计的课题,本着从大处着眼,小处入手的原则,对单片机的应用做了一些初步的尝试和探讨。
利用AT89C51单片机串行口、TG12864E液晶显示模块以及A44E霍尔传感器实现了出租车里程的计数和显示,与语音报价系统结合,初步实现了目前市面上的出租车计价器的一些基本功能。
在这短短的3个月的时间里,在指导老师的悉心指导和自己的努力下,基本设计完成了这次毕业设计所要求的功能,实现了预期的目的。
由于本人水平有限,时间也很仓促,所以其中难免有不足及错误之处,敬请老师给予批评和指正。
1绪论
1.1出租车计价器的发展概况
在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。
但当时在全国还没有一家企业能够生产,因而那个时期的计价器是由台湾引进。
台湾是计价器的主要生产场地,目前全世界的计价器中有90%为台湾所生产。
现今我国生产计价器的企业有上百家,主要是集中在北京、上海,沈阳和广州等地[1]。
我国第一家生产计价器的厂家是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。
随着科学技术的发展,产生了第二代计价器。
它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。
此时它在计程的同时还可以完成计价的工作。
大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。
它的功能也在不断完善。
当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程、计价、显示、语音播报等基本工作。
单片机以及外围芯片的不断发展促进了计价器的发展。
出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。
随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。
例如:
LED显示功能:
数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;永久时钟功能:
在非营运状态下,日历时钟芯片的使用可以使计价器显示永久时钟;存储功能:
可存储多项营运数据,便于查询;语音功能:
实现语音报价及语音提示等。
此外,新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年,功能大大提高。
可以说,计价器的发展史在一定程度上反应了现代科技的发展史[2,3]。
本系统解决了以往计价器计价不准确、使用寿命短等缺点,同时,可以随时对单片机的外围电路进行扩展,并通过软件编程实现本系统的不断升级。
1.2出租车行业的管理现状
在我国,经济尚处于发展阶段,由于人民的生活水平以及道路交通的限制,私家汽车的拥有率在短期内不会有较大提高,因此出租车扮演着重要角色。
出租车计价器则是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。
由于出租车数量的快速增长,出租车的行业管理也就产生了一系列问题。
在我国的各大城市中,对出租车行业的管理方式归纳起来可以分为两大类:
第一类管理模式是由出租车司机以向私人老板承包的方式进行的,司机只须每天向老板交纳一定的租赁费用,最终由老板按出租车数量向地方和国家缴纳一定的费用即可。
因此这种管理模式相对简单,存在的问题也较多,主要体现在以下三点:
1.税收严重流失;2.现有的出租车票据不统一;3.乘客与司机之间的纠纷问题。
第二类管理模式是通过出租汽车公司实现对出租车的管理,如国外大城市以及国内的上海,北京等地就是采用这种方式。
在这种管理模式中,出租车公司是以企业形象存在的实体,司机则是企业的雇员。
出租车公司每天营运后应与车队结帐,车队定期向出租车总公司结帐,出租车总公司再向地方政府和国家缴纳各项税收。
传统的缴纳方式采用的是现金方式,由于公司没有一种有效的方法掌握司机每天的营运状况,因此司机与公司之间的结帐是很难进行严格管理的,人们越来越觉得这种现金交易的不方便性和不严密性,因此提出了能够通过一种科学的手段实现对出租车行业的闭环管理[4]。
1.3计价器设计需要解决的问题
不同国家和地区的计费方式存在差异。
有些地区有夜间收费及郊区收费等,而有些地区则无夜间收费和郊区收费;即使同一地区,不同车型的出租车,其计费方式也有差别;另一方面,出租车还面临几年一次的调价或调整计费方式等问题。
因此,所设计的计费器不仅要能满足不同国家和地区的要求,而且计费方式的调整也应当很方便。
由于个别地区对计价器有特殊要求,有时必须修改软件;另外,计价器还面临软件的升级。
因而,所设计的计价器应能很方便地重新编程。
同时,计价器必须要有防作弊功能,能有效防止司机作弊;此外要防止计价器在营运过程中死机[5]。
2系统总体介绍
随着我国交通事业的发展以及道路的不断改进,出租车作为人民生活密切相关的行业正在飞速发展壮大,而出租车计价器的市场也不断扩大。
本设计课题正是在现有计价器的基础上进行改进,完成了新型的具有多功能的出租车计价系统的设计,同时解决了现有计价器存在的问题。
2.1系统组成
此出租车计价系统以单片机为系统核心,利用AT89C51单片机配合TG12864E液晶模组及ISD1420语音模块等,实现基本的出租车计价器功能。
本系统是由AT89C51单片机、液晶显示、里程计数、系统实时时钟、语音输出、打印机等模块组成。
系统框图如图2.1所示:
图2.1系统功能框图
Fig.2.1Functionalblockdiagramofsystem
2.2系统各部分功能
2.2.1里程计量功能
(1)单片机对传感器输出脉冲进行计数,并将脉冲数换算成公里数;
(2)每一个脉冲代表轮胎旋转一周,设轮胎直径为500㎜,则轮胎的周长为:
1.571m,即每转一圈的距离。
(3)每公里的脉冲数为:
1000m/1.571m=636(个脉冲)
2.2.2费用计算功能
费用计算参照某市出租车收费标准,包括三部分:
起步价、里程、等候时间[6]。
(1)起步价:
行驶里程在2.3公里(含2.3公里)以内按起步价7元计费。
(2)里程:
(根据行驶距离调整价格)
①当行驶里程超出2.3公里并且小于35公里时,按2.6元/公里收费,这时行驶费用为:
行驶费=起步价+2.6×(行驶里程-2.3)
②当行驶里程超过35公里后,要加空驶费,即每公里升至3.50元,这时行驶费用为:
行驶费=起步价+3.5×(行驶里程-2.3)
(3)等候时间费用:
只要堵车之类车停在那里,但是乘客仍然在车上,则采取时间收费,收费方式为:
每停留3分钟(含3分钟以内)0.5元,超过3分钟则成倍增加。
综上所述,每次乘车收费总金额为:
总价=起步价+行驶费+等候时间费用。
2.2.3语音播报功能
(1)当初次按下“启动”键,出租车开始启动,系统播放“您好!
欢迎乘坐本公司出租汽车,谢谢!
”播送完毕,计价器开始计费。
(2)按下“加速”键,出租车加速行驶,最高速为100公里。
(3)按下“减速”键,出租车减速行驶,最低速为0公里。
(4)在行驶状态下,按下“停止”键,表示出租车到站,结束行驶。
这时候,系统播放“您好!
行驶里程XXX公里,应付XXX元,请检查您的随身物品,欢迎再次乘坐,再见!
”的提示音。
(5)按下“复位”键,进入空车状态。
2.2.4中文菜单显示功能
(1)在空车状态下(启动前),LCD屏幕上显示如下的中文信息:
(2)在空车状态下,按下“启动”键,系统播放“您好!
欢迎乘坐本公司出租汽车,谢谢!
”的提示音,同时在LCD屏幕上显示如下的中文信息:
(3)播完提示音后,进入行驶状态,LCD屏幕显示以下信息:
(4)在行驶状态,按下“加速”键,里程显示的公里数增加的速度会不断的变快,金额数值也在作相应的变化。
按下“减速”键,里程显示的公里数增加的速度会不断的变慢。
(5)在行驶状态,按下“停止”键,表示出租车到站,结束行程。
这时屏幕显示以下信息:
同时,系统播放“您好!
行驶里程xxx.xx公里,应付xxx.xx元,请检查您的随身物品,欢迎再次乘坐,再见!
”的提示音。
2.2.5实时时钟功能
本系统采用实时时钟芯片DS12887作为时钟电路,产生/年/月/日/星期/时/分/秒等信号,供系统调用。
2.2.6票据打印功能
本系统通过设置票据打印,为乘客提供乘车信息,包括乘车时间,乘车里程,乘车费用等,方便乘客查询。
2.2.7按键功能
本系统一共设置5个按键:
启动、加速、减速、停止、复位。
其中加速键可使出租车的速度由0公里上升到100公里,减速键使出租车的速度由100公里下降到0公里,而复位键则使出租车进入空车状态。
3系统硬件电路设计
本出租车计价系统的硬件结构主要由以下几个部分组成的:
控制单元模块(AT89C51单片机系统)、实时时钟模块、语音播放模块、液晶显示驱动模块、票据打印模块、按键扫描模块等。
下面做详细的介绍。
3.1控制单元及相关扩展电路设计
控制单元模块:
即AT89C51单片机系统,包括系统初始化、脉冲的产生、里程的识别和费率的计算、各功能模块的的组织和管理等。
控制单元模块在系统中起着重要的作用。
AT89C51是一种低电压高性能CMOS8位单片机,可以和MCS-51产品指令系统完全兼容,其基本特性如下:
有128字节的片内RAM,32个可编程I/O端口,两个16位定时/计数器,一个5向量两级中断结构,允许6个中断源,一个全双工串行通信口,片内振荡器及时钟电路。
同时,其全静态逻辑的工作频率范围为0~24MHz,并且支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位[7]。
3.1.1AT89C51的引脚
制造工艺为CHMOS的MCS—51系列单片机都采用40引脚的双列直插封装(DIP)方式,在40条引脚中有两条用于电流的引脚,两条外接晶体的引脚,4条控制或其它电源复用的引脚,32条I/0口,具体见下图3.1:
图3.1AT89C51引脚
Fig.3.1PinofAT89C51
(1)主电源引脚Vss和Vcc:
Vcc接+5V电源
(2)外接晶体引脚XTAL1、XTAL2:
XTAL1为内部振荡电源电路反相放大器的输入端,是外接晶体的一个引脚,当采用外接晶体时,此引脚接地。
XTAL2为内部振动的反相放大器的输出端,是外接晶体的另一端,当采用外接晶体时,此引脚接振荡器。
(3)控制或其它电源复位引脚RET/Vpd、ALE/
和
/Vpp。
此外,MCS—51系列有四个8位并行I/O口共32根I/0线,每个口均为双向口,用P0—P3表示,每个口都有一个8位的锁存器,复位后,他们的状态全为“1”。
P0口,双向8位漏极开路型双向I/0口,在访问外部存储器时,它是分时传送的,低字节地址和数据总线P0口能以吸引电流的方式驱动八个LSTTL负载。
P1口,8位并行输入/输出口,也是一个准双向口带有内部提升电险,它能驱动(吸收或输出电流)四个LSTTL负载。
P2口,是一个带有内部提升电阻的8位准双向I/0口,在访问外部存储器时它输出高八位地址,P2口可以驱动四个LSTTL负载。
P3口,是一个带有内部提升电阻的8位双向I/0口,能驱动四个LSTTL负载,此外P3口还用于第二功能,详见下表3.1引脚功能。
表3.1AT89C51的P3口引脚功能表
Tab.3.1MenuofP3mouthofAT89C51
端口引脚
第二功能
P3.0
(串行输入口)
P3.1
(串行输出口—)
P3.2
(外部中断0输入线)
P3.3
(外部叫断1输入线)
P3.4
(定时器0外部输入)
P3.5
(定时器1外部输入)
P3.6
(外部数据存储器写选通信号输出)
P3.7
(外部数据存储器读选通信号输出)
3.1.2振荡器电路
(1)外部晶振的选用:
AT89C51的内部有一个用于构成振荡器的高增益反相放大器。
该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚ATAL2。
这两个引脚跨接石英晶体振荡器(简称晶振)和微调电容,就构成一个稳定的自激振荡器。
可取C1=C2=30PF,具体的接法如下图3.2所示:
图3.2外部晶振电路
Fig.3.2Externalcrystalcircuit
AT89C51的工作频率范围在0~24MHz。
在此选用的是12MHz的晶振,振荡周期为1us,机器周期为1us,所以这个晶振可以满足这个系统的要求。
晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
但反过来运行速度快对存储器的速度要求越高,对印制电路板(也称印刷电路板)的工艺要求也高,即要求鲜见的寄生电容要小。
为了提高温度稳定性,应采用温度稳定性能好的电容[8]。
(2)振荡器电路原理
图3.3振荡器工作原理
Fig.3.3Principleofoscillator
单片机内含振荡器电路,但晶体振荡器和电容在片外,由引脚XTAL1和XTAL2连接到片内。
XTAL1为振荡器反相放大器和时钟发生电路的输入端,XTAL2为反相放大器的输出端。
振荡器电路工作原理如图3.3所示。
片内时钟发生器实质上是个2分频的触发器,其输入来自振荡器(fosc),输出为2相时钟信号,即状态时钟信号,其频率为fosc/2;状态时钟3分频后为ALE信号,其频率为fosc/6;状态时钟6分频后为机器周期信号,其频率为fosc/12。
振荡器的工作可以由特殊功能寄存器PCON中的PD为控制。
当PD=1时,振荡器停止工作,系统进入低功耗工作状态。
3.1.3里程计算与计价单元的设计
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给液晶显示单元的[9]。
其原理如图3.4所示。
图3.4传感器测算里程原理图
Fig.3.4Schematicofsensorscalculatingmileage
由于A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5V~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的I/O端口上,而且其最高检测频率可达到1MHz。
当车灯为重车状态时(低电平),计价器开始工作。
传感器的输出信号经5021光电耦合器后,再经电容滤波及74HC14芯片整形,送单片机的P3.2口(INT0)作为信号的输入端。
采用外部中断0,车轮每转一圈(设车轮的周长是1.571m),霍尔开关检测并输出一个脉冲信号,引起单片机的中断,对脉冲计数。
当计数达到1000次时,也就是1571m,单片机将金额增加,其计算公式:
当前单价×公里数=金额。
不同车型的车轮直径可能不一样,通过软件设置车型,对不同车轮直径的车进行调整。
其集成霍尔开关外形及接线如图3.5所示。
图3.5集成霍尔开关外形及接线图
Fig.3.5IntegratedHallswitchappearanceandwiringdiagram
3.1.4扩展存储器的设计
MCS—51系列单片机由于其芯片结构引脚等原因,单片机内ROM、RAM等功能部件的数量在使用时往往感到不够,因此需要在片外进行扩展,以满足实际系统的需要。
现在大容量的EPROM存储器发展很快,价格也日趋便宜,采用大容量8KB以上存贮器比采用小容量的更为适宜。
其典型产品有:
2716、2732、……27512等,由于这次设计采用的是AT89C51里边带有一块8k的EPROM,所以不需再扩展EPROM,而考虑到这次设计所要完成的功能,需扩展一片2817A芯片作为储存之用。
[10]
(1)2817A存储芯片简介
2817A存储芯片的容量规格是:
2K×8。
芯片外形是28条引脚双列直插式。
单一5V工作电源支持读出和写入操作。
读出时间不超过250纳秒,写入时间10毫秒。
图3.62817A引脚
Fig.3.6Pinof2817A
A10~A0:
11条地址线
D7~D0:
8条数据线
CE:
片选输入控制线,低有效。
OE:
读出控制,低有效。
WE:
写入(编程)控制,低有效。
RDY/
:
编程状态指示。
高电平表示可以写入,低电平表示需要等待。
下表为2817A的工作方式:
表3.22817A的工作方式
Tab.3.2Methodsofworkof2817A
CE
OE
WE
BUSY
A10~A0
D7~D0
功能说明
1
Ⅹ
Ⅹ
高阻
高阻
高阻
静态隔离
0
0
1
高阻
输入地址
输出数据
读出数据
0
1
0
0
输入地址
输入数据
编程写入
(2)AT89C51外扩2817A的设计
图3.72817A与AT89C51接口电路图
Fig.3.7Interfacecircuitof2817AandAT89C51
2817A与AT89C51单片机的硬件连接图如图3.7所示。
在图3.7中,2817A既可作为外部的数据存储器,又可作为程序存储器。
AT89C51通过P1.0查询2817A的RDY/
引脚状态来完成对2817A的写操作。
2817A的片选信号由P2.7提供,在系统中有其他ROM和RAM存储器时,需统一考虑编址问题。
连线说明:
①地址线。
图3.7中,2817A的11条地址线(A0~A10,容量为2K×8位,211=2×1024=2K)中的低8位A0~A7通过锁存器74LS373与P0口连接,高3位A8~A10直接与P2口的P2.0~P2.2连接。
②数据线。
2817A的8位数据线直接与单片机的P0口相连。
③控制线。
单片机与2817A的控制线连接采用了将外部数据存储器空间和程序存储器空间合并的方法,使得2817A既可以作为程序存储器使用,又可以作为数据存储器使用。
单片机中用于控制存储器的管脚有以下三个:
——控制程序存储器的读操作,执行指令的取指阶段和执行MOVXA,@A+DPTR指令时有效;
——控制数据存储器的读操作,执行MOVX@DPTR,A和MOVX@Ri,A时有效;
——控制数据存储器的写操作,执行MOVXA,@DPTR和MOVXA,@Ri时有效。
④
:
直接接地。
由于系统中只扩展了一个程序存储器芯片,因此片选端直接接地,表示2817A一直被选中。
⑤
:
AT89C51的程序存储器读选通信号和数据存储器读信号经过“与”操作后,与2817A的读允许信号相连。
这样,只要其中一个有效,就可以对2817A进行读操作。
也就是说,对2817A既可以看作程序存储器取指令,也可以看作数据存储器读出数据。
⑥
:
与AT89C51的数据存储器写信号相连,只要执行数据存储器写操作指令,就可以往2817A中写入数据。
⑦
:
与AT89C51的P1.0相连,采用查询方法对2817A的写操作进行管理。
2817A在擦、写操作期间,
脚为低电平,当字节擦、写完毕时,
为高电平。
其实,检测2817A写操作是否完成也可以用中断方式实现,方法是将2817A反相后的
与AT89C51的中断输入脚
相连。
当2817A每擦、写完一个字节,便向单片机提出中断请求。
图3.7中,2817A的地址范围是0000