出租车计价器的设计.docx
《出租车计价器的设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器的设计.docx(22页珍藏版)》请在冰豆网上搜索。
![出租车计价器的设计.docx](https://file1.bdocx.com/fileroot1/2023-1/27/33128d24-b600-4a98-a9a6-1e654a4468ca/33128d24-b600-4a98-a9a6-1e654a4468ca1.gif)
出租车计价器的设计
江西工业贸易职业技术学院
JiangxiVocationalTechnicalCollegeofIndustry&Trade
毕业论文
(2010—2013年)
题目:
出租车计价器的设计
专业:
机械设计与自动化
学号:
学生姓名:
指导教师:
摘要
现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
出租车计价器是根据客户用车情况来自动显示车费的数字仪表,根据用车起步价、行车里程计费求得客户用车的总费用,并通过数码管显示相应的里程及金额。
我在本次设计中主要负责硬件工作。
本电路以AT89S52单片机为中心,附加A44E霍尔传感器测距,实现对出租车计价,采用AT24C02实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。
模拟出租车计价器设计:
进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。
我们采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。
关键词:
出租车计价器AT89S52单片机A44E霍尔传感器断电保存8段数码显示管
第1章绪论
1.1出租车计费器的发展背景
随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票资料打印、IC卡付费、语音报话、和电脑串行通信等功能,而这些与电子技术的发展是分不开的。
二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。
同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。
目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。
在可编程集成电路的开发过程中,以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果的电子设计自动化(EDA)技术主要能辅助进行三方面的设计工作:
IC设计,电子电路设计以及PCB设计
理想的可编程逻辑开发系统能符合大量的设计要求:
它能够支持不同结构的器件,在多种平台运行,提供易于使用的界面,并且有广泛的特征。
此外,一个设计系统应该能给设计师提供充分自由的设计输入方法和设计工具选择。
我国的第一家生产计价器企业是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说早期的计价器就是一个里程表。
随着科学技术的发展,产生了第二代计价器。
它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。
此时它在计程的同时还可以完成计价的工作。
大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。
它的功能也在不断完善.当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程,计价,显示等基本工作。
单片机以及外围芯片的不断发展促进了计价器的发展。
1.2本设计的设计内容
利用单片机,设计一个出租车计费器,达到:
1.不同情况具有不同的收费标准:
白天(6-22点);晚上(22-次日6点);途中等待(>7.5min开始收费);
2.能进行手动修改单价(内部键);
3.数据显示:
单价显示2位;路程显示3位;总金额显示3位;
4.按键:
1)数据清零2)单价的调整;
5.能够在掉电的情况下存储单价等数据,具有票据打印功能;
6.能够显示当前的系统时间;
7.到达目的地语音播报数据信息,乘客上下车问候语。
第2章总体设计方案
2.1方案设计概述
我们在选择和确定系统的设计方案时,是以以下几个方面来考虑的:
1、开放性,考虑到本系统中将涉及到不同厂商的元器件,以及系统的扩展需求,在本系统设计中,我们将尽量避免采用专有元器件和技术,从而使本系统中的软硬件都具有充分的开放性。
2、先进性,本系统中的设计开发以及系统的维护管理所采用的产品技术均综合考虑现行技术的发展趋势,采用相对先进同时市场相对成熟的产品技术,以满足系统未来的发展需求。
3、高性能,考虑到本系统将提供给生产人员和非专业人员的使用等角度,合理设计结构、配置,以确保大量用户的方便。
4、可靠性,本系统的设计将在尽可能减少投资的情况下,从系统结构、技术措施、器件选型等方面综合考虑,以确保系统中任何一个环节都没有单故障节点,实现其功能服务。
5、可扩展性,在本系统中,还预有一个与计算机相连的串口,以实现随着生产的发展而扩展。
6、性价比,本系统的设计中,在满足用户需求与系统的高性能、高可靠性的前提下,尽量降低开发资金的投入。
也就是本着这样的设计原则,整个方案的大体轮廓就浮现出来了。
也是我下一节将要说的系统设计原理。
2.2系统原理框图
以单片机AT89S52为核心,以语音芯片SYN6288、时钟芯片DS1302芯片等为外设的新型出租车计费器。
给出硬件电路图及主要程序流程图,阐述了软硬件设计过程中关键技术的处理。
该系统完全满足集计程、计时、计费、存储、查看等多种计量功能为一体的出租车计费器的实用要求。
SYN6288语音芯片的优点:
最小SSOP28L贴片封装、硬件接口简单、低功耗、音色清亮圆润、极高的性价比,除此之外,他在识别文本、数字、字符串时更智能、更准确,语音合成自然度更好、可懂性更高。
DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整。
时钟操作可通过AM/PM指示决定采用24或12小时格式。
图2.2整体方案设计方框图
(1)AT89S52为出租车计费器核心部件,单片机检测到霍尔传感器的脉冲信号并进行里程计算;
(2)A44E霍尔传感器的作用为测量出租车行驶里程;
(3)按键包括4个独立按键,主要功能为模式选择、时钟、起步价、单价的修改以及语音播报和打印的实现;
(4)DS1302为时钟芯片,在本设计中用于实时时钟的实现;
(5)AT24C02为掉电储存单元,用于起步价、白天单价及夜晚单价的掉电储存;
(6)ST7920LCD液晶显示用于时钟、单价、里程、总金额及模式的显示;
(7)SYN6288与单片机串接,用于乘客上下车时的语音播报;
(8)TPUP-40S微型打印机用于乘客下车时的票据打印。
这样的设计思想和原理能符合我们的需求,图2.2.b即是该系统的主要框架结构了。
有了以上的论证、设计思想及设计原理,我们这个系统的实施也就有了可靠的保障
第3章系统硬件设计
3.1硬件设计任务分析
3.1.1硬件设计流程图
本课题的硬件设计是以AT89S52单片机为设计核心,以LCD液晶显示为特色的质量控制系统。
该款单片机内部集成了ADC,以减少外围硬件连接,提高系统的抗干扰能力。
同时也可以简化电路。
本系统外围部分主要有44E霍尔传感器、AT89S52单片机、独立键盘、EEPROMAT24C02、ST7920LCD液晶显示、SYN6288语音合成模块、DS1302时钟芯片及TPUP-40S微型打印机。
如图3.1.1所示为本系统的整体硬件设计流程图:
根据题目需要设计总体方案
根据需求选择所需元器件
了解器件个引脚的作用
运用CAD手工绘制电路图
组合各部分电路图
完成电路图的绘制
图3.1.1.系统硬件设计流程图
3.2单片机的介绍及模块选择
3.2.1单片机的概述
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程
AT89S52引脚图
Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
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位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,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(外部数据存储器读选通)
3.2.2A44E霍尔传感器检测单元
图32.2A44E霍尔元件接线图
A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。
A44E集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。
在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。
这样两次电压变换,使霍尔开关完成了一次开关动作。
里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。
3.2.3AT24C02存储单元
图3.2.3存储单元电路原理图
A2~A0:
器件地址选择引脚。
将这3个引脚配置成不同的编码值,在同一串行总线上最多可扩充8片同一容量或不同容量的24系列串行EEPROM芯片。
SDL:
串行数据输入输出口,是一个双向的漏极开路结构的引脚,容量扩展时可以将多片24洗脸的SDA引脚直接相连。
SCL:
串行移位时钟控制端。
写入时上升沿起作用,读出时下降沿起作用。
WP:
硬件写保护控制引脚。
当其为低电平时,正常写操作,高电平时,对EEPROM部分存储区域提供硬件写保护功能,即对被保护区域只能读不能写。
GND:
接地
VCC:
接+5V电压
3.2.4按键
当单价等信息需要进行修改时,就要用到键盘进行修改。
由于调节信息不多,故采用4个独立键盘即可,可实现语音、打印、增大、减小等功能作用。
电路原理如图3.2.4所示。
图3.2.4独立键盘电路原理图
S1:
接P2.0口,外部模式切换键,允许进行时钟修改。
S2:
接P2.1口,单价和时钟加键,及乘客上车语音播报键。
S3:
接P2.2口,单价和时钟减键,及乘客下车语音播报和票据打印键。
S4:
接P2.3口,内部模式切换键,专业人员进行时钟、单价修改。
3.2.5显示单元
ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置128×64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。
该芯片共内置8192个中文汉字(16×16点阵)、128个字符的ASCII字符库(8×16点阵)及64×256点阵显示RAM(GDRAM)。
为了能够简单、有效地显示汉字和图形,该模块内部设计有2MB的中文字型CGROM和64×256点阵的GDRAM绘图区域;同时,该模块还提供有4组可编程控制的16×16点阵造字空间;除此之外,为了适应多种微处理器和单片机接口的需要,该模块还提供了4位并行、8位并行、2线串行以及、3线串行等多种接口方式。
图3.7ST7920电路原理图
在对ST7920读或写时,会用到两个8位的寄存器,一个是数据寄存器DR,另一个是指令寄存器IR。
通过数据寄存器DR可以存取DDRAM、CGRAM、CGROM及IRAM的值。
待存取的目标RAM的地址可通过命令来选择,每次数据寄存器DR的操作应以上次选择的目标RAM为主体来进行读出或写入。
通过RS和RW的状态可以选择不同的读写模式,具体配置方法如表3.1所列。
忙标志位BF为“1”时,表示内部操作正在进行,即处于忙状态而不接受新的指令,所以,每次接受新指令前,都要读取BF标志,只有当其为“0”时才可接受。
表3.1ST7920的寄存器读写状态
RS
RW
功能说明
低电平0
低电平0
MPU写指令到指令寄存器IR
低电平0
高电平1
读出忙标志及地址计数器的状态
高电平1
低电平0
MPU写指令到数据寄存器DR
高电平1
高电平1
MPU从数据寄存器DR读出指令
在本设计中,单片机采用串口方式访问ST7920,只用两根线(SID与SCLK)完成数据传输。
通过ST7920实现时钟、单价、里程、总金额及模式的显示。
3.2.6实时时钟单元
DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态
3.2.7票据打印单元
TPUP-AT系列打印机是最新设计的一种面板安装式微型点阵打印机。
整机体积小,重量轻,功能完备,外形美观,操作简单,连接方便。
它特别适于安装在机器或设备的面板上,使打印机和仪器浑然一体,提高整机的结构水平。
图3.11TPUP-40S微型打印机串行接口电路
引脚说明:
TXD:
单片机的串口输出端,同时,对于TPUP-40S微型打印机而言是数据串行输入端口。
CTS:
允许发送信号,在标志控制握手方式下使用。
第四章系统软件设计
本次软件设计采用KeilC51单片机软件。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
4.1系统主程序
在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及中断、计算、循环等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
图3.1主程序流程图
当汽车发动时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。
若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价送数码管显示出来。
计算程序根据里程数分别进入不同的计算公式。
如果里程大于3公里,则执行公式:
总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:
总金额=起步价+等待时间*等待单价。
程序流程图如图3.2所示。
图3.2总金额计算程序流程图
4.2中断程序
中断程序包括外部中断0和外部中断1,其中外部中断0用于霍尔传感器里程计数,外部中断1用于等待时间计费。
4.2.1里程计数中断程序
每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满12次时,进入里程计数中断服务程序中,里程加1m,当里程计满1000次,里程变量加一。
图3.3里程计数中断程序流程图
4.2.2中途等待中断程序
在中途等待中断程序中,每5ms产生一次中断,将当前里程值送入某个缓存变量,每1分钟将缓存变量中的值和当前里程值比较,当汽车停止,霍尔传感器超过10分钟没有输出信号,当前里程值和缓存变量内的值相同,则进入等待计时,每1分钟记一次价格。
图3.4中途等待中断程序流程图
4.3显示程序
液晶显示包括时间、模式、里程、起步价及单价的显示。
其中单价分为白天单价和夜晚单价。
在6点到22点之间自动显示白天单价,而在6点到22点之外,将自动切换显示夜晚单价。
图3.5LCD液晶显示程序流程图
4.5键盘程序
本次设计中使用了四个按键,它们的作用分别是模式选择、数据的增减。
其中模式键包括外部模式键和内部模式键。
外部模式键只能修改时间,而内部模式键不仅可以时间修改,还能修改单价和起步价。
之所以设置两个模式键,就是为了防止司机私自修改单价和起步价。
图3.7内部模式键程序流程图
图3.8外部模式键程序流程图
4.6微型打印机
串行打印程序主要有波特率和串行口UAR的初始化,发送、接受模块的设计在标志控制方式下,当打印机可以接收数据时,信号线DTR为准备状态,即Mark状态,主计机根DTR,为准备状态还是忙状态,而向打印机发送或停止发送数据;当DTR为Space时,发送数据;当DTR为Mark状态时,停止发送,等待下一状态Space。
其时序如图3.12所示。
图3.9标志控制时序图
系统控制软件包括:
AT89S52串行口初始化打印机缓冲区首址选址打印机状态判断数据发送/接受打印数据设定等。
串行接口编程流程图如图3.13所示。
图3.10打印程序流程图
第五章系统调试
里程计数曾考虑过两个方案:
霍尔传感器及光电传感器,由于实验室有霍尔传感器,所以最终采用A44E霍尔传感器进行里程测量。
掉电储存单元采用AT24C02,其寿命可达40多年,质量可靠。
语音芯片最初选用美国ISD公司的2500芯片,ISD2500最大特点在于片内E2PROM容量为480K,所以录放时间长。
但考虑到性价比,最终选用SYN6288语音模块,他不仅价格便宜,而且足以提供出租车语音播报的功能。
按键为4个独立键盘,通过在程序中加入LED亮灭及液晶显示判断键盘完好。
由于汽车内部电源为12v,而单片机电源为5v,所以采用7805电源模块使12v电源降压到5v,使整个硬件电路得以正常工作。
在硬件选型及接口分配完成后便是软件程序设计。
由于软件程序设计工作量大,所以里程、显示、时间、储存、语音等模块化,这样思路清晰且便于调试。
时间、显示、按键、里程及等待时间的程序较为顺利。
测试如下:
表4.1里程计费程序调试
时间
9:
00
23:
00
单价/元
1.8
2.2
起步价/元
10
等待时间/分钟
0
0
11
12
0
0
1
10
里程/公里
1
4
1
4
3
4
3
4
总金额/元
10
11.8
11
13.8
10
12.2
10
12.2
注:
其中等待时间为超过10分钟每加一分钟总金额加1元。
AT24C02程序设计主要包括单价、起步价的掉电储存。
通过按键改变单价及起步价,系统重新上电后单价、起步价为改变后的数据。
按键由4个独立键盘组成,最初设计为:
P20模式选择键,P21时间、价格加键,P22时间、价格减键,P23语音、打印键。
但考虑到司机不能私自修改单价、起步价,所以重新分配4个按键的功能,其中P21和P22在原有功能基础上增加语音和打印功能,P20为外部模式选择(只允许修改时间),P23为内部模式选择(包括时间、单价、起步价修改)。
表4.2按键及掉电储存检测
修改内容
修改测试
白天单价/元
夜晚单价/元
起步价/元
总金额初始