基于C语言的出租车计价器程序设计.docx

上传人:b****2 文档编号:1873420 上传时间:2022-10-24 格式:DOCX 页数:24 大小:1MB
下载 相关 举报
基于C语言的出租车计价器程序设计.docx_第1页
第1页 / 共24页
基于C语言的出租车计价器程序设计.docx_第2页
第2页 / 共24页
基于C语言的出租车计价器程序设计.docx_第3页
第3页 / 共24页
基于C语言的出租车计价器程序设计.docx_第4页
第4页 / 共24页
基于C语言的出租车计价器程序设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于C语言的出租车计价器程序设计.docx

《基于C语言的出租车计价器程序设计.docx》由会员分享,可在线阅读,更多相关《基于C语言的出租车计价器程序设计.docx(24页珍藏版)》请在冰豆网上搜索。

基于C语言的出租车计价器程序设计.docx

基于C语言的出租车计价器程序设计

目录

1前言3

2系统设计方案4

2.1系统的设计需求4

2.2系统的工作原理4

3系统硬件设计5

3.1单片机介绍7

3.2硬件组成8

4系统软件设计14

5仿真调试16

6结论17

7参考文献18

8心得体会及致谢20

附录A设计总图24

附录B源程序25

 

1前言

随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注[1]。

相对于公共汽车拥挤与缓慢以及私家车高昂的费用,出租车无疑是一种低价高质的出行交通工具。

近年来越来越多的人为了出行方便舒适愿意选择使用出租车,出租车行业得以快速发展[2]。

出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器的技术在不断进步和提高[3]。

最初的计价器计费模式较为单一,不便于在不同的运营环境下选取不同的计费模式。

考虑到出租车行驶可能会出现从市区行驶到郊区或者行驶到偏僻地区,郊区或偏僻区打车的人少的现象,司机空车行驶返回成本较高,这时需要乘客为空车返回的路程承担一定的费用,这就需要区分单程/往返不同计价模式。

“单程”模式是指目的地在郊区或者比较偏僻的地方,到达目的地后打车的人比较少,需要乘客乘客承担一定的空车返回的费用;“往返”模式是指目的地在市区,到达目的地后还会有乘客乘车返回,这种情况下司机不需要空车返回,乘客不需要承担回程费用。

考虑到夜晚时出租车的灯光需要消耗能源以及司机夜间服务比白天较为辛苦,所以一般夜晚出租车的价格需要比白天高一点。

早期的出租车计价器均采用模拟电路和数字电路设计。

计价器整体电路的规模较大,需要器件多,容易出故障,难调试。

和模拟电路和数字电路设计相比而言,基于单片机进行设计的计价器,用较少的硬件和适当的软件相互配合就可以很容易的实现设计需求,硬件电路简单,稳定性好,灵活性强[4],通过软件编程就可以实现计费模式的切换。

 

2系统设计方案

2.1系统的设计需求

1、用数码管实时显示里程数及金额数。

2、出租车计价器计价器具有多种计费模式,白天/夜晚模式及单程/往返模式。

3、设计出租车计价器白天模式下起步公里数为3Km,价格为8元;若实际里程大于3Km,大于3Km的部分单程价格为2.4元/Km,返价格为1.6元/Km。

4、设计出租车计价器夜晚模式下起步公里数为3Km,价格为10元;若实际里程大于3Km,大于3Km的部分单程价格为3元/Km,返价格为2元/Km。

5、具有工作模式指示灯,指示当前工作模式状态。

 

出租车价目表如表1所示:

模式

起步里程(Km)

起步价(元)

单程(元/Km)

返程(元/Km)

白天

3

8

2.4

1.6

夜晚

3

10

3

2

2.2系统的工作原理

出租车计价是根据出租车所行驶的路程以及乘客乘车的方式综合计算的。

出租车行驶路程在起步里程内按照起步价收费,超过起步里程时超出起步里程的路程按照相应模式下的单价收取附加费用,最后收取起步价及附加费用的总和。

出租车的行驶路程可以通过车轮的周长乘以车轮旋转圈数得到。

