欢迎来到精优文库网!

简易出租车计价系统设计与制作

文章来源:网友投稿 时间:2023-06-25 08:10:05

简易出租车计价系统设计与制作 简易出租车计价系统设计与制作 摘要 社会的高速发展伴随着人们对日常生活便捷水平的需求不断升高,在日常生产活动过程中的舒适性被人们越来越重视。社会基本公共设施建设也尽可能提高人们对于这方面的要求,所以新时期人们主要关注的是衣食住行问题。在旅行中它的方便性和舒适性,越就发被人们注重。于是,也就诞生了出租车行业。因为价格的低廉和服的务优质,人们在旅行中感到方便和舒适。我国从上世纪80年代开始出现出租车,但当时国民经济水平和科研能力相对有限。原来的计费系统大多是从国外进口的,不仅准确性和便捷性不高,而且价格也非常昂贵,导致出租车公司的成本上升。出租车行业在发展的早期就因为收费方式发生了许多消费者与出租车公司之间强烈的纠纷,导致了出租车的发展在社会的发展过程中需要不断完善自己的计价方式和收费模式。为了能够顺利解决消费者和公司之间由于计价发生的矛盾,人们就因此提出了为出租车配置出租车计价器以便定价功能的顺利展开,以及能够缓解矛盾提供优质舒服的搭乘服务给各大消费者。随着这几年租车服务的需求越来越大伴随出租车计价系统的优化不断蓬勃发展,早期出现的计价矛盾也在计价系统不断完善的情况下得到了缓解和解决。直到现在租车行业在我国各个城市都得到了相应的发展和大规模普及,也促使了出租车计价系统在高需求中得到了更好的完善和发展。所以,出租车计价系统将会得到越来越好的发展。

这些年来,各个系列的单片机始终是出租车计价器运行和处理用到的核心处理元件。而出租车计价系统采用的单片机技术则是支持整个系统得以顺利完成工作的核心,出租车计价系统由软件程序设计和相关的电路硬件配置组合而成;
在运作过程中实现对出租车里程的准确计费、根据实际情况进行相关调价以及计价金额的显示等等功能。具有较强的灵活性、较高的精度和良好的可靠性。所以说,值得我们去探讨的是出租车计价系统。

关键词:单片机;
计费系统;
霍尔传感器 Design and manufacture of simple taxi pricing system Abstract With the continuous and rapid development of our society nowadays, people's living standards are also improved by the science, and people would like to pay more and more attention to how to comfort all aspects of our life. The construction of social basic public facilities also improves people's requirements in this respect as much as possible, so in the new era, people mainly focus on the problem of food, clothing, housing and transportation. The more convenient and comfortable it is in travel, the more people pay attention to it. As a result, the taxi industry was born. Because of the low price and the high quality of service, people feel convenient and comfortable in travel. Taxis began to appear in China in 1980s, but the level of national economy and scientific research ability were relatively limited at that time. The original billing system is mostly imported from abroad, not only the accuracy and convenience is not high, but also the price is very expensive, which leads to the increase of the cost of taxi companies. However, in the early stage of our taxi developing industry, to a really large extent, the most essential development of the taxi industry itself is limited by the dispute of how to charge the final price. In order to solve this problem, the best way that people put forward is to increase the pricing function of taxis, and provide more high-quality and comfortable services to passengers. With the rise of taxi pricing system, the contradiction between passengers and drivers has disappeared. Nowadays, the taxi industry has already developed popular in every city of our country. With this popularization we can see today, the taxi pricing system had already used widely. Therefore, the taxi pricing system will get better and better development.In recent years, single chip microcomputer is the core of taximeter. The single-chip microcomputer technology makes it the core of taxi pricing system, which is composed of the corresponding software program and the corresponding hardware circuit to realize the functions of mileage billing, price adjustment, amount display, etc., with strong flexibility, high accuracy and good reliability. Therefore, it is worth discussing the taxi pricing system. Key words: single chip microcomputer,system of billing,hall sensor 目录 1 引言 1 2 出租车计算价格系统的设计要求与方案 2 2.1出租车计价系统的设计要求 2 2.2出租车计价系统功能模块简述 3 2.3研究内容和拟解决的关键问题 3 3 出租车计价系统的硬件设计与制作 4 3.1感应电路中的霍尔传感器 4 3.2 AT89S51系列单片机内部振荡电路 5 3.3 计价系统设计的核心AT89S51系列单片机 6 3.4 计价过程的语音播报电路 8 3.5 单片机的复位电路配置 9 3.6 电路配置中的独立按键电路 9 3.7计价系统的显示电路 10 4 出租车计价系统的软件编程设计 10 4.1 计价系统的主程序函数语句设计 10 4.2 语音播放函数设计 11 4.3 计时函数设计 11 4.4 计费管理函数设计 11 4.5显示单元电路设计 12 5 仿真测试 12 5.1 仿真软件 12 5.2 硬件组装与调试 13 6 总结与反思 14 参考文献 15 谢 辞 ........................................................................................................................................16 附录1:实物图........................................................................................................................... ..17 附录2:元件清单..........................................................................................................................18 附录3:电路图...............................................................................................................................19 附录4:程序完整代码...................................................................................................................20 1 引言 常见的出租车计价器实际上是配置在出租车上的智能根据路程进行计价的仪器。出租车计价器作为一种精确的计量较价工具,它的实际工作是通过准确测量出租车持续行使的时间长度并根据出租车滚轮配置的里程传感器传送的里程信号共同完成计价工作,根据时长和所测得的行驶距离计算搭乘出租车的乘客需要向司机支付对应的车费金额。

