出租车计价器毕业设计 精品.docx

上传人:b****6 文档编号:15602473 上传时间:2023-07-06 格式:DOCX 页数:29 大小:2.32MB
下载 相关 举报
出租车计价器毕业设计 精品.docx_第1页
第1页 / 共29页
出租车计价器毕业设计 精品.docx_第2页
第2页 / 共29页
出租车计价器毕业设计 精品.docx_第3页
第3页 / 共29页
出租车计价器毕业设计 精品.docx_第4页
第4页 / 共29页
出租车计价器毕业设计 精品.docx_第5页
第5页 / 共29页
出租车计价器毕业设计 精品.docx_第6页
第6页 / 共29页
出租车计价器毕业设计 精品.docx_第7页
第7页 / 共29页
出租车计价器毕业设计 精品.docx_第8页
第8页 / 共29页
出租车计价器毕业设计 精品.docx_第9页
第9页 / 共29页
出租车计价器毕业设计 精品.docx_第10页
第10页 / 共29页
出租车计价器毕业设计 精品.docx_第11页
第11页 / 共29页
出租车计价器毕业设计 精品.docx_第12页
第12页 / 共29页
出租车计价器毕业设计 精品.docx_第13页
第13页 / 共29页
出租车计价器毕业设计 精品.docx_第14页
第14页 / 共29页
出租车计价器毕业设计 精品.docx_第15页
第15页 / 共29页
出租车计价器毕业设计 精品.docx_第16页
第16页 / 共29页
出租车计价器毕业设计 精品.docx_第17页
第17页 / 共29页
出租车计价器毕业设计 精品.docx_第18页
第18页 / 共29页
出租车计价器毕业设计 精品.docx_第19页
第19页 / 共29页
出租车计价器毕业设计 精品.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

出租车计价器毕业设计 精品.docx

《出租车计价器毕业设计 精品.docx》由会员分享,可在线阅读,更多相关《出租车计价器毕业设计 精品.docx(29页珍藏版)》请在冰点文库上搜索。

出租车计价器毕业设计 精品.docx

出租车计价器毕业设计精品

摘要

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。

而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。

出租车计价器是根据客户用车情况来自动显示车费的数字仪表,根据用车起步价、行车里程计费求得客户用车的总费用,并通过数码管显示相应的里程及金额。

本次设计中电路以AT89S51单片机为中心,附加A44E霍尔传感器测距(本电路中用模拟开关替代),实现对出租车计价,采用AT24C02实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。

模拟出租车计价器设计:

进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。

我们采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。

关键词出租车计价器AT89S51单片机A44E霍尔传感器断电保存8段数码显示管

 

目录

摘要I

第1章绪论1

1.1课题背景1

1.2设计目的与要求1

1.2.1设计目的1

1.2.2主要设计内容及基本要求1

1.3方案论证与比较1

第2章系统硬件设计3

2.1硬件设计说明3

2.2AT89S51单片机简介3

2.3硬件电路设计4

2.4硬件组成5

2.4.1驱动电路5

2.4.2显示电路6

2.4.3复位电路7

2.4.4掉电保护电路8

2.4.5时钟电路9

2.4.6按键电路10

第3章系统软件设计11

3.1软件总体设计11

3.2系统软件设计11

第4章系统调试13

4.1软件调试13

4.1.1编程工具—C51语言13

4.1.2程序调试工具—KEIL13

4.1.3单片机仿真软件在线调试—PROTEUS13

参考文献15

致谢16

附录Ⅰ程序源代码17

附录Ⅱ电路仿真图25

第1章绪论

1.1课题背景

随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。

我们知道,只要乘坐的出租车启动,随着行驶里程的增加,就会看到司机旁边的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如2KM)计费数字显示开始从起步价(如4元)增加。

当乘客到站时,按下停止按键,计费数字显示总里程和总金额,它可以很直观的反映用户使用情况。

1.2设计目的与要求

1.2.1设计目的

毕业设计是将理论与实践相结合的教学环节,通过综合运用教材及其他资料,使所学知识得到进一步加深和扩展。

同时还培养设计能力和解决实际问题能力,进行基本技能的训练,进一步熟练proteus,keilC等软件的操作。

本设计的目的是在学习51系列单片机的基础上,设计出符合要求的电路,从而实现设计产品的计价功能。

1.2.2主要设计内容及基本要求

利用AT89S51单片机,设计简单的出租车计价器。

