出租车自动计费器课程设计
摘要
本文主要介绍了出租车计费器系统的组成及工作原理,简述了以单片机AT89S52为核心设计的一款多功能出租车计价器,该计价器实现里程计价与显示、数据存储及查询、时钟显示、票据打印等功能。论述了计程模块,计费模块,显示模块,打印模块等的设计方法与技巧。具有使用方便,功能全面,系统稳定性好等优点。
关键词:出租车计费器;单片机;AT89S52
1
信息工程学院课程设计(论文)
Abstract
In this paper, a taxi meter system structure and working principle, outlined the AT89S52 microcontroller as the core design of a multi-functional taxi meter, the meter to achieve mileage pricing and display, data storage and query, the clock display, bill printing. Discusses the meter module, billing module, display module, the print module design methods and techniques. Easy to use, fully functional, and good stability.
Key word:
Taxi meter SCM AT89S52
2
信息工程学院课程设计(论文)
目 录
1 出租车计费系统的设计.............................................. 4
1.1设计内容..................................................... 4 2 总体框图和设计的模块............................................. 5
2.1 总体框图 .................................................... 5 2.2 设计的模块 .................................................. 5 3 结果分析........................................................ 11
3.1 主程序设计 ................................................ 11 3.2 几个关键子程序 ............................................ 12 4 系统仿真........................................................ 13 5 总结............................................................. 14 参 考 文 献..................................................... 15
3
信息工程学院课程设计(论文)
1 出租车计费系统的设计
1.1设计内容
出租车自动计费器根据客户用车的实际情况而自动显示用车费的数字仪表,根据用车起价,行车里程计费及等候时间计费三项求出客户用车的总费用,通过数码自动显示。 (1) 里程测量精确到500m。
(2) 起步价按Z元/2km,起步价外按P元/500m进行机费。 (3) 等候按R元/60 秒计费。
(4) 具有里程显示,收费显示,里程单价显示。 1.2 基本设计原理
单片机采集并判断空车灯信号及路程检测传感器信号,当出租车启动时,单片机检测到霍尔传感器的脉冲信号并进行里程计算。当无乘客时,单片机调用实时时间芯片DS1302程序和MAX7219串口显示驱动程序,用4只LED进行时钟显示;当空车灯掰下乘客上车时:ISD2560语音播报电路进行语音播报1(欢迎乘客乘坐本出租车„),通过DS1302获取时间信息分辨白天/晚上,然后调用AT24C02程序获取白天/晚上的单价及起始价,便开始计价并显示时间、里程和金额等信息;当空车灯打上乘客下车时:进行播报2(谢谢再次乘坐本出租车,请交金额¥„),并打印好票据,单片机将营运数据信息存储到24C02中,等待出租车再次启动后单次金额与里程等信息清零复位,就此完成一次计价。
由电源部分、霍尔传感器路程测量部分、数据显示部分、时钟部分、语音播报部分、票据打印部分和数据存储部分等组成,各部分端口分别与单片机AT89S52的输出口相连,通过单片机的控制来实现计价器的功能实现。
4
信息工程学院课程设计(论文)
2 总体框图和设计的模块
2.1 总体框图
电源电路空车灯键盘控制霍尔传感器AT24C02存储电路DS1302时钟电路语音播报图1 整体方案设计方框图
2.2 设计的模块
2.2.1 电源部分
由于计价器的工作环境比较差,它要求有抗振动、抗高低温、抗潮湿、抗电磁干扰等能力,特别是电源方面的干扰,如出租车启动时,发动机打火、电瓶充电等造成输入计价器的+12 V电源不稳定。因此采用+12 V电瓶电源经过滤波和电源稳压管理芯片7805后得到+5 V的稳定电压输出,保证整个系统能够正常工作。如图2所示。
图2 电源电路
AT89S52单片机打印输出串口显示16bLED
2.2.2 路程测量部分
出租车中需要一个能准确获得车轮转动即路程计量信号的装置,以得到标准的脉冲信号送入单片机的定时/计数器T1即P3.5引脚,利用单片机的T1的计数功能完成100次的计数后产生一中断来完成路程的测量。(设车轮周长为1 m,则霍尔传感器每产生100个脉冲便表示车已行程0.1 km,根据实际情况在程序中进行设置)。汽车联轴器按圆周间隔嵌入磁钢,用霍尔传感器集成芯片A44E检测并输出脉冲,其工作原理如图3所示,霍尔传感器集成芯片
5
信息工程学院课程设计(论文)
A44E有信号转换、电压放大、整形输出等功能,为增加其抗干扰的能力,经过74LS14对信号整形后再通过光偶送入P3.5引脚。如图4所示。而在此电路中为了防止司机作弊,可采用加密传感器的方法,先对霍尔传感器采集到的计数脉冲加密,使计费脉冲以密文方式传输,最后解密为明文脉冲,传送到计价器计费。在密码传感器中,加密器向解码器发送的是密码,只有加密器和解密器固有密码相同时,解码器才向计价器发送计数脉冲,计价器才计费,因此,新型元器件 密码传感器提高了计价器计费可靠性,不法出租车司机也无法使车费增加,同时司机也不能私自更换计价器传感器,实现了计价器由国家计量部门统一安装、维修和年检的统一管理。
图3 A44E传感器工作原理
图四 霍尔传感器接口电路
2.2.3 数据显示部分
由于设计要求有单价(2位)、中途等待时间(2位)、路程(4位)、金额(4位)显示、时钟(4位)输出,如果采用LCD液晶显示,在距离屏幕1 m之外就无法看清数据,而且在白天其对比度也不能够满足要求,因此采用16位的高亮度LED数码管显示。当为空车时,为了节电,只显示时间,为供司机查看时间提供方便,当司机要查询以往的营运数据时,按查询键可提供显示;在乘客时显示营运的单价、等待时间、路程、金额及时钟。显示驱动器MAX7219具有串行输入/并行输出功能,最多可显示8个LED数码管,同时有可以对亮度、译码方式、显示位数、工作模式进行编程,非常满足远距离数据显示;MAX7219采用串行寻址方式,进入DIN端的16位串行数据在每个CLK的上升沿被移入到内部的16位移位寄存器中,在LOAD端的上升沿被锁存到控制寄存器和数据寄存器中,接收到的第一位为最高位D15 ,在该电路中采用89S52的P1.5为数据口,P1.6为LOAD端,P1.7为时钟口。由于要显示16个LED,所以采用2片MAX7219级连进行驱动显示,把上一片的数据输出口和下一片的数据输入口连接使用。而主电路板上TA89S52输出的DIN,LOAD,CLK信号在传输到显示板的过程中可能会由于干扰而
6
信息工程学院课程设计(论文)
产生变形,所以在显示板电路板上对这3个信号进行整形然后再通过光偶,以防止数据的错误显示或不显示的现象发生。如图5所示
图5 MAX7219接口电路
2.2.4 时钟部分
计价器在出租车空车行驶时需要显示实时时钟,因为它的时钟是作为白天/晚上单价自动转换的一个基准,而且计价器的时钟显示能为司机和乘客提供方便,所以选择一个好的时钟芯片对计价器很重要。DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,采用SPI三线接口与CPU进行同步通信;时钟可提供秒、分、时、日、星期、月和年;通过设置元器件与应用肖卫初等:基于单片机的多功能出租车计价器的设计DS1302的控制/状态寄存器选择日历,时钟方式经过初始校准后即可工作使用;工作电压宽达2.5~5.5 V,采用双电源供电(主电源和备用电源),并设置备用电源充电方式,提供了对后背电源进行涓细
电流充电的能力,在没有主电源的情况下启用备用电源能保存时间信息及数据。如图6所示。
图6 时钟芯片接口电路
2.2.5 语音播报部分
7
信息工程学院课程设计(论文)
考虑到计价器的微型化、智能化,语音芯片采用集成度较高ISD2560芯片,其最大特点是采用E2PROM进行模拟信息直接存取而不必经过A/D和D/A转换。它内部带有话筒放大器、自动增益控制时钟、扬声器驱动电路等,采用+5 V电源供电。语音模块与单片机的接口如图7所示,设计过程中,先将固定语音部分(上、下车用语、)信息存储到ISD2560内部的不同起点地址中。营运过程中根据上、下车的不同营运状态来实现不同语音功能播放。在语音芯片工作时,系统首先主程序调用放音处理程序,根据发音地址寻找ISD2560中的发音单元,然后将信号送到扬声器发出声音。
图7 语音播报模块
2.2.6 票据打印部分
8
信息工程学院课程设计(论文)
当出租车到达指定地点,司机翻起空车牌,便产生一个信号通知单片机AT89S52,单片机启动打印服务,将行车的中途等待时间、营运里程、单价、金额、日期及上下车时间等数据打印成出租车专用发票,微型打印机接口电路如图8所示。该电路采用接口插板方式与单片机相连,这一特点使得计价器的票据打印在功能上与主系统一体化,而在检查、维修时又可单独进行。本设计中所用微打是EPSON公司生产的TPμp-16微型打印机,微打与单片机通过并
行接口相连,当所需要打印的数据出现在打印机I/O0~I/O7上时,STB只要从高电平转到低电平,再从低电平转到高电平,就可把数据送入打印机。这时打印机将BUSY线置为忙(高电平),禁止新数据输入;当打印机取走数据并处理完毕后,BUSY线被置为闲(低电平),同时送出回答脉冲ACK通知系统,可以再次输入数据。
图8 微型打印机接口电路
2.2.7 数据存储部分
数据存储部分的作用是在电源断开时,存储当前设定的单价信息。AT24C02是ATMEL公司的2 kB的电可擦除存储芯片,采用2线串行的总线和单片机通讯,电压最低可以到2.5 V,额定电流为1 mA,静态电流10Ua(5.5 V),芯片内的资料可以在断电的情况下保存40年以上而且采用8脚的DIP封装,使用方便。如图9所示。
图9 数据存储电路
9
信息工程学院课程设计(论文)
图9中的时钟信号线SCL与数据线SDA需外接5.1 kΩ的上拉电阻,其作用是减少AT24C02的静态功耗,24C02采用I2C总线与AT89S52相连,AT89S52的P1.3作为它的串行时钟线,P1.4作为它的串行数据新型元器件 线。当通过通过按键设定一次数据完毕后(如:昼夜单价、等候时间、起租里程、起租金额等),系统就自动调用存储程序,将数据信息保存在芯片内;当系统重新上电时,自动调用读存储器程序,将存储器内的数据信息,读到缓存单元中,供主程序使用。由于保存在24C02中的数据是不能随意进行改动的,因此它具有防作弊功能。
此外出租车营运过程中的一些营运数据,如:单次出租的营运额和营运里程、一段时间内的营运总额和总路程等,也存储在24C02中,以便出租车公司及司机查询,使出租车司机更方便的管理营运数据,出租车行业得到更有效的管理。
10
信息工程学院课程设计(论文)
3 结果分析
软件设计部分可分为:主程序控制程序、外部中断0空车灯信号中断程序、外部中断1里程计算程序、T0等待时间计数中断程序、MAX7219串口静态16位LED显示程序、DS1302时钟程序、ISD2560语音播报程序、24C02数据存储程序、打印程序和键盘服务程序等;在整个软件中一些变量使用全局变量形式,以供主程序的调用并进行显示。
3.1 主程序设计
在主程序模块中,需要完成对各芯片的初始化(MAX7219,AT24C02,ISD2560语音芯片及微型打印机的初始化)、各中断的初始化(外部中断0、外部中断1、T0的初始化),另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。主程序流程图如图10所示。
图10 主程序流程图
当空车信号灯打下时,表示有乘客上车,就就进行语音播报1,并启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价和起价来计算出当前的累计价格,并将结果存于价格寄存器中,然后将当前时
11
信息工程学院课程设计(论文)
间和累计价格送MAX7219驱动的LED显示电路显示出来。当中途塞车(等待或低速行驶)时,在一定时间内没有检测到传感器的脉冲信号就启动T0计时器进行计时,当超过规定的等待时间后,计价器就根据等待价格进行当前金额的累加与显示,并在计价器上显示等待时间;当到达目的地的时候,司机把空车灯打上,就停止计价,显示当前所应该付的金额和对应的单价,并进行语音播报2,及票据打印。等乘客下车后,启动出租车,计价器检测到传感器的脉冲信号,系统自动对显示清零,并重新进行初始化过程,完成1次计价。
3.2 几个关键子程序
3.2.1 外部中断1里程计数程序
霍尔传感器输出的脉冲信号输入到单片机的外部中断1接口,车轮每转一圈就产生一个脉冲信号,单片机就进行一次中断,在中断程序中完成两项任务: (1)启动定时器0,表示出租车启动;
(2)单次里程与总里程的累加计算并将结果存入寄存器中(设车轮转1圈为1 m,则每中断1次,里程就增加1 m)。 3.2.2 T0中途等待计时程序
当外部中断1进行中断时就启动改T0开始计时,每当计时到达1 min,等待时间累加器值就自加,而超过规定的等待时间后,就对当前金额加上额外的中途等待的价钱,以后每0.1 min都自动加上中途等待的单价。当中途等待结束的时候,也就自动切换到正常的计价。 3.2.3 键盘服务程序
键盘采用查询的方式,其放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。键盘服务包括司机查询与出租车管理人员对数据的调整。
12
信息工程学院课程设计(论文)
4 系统仿真
在Proteus的ISIS 6软件环境下画出电路原理图,如图11所示。接下来就是将设计的程序在Keil C51μVision2开发集成环境上编译成机器语言,进入Pro-teus的ISIS,鼠标左键点击菜单“Debug”,选中“useromote debuger monitor”,便可实现KeilC与Proteus
连接调试。首先在Proteus中双击单片机AT89S52,将KeilC下编程生成的.HEX文件导入到AT89S52中,可在Proteus中单击全速仿真运行按钮,进行现象的查看,能清楚地观察到芯片上每一个引脚的电平变化,红色代表高电平,蓝色代表低电平;并在LED显示器上显示相应的数据,如图11所示。如果现象不正确,则在KeilC中单步调试程序,并在Proteus观察现象,那一步不正确则对该段的程序进行修改,调试直到仿真完全成功为止。
图11 系统仿真图
13
信息工程学院课程设计(论文)
5 总结
本文设计了以单片机AT89S52为核心,以语音芯片ISD2560、时钟芯片DS1302、MAX7219等芯片为外设的新型出租车计价器。给出硬件电路图及主程序流程图,阐述了软硬件设计过程中关键技术的处理。该系统完全满足集计程、计时、计费、存储、查看、统计等多种计量功能为一体的出租车计价器的实用要求。本文在出租车计价器的设计中,优化了的设计的程序,实现Keil C51与Proteus连接调试,这对于单片机应用系统、电子电路的开发和教学等都有较大的实用价值。
通过这次课程设计,不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力还让动手能力,也提高了我的思考问题、分析问题、解决问题的能力。这是在以前的学习过程中不曾学到的。另外通过本次设计,使我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。
14
信息工程学院课程设计(论文)
参 考 文 献
[1]何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,1999. [2]求实科技.单片机典型模块设计实例导航[M].北京:人民邮电出版社,2004. [3]陈小忠.单片机接口技术实用子程序[M].北京:人民邮电出版社,2005. [4]赵晶主.电路设计与制版Protel99高级应用[M].北京:人民邮电出版社,2000.
[5]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品精选[M].北京:北京理工大学出版社,2000.
[6]杨恢先,黄辉先.单片机原理及应用[M].长沙:国防科技大学出版社,2003. [7]康华光电子技术基础数字部分[D'I].4版北京:高等教育出版社,2003 [8]童诗自,华成英模拟电子技术基础[ D'I]北京:高等教育出版社,2003 [9]戴胜华,蒋人明单片机原理与应川f X71北京:清华人学出版社,2005
[10]陈学平,兰帆Pro}e12004电路设计与电路仿真[D?]北京:清华人学出版社,2007
15
因篇幅问题不能全部显示,请点此查看更多更全内容