随着电子技术的发展和生活水平的稳步提高和对舒适度的需求上升,人们再也不仅仅于对衣食住行的基础生活需求;
而是在稳定出行的基础上更加重视出行过程的舒适度和便捷程度特别是搭乘公共租车的过程中是否能够满足自身的出行需求、因此租车计价器技术也在不断提高和慢慢发展。我国从上世纪80年代才出现出租车服务,但是由于当时国民经济水平仍然比较低同时、对电子仪器的科研能力相对比较薄弱;
因此当时大多数的电子计价系统设备都是从国外进口从而安装在出租车上的,国外的消费习惯和道路里程习惯和国内差异较大因此造成了这类计价仪器的准确性和通用性都不是特别可观。且价格也非常昂贵,导致出租车公司的成本上升。而现在,出租车行业在我国各城市的都得到了很好的发展,出租车的计价系统也融合了各个城市的特点被针对性地设计出来从而得到了十分广泛的利用和满足了普适性,出租车的计价系统工作核心技术发展也得到了稳步的上升,给人们带来了更舒适的体验。同时,出租车计价系统是出租车行业的重要补充部分,它不仅规范了乘客和司机之间的交易规则,而且,一个好的性能表现对出租车司机和乘客来说都是必要的,同时在交易上变得更加方便。所以说,具有重要价值和重大意义的是对出租车计价系统的思考。我相信出租车计价系统在将来会随着科技的进一步发展而变得更加优秀。

不管是现在的滴滴出租车还是现在流行的街头自行车共享,以及共享经济中的新热点共享汽车都有自己的定价方法,但基础电表的研究是必不可少的根结。在设计功能中还增加了时间显示和语音广播功能,使计价系统具有更多的人机交互和更好的显示功能。单片机优秀的功能在出租车计价器上得到了实现。

司机和乘客之间交易的工具是出租车计价器,出租车行业发展得越来越好的体现是计价器的出现。所以说,能够实现运行过程稳定良好的计价器和计价系统都是乘客和出租车司机非常需要以及青睐的。由于租车服务大多是都是根据租车时长来进行收费,所以想对比其他类型的常见交通方式来说;
出租车服务的收费会比其他方式更昂贵一点。在出租车运行的早期其行驶费的收取方式是根据司机自己对行驶路程估算从而报价给消费者的所以说,这就会时不时引起较大的争议。出租车的计费系统无论是在哪个国家和地区都是保证出租车服务能够顺利提供的保障,但是具体的收费标准准则在不同的国家和地区又有着不一样的标准和细则要求,因此并不具有统一性。但即使在同一个国家,不同地区的收费标准也大不相同,同一个地区的出租车个也有很多种类,收费标准也各不相同。即使是在同一个地区的同一种出租车,它的收费标准也会在社会这个大环境下做一些适当的调整。虽然各个国家各个地区的出租车收费标准都有所差距,但总体来说,收费标准都是以里程数来作为标准,只是在额外的费用上有所差异,找到了出租车计费的共同点,也有利于我们对出租车计费系统的设计与研究。

通过对出租车计算价格系统的独立设计,获得了该项目的总体设计能力。目前,各个系列单片机的工艺发展以及各类电子元件的不断更新;
都很大程度上推动了出租车计价系统如何实现精确化和准确化的发展。出租车的计价系统发展并不会被社会发展的潮流而遭到摒弃,它将朝着多功能化、小型化、高精度化、使用时间长的方向发展。而出租车计算价格系统将会得到更进一步的发展,为出租车行业的发展提供更大的力量。

2 出租车计算价格系统的设计要求与方案 2.1出租车计价系统的设计要求 近年来,出租车计价系统是采用单片机技术制造的。它的功能越来越多,一般包括单价、总距离、总金额、实时时间、昼夜模式切换、停车等待收费、语音广播、打印电子发票等动能的显示。

所以说,本次毕业设计将以单片机最小系统作为整个研发过程的控制器;
通过系统的实际运行过程模式进行实践性分析,文中将根据功能设置明确指出和阐述出租车计价器的各个功能模块的实现过程和原理;
为出租车计价系统的运行过程和实际模式搭建准确可行的设计框架。

出租车计价系统的功模块包含系统工作过程的复位电路,时间及里程检测信息存储电路,单片机内部晶振电路,系统配置运行独立按键电路,单片机电源电路,计价过程金额显示电路,单片机内部时钟电路,计价系统工作过程指示灯,时长里程信息感应霍尔传感器电路,。

2.2出租车计价系统功能模块简述 本次毕业设计以单片机最小系统作为整个系统处理的核心,利用STC89C52系列单片机具有的多功能的I/O功能端口作为系统内部及外部的信号控制和传输。STC89C52系列单片机能够很好地实现计价功能控制过程的灵活性因此能够满足出租车计价管控的设计要求,同时系统在设计研发过程中选择了霍尔传感器作为传感器电路的主要核心元器件。霍尔传感器在出租车计价系统中主要用于计算实际行驶的里程,同时为系统配置了相关的独立控制按钮电路、显示电路和指示灯电路,完成了硬件设计。独立按键键电路用于设置参数的工作,显示电路用于显示所需数据的工作,通过存储电路存储的信息,从而完成整个系统的操作,达到设计的要求。

2.3研究内容和拟解决的关键问题 (1)显示:可以显示总里程数、总金额、行驶时间等。

(2)计费功能:起步公里数为a公里,价格为b元;若实际运行大于a公里,价格为c元/公里。

(3)本次毕业设计选择的STC89C52系列单片机作为计价系统控制芯片的选择过程,选择的控制单片机工艺上配置的各个芯片引脚的可实现功能。

(4)计价系统设计研发过程中各个计价和识别功能模块的设计研究过程以及具体功能实现的方式和原理。

(5)控制芯片内部逻辑语言的编写,仿真测试。

(6)整体的组装以及调试,若出现故障,要先找到问题,然后再针对问题,找到解决的方法,从而积累经验,避免下次再犯同样的错误。