在出租车计价器的总体设计中,我主要负责出租车计价器硬件设计。

其中主要的外围功能电路有:

驱动电路,按键控制电路,掉电保护电路,时钟部分,数码管显示电路等。

通过对以上各功能的设计,制作出的出租车计价器应具有以下功能:

上电时显示全为零,通过按下启动按键来开始计价,数码管开始显示起步价和起步金额;按下模拟开关按键来产生一个脉冲信号,模拟行驶的里程;数码管开始显示所走里程和所应付的金额,并逐渐增加;按下停止按键,停止计价,数码管显示所走总里程和用户所需付总金额,按下清零按键,数码管全显示零,以备下次计价。

1.3方案论证与比较

方案一:

采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。

采用数字电路控制,采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价。

考虑到这种电路设计过于复杂,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现;性能不够稳定,电路也不实用。

方案二:

采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多

的附加功能。

设计采用AT89S51单片机为主控器,以A44E霍尔传感器测距(按键替代),实现对出租车的基本的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。

利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。

系统结构图如下:

 

1.1系统结构图

通过比较以上两种方案,我们采用方案二实现出租车计价器的功能。

本电路设计的计价器能实现基本的计价功能,单片机计算总价的公式为:

总价=起步价+单价*(总里程-起步里程)+1。

AT89S51作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。

 

第2章系统硬件设计

2.1硬件设计说明

单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。

在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。

设计中,为了能够让数码管更好的正常显示,我们采用了驱动电路来驱动。

在本次硬件设计中,我们考虑采用芯片74LS245来驱动数码管显示。

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

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

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

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

由于在这次设计中只需要显示里程和金额信息,我们采用数码管进行显示。

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

同时为了减少硬件的复杂度,我们采用了动态显示方式,选用了共阴极数码管。

我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,清零按键等。

2.2AT89S51单片机简介

AT89S51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

P0口有二个功能:

1、外部扩展存储器时,当做数据/地址总线。

2、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用:

其内部有上拉电阻。

P2口有两个功能:

1、扩展外部存储器时,当作地址总线使用。

2、做一般I/O口使用,其内部有上拉电阻。

P3口有两个功能:

除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。

图2.1AT89S51引脚图

设计中用到的单片机各管脚(图2.1)功能介绍如下:

VCC:

接+5V电源。

VSS:

接地。

时钟引脚:

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

它可以使单片机稳定可靠的运行。

RST:

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

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

P1.0:

接启动/停止按键,控制计价。

P1.1:

接功能键。

P1.3:

接清零键。

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

P3.4(T0):

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

P3.1、P3.0口接掉电保护电路。

2.3硬件电路设计

按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过两公里后,按计算总价的公式为:

总价=起步价+单价*(总里程-起步里程)+1进行计价。

本设计中,起步价为4元,起步里程为2公里,当然这些数据可以在程序中改写,以满足不同时期价格调整的需要。

下图是通过在KeilC中编译通过,并生成Hex文件,在PROTEUS中仿真通过的整体硬件原理图:

 

图2.2硬件原理图

 

2.4硬件组成

硬件组成主要包括:

驱动电路、显示电路、复位电路、掉电保护电路、时钟电路、按键电路。

2.4.1驱动电路

74LS245是我们常用的芯片,用来驱动led或者其他的设备。

总线驱动器74LS244和74LS245经常用作三态数据缓冲器,74LS244为单向三态数据缓冲器,而74LS245为双向三态数据缓冲器。

本设计用74LS245作为驱动芯片,双向总线发送器/接收器(3S)。

图2.3驱动芯片管脚图

74LS245主要电器特性的典型值如下:

引出端符号:

AA总线端

BB总线端

/G三态允许端(低电平有效)

DIR方向控制端

功能表:

表2.4功能表

利用74LS245来驱动数码管显示,单片机的P2.0到P2.5分别接A0到A5管脚,进行数据的传送,其中AB/BA接高电平,控制数据从A到B进行传送,B0到B5分别接数码管的位选端,驱动数码管依次显示。

P2.0到P2.5的数据通过A传送到B中的数据送到数码管,以达到显示数据信息的目的。

2.4.2显示电路

多数的应用系统,都要配输入和输出外设,LED显示器和LCD显示器,虽然LCD显示效果比较好,已经成为了一种发展趋势,但为了节约成本,我们选用了LED显示器(图2.5)。

在显示方面,我们选用了动态显示。

静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。

