出租车计价器设计.docx
《出租车计价器设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器设计.docx(41页珍藏版)》请在冰豆网上搜索。
出租车计价器设计
摘要
随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,而且可以通过软件编程来完成更多的附加功能。
本设计采用AT89S52单片机为主控器,以RPR-220光电传感器测距,实现对出租车的多功能的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,通过ISD2560实现语音播报功能,输出采用8段数码管进行显示。
本次毕业设计设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价,同时具有语音播报和数据打印功能。
关键词:
出租车计价器;单片机;AT89S52;光电传感器;语音播报
Abstract
Alongwiththedevelopmentofindustry,taxicabisanimportantpartofurbantransportation,strengthenmanagementandreducefromdriversandpassengers,thedisputehasgoodperformanceonthemetertaxidriversandpassengersalikeisverynecessary.Whileusinganaloganddigitalcircuitdesignofthewholecircuitmeter,useoflargescale,highfailurethandevices,debugging.ThedesignandMCU,relativelypowerfulfunctions,uselessofthehardwareandsoftwareofappropriatecoordinationcanbeeasilyrealizeddesignrequirements,andflexibility,canbeaccomplishedbysoftwareprogrammingadditionalfunctions.ThisdesignUSESforthemaster,AT89S52SCMinRPR-220distanceofphotoelectricsensor,thevaluationofthetaximultifunctionaldesign,andusingAT24C02realizationofpowersystem,throughsuchinformationpreservationunitISD2560realizingspeechfunction,usingdigitaloutputfor8pipedisplayThiscircuitdesign,notonlycanrealizethebasicmeter,andcanaccordingtothevaluation,butalsoaccordingtodayandnightandwaittoadjusttheunithalf-way,bothinvoiceanddataprinting.
Keywords:
Themetertaxi,SCM,AT89S52devices,Photoelectricsensor,Speech
5.1电路的安装与调试19
1绪论
1.1出租车计价器概述
随着交通行业的发展,出租车已经成为城市交通生活中必不可少的一部分,从加强行业管理和减少司机与乘客之间的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高,国内出租车计价器已经经历了四个阶段的发展,从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器,再从集成电路式到目前的单片机系统设计的出租车计价器。
出租车计价器显示的总金额是由公里数(等候时间一般折算成一定比例的里程来计算)与单价联合组成。
出租车计价器通过传感器与行驶车辆连接。
出租车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价公里数目。
目前市场上出租车计价器功能主要有具有数据的复位功能、白天/晚上转换功能、数据输出功能、计时计价功能等等,但能够进行语音播报数据信息和打印功能的出租车计价器还是比较少见的,针对这一点我们来设计一款多功能出租车计价器,在原有功能的基础上增加单价输出、单价调整、路程输出、语音播报数据信息和打印数据等功能,来方便广大司机与乘客。
1.2论文主要工作
(1)方案的初步论证与选择
我通过搜集题目的相关资料,参照了目前通用的设计思想和设计方法,选择了几套设计方案进行了分析比较,最终选定了以单片机来实现设计要求。
单片机功能强大,用硬件和软件结合可以很容易的实现设计要求,且灵活性强,同时可以通过软件编程来完成更多的附加功能。
(2)硬件设计
紧扣设计方案,以其为指导思想从功能和电气特性两方面选择合适的器件。
经过对比选择选定AT89S52单片机为主控器件,RPR-220光电传感器来检测距离,独立键盘来实现功能的调整,AT24C02来实现存储功能,ISD2560语音芯片来实现语音播报和用数码管来实现数据显示。
(3)软件设计
根据硬件特点和设计要求,采用C语言来编写程序。
程序功能分为中断程序、就算程序、显示程序、语音播报程序、数据存储等几个功能上相对独立的模块。
然后按照所划分的模块逐个编写和调试,最后将独立的模块整合起来。
2系统方案设计
2.1设计要求
现代社会中,出租车计价器与人们的生活联系越来越密切,人们对它的要求也越来越高,因而设计一款多功能出租车计价器来满足人们的正常需要就显得十分必要,本设计满足了以下功能要求:
起步费用:
由用户设定起步价将其保存在电路中,传感器检测的行车里程在起步价费用里程内,就关闭行车里程计费程序,显示器一直显示起步价。
当行车里程超过了起步价费用里程,计费程序才启动计费。
行车里程计费:
通过传感器将出租车的行驶距离送入处理电路中,然后换算成行车里程,根据行车里程和已经设定好的单价计算出所需行车的费用,将这个费用送进总费用的显示缓存区。
等待计费:
在行车路途中,传感器检测到汽车速度低于设定值时,这时候就要启动等候计费程序的中途等待程序,因故停车超过5分钟的按0.5元/5分钟。
语音播报:
当有乘客上车时,致以欢迎词,如欢迎乘坐本车等信息;当到达目的地乘客下车时,致以结束语,如谢谢乘坐等,同时播报本次行程所花费的金额,里程。
打印功能:
在到达目的地结束本次行程时,可以将本次乘车里程、单价、花费金额等打印出来,以便供有需要的顾客存根。
整个行车过程中的总费用=起步价+行车费用+等候费用,这个费用在总费用显示缓冲区完成求和之后通过数码管显示出来,乘客能够直观明了的查看出来,十分方便。
要求出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。
从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。
过3公里后,实现每1公里单价收费,中间遇暂停时,里程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。
同时,白天和夜晚价格不同,可以进行切换。
白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。
(默认起步价为6元/3公里,里程单价白天为2元/公里,夜晚为元2.5/公里,等待计时单价0.5元/5分钟)。
2.2出租车计价器控制方案设计
计数器系统主要由六部分组成:
AT89S52单片机、独立键盘、EEPROMAT24C02、RPR-22O光电传感器、ISD2560语音芯片和显示数码管。
本设计通过RPR-220光电传感器来检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上,同时在营运过程中根据上下车的不同状态来实现不同的语音功能播放。
在乘客到达目的地时通过按键进行语音播报和打印乘车数据。
独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图2-1所示。
图2-1系统结构图
3租车计价器硬件设计
3.1单片机最小系统设计
主控机系统采用了Atmel公司生产的AT89S52单片机,它含有256字节数据存储器,内置8K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。
复位电路和晶振电路是AT89S52工作所需的最简单外围电路。
单片机最小系统电路图如图3-1所示。
图3-1单片机最小系统图
AT89S52的复位端是一个史密特触发输入,高电平有效。
复位端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。
在复位电路中,按一下复位开关就使在复位端出现一段时间的高电平,外接11.0592M晶振和两个30pF电容组成系统的内部。
3.2速度及里程检测电路设计
3.2.1A44E霍尔传感器检测电路设计
A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上。
霍尔传感器有信号转换、电压放大、整形输出等功能,其原理如图3-2所示。
图3-2霍尔传感器原理
里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。
其原理如图3-3所示。
图3-3传感器测距示意图
若本系统选择了将A44E的脉冲输出口接到P3.3口外部中断1作为信号的输入端(这样可以减少程序设计的麻烦),车轮每转一圈(设车轮的周长是2米),霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到500次时,即1公里,单片机就控制将金额自动增加,如图3-4所示。
图3-4A44E霍尔元件检测电路
3.2.2RPR-220光电传感器检测设计电路
RPR-220是一种一体化反射型光电探测器。
其发射器是一个砷化镓红外发射管,接收器是一个高灵敏度,硅平面光电三极管。
采用DIP4封装,它具有灵敏度高,受离散光的干扰小,体积小,结构紧凑等特点。
发射器和接收器都有两根引出脚,其中长脚为正极,短脚为负极。
通过发射器发射出光线一部分能够返回,一部分不能返回,由此产生脉冲,通过脉冲计数,当计数达到500次时,即1公里,单片机就控制将金额自动增加,如图3-5所示。
图3-5RPR-220光电传感器检测电路
两种方案用于做检测电路都可以,都可以实现试验结果,本次毕业设计选择的是光电传感器检测里程。
3.3AT24C02掉电存储电路设计
AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA。
在断电的情况下保存40年以上,采用8脚的DIP封装,其中A2到A0为地址引脚,SDA、SCL为总线接口;WP为保护引脚,WP接VSS时,禁止写入高位地址,WP接VDD时,允许写入任何地址。
AT24C02芯片引脚配置如图3-6所示。
图3-6AT24C02引脚配置图
掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。
其电路如图3-7所示。
图3-7存储单元电路
图中R4、R5是上拉电阻,其作用是减少AT24C02的静态功耗。
由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SC(时钟脉冲)和SDA(数据/地址)与单片机P1.6和P1.7口连接,进行传送数据。
每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。
3.4键盘电路设计
当单价等信息需要进行修改时,就要用到键盘进行修改。
由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。
电路原理如图3-8所示。
图3-8键盘调整电路设计
S1:
接P1.0口,对上一次的计费进行清零,为下次载客准备。
S2:
接P1.1口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。
S3:
接P1.2口,当功能键S4按下时,S3可对数据进行减小。
S4:
接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。
S5:
接P1.3口,当其按下时进行语音播报。
3.5数据显示电路设计
数码管有共阳极和共阴极两种接法。
若采用共阴极结构,那么阴极公共点接地,各阳极独立,接高电平者发光,阳极接地者呈暗淡。
反之则相反。
此次设计采用共阴极。
LED显示器与单片机的接口一般有静态显示和动态显示两种方式。
LED采用静态显示与单片机接口时,共阴极或共阳极点连接在一起接地或高电平。
静态显示器接口电路,在位数较多时,电路比较复杂,需要的接口芯片较多,成本也较高。
动态LED显示接口由于各个数码管共用同一个段码输出口,分时轮流通电的,从而大大简化了硬件线路,降低了成本。
LED显示器中每个发光二极管要通过5毫安-20毫安的电流才能达到正常亮度。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各个数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
此次设计采用动态显示,目的就是为了节省硬件资源。
显示单元由7个8段共阴极数码管组成,采用动态扫描进行显示。
74LS244为单向三态数据缓冲器,内部有8个三态驱动器,分成两组,分别由控制端控制,当两个控制端接地时,相当于8个三态门均打开。
由于单片机驱动能力有限,本处采用74LS244作为数码管的驱动。
数码管段选位接P2口,用于显示总金额和显示里程与单价;位选接P0口,用于控制数码管。
电路如图3-9所示。
图3-9显示单元设计
3.68255接口电路设计
由于已有的单片机接口不能满足所设计的全部功能的需要,因此需要对已有的单片机接口进行扩展。
本设计采用的是8255对单片机接口进行扩展。
由于8255是Intel公司专为其主机配套设计制造的标准化外围接口芯片,因此它与单片机的连接是比较方便的。
采用的比较多的是直接利用地址线的线选法,这种方法虽然要浪费大量的地址号,但译码电路比较简单。
单片机的P0口为地址/数据复用口。
数据通过P0直接传送,地址的低8位是需要通过锁存器74LS373得到的,而地址的高8位则由P0直接传送。
具体电路如图3-10所示。
图3-108255电路原理图
3.7语音播报系统设计
主要用于向乘客致欢迎词及里程、单价、总金额等,以提高司机的服务质量。
由于考虑到目前计价器的微型化、智能化,本设计采用了集成度较高的ISD2560芯片,其最大的特点是采用EEPROM进行模拟信息的直接存取,而不必经过A/D和D/A转换,使用方便,且语音音质自然,可重复录放10万次。
它内部带有话筒放大器、自动增益控制时钟、扬声器驱动电路等,工作电压是5V,可以通过变压电路将5V电压转变为3V,单片录放时间60秒。
设计过程中可以先将上下车常用的一些用语的语音部分存储到语音芯片内部的不同起点地址中。
营运过程中根据上下车的不同状态来实现不同的语音功能播放。
语音芯片工作时,系统先在主程序调用放音程序,根据发音地址寻找ISD2560中的发音单元,然后将信号送到扬声器发出声音。
电路如图3-11所示。
图3-11语音播报电路设计
3.8票据打印电路设计
当出租车到达指定地点,司机通过按键产生一个信号,通知单片机AT89S52,单片机启动打印服务,将行车的公里数、单价、金额、中途等待时间、日期及上下车时间等乘车数据打印成出租车票据,共乘客保留。
当通过按键设定一次数据完毕后(如:
昼夜单价、等候时间、单价等),系统就自动调用读存储器程序,将存储器内的数据信息,读到缓存单元中,供主程序使用。
由于保存在AT24C02中的数据是不能随意进行改动的,因此它具有防作弊功能。
此外出租车营运过程的一些数据也会保存在其中,以便出租车公司及司机查询,方便进行管理。
本设计打印采用炜煌A6热敏微型打印机,其工作电压DC3.5V-9V(在高压下,打印速度更快,性能更佳),通讯接口为并口/串口(TTL/RS232)。
我们直接选择TTL电平和串口打印机,这样与单片机连接电路简单,程序也不复杂具体电路如图3-12所示
图3-12票据打印电路设计
4软件设计
4.1系统主程序
在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及中断、计算、循环等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志位寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
当有乘客上车时,就进行语音播报,并启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。
若已超过,则根据里程值、每公里的单价数和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价通过数码管显示出来,乘客到达目的地时,停止计价,显示当前应付的金额和对应的单价,并进行语音播报和票据打印,等乘客下车后,启动出租车,计价器检测到传感器的脉冲信号,系统进行清零,并重新进行初始化过程,完成一次计价。
主程序流程如图4-1所示。
图4-1系统主流程图
4.2定时中断服务程序
在定时中断服务程序中,每10ms产生一次中断,当产生100次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。
当选择定时/计数器作为定时器工作时,计数器的加1信号由振荡器(晶振)的12分频产生,即每经过1个机器周期,计数器增1,直至计数溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。
本设计的晶振频率为12MHZ,初始值计算过程如公式4-1所示。
由于晶振的频率为12MHz,则计数周期为:
T=1/(12000000Hz)*12=1us,本设计选用定时器0,TMOD=0X01,选用模式1,故T0为16为计数器,T0计数最大值为65536。
要定时10ms,需要计数10000个1us(计数周期)
55536转换为十六进制即为D8F0,计数器从D8F0开始计数,计数到65536溢出,产生定时中断。
4.3里程计数中断服务程序
车每行进2米光电传感器输出一个低电平信号,使单片机中断一次,当计数器对脉冲计数满500次时,使微机进入里程计数中断服务程序。
在该程序中,要完成当前行驶里程数和总额的累加操作,并将结果存入里程和总额寄存器中。
4.4中途等待中断程序
当出租车速度低于1.4米/秒(5公里/小时)时,折算成脉冲后为10s小于7个,若10S后仍然低于这个速度没有输出信号,片内的T1定时器便被启动,每当计时到达5钟,就对当前金额加上中途等待的单价,以后每五钟都自动加上中途等待的单价。
当中途等待结束的时候,也就自动切换到正常的计价。
4.5显示程序
显示程序利用定时器每10ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。
4.6计算程序
计算程序根据里程数分别进入不同的计算公式。
如果里程大于3公里,则执行公式:
总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:
总金额=起步价+等待时间*等待单价。
程序流程图如图4-2所示。
图4-2计算程序流程图
4.7键盘扫描程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
键盘程序流程图如图4-3所示。
图4-3键盘扫描流程图
5实验调试及结果分析
5.1电路的安装与调试
经过一段时间的焊接,做成的实物如图5-1所示。
图5-1实物图
将实物焊接好后,对实物进行调试,调试中的实物,如图5-2所示。
图5-2实物调试图
电路的焊接与调试是毕业设计中最为复杂的一部分,任何一方面出现问题都会导致制作实物的失败,我们需要在一次次的调试当中去不断改进,是对我们所学知识的一次全方位的考验。
在出租车计价器的系统中,我们采用USB接口直接供电,满足计价器完成修改单价、显示、计价等功能所需的电压要求。
传感器的选择方面,考虑到对路程里数的测试我们选用了RPR-220光电传感器非常适合我们的设计要求。
我们在LED数码管的挑选上也是经过考虑和筛选的,共阴的8段数码管的段选线时连在一起的,通过74LS244进行驱动,高电平时点亮相应的段。
要注意的是如果选择的扫描频率不合适,可能会出现小数点闪动的情况。
但只要扫描频率不小于24Hz,人眼就感觉不到显示器的闪烁。
本系统采用36Hz的扫描频率,扫描脉冲由相应的外围电路提供。
模拟车轮我们采用电动机附带光电传感器,车轮转到时,传感器能够模拟检测车辆行走里程。
我们设车轮的周长是2米,车轮每转一圈,传感器就检测并输出信号,引起单片机的中断,对脉计数,当到达设定的一定圈数时单片机就自动在金额上加数。
另外,为了使得系统更人性化,我们用外壳将所有的电路都包了起来,同时也提高了系统的安全性。
5.2计价单元测试及分析
测试中我们主要从白天、晚上两种模式分别测试各项功能。
再按照不同的单价、行车里程来计算总金额,将白天和晚上单价分别设为三个数值,让汽车行驶不同的里程,来测试所做出的实物是否符合要求。
设定标准为3公里以内以起步价8元计,超过3公里以每公里按设定单价计价,假设模拟车轮转一圈实际车轮转2圈,测试结果如表5-1所示。
表5-1里程计价测试数据
模式
单价(元)
里程(公里)
总金额(元)
白天
2.5
10
25.5
2.0
2
8
1.5
1
8
晚上
3.5
7
22
3.0
2
8
2.5
5
13
由表可以看出,测试结果与理论值相符,系统比较稳定,达到了设计要求。
5.2中途等待测试
在计价模式下,如果车轮低于1.4米/秒(5公里/小时)在时,若10秒内没有改变这种状态,则进入中途等待模式下,屏幕会进入等待计价状态,5分钟后计价器自动增加0.5元。
5.3掉电单元测试
不管系统处于何种状态,当电源小于5V时,