3 出租车计价系统的硬件设计与制作 3.1感应电路中的霍尔传感器 本次计程车计价系统设计感应电路设计中用到的霍尔传感器,是一种能够以检测和识别磁场细微变化为功能基础从而研发实现的一类磁感应传感器。霍尔传感器的工作过程以霍尔效应即带电粒子能够在磁场中收到洛伦兹力从而发生一定程度的偏转从而得以进行后续原子分析作为相关感应检测功能的工作原理,这类磁感应传感器的体积比较小、重量轻的同时灵敏度高,精度高,输出电压变化大,外部环境低,能很好地完成本次设计里程测量的目的。在工艺和系统配置过程中常用到的霍尔传感器有两种类型:一种是线性霍尔传感器另一种是开关式霍尔传感器。霍尔传感器在本次毕业设计的事物搭建当中被用作检测车轮转动圈数从而将旋转圈数转化为单片机能够识别的相关电信号,并将其转换成电信号输入单片机进行处理,从而完成里程测量功能。电路原理图如图1所示。

图1 霍尔传感器内部电路原理图 当内部的磁钢在运行过程中靠近霍尔传感器的时候,霍尔传感器会输出高电平信号;
当内部磁钢原理霍尔传感器运作的时候,霍尔传感器就会输出低电平信号;
从而得到了整个运作过程的正弦信号运作波动分析。此时我们在电路配置当中加入一个LM393电压比较器进行相关工作,此时当霍尔元件进行输入时同时电压信号的输出结果高于LM393电压比较器设置的逆变输入电压的时候,整个模块输出的结果为高电平;
当低于LM393逆变输入电压电平时,输出电平低。这样,正弦信号就可以形成一个可以被单片机方波信号识别的信号。

3.2 STC89C52系列单片机内部振荡电路 本次出租车计价系统的内部搭建过程中使用到的STC89C52系列单片机的内部设置了一个具有高增益的反向放大器。在引脚配置中把芯片引脚xtal1设置为输入引脚,引脚xtal2设置为工艺中的输出引脚。通过设置的输出引脚和输入引脚,配置了一个石英晶体振荡器和两个电容器共同连接在芯片的外部组成了振荡电路其中电容一般设置为33pf单位。经过这样的元器件配置就形成了工作稳定的自激振荡器,经过内部结构对信号的两次分频操作后;
利用自激振荡电路的输出脉冲作为整个系统工作运行过程的时钟信号。由于经过了两次分频和三次分频产生了相应的ale信号,此时我们就能够顺利得到了机器所需要的周期信号。单片机内部振荡单路相关接线图如图2所示。

图2 振荡电路 3.3 计价系统设计的核心STC89C52系列单片机 STC89C52系列单片机是由美国ATMEL公司根据电子工业发展实际需求研发的一类具备了低能耗而高性能CMOS的8位微控制处理器。STC89C52系列芯片在内部配置上具备了4KB善存flash只读程序功能的存储器,能够进行对系统功能实现的语句编程。这类单片机同时配备了ATMEL公司独有的高密度且非易失性的存储技术,和8051系列的指令系统和相关功能关键实现了完美的兼容。STC89C52系列单片机能够将闪存flash程序存储器和内部ISP、传统程序语句设计以及通用型8位微处理器的功能集成在同一片小小的芯片当中,在电子工艺配置上具有极高的性价比。

本次出租车计价系统用到的STC89C52单片机在工艺上为其配置了40个功能引脚,铸造中大多数采用了塑料双列直插式封装,40个功能引脚的配置功能图如图3所示。除此之外还有44只引脚作为PLCC疯转模式的设定,以及以TQFP作为封装方式的配置芯片。其中40个功能性引脚能够根据功能的不同大致分为以下三个类别:第一类是4个电源及时钟功能的对应引脚分别是VCC引脚、VSS引脚、XTAL1引脚以及XTAL2引脚。第二类是4个控制功能引脚,第三类是功能信号输出输入引脚共32个,由P0口和P1口与P2口及P3口组成4个8位输入输出端口。

图3 单片机 本次计程车计价系统用到的STC89C52系列芯片的40个功能引脚具体功能阐述如下文所述:
(1)VCC引脚:连接运行过程的电源电压,一般会被配置接+5V电源。

(2)GND引脚:进行运行工作中的接地处理。  (3)RST引脚:作为运行系统的复位信号的复位输入。当RST引脚变为高电平并且高电平持续时间大于两个机械周期的时候,就会触发单片机内部的复位功能的启动。在单片机正常运作过程中该复位引脚处于低电平一般处于小于或等于0.5V的数值大小。此时WDT的溢出导致了管脚在过程中输出高电平。通过设置SFR AUXR的DISRTO位(地址8EH)能够实现打开或者关闭该复位电路功能,DISRTO位默认为RESET输出高电平的打开状态。

(4)XTAL1引脚和XTAL2引脚:XTAL1作为单片机内部时钟发生器的相关的输入端以及单片机内部反向振荡放大器的信号输入端。XTAL2则是作为反向震荡放大器的输出端口,当系统需要使用单片机内部振荡器时,配置的电容以及外部石英晶体振荡器都分别连接到XTAL1和XTAL2之间。

(5)P0端口功能:P0端口是一个共有8位引脚的配置漏极开路的双向I/O端口,同时作为地址/数据总线功能调用的多路复用器。当P0端口作为输出端口工作时,每个端口可以实现8个TTL逻辑门的实时驱动。将信号“1”写入端口就能作为高阻抗信号的输入。当单片机需要访问外部数据的存储器或者内部程序存储器的时候,这组接口就能转换地址为低8位和数据总线配置被多路进行复用,并在运行访问期间激活芯片内部的上拉电阻器。在flash编程过程中该端口用作接收程序的指令字节,而在程序验证的工作中则会输出指令字节。在验证程序过程中需要在外配置上拉电阻。