占用的I/O口线比较多,在显示位数较多的情况下,一般都采用动态显示方式。

利用动态显示的方法,由于LED显示器的余辉和人眼的视觉暂留现象,只要每位显示的时间间隔足够短,就仍能感觉到所有的数码管都在显示。

为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。

图2.5 LED数码管  集成数码管

LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。

再把多个这样的8字装在一起就成了多位的数码管了。

在本设计仿真中使用的是6个一组的共阴8段数码管。

找公共共阴和公共共阳的方法:

首先我们找个电源|稳压器(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。

共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的段就显示。

2.4.3复位电路

单片机的复位是由外部的复位电路实现的,复位电路通常采用上电自动复位和按钮复位两种方式。

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

除了上电复位外还需要按键手动复位(图2.6)。

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

其中电平复位是通过RST端经电阻与电源VCC接通而实现的。

单片机的复位速度比外围I/O接口电路快为能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。

图2.6 复位电路

2.4.4掉电保护电路

掉电保护电路中采用了存储芯片AT24C02。

AT24C02是一个CMOS标准的EEPROM存储器,是AT24CXX系列(AT24C01/02/04/08/16)成员之一,这些EEPROM存储器的特点是功耗小、成本低、电源范围宽,静态电源电流约30uA~110uA,具有标准的I2C总线接口,是应用广泛的小容量存储器之一。

图2.7 AT24C02引脚图

上图是AT24C02的引脚图,这个芯片是一个8脚芯片,内部存储器有256

字节。

引脚功能介绍如下:

A0(引脚1):

器件地址的A0位,是器件地址的最低位,器件地址排列是A6A5A4A3A2A1A0R/W。

A1(引脚2):

器件地址的A1位。

A2(引脚3):

器件地址的A2位。

GND(引脚4):

地线。

SDA(引脚5):

数据总线引脚。

SCL(引脚6):

时钟总线引脚。

TEST(引脚7):

测试引脚。

Vcc(引脚8):

电源线引脚。

本设计采用掉电存储电路图如下:

图2.8掉电存储电路

2.4.5时钟电路

MCS-51单片机的各功能部件都是以时钟控制信号为基准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。

其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。

为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装得与单片机芯片靠近。

本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体,电容的大小不会影响振荡频率的高低。

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

如图2.9所示。

图2.9时钟电路

2.4.6按键电路

按键控制电路中,单片机的P1.0管脚接启动/停止按键,通过软件编程,当按下按键计数器开始工作,开始计价;当弹起按键时,计数器停止工作,停止计价,启动/停止按键带自锁功能。

按下启动按键,开关处于导通状态,这时给P1.0送低电平信号,这时TR0=1,计数器开始工作,调用计价子程序开始计价。

清零按键接单片机的P1.3管脚,按下清零按键,P1.3为低电平,调用清零子程序,用于将显示数据清零,在程序中给各位赋0代码(0x3f),以达到清零的目的,方便下次计价。

另外为功能键,控制价格调整,这个按键是在没有按下启动/停止按键时有作用,计价过程中无效。

图2.10按键电路

 

第3章系统软件设计

3.1软件总体设计

51单片机的程序设计语言主要有两种:

一是汇编程序设计;二是C语言编程设计。

两种程序设计语言都有各自的优点。

用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅4KB的芯片来说是极之有利的,51单片机能更高速的运行。

C语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。

C语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。

因此,使用C语言进行程序设计已成为软件开发的主流。

本设计就是采用C语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。

3.2系统软件设计

本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图。

在main函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。

通过判断是否计费,调价,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。

这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。

 

整个程序的流程图如下:

图3.1系统程序流程图

第4章系统调试

4.1软件调试

4.1.1编程工具—C51语言

8051单片机的应用程序设计,使用C51语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。

近年来,随着C51语言的编译器性能的不断提高,在绝大多数应用环境下,C51程序的执行效率已经非常接近汇编语言,因此,使用C51进行单片机程序设计已经成为单片机程序设计的主流选择之一。

4.1.2程序调试工具—KEIL

本设计的软件都是在KeilμVision4上进行编写,编译,调试以及运行操作。

4.1.3单片机仿真软件在线调试—PROTEUS

1.打开Proteus软件。

2.选择file菜单下的opendesign选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照电路图连接后并保存。

3.将用keil编译产生的hex文件下载到单片机中:

双击51单片机,在对话框中把保存过的hex文件打开,再单击确定。

4.单击左下角运行按钮,进行软件仿真调试,直到出现正确的结果。

 

下图为软件的仿真窗口图:

图4.1软件仿真窗口图

 

 

参考文献

1谭浩强.C程序设计(第二版).清华大学出版社,2003

2胡泉、谢芳.C语言程序设计.华中科技大学出版社,2009

3戴佳.51单片机C语言应用程序设计实例精讲.电子工业出版社,2007

4张毅刚.单片机原理及应用.高等教育出版社,2004

5马忠梅.单片机的C语言应用程序设计(第三版).北京航空航天大学出版社,2004

6胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,1995

7潘永雄.新编单片机原理与应用.西安电子科技大学出版社,2003

8肖玲妮、袁增贵.Protel99SE印刷电路板设计教程.清华大学出版社,2003

9戴梅萼史嘉权.微型计算机技术与应用.清华大学出版社,2003

10何立民.单片机应用系统设计.北京:

北京航空航天大学出版社,1990

11陈明荧.8051单片机课程设计实训教材.北京:

清华大学出版社,2004

12王卫平.电子工艺技术基础.电子工业出版社,2004

13单片机学习网.

14电子电路网.

15张靖武.单片机原理应用与PROTEUS仿真.电子工业出版社,2009

致谢

本论文是在陈雷老师的悉心指导下完成的,陈老师的渊博学识和丰富的经验给我留下了深刻的印象。

作为一个专科生的毕业设计,由于没有足够的经验,难免有诸多考虑不周的地方,好在有陈老师的指导和同学们的帮助,我才能按时完成任务。

感谢我的指导老师陈雷老师,从课题的选择到设计的最终完成,陈老师都给予了我细心的指导和不懈的支持。

他严谨细致、一丝不苟的作风一直是我们学习中的榜样,并将继续影响我今后的学习和工作。

在此向陈老师致以诚挚的感谢。

毕业设计培养了我独立思考问题,分析问题与解决问题的能力,在设计中我明白了理论与实践有很大的区别,理论上可以实现的,但要做具体的实物,却要多方面考虑。

在陈老师的指导下,加上同组同学的讨论与分析,使所遇到的问题逐步得到解决。

我们的大学即将结束,今天的成绩与一直以来关心、教导我的父母、老师密不可分,在此祝愿他们身体健康、工作顺利、万事如意!

我再次感谢学校和老师给了我这次实践锻炼的机会,以及很多同学对我的帮助,为此我将尽最大的努力,并以最好的心态来回报社会,服务祖国。

 

附录Ⅰ程序源代码

#include

//#include

#include

#defineucharunsignedchar

#defineuintunsignedint

intxscode[6]={0x3f,0x06,0x5b,0x4f,0x66,0x6d};//显示存储区

intzxscode[6]={0x1f,0x2f,0x37,0x3b,0x3d,0x3e};//共阴显示片选码

intcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码

inti,j,flag;

ucharsec;

intkk=0;//路程标志位

intjkk=0;//费用

intjflag=0;//费用标志位

intkflag=0;//路程标志位

intzdflag=0;//中断标志位

intkilo=0;//路程

intdj=1;//路程单价

intdjflag=0;//路程单价

biaozhiwei;

sbitkey1=P1^0;

sbitkey2=P1^1;

sbitkey3=P1^2;

sbitkey4=P1^3;

sbitkey5=P3^4;

sbitSDA=P3^0;//IIC引脚

sbitSCL=P3^1;

voiddelay()

{;;}

voiddelay1(xms)//延时程序子程序

{

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

voidstart()//IIC开始位

{SDA=1;

SCL=1;

delay();

SDA=0;

delay();

}

voidstop()//IIC停止位

{

SDA=0;

delay();

SCL=1;

delay();

SDA=1;

}

voidrespons()//IIC应答位

{

uchari;

SCL=1;

delay();

while((SDA==1)&&(i<250))

i++;

SCL=0;

delay();

}

voidinit()

{

SDA=1;

delay();

SCL=1;

delay();

}

ucharread_byte()//从EEPROM读到MCU

{

uchari,j;

for(i=0;i<8;i++)

{

SCL=1;

j<<=1;

j|=SDA;

SCL=0;

}

return(j);

}

voidwrite_byte(uchardate)//从MCU写到EEPROM

{

uchari,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1;

SCL=0;

delay();

SDA=CY;

delay();

SCL=1;

delay();

}

SCL=0;

delay();

SD

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

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2