然后经过系统对相关数据的计算处理得出总的路程及计价金额,最后再通过显示电路将相关信息显示出来。

本设计采用AT89C51单片机作为系统核心处理器,以A44E霍尔传感器作为里程测量仪,设计控制按键以便选择相关的计费模式,并采用74HC138译码器进行地址译码为8位8段数码管提供片选码,采用8段数码显示出租车行驶的里程及应付总金额,通过LED指示灯指示出租车当前工作状态,便于乘客监督司机。

利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性[4],不仅能实现基本的计价功能,而且能在很大程度上扩展功能,方便以后对系统进行升级。

系统设计框图如图1所示:

 

图1系统设计框图

里程测量是通过安装在车轮上的霍尔传感器A44E检测到的信号[5],送到单片机,经过处理输送到显示电路。

车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数[6]。

P3.4引脚作为信号的输入端,内部采用定时/计数器0计数[7],通过计算接收到的脉冲个数,计算出当前所行驶的路程。

根据不同的收费模式,选择相应的起步价、单价等收费标准进行计算得出乘客应付总金额。

假设出租车的车轮的周长是1m,那么出租车车轮旋转1000转,也就是行驶1Km(实际应用时以车轮实际周长计算,这里为了仿真方便假设车轮周长为1m)。

通过对定时/计数器0的TL0和TH0的初值设置使得定时/计数器计数一定数量的脉冲时计数器溢出产生中断,在中断服务程序中完成里程计算。

本设计为了仿真方便做如下设置TMOD=0x06,TL0=255,TH0=255;即单片机定时/计数器0工作于工作方式2,8位自动重装模式,作计数器使用,单片机收到一次脉冲触发一次中断,里程增加0.1Km。

通过按键能够实现启动、停止/结算以及选择不同的计费模式。

显示电路使用8位LED数码管来显示,左边4位显示行车里程,小数点后面一位为百米位,右边4为显示应付金额,小数点后面一位为角位。

由于现实生活中一角使用的比较少,而五角钱使用的相对较多,为了司机与乘客之间交易方便,小数点后面的角位数字小于5的一律按5计算,大于5的一律向元位上进1。

由于8位数码管静态显示需要许多I/O端口,和静态显示相比动态显示仅需要少量I/O端口就可以实现,所以这里采用动态显示方式。

使用74HC138译码器对单片机输出的3位片选码进行译码并输送到8段LED片选端实现对8位LED的片选。

3系统硬件设计

设计电路时,考虑到用霍尔传感器价格昂贵,且不便于试验检测仿真,在设计中采用一个模拟开关来代替。

模拟开关一端接在P3.4引脚,另一端接地,通过来回高低电平的变化,每按一次,对应的里程数加0.1Km。

通过程序计算出里程和金额的信息,再加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程。

在显示方面,可以用液晶显示,也可以用数码管进行显示。

由于液晶显示在距离一米多远以外就不怎么能看清楚[8],而数码管能清晰的显示、经济适用并且在这次设计中只需要显示里程和金额信息,所以本设计采用数码管进行显示。

这样既节约了成本,又可以达到显示的目的。

为了减少硬件的复杂度,设计中采用了动态显示方式。

另外设计LED指示灯来实时指示各项状态,如出租车有客/待运状态,白天/夜晚状态,单程/往返状态,便于乘客监督司机作弊。

设计中设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,白天/夜晚按键,单程/往返按键,清零按键等。

3.1单片机介绍

AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,俗称单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器[9]。

3.2.1AT89C51的特点

AT89C51具有以下几个特点:

·AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容;

·全静态工作:

0Hz~24MHz;

·三级程序存储器加密;

·数据保留时间:

10年;

·片内有4k字节在线可重复编程快擦写程序存储器;

·128×8位内部RAM;

·32位双向输入输出线;

·五个中断源,两级中断优先级;

·两个十六位定时器/计数器;

·一个全双工的异步串行口;

·间歇和掉电两种工作方式。

3.2.2AT89C51引脚功能

AT89C51单片机为40引脚芯片,其实物图与引脚图如图所示:

 