(6)P1端口功能:P1端口作为一个8位准双向的I/O端口,其内部配置了上拉电阻。P1端口输出的缓冲级能够通过吸收或者输出电流实现对4个TTL逻辑门的实时驱动。将信号“1”写入P1端口时,通过芯片内部上拉电阻器的作用能够把端口拉至高电平从而作为输入端口。当P1端口作为输入端口使用时,其中一个引脚由于芯片内部上拉电阻被外部信号处理下发生了拉低状态,电流IIL就被实时输出。同时在Flash语句编程和系统程序校验的期间该端口还能持续接收较低的8位地址信息。

(7)P2端口功能:P2端口是一个八位的准双向配置的I/O端口,带有内部配置的上拉电阻器。P2端口输出的脉冲级可以通过吸收或输出电流实现驱动4个LS型的TTL负载运作。将信号“1”写入P2端口时,通过芯片内部上拉电阻器的运作则可以把端口的输出处理为高电平从而作为输入输出口使用。当P2端口作为输入端口使用时,其中一个引脚由于芯片内部上拉电阻被外部信号处理下发生了拉低状态,电流IIL就被实时输出。当STC89C52系列单片机扩展外部储存器及输入输出端口时,可以通过使用16位的地址访问外部程序的相关存储器或者外部数据的相关存储器,同时通过P2端口发送高8位的地址数据进行运行。当访问的8位地址位于外部数据存储器时,P2端口在整个地址访问过程中的内容都不会发生改变。同时在Flash语句编程和系统程序校验的期间该端口还能持续接收较低的8位地址信息。

(8)P3端口功能:P3端口是一个八位的准双向配置的I/O端口,带有内部配置的上拉电阻器。P3端口输出的脉冲级可以通过吸收或输出电流实现驱动4个LS型的TTL负载运作。将信号“1”写入P3端口时,通过芯片内部上拉电阻器的运作则可以把端口的拉至高功率作为输入端口使用。当P3端口作为输入端口使用时,其中一个引脚由于芯片内部上拉电阻被外部信号处理下发生了拉低状态,电流IIL就被实时输出。

(9)PSEN/引脚:程序存储器在调用中允许输出是外部程序的存储器在进行读操作的第一通信信号。当STC89C52单片机从外部程序存储器调用指令信号或数据时,PSEN/引脚在每一个机器周期内都能实现两次的有效作用即成功输出两个脉冲信号。当芯片需要调用访问外部数据存储器时,并不会得到两个有效的PSEN/输出的信号且对低电平有效。此时片外的程序存储器为读选通信信号。

(10)EA/VPP引脚:用于允许外部访问的信号处理。为了确保运作过程中CPU只对外部程序存储器进行语句调用和访问,EA引脚终端必须始终保持在低电平状态。需要特别注意的是如果加密位Lb1被语句进行编程,则在系统复位过程期间的EA端的状态会被内部程序始终锁定。当进行闪存flash编程时该引脚增加+12V编程电压VPP。

3.4 计价过程的语音播报电路 本次出租车计价系统的语音播报模块设计选用Sc8065作为语音模块的核心芯片,Sc8065语音芯片的工作电压为1.8V~6.5V之间。由于单片机工作电压的5V相对过高,因此可以为本次设计中的语音芯片提供实际配置的适当工作电压;
芯片的工作采用脉宽调制的方式控制音频的具体输出方式,该芯片具有多种控制方式,主要控制方式有按键和单片机串行控制方式。

当第一次按下“开始/停止”键时,出租车开始启动,系统播放“你好!欢迎来到我们的出租车,谢谢广播后,计费设备开始收费。通过按加速键使得出租车实现加速(最高时速为100公里每小时),按减速键则能实现出租车的减速操作(最低时速0公里每小时)。在运行状态下如果按下了“开始/停止”的按键则说明出租车将减速达到停止的0公里。此时系统就会经过测算而对计价结果进行播报“您好!里程A公里,需支付B元。检查一下你的东西。欢迎再来一次。再见。”的提示音。按“复位”键进入空状态。

3.5 单片机的复位电路配置 对于单片机内部系统的复位操作具体划分具有两种有效形式:一种是通过上电完成复位而另一种是钥匙复位。除了这两种电复位功能之外,如果需要对运作过程进行复位操作则只需要按照图中的复位键,通过电源VCC和电阻R1、R2的配置在复位端产生复位高电平的施加操作。上电复位的电路顺利接上电源之后,单片机能够通过对外部电路中的电容进行充电从而实现自动复位。复位引脚在通电瞬间达到了高电平。随着对电容器连接的充电,重频管脚承载的高电平将逐步降低。只需要重新对复位引脚添加两个机器周期的高电平就能使得MCU形成复位,复位电路如图4所示。

3.6 电路配置中的独立按键电路 在独立键盘的配置当中每个按键都需要配置一个I/O端口线,同时每个按键的电路相位都是独立运作的。I/O端口通过钥匙进行接地处理,同时配置上拉电阻。在没有按下按键时端口为高电平哨位为高,而按下按键后哨位较低;
如果I/O端口内部接了上拉电阻那么外部就不需要再接上拉电阻了。

3.7计价系统的显示电路 在实际的设计配置过程中的实际电路,我们可以选用数码管显示屏或者液晶显示屏作为显示电路的成果展示。液晶显示屏可以分为字符型和点阵型两种。本次计价系统使用的LCD是一种带有字符库功能的字符型LCD液晶显示板,不需要查找代码只需要英文字符就可以实现显示功能。使用液晶显示电路时如果液晶屏幕不能发亮则可以调整与液晶相连的点夹,改变液晶的亮度。

