出租车计价器设计方案.docx
- 文档编号:7790406
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:37
- 大小:100.64KB
出租车计价器设计方案.docx
《出租车计价器设计方案.docx》由会员分享,可在线阅读,更多相关《出租车计价器设计方案.docx(37页珍藏版)》请在冰豆网上搜索。
出租车计价器设计方案
出租车计价器设计方案
1引言
随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以快捷便利的服务给人们带来了出行的享受。
但是,一直以来存在着的买卖纠纷困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器。
用更加精良的计价器来为乘客提供更加方便快捷的服务。
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。
随着改革开放日益深入,出租车行业的发展势头已十分突出,国各机械厂家纷纷推出国产计价器。
出租车计价器的功能从刚开始的只显示路程,到能够自主计费,以及现在的能够打发票和语音提示、按时间自主变动单价等功能。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
鉴于目前有关出租车计费又出台了新的政策,在原有政策基础上新增了等待费用,为了与时俱进,设计一个计费功能较全面的系统也已是迫在眉睫。
凡乘过出租车的人都知道,只要汽车开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时计费数字显示开始从起步价增加。
当出租车到达某地需要在那里等候时,系统会自动根据时间进行计时,每等候一定时间,计费显示就增加一个该收的等候费用。
汽车继续行驶时,停止计算等候费,继续增加里程计费。
到达目的地,便可按显示的数字收费。
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有应用价值的。
2出租车计价器的方案论证
2.1出租车计价器的基本功能
本课题所设计的出租车计价器的主要功能有:
数据的复位、白天/晚上转换、计时计价、路程和总金额的统计,掉电数据储存。
当按下按键后,启动计价器,开始采集脉冲信号,然后传送到单片机,单片机进行处理,计算出行驶路程以及总金额,将计算结果通过液晶显示屏显示,本电路设计的计价器不但能实现基本的计价,还能根据白天、黑夜、中途等待来调节单价,并且在计价器掉电后能将数据存储,不影响后续计费功能。
2.2出租车计价器的主要设计参数
本课题对出租车计价器的设计要求如下:
设计一个出租车自动计价器,计价包括起步价、行车里程计费、等待时间计费三部分,用1602液晶显示总金额,运行时间,最大值为999元,起步价为6元,等待时间单价为超过等待时间30秒后每分钟1元,用液晶显示总里程、等待时间和总金额。
1、计费功能
费用的计算是按行驶里程收费。
设白天起步价为6元,晚上起步价为7元。
等待时间超过30秒后按1元/min计费,未超过30秒时清零等待时间。
2、显示功能
〔1显示单价:
用两位数字显示,显示方式"XX",单位为1元/km.
〔2显示行驶里程:
用两位数字显示,显示方式为"XX",单位为km。
计程围0-99km,里程精确到1km。
〔3显示总费用:
用三位数字显示,显示方式为"XXX",单位为元。
计价围0-999元,精确到1元。
2.3方案论证与比较
方案一:
采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,计数芯片对脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示。
方案二:
用FPGA〔可编程门阵列实现:
利用硬件描述语言编程,仿真调试后下载到可编程期间上〔CPLD上实现。
可以对计程车整个过程进行判断、处理。
整个过程完全实现了自动化和智能化。
方案三:
采用单片机控制。
以单片机为核心,设计上采用89S52单片机为主控器,利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格选择功能。
不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。
通过各个方案的比较,我们知道采用数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,并且难调试,而采用单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,有较大的活动空间,可以通过软件编程来完成更多的附加功能,方便对系统进行升级和功能扩展。
所以我们采用第三方案,用AT89S52单片机实现出租车计价的功能。
系统结构如图2.1下:
图2.1系统结构图
3.系统硬件设计
3.1硬件设计说明
单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。
在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。
在数据采集部分本系统采用霍尔传感器A3144,
在数据显示部分本系统采用的是LCD1602这款液晶屏,由于采用LCD液晶屏显示器功能强大,可显示各种字体的数字、汉字、图像,还可以自定义显示容,时尚美观,而且液晶的功耗和LED比起来要小的多。
我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,清零按键,白天黑夜模式选择等。
3.2单片机的介绍
AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。
AT89S52基本特性:
8位的CPU,片有振荡器和时钟电路,工作频率为0~24MHz
片有256字节数据存储器RAM
片有8K字节程序存储器ROM
4个8位的并行I/O口〔P0、P1、P2、P3
1个全双工串行通讯口
3个16位定时器/计数器〔T0、T1、T2
可处理6个中断源,两级中断优先级
AT89S52的引脚如图所示3.1:
图3.1AT89S52的引脚结构图3.2AT89S52封装图
AT89S52各引脚功能说明:
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写"1"时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写"1"时,部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流〔IIL。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入〔P1.0/T2和定时器/计数器2的触发输入〔P1.1/T2EX。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0T2〔定时器/计数器T2的外部计数输入,时钟输出
P1.1T2EX〔定时器/计数器T2的捕捉/重载触发信号和方向控制
P1.5MOSI〔在系统编程用
P1.6MISO〔在系统编程用
P1.7SCK〔在系统编程用
P2口:
P2口是一个具有部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写"1"时,部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流〔IIL。
在访问外部程序存储器或用16位地址读取外部数据存储器〔例如执行MOVXDPTR时,P2口送出高八位地址。
在这种应用中,P2口使用很强的部上拉发送1。
在使用8位地址〔如MOVXRI访问外部数据存储器时,P2口输出P2锁存器的容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写"1"时,部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流〔IIL。
P3口亦作为AT89S52特殊功能〔第二功能使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能:
P3.0RXD<串行输入口>
P3.1TXD<串行输出口>
P3.2INTO<外中断0>
P3.3INT1<外中断1>
P3.4TO<定时/计数器0>
P3.5T1<定时/计数器1>
P3.6WR<外部数据存储器写选通>
P3.7RD<外部数据存储器读选通>
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE〔地址锁存允许输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲〔PROG。
如有必要,可通过对特殊功能寄存器〔SFR区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许〔PSEN输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令〔或数据时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许,欲使CPU仅访问外部程序存储器〔地址为0000H-FFFFH,EA端必须保持低电平〔接地。
需注意的是:
如果加密位LB1被编程,复位时部会锁存EA端状态。
如EA端为高电平〔接Vcc端,CPU则执行部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器和部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.3硬件电路组成
本系统硬件电路组成主要包括:
复位电路、晶振震荡电路、显示模块,掉电存储电路,按键电路。
整体硬件原理图如图3.3所示
图3.3硬件电路原理图
复位电路
复位操作有两种基本形式:
一种是上电复位,另一种是按键复位。
本系统采用按键复位〔如图3.4。
按键复位电路原理:
在单片机启动后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RESET处于低电平所以系统正常工作。
当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。
随着时间的推移,电容的电压从5V释放到变为了1.5V,甚至更小。
根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RESET引脚又接收到高电平。
单片机系统自动复位。
图3.4按键复位电路
晶振震荡电路
单片机部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容〔电容一般取30pF。
这样就构成一个稳定的自激振荡器。
振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号是机器周期信号。
晶振电路如图3.5所示:
图3.5晶振震荡电路
数据采集模块介绍
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的。
其原理如图3.6所示。
图3.6传感器测距原理图
一端接在P3.2口,另一端接地,车轮每转一圈小磁铁提供一个磁场,通过霍尔传感器进出磁场来回高低电平的变化,就检测并输出信号,引起单片机的中断,每中断一次代表汽车轮胎旋转了一圈。
本设计以165/70R14这款轮胎为准,165代表胎宽,指轮胎的名义宽度就是165mm,就是轮胎与地面接触的那个面得宽度。
/70代表扁平比,指轮胎的扁平比是70%,扁平比可以间接反映胎壁的名义高度胎壁的名义高度计算式为:
名义宽度×扁平比。
所以该轮胎的胎壁名义高度为:
165mm×70%=115.5mm。
轮胎的外圆半径为:
胎壁高度〔115.5mm+轮胎圆半径<330.2mm/2>;
周长=2*3.14*半径;所以汽车轮胎转一圈大概行驶1.88米,轮胎旋转圈543转行驶一公里的路程,通过在程序中设置的里程和金额的信息,就可以在LCD显示屏上分别显示总金额和总里程。
霍尔传感器集成芯片管脚图如图3.7所示
图3.7霍尔传感器集成芯片管脚图
霍尔传感器集成芯片A44E外部引脚说明:
(1)Vcc外接供电电源输入端
(2)GND外接电源地
(3)OUT数字信号输出端
掉电存储单元设计
当计价器因为外界因素的影响而发生掉电现象时,应该把统计得到的里程,总金额,单价等数据进行保存,当恢复供电后还能够继续进行计价,这就是掉电保护模块的作用。
可以进行存储的芯片有很多种,在这个设计中采用了AT24C08这款芯片。
AT24C08是一个2K串行CMOSEPROM,部有1024个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗,AT24C08还有一个16字节页写缓冲器。
当遇到意外断电的情况,通过程序每次都会自动从AT24C08中读取信息,这样就达到了对单价,路程,总费用信息的保护,避免司机和乘客因为掉电数据丢失而造成不必要的价格纠纷。
AT24C08管脚图如图3-6所示。
图3-6AT24C08管脚图
AT24C08管脚描述见表3-1。
表3-1AT24C08管脚描述
管脚名称
功能
A0、A1、A2
器件地址选择
SDA
串行数据/地址
SCL
串行时钟
WP
写保护
Vcc
+1.8V~6.0V工作电压
Vss
接地
所有引脚中只需要将SCL和SDA加到单片机的数据端,其它引脚接地就可以了。
显示模块介绍
显示部分要求显示里程、等待时间、总金额信息的显示。
下面是LCD1602的基本参数和各个引脚的功能,必须根据下面的参数来设计显示电路的原理图。
LCD1602的基本参数及各引脚功能见表3-2和3-3。
表3-2LCD1602主参数
LCD1602显示容量:
16X2个字符
芯片工作电压:
工作电流:
2.0mA<5V>
最佳工作电压:
5V
字符尺寸:
2.95X4.35
表3-3LCD1602接口信号说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DATAI/O
2
VDD
电源正极
10
D3
DATAI/O
3
VL
液晶显示偏压信号
11
D4
DATAI/O
4
RS
数据命令选择端〔H/L
12
D5
DATAI/O
5
R/W
读写数据端〔H/L
13
D6
DATAI/O
6
E
使能信号
14
D7
DATAI/O
7
D0
DATAI/O
15
BLA
背光源正极
8
D1
DATAI/O
16
BLK
背光源负极
根据LCD1602的基本工作参数和引脚接口信号的介绍,设计出显示电路,显示模块如图3.7所示。
图3.7LCD1602液晶显示屏
此模块电路电源电压为5V,由接口VCC引入,上电后可看到发光二极管被点亮。
数据端8位接分别由单片机的P1I/O口与其线连接,3个控制端口分别有P05~P06端口来控制,8位双向数据线7~14与单片机的P1端口相连,实现液晶与单片机的通信。
液晶对比度通过1602的第三脚接可调电阻来提供可调。
3.3.6按键模块介绍
单片机常用的键盘分为独立式键盘和矩阵式键盘。
独立式键盘特点:
每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单。
适用于所需按键较少的场合。
矩阵键盘特点:
电路连接复杂,但提高了I/O口利用率,软件编程较复杂。
适用于需使用大量按键的场合。
由于本设计用到的按键较少如果使用矩阵键盘〔如图3.8所示,扫描时需要较长的时间,因此利用三个独立按键作为系统开始,结束和白天黑夜模式切换的按键,运用比较方便。
图3.8独立按键
4.程序设计
4.1主程序模块
主程序软件的任务要求包括定时器的设置、按键的扫描、按键的功能处理、脉冲的计数、路途等待超3分钟的计时以及总金额的计算等。
程序设计的思路:
使用中断方式对定时器的溢出进行计数实现3分钟的计时。
主程序采用查询外部中断标志实现脉冲的计数,由于每个脉冲代表1.88m,因此,当脉冲计数超过543时,计价器按照收费标准计价。
主程序在初始化变量和定时器参数设置之后,进入一个循环结构,循环扫描键盘、查询脉冲的中断、数码管的动态扫描等功能,当脉冲的中断标志被查询到,若路途等待时间未超3分钟时,要及时将路途等待时间的值清除为零。
主程序的流程图如图4-1所示。
N
N
Y
N
Y
N
Y
图4.1主程序流程图
以下是主函数程序
voidmain<>
{
LcdInitiate<>;
EX0=1;//允许使用外中断
IT0=1;//选择负跳变来触发外中断
EA=1;//开总中断
ET0=1;//定时器T0中断允许
TMOD=0x01;//使用定时器T0的模式1
TH0=0x4C;//定时器T0的高8位赋初值
TL0=0x00;//定时器T0的高8位赋初值
TR0=0;//启动定时器TR0=1时启动计数TR0=0时停止计数
while<1>
{
key_val=scan_key<>;//255
if =key_val_old> { key_val_old=key_val; if =255> {switch { case0: //启动键 TR0=1; begin=0; if { if { t_cost=6; } else t_cost=7; flag=1;//启动计时,TR0=1为启动了的标志 } else { flag=0; } break; case1: //清除键 init_variant<>;//清除变量 TR0=0;//关闭定时器 break; case2: //白天/黑夜的切换 if { state_val=1; } else { state_val=0; } break; } } } lcd_show<>; } } 4.2中断程序流程图 中断服务程序主要实现计时功能,当启动键按下之后,定时器开始工作,用一个变量对定时器溢出中断的次数进行计数,达到计时功能,该变量在每次脉冲到来时被清零,当脉冲长时间没有来,则当该变量计数超过30秒时,总金额按照途中等待计费标准进行计价。 中断子程序的流程图如图3-13所示。 以下是中断程序 voidTime0 { T0_cnt++; if { T0_cnt=0; if { cnt_3++; } else//超过30秒,途中等待计价 { t_3=0; t_cost=cnt_cost+cost_val[2];} } TH0=0x4C;//定时器T0的高8位重新赋初值 TL0=0x00;//定时器T0的高8位重新赋初值 } Y Y N 图4.2中断程序流程图 5.系统调试 根据系统设计方案,本系统的调试共分为两大部分: 软件调试,硬件调试。 5.1软件调试 编程工具—C51语言 8051单片机的应用程序设计,使用C51语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。 近年来,随着C51语言的编译器性能的不断提高,在绝大多数应用环境下,C51程序的执行效率已经非常接近汇编语言,因此,使用C51进行单片机程序设计已经成为单片机程序设计的主流选择之一。 本设计的软件都是在KeilμVision7.5上进行编写,编译,调试以及运行操作并生成Hex文件。 5.1.2单片机仿真软件在线调试—PROTEUS 1.打开Proteus软件。 2.选择file菜单下的opendesign选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照电路图连接后并保存。 3.将用keil编译产生的hex文件下载到单片机中: 双击51单片机,在对话框中把保存过的hex文件打开,再单击确定。 4.单击左下角运行按钮,进行软件仿真调试,直到出现正确的结果。 下图是在PROTEUS中仿真通过的整体硬件原理图。 图5.1PROTEUS仿真原理图 5.2硬件调试 由于本系统的硬件电路完全符合锐志单片机开发板的电路结构,所以我们将程序烧进锐志单片机开发板进行硬件调试,表5.1的测试条件是: 设定白天的起步价是6元,晚上起步价是7元,等待价格测得数据如表5-1。 表5-1硬件测试数据表 计价状态 单价 起步价 等待时间 里程 总金额 白天模式 1¥/km 6元 3分钟 3km 10¥ 黑夜模式 2¥/km 7元 3分钟 3km 14¥ 从上表的测得的数据得出,本计价器运行稳定,测得的数据满足计价器的需求。 结论 在本次设计中,我们采用AT89S52芯片为核心器件,设计出了简单的出租车计价器,能够实现显示总金额和总里程,按键控制清零,调价,白天,黑夜模式的转换,还能进行掉电数据保存。 选题后,我便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Protues和编程软件KeiC。 由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。 在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。 采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。 这次毕业设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。 通过自身的努力以及相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 计价器 设计方案
![提示](https://static.bdocx.com/images/bang_tan.gif)