图2AT89C51实物与引脚图

.口线:

P0、P1、P2、P3共四个八位口。

P0口是三态双向口,通称数据总线口,只有该口能直接用于对外部存储器的读/写操作。

P0口也用以输出外部存储器的低8位地址。

由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。

P1口是一个内部提供上拉电阻的8位专门供用户使用的I/O口,是准双向口。

P2口是系统扩展时作高8位地址线用。

不扩展外部存储器时,P2口也可以作为用户I/O口线使用,P2口也是准双向口。

P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。

作为第一功能使用时操作同P1口。

 

P3口的第二功能如表2所示:

端口引脚

各个功能

P3.0

RXD(串行口输入端)

P3.1

TXD(串行口输出端)

P3.2

INT0(外部中断0请求输入端,低电平有效)

P3.3

INT1(外部中断1请求输入端,低电平有效)

P3.4

T0(定时器/计数器0计数脉冲输入端)

P3.5

T1(定时器/计数器1计数脉冲输入端)

P3.6

WR(外部数据存储器写选通信输出端,低电平有效)

P3.7

RD(外部数据存储器读选通信号输出端,低电平有效)

.控制口线:

PSEN(片外选取控制)、ALE(地址锁存控制)、EA(片外存储器选择)、RESET(复位控制);

.电源:

VCC:

供电电压。

GND:

接地

3.2.3设计中使用的管脚

VCC:

接+5V电源。

GND:

接地。

时钟引脚:

XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。

RST:

复位信号输入端,高电平有效。

在此引脚加两个机器周期的高电平时,就可以完成复位操作。

P1.0:

接启动/停止按键。

P1.1:

接白天/夜晚按键。

P1.2:

接单程/往返按键。

P1.3:

接清零键。

P0口接数码管段选端,P2口接驱动芯片。

P3.4(T0):

接模拟开关按键,替代了出租车计价器中的霍尔传感器。

3.2硬件组成

硬件组成主要包括:

时钟模块、复位模块、按键及指示模块、里程测量模块、显示驱动模块、显示模块。

3.2.1时钟模块

单片机工作是以时钟控制信号为基准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作[10],为了保证系统内各部分稳定工作,系统需要一个稳定的时钟信号。

时钟电路产生振荡脉冲,经过二分频之后,为单片机提供时钟脉冲信号。

振荡频率取决于石英晶体的振荡频率,频率范围可取1.2MHz—12MHz。

C1、C2具有频率微调和稳定作用,电容值可取5~30pF。

单片机运行速度取决于晶体振荡频率,晶体振荡频率越高,系统的时钟频率越高,单片机运行速度越快。

本设计中使用的时钟电路,由两个约30PF的电容和12MHZ晶体振荡器组成,将晶体跨接在XTAL1和XTAL2两端。

在整个系统中为系统各个部分提供基准频率信号,以防因其工作频率不稳定而影响相关设备工作的稳定性,晶振可以在电路中产生振荡电流,发出时钟信号。

时钟模块的电路图如图所示。

图3单片机时钟电路图

3.2.2复位模块

单片机在启动时需要进行复位操作,使系统处于初始状态,并从这个状态开始工作。

单片机的复位是由外部的复位电路实现的,复位电路通常有两种复位模式,一是采用上电自动复位,二是按键手动复位[11]。

上电自动复位是通过复位电路的电容充电来实现的。

按键手动复位有电平方式和脉冲方式两种。

复位信号是高电平有效,持续24个振荡脉冲周期(即二个机器周期)以上,即可完成复位操作。

本次设计中采用手动复位的电平复位。

图4单片机复位电路

3.2.3按键及指示模块

本设计中设有按键控制电路及LED指示部分,通过按键可以控制启动/停止计价以及根据乘客使用出租车情况选择不同的计费模式。

LED指示模块可以实时的指示当前出租车所采用的计价模式状态,可以让乘客一目了然,监督司机,防止司机作弊。

按键控制电路中,单片机的P1.0引脚接启动/停止按键,通过软件编程,当按下按键计数器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1