4 出租车计价系统的软件编程设计 4.1 计价系统的主程序函数语句设计 主程序的模块配置过程中需要完成对接口芯片的功能初始化、出租车起步价和单价金额的初始化、中断向量的实际设计、功能开断和循环等待等等过程操作工作。除此之外还需要对内部的启动/清楚标志功能的寄存器、计程车里程计算寄存器和价格计算寄存器在主程序模块中进行实践配置和启用的初始化操作。而后根据每个寄存器标记的具体内容利用主程序对其进行启动功能、清除数据、里程时长计算和最终定价等等相关操作。定价的过程需要根据里程登记表设置的内容进行计算以及进一步判断车辆在行驶过程中是否超过了标定的起始里程。如果已经超过起始里程则根据里程规定以及每公里单价、预先设定的起始价格计算出当前车辆行驶到该点的累计价格并将实时价格保存在系统内部的寄存器当中以便后续的累加计价,并将累计结果发送到显示电路投放在显示屏中供司机和乘客查阅。到达目的地时霍尔开关不再发送脉冲信号因此内部计价模块停止计价并将价格寄存器中的最终结果显示在当前支付金额当中。在下次重新计价定价的时候,系统就会对内部数据进行重启和清楚以便整个计价系统的重新使用。

当计价系统的内部主功能开始运行时,所有的功能模块就会在语句的要求下完成必要的初始化操作,为每一个设备和功能模块分配变量。完成了上述的工作安排和初始化之后进入了计价系统工作的循环模式,对里程和实践进行反复的循环检测以完成主功能计价的过程。可以最大程度通过调整相关模块的功能来实现整个系统的操作,调用功能号也有很大的优势,可以分别细化各个部分的功能号代码容易修改。

4.2 语音播放函数设计 本次计价系统设计和搭建用到的ISD1420系列单片机的语音播报时间大约为8~20秒,而且发生的音色良好。ISD1420芯片采用了CMOS工艺进行配置,其中包括了振荡器、麦克风功能前置放大器、麦克风自动增益控制模块、抗混叠滤波器模块、平滑滤波器模块、扬声器驱动器模块以及EEPROM阵列模块。在功能实现过程中最小的录播系统只需要麦克风、扬声器以及一些按钮、电源和电阻、电容器就能够实现。录播功能实现完毕之后语音函数芯片就会进入低能耗模式进行待机,此时功耗仅仅为0.5ua。

ISD1420系列芯片工艺上具有十分独特的录音控制功能以及边/电平触发功能的两种回放控制方式。不分段情况下的外围电路是最简单的,可以根据最小分段长度进行任意的分段操作,同时这系列芯片为实际情况提供了多种录播工作模式进而大大提高了芯片控制的灵活性和可行性。ISD1420芯片工艺上采用了多级直接模拟存储的专利技术,每个音频样本都直接存储在该芯片的单个EEPROM单元中等待调用因此能够在播放时播出自然再现的声音、音调和真实音频,避免了其他芯片在播报过程中记录电路量化或者压缩过程中产生聒噪的金属音。对音频的采样频率在5.3、6.4~8.0kHz之间因此对播放音频的音质影响不大。芯片上的信息可以保存非常长的时间同时EEPROM单片机可以对数据进行重复记录达到10万次。

4.3 计时函数设计 在计时中断服务的内部编译程序中,每隔1/60s就会产生一个中断,当累计产生了60个中断时则会相相对应的显示缓冲单元发送即时数据并调用内部子程序对整个操作过程显示为1秒。

4.4 计费管理函数设计 该函数设计的核心是根据霍尔传感器对单片机ATC8S51的INT1口输入的连续脉冲信号进行计数,并根据程序将其转换成公里数,再根据起步价、单价和昼夜模式的设置,来计算行车成本。

计价管理程序函数和里程计量程序函数是该设计的主要组成部分。这两部分各有分工,完成了本设计的核心计费功能。

里程计算过程是基于安装在出租车车轮上的霍尔传感器a44e进行对里程信号的有效监测。该检测系统采用两种脉冲发生器进行真实过程的仿真模拟,分别送入单片机内部进行数据的处理和计算;
继而将得到的计算结果送入系统结果的显示单元。计价系统所使用的的单片机会对接收到的传感器脉冲信号进行比对和计数,并将脉冲数换算为出租车实际运行的里程数。输入脉冲的具体数量能够通过计算外部的中断程序运作中中断的数量来计算。由于里程计数模块采用霍尔传感器来实现这一功能,即单片机每转动一个车轮就会得到一个脉冲信号,所以这个变量的值可以乘以车轮的周长得到相应的里程数。

费用计算包括三部分:起步费、行使费和燃油附加费。

4.5显示单元电路设计 本次出租车计价系统分析设计中需要对里程数、等待时间以及形式速度和计价在显示单元进行有效输出。采用了8位LED数码管进行相关结果的分屏显示,其中一种显示电路会由8位数据锁存器74hc573、相关数据解码器74LS138和8位LED数码管组成。详细的电路配置如图6所示。74hc573数据锁存器被用于和51系列单片机和LED数码管之间的连接使用。STC89C52单片机的P0端口的八个引脚与LED数码管的A-G和DP引脚进行顺序对应连接。当位P0.0设置为1时,相应LED数码管的A端就被打开以此类推到每一个引脚对饮的LED数码管的各个分段。进而51单片机的p2.0~p2.2与74LS138的ABC输入端口相连,其8个输出端口分别与8个数码管相连,可进行3-8解码,控制8个数码管的显示 5 仿真测试 5.1 仿真软件 本次出租车计价系统设计过程中用到的Proteus软件是英国Labcenter电子公司大力研发的的EDA工具软件。Proteus软件有效结合了目前设计过程基准的原理图布局、混合模式下的SPIEC仿真过程、PCB版图设计以及各个元件的自动布线,通过不同模块的仿真结合实现了一个完整的电子设备内部设计的分布系统。Proteus产品的研发和发展到了今天已经囊括了许多功能,软件的用户能够将能够以单片机为研究基础从而对周边所有的电子设备进行统一的功能性仿真和模拟。软件的用户甚至可以使用LED或LCD设备、电子键盘、RS232配置终端等等动态状态的模型进行实际情况的模拟设计。

Proteus系统除了能够进行电路的有效设计、模拟电路和数字电路的功能运行之外,最大的功能特点是能够用程序导入进行单片机功能的模拟仿真;
同时能够对单片机外部链接的所有设备和测试仪器实现真实情况的结果输出观察。程序部分由美国开发的模拟软件KEIL进行模拟。它的开发环境简单易懂,程序的编译和操作也很方便。通过两个仿真软件的联合调试,完成了仿真测试。

Proteus软件的功能模块可以归纳为:简单易操作但是功能非常强大的Isis原理图布局使用工具、SPIEC混合模型模块的SPIES仿真库、ARES电路板设计功能工具。除此之外能够对动态键盘、运行系统开关和按钮、LED甚至LCD都能和单片机的内部程序结合呈现出仿真模拟的效果。能够有效支持通用型微控制器的工作比如说pic控制器、AVR控制器、HC11控制器以及8051都可以完整实现。运作过程中交互设备的模型囊括了LED显示部分、LCD显示部分、RS232终端处理、通用键盘模拟、I2C以及SPI等等设备的功能运作。其系统配置强大的调用调试工具包括了寄存器模式、内存模式、断点以及单步模式的调用和操作。开发工具使用到的源代码层层调试都能够通过应用特殊的应用模型选择器D11接口提供相关的目录中所有配置元件的文件。

经过对本次计价系统功能和元件配置的一系列仿真验证,该设计方法能够满足设计要求。可显示单价、里程、总量、昼夜模式、实时运行时间。单价、起价、昼夜模式可通过矩阵键电路手动调整。模拟后计算的总量没有误差,使用按键更改设置时也没有无响应的问题。

5.2 硬件组装与调试 所用工具有螺丝刀,钳子,电烙铁,万用表,测电笔,钢丝钳、起子。

基于单片机的出租车收费系统电路比较复杂,在焊接方面不应轻视。只要在焊接电路的过程中出现错误,就会给功能的实现带来很大的不便,而且电路有许多交叉线,所以焊接时必须进行焊接,并检查是否有电路、断路和跳线。如果有,应及时进行,否则会给后续的电路焊接带来很大的困难。在焊接芯片时,优先采用底座焊接,然后将芯片安装在底座上进行调试,这样可以避免焊接过程中芯片的损坏,也便于电路的更换。本设计在设计和调试中存在许多问题。主要问题如下:
(1)
当单价、总价、里程、昼夜模式显示时,液晶屏不显示。

一种解决方法:首先,检查是否有漏焊、错焊或部件损坏,发现没有此类问题。然后,通过测试,发现电路的驱动能力不足。接通上拉电阻后,解决了液晶屏不亮的现象。

(2)
蜂鸣器不响。一种解决方案:经检查发现三极管焊接存在断路,通过焊接校正解决。

(3)选用的霍尔传感器对实际里程的计数存在问题。并随之提出了一种解决方案:因为希望能够根据实际运转情况设计但是用到的车辆滚轮直径过小,很难达到正常的滑行情况。通过重写程序,实现了车轮的每转一圈,里程被认为是一公里。这个问题是通过改变程序来解决的。哈经过多次修改,设计对象的调试通过了设计要求的性能测试和价格数据测试,小车轮每转一圈,蜂鸣器响一次;
程序中,通过定价公式设定起步距离,然后通过关键电路设定其余参数,总量未计算错误。有出现错误和错误。实物可以正常显示单价、总价等一系列参数。

6 总结与反思 通过本次毕业设计完成了对出租车计价系统的功能设计,但语音播报功能没有实现。该出租车计价系统能够根据设计初期定出的预期效果实现对模拟汽车的有效运作启动、运作停止以及暂停的工作。并且能够通过液晶屏的显示告诉司机和乘客即时的车费金额。出租车和计价系统的配置能够得以配置单价输出、里程单价调整、根据当前时间对系统做出计价反馈等等功能。同时具备多功能的出租车还有性能可靠、构成电路线路简单、造价成本低的同时实用性十分符合实际情况的特点,通过对内部主力程序的优化处理能够实现较高水平的智能化工作。虽然在设计过程中已经实现了设计的要求,但很多地方与出租车的实际功能存在偏差,无法得到广泛的应用。例如,硬件无法连接打印机打印发票,无法等待计费。准确度不如真正的出租车准确。在软件方面,按键摇动位置的设计不是最优的。如果延迟程序写得不好,会占用单片机的资源,影响单片机的运行时间,使单片机在一个空白的空间内运行。但在实际工程中,这种问题是不会出现的,这就要求我们加强程序的编写能力。

经过了近段时间的努力,基本完成了任务书指派的设计要求和设计内容。在对计价系统的设计和搭建过程中,对整个系统的可行性分析和方案细节模拟做出了大量的实际分析和模拟结果的工作。与此同时我也能够发现通过本次毕业设计的学习,自己对理论知识的掌握和实践动手能力的提升还有很大的进步空间;
但是不能否定通过本次对出租车计价系统的设计学习我获益良多,本次毕业设计让我把大学四年理论研究的和动手实验的能力做出了全面性的融合,让我深刻意识到理论和实际操作存在着一定得差距。只有不断地努力学习和实践,才能把理论知识很好地运用到实践中去,只有不断地实践,才能理解理论知识。

通过这个设计,查阅了大批量的文献资料和书籍,拓展了对仿真模拟和电子器件领域的知识面;
也提升了知识水平。通过各个功能单元模块的设计和系统的功能完善,巩固了过去学到的专业知识也时刻鞭策着我理论知识和联系实际不能分割的重要性;
为接下来的学习工作留下了许多宝贵的经验。更重要的是,我学会了用工程思想解决问题。这不是在以前的学习过程中学到的。在这种设计中,存在着许多实际问题,这些问题在日常的理论研究中从来没有想过,只是在实际设计中才发现。在此之前,我觉得书本上学到的理论知识很全面,但是在面临实际问题的时候就不得不对问题进行深入的理论探讨,还需要理论和实践对问题本质的解决方式进行校验。本次计价系统的硬件设计电路相对而言比较简单,但要达到功能要求并不是逃避编程。而编程是一件非常灵活的事情,只要我们做一些改变,它的功能和性能就会有很大的差别。

大部分的时间都放在了程序的编辑和软件设计过程中,许多子程序都能在课本中找到参考的雏形和启发。但如何连接每一个子程序是软件设计需要攻克的关键问题,需要熟悉单片机内部的工艺的结构。因此单片机的外部电路设计和内部程序设计使得整个系统得以软硬结合,两者密不可分。出租车计价系统的学习设计过程中也让我发现自己在单片机学习上有很多错误。

这个设计让我意识到研发过程具备研究完整、思路严谨、对实际情况进行科学分析和寻求可行解决问题的过程理念是多么重要而且精准。只有秉承科学的研究态度才能基于生产活动研发出有用的产品,更加鞭策自己对理论知识的应用需要再往后学习中进一步提高。

参考文献 [1]李全利,《单片机原理及借口技术》
高等教育出版社,2010 [2]郭天祥,《51单片机C语言教程》
电子工业出版,2011 [3]陈景初,《单片机应用系统设计与实践[M]》
北京航空航天大学出版社,2006 [4]王法能,《单片机原理与应用》
科学出版社,2004 [5]李广弟,朱月秀,王秀山,《单片机基础[M]》
北京航空航天大学出版社,2004 [6]陈正振,《电子电路设计与制作》
广西交通职业技术学院信息工程系,2007 [7]杨子文,《单片机原理与应用》
西安电子科技大学出版社,2006 [8]余永权. ATMEL 89系列单片机应用技术[M]. 北京:北京航空航天出版社,2003 [9]赵晓安,《MCS-51 单片机原理及应用》[M],天津天津大学出版社,2001 附录1:实物图 附录2:元件清单 名称 规格 数量 备注 电阻 10K电位器 1个 10K 5个 电容 22pF 2个 10μF 2个 极性电容 红外对管 1个 按键 7个 电机驱动 1个 直流电机 1个 晶振 11.0592MHz 1个 芯片 STC89C52 1块 1602液晶 1块 内带字符库 附录3:电路原理图 附录4:程序完整代码 #include “1602.h“ #include “control.h“ #include “motor.h“ #define PERIMETER 1 //轮子周长,一米 #define PRICE 1 //价格 #define ROUND_PULSE 12 //一圈的脉冲数 #define START_PRICE 10 //起步价 sbit KEY_MOTOR_SELECT = P3^4; //电机转动停止选择按键 sbit KEY_ISBOARD_SELECT = P3^5; //上下车选择按键 bit flag_isboard = 0;//上下车标志位,默认下车 unsigned char flag_get_on = 0; //已经上车标志位 unsigned long mileage = 0; //例程数 unsigned long total_price = 0; //总价格 unsigned char start_time_sec = 0,stop_time_sec = 0,start_time_min = 0,stop_time_min = 0; //按键处理 void key_handle(void) { if(KEY_ISBOARD_SELECT == 0) { delay_10ms(1); //延时10ms左右,去抖动 if(KEY_ISBOARD_SELECT == 0) { flag_isboard = ~flag_isboard; if(flag_isboard) { flag_get_on = 1; pulse_count = 0; //脉冲数清零 mileage = 0; //上车后,清除之前的里程数和价格 total_price = 0; start_time_sec = 0; start_time_min = 0; stop_time_sec = 0; stop_time_min = 0; enable(0x01); } } while(!KEY_ISBOARD_SELECT); //等待按键松手 } } //LCD1602显示处理 void lcd1602_handle(void) { if(flag_isboard) { L1602_string(2,13,“ up “); } else { L1602_string(2,13,“down“); } L1602_string(2,1,“M:“); L1602_int(2, 3,mileage); L1602_string(2, 7,“P:“); L1602_int(2, 9,total_price); if(flag_get_on == 1 ) //上车后显示时间 { L1602_int(1, 5,start_time_sec); //上次时间小于1分钟,显示秒 L1602_string(1, 8,“S“); if(start_time_min > 0) { L1602_int1(1, 1,start_time_min);//上次时间大于1分钟,显示分钟 L1602_string(1, 4,“M“); } L1602_int(1, 13,stop_time_sec); L1602_string(1, 16,“S“); if(stop_time_min > 0) { L1602_int1(1, 10,stop_time_min); L1602_string(1, 13,“M“); } } } void taximeter_handle(void) { if(flag_get_on == 1 ) //上车后电机才可以启动 { if(KEY_MOTOR_SELECT == 0) { motor_handle(FWD); //上车电机转动 if(flag_1s == 1) { flag_1s = 0; start_time_sec++; if(start_time_sec == 60) { start_time_sec = 0; start_time_min++; } } } else { if(flag_1s == 1) { flag_1s = 0; stop_time_sec++; if(stop_time_sec == 60) { stop_time_sec = 0; stop_time_min++; } } motor_handle(STOP); //下车电机停止 } } if(flag_get_on == 1 ) //已经上车了开始计算里程数 { mileage = (pulse_count/ROUND_PULSE)*PERIMETER; //里程数 } if(flag_get_on == 1 && flag_isboard == 0) //已经上车了并且最后下车了 { flag_get_on = 0; total_price = START_PRICE+(mileage*PRICE)+(stop_time_min/10); //总价格 } else { } } /******************************************************************** * 名称 : Main() * 功能 : 主函数 ***********************************************************************/ void main() { int0_init(); timer0_init(); lcd1602_init(); ET0 = 1; EA = 1; while(1) { key_handle(); //按键处理 lcd1602_handle(); //显示处理 taximeter_handle(); //出租车计价器处理 } } /******************************************************************** * 名称 : delay() * 功能 : 延时,延时时间大概为140US。

* 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay() { int i,j; for(i=0; i<=10; i++) for(j=0; j<=2; j++) ; } /******************************************************************** * 名称 : Convert(uchar In_Date) * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。

* 输入 : 1602资料上的值 * 输出 : 送到1602的值 ***********************************************************************/ uchar Convert(uchar In_Date) { uchar i, Out_Date = 0, temp = 0; for(i=0; i<8; i++) { temp = (In_Date >> i) & 0x01; Out_Date |= (temp << (7 - i)); } return Out_Date; //return In_Date; } /******************************************************************** * 名称 : enable(uchar del) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 ***********************************************************************/ void enable(uchar del) { RS = 0; RW = 0; LCD_DATA = Convert(del); E = 1; delay(); E = 0; delay(); } /******************************************************************** * 名称 : write(uchar del) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 ***********************************************************************/ void write(uchar del) { RS = 1; RW = 0; LCD_DATA = Convert(del); E = 1; delay(); E = 0; delay(); } /******************************************************************** * 名称 : L1602_init() * 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void lcd1602_init(void) { enable(0x38); enable(0x0c); enable(0x06); enable(0x01); enable(0xd0); } /******************************************************************** * 名称 : L1602_char(uchar hang,uchar lie,char sign) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示“b“ ,调用该函数如下 L1602_char(1,5,'b') * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 ***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); } /******************************************************************** * 名称 : L1602_string(uchar hang,uchar lie,uchar *p) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示“ab cd ef“ ,调用该函数如下 L1602_string(1,5,“ab cd ef;“) * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 ***********************************************************************/ void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) { if(*p == '\0') break; write(*p); p++; } } //显示整型的温湿度数据用,共占用4位,其中一位符号位 void L1602_int(uchar hang, uchar lie, int num) { uint temp; uint gewei,shiwei,baiwei,sign; if (num >= 0) { sign = 0; } else { sign = 1; } temp = abs(num); baiwei = temp / 100; temp = temp - baiwei*100; shiwei = temp / 10; gewei = temp - shiwei*10; num = abs(num); if (num>=100) { if (sign == 1) //负数 { L1602_char(hang, lie, '-'); } L1602_char(hang, lie, baiwei+48); L1602_char(hang, lie+1, shiwei+48); L1602_char(hang, lie+2, gewei+48); } else if (num>=10) { if (sign == 1) { L1602_char(hang, lie+1, '-'); } //L1602_char(hang, lie, ' '); L1602_char(hang, lie+1, shiwei+48); L1602_char(hang, lie+2, gewei+48); } else { if (sign == 1) { L1602_char(hang, lie+2, '-'); } //L1602_char(hang, lie, ' '); L1602_char(hang, lie+1, ' '); L1602_char(hang, lie+2, gewei+48); } } //显示整型的温湿度数据用,共占用4位,其中一位符号位 void L1602_int1(uchar hang, uchar lie, int num) { uint temp; uint gewei,shiwei,baiwei,sign; if (num >= 0) { sign = 0; } else { sign = 1; } temp = abs(num); baiwei = temp / 100; temp = temp - baiwei*100; shiwei = temp / 10; gewei = temp - shiwei*10;

num = abs(num); if (num>=100) { if (sign == 1) //负数 { L1602_char(hang, lie, '-'); } L1602_char(hang, lie, baiwei+48); L1602_char(hang, lie+1, shiwei+48); L1602_char(hang, lie+2, gewei+48); } else if (num>=10) { if (sign == 1) { L1602_char(hang, lie+1, '-'); } L1602_char(hang, lie, ' '); L1602_char(hang, lie+1, shiwei+48); L1602_char(hang, lie+2, gewei+48); } else { if (sign == 1) { L1602_char(hang, lie+2, '-'); } L1602_char(hang, lie, ' '); L1602_char(hang, lie+1, ' '); L1602_char(hang, lie+2, gewei+48); } } unsigned long pulse_count = 0; //脉冲个数 bit flag_1s = 0; /*************************延时程序*********************/ void delay_10ms(unsigned int T1) { unsigned int t1,t2; for(t1=0;t1<T1;t1++) for(t2=0;t2<1250;t2++);//10ms } /*******************定时器0初始化程序******************/ void timer0_init(void) //其中没ET0是为以后控制暂停用的 { TMOD |= 0X01; //定时方式1 TH0 = 0X3C; //50ms TL0 = 0XB0; TR0 = 1; //开启定时器0 } /*******************定时器0中断程序********************/ void Timer0(void) interrupt 1 { static unsigned int count_50ms = 0,count_1s = 0; TH0 = 0X3C; //重装定时器值 TL0 = 0XB0; count_50ms++; if(count_50ms == 20) //1s到 { count_50ms = 0; count_1s++; flag_1s = 1; } } /********************中断初始化程序********************/ void int0_init(void) { IT0 = 1; //1:下沿触发 0:低电平触发 EX0 = 1; //允许外部中断0中断 } /**************外部中断0程序为运行或者暂停*************/ void int0(void) interrupt 0 { pulse_count++; } void motor_handle(unsigned char state) { switch(state) { case FWD:PIN_MOTOR_A = 1;PIN_MOTOR_B = 0;break; case REV:PIN_MOTOR_A = 0;PIN_MOTOR_B = 1;break; case STOP: PIN_MOTOR_A = 0;PIN_MOTOR_B = 0;break; default:break; } }

推荐访问:计价 出租车 简易

本文来源:https://www.windowchina.cn/fanwendaquan/gongwenfanwen/54730.html

推荐内容