基于单片机的出租车计价器的设计.docx
《基于单片机的出租车计价器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的出租车计价器的设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机的出租车计价器的设计
基于单片机的出租车计价器的设计
院系
独创性声明
本人郑重声明:
所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。
除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其它人已经发表或撰写的研究成果。
和本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。
签名:
年 月 日
授权声明
本人完全了解许昌学院有关保留、使用本科生毕业论文(设计)的规定,即:
有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。
本人授权许昌学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。
本人论文(设计)中有原创性数据需要保密的部分为:
签名:
年 月 日
指导教师签名:
年 月 日
摘要
本设计就是以AT89C51单片机为控制核心,用LCD显示器显示出租车的路程,价格,通过按键来实现开始,暂停,复位,转换等功能,还可根据不同情况来调节价格,不计价的时候还可以作为时钟使用。
设计中一共采用了四个频率开关,每个开关模拟不同的车速,6个按键,每个按键控制不同的功能,N键和P键是调整时间的导航键,+键和-键是调节时间和日期的,E/C键是模式切换键,Pause键是暂停计费按键。
关键词:
AT89C51单片机;LCD;数字时钟DS1302
ABSTRACT
ThedesignisacontrolcenterbasedonAT89C51microcontroller.LCDdisplayshowthejourneyandpriceoftaxi,bythekeyboard,achievedstartsuspended,reset,displayconversionandsoon.Youalsocanadjustthepriceaccordingtodifferentcircumstances,whenitcomestopricingcanbeusedasaclock.Therearefourfrequencyswitchsinthedesign,eachswitchsimulationdifferentspeed,andsixkeys,eachkeycontroldifferentfunction,NkeyandPkeyisthenavigationkeystoadjustthetime,+keysand-keyistoadjustthetimeanddate,E/Ckeyismodeswitchbutton,Pausekeyissuspendedbillingbuttons.
Keywords:
AT89C51microcontroller;LCD;digitalclockDS1302
目 录
1课题背景
1.1研究背景
随着我国经济的快速发展,人民的生活水平有了很大的改善,旅游已经成为一种时尚,旅游业的发展,让人们对交通和服务行业的要求越来越高,而出租车就成为了外出旅游的重要工具之一。
当然,出租车计价就成为了最重要的问题,也是广大消费者最关心的问题。
随着出租车行业的迅猛发展,出租车成为了日常生活中重要的交通工具,只有安装了计价器的出租车才可以使用。
计价器是出租车公司和消费者之间公平交易的重要工具,所以计价器的性能一定要稳定,准确。
近年来,依据国家有关法律、法规。
出租车计价器已经被列为国家强制检定的计量器具之一。
出租车作为重要的交通工具,其行业的发展也早已备受关注,出租车能否准确的计价,是乘客和司机一直关注的重点,而良好性能的计价器无论是对汽车司机还是对广大消费者都是很重要的。
我国最早的生产计价器的是重庆市起重机厂,那时的计价器都是采用机械齿轮钩,只能完成简单的计程功能,但它是早期计价器的一个里程碑。
随着科学技术的飞速发展,第二代半机械化、半电子化的计价器产生,这时的计价器不但可以计程,还可计价。
当大规模集成电路发展时,第三代计价器很快问世,即全电子化的计价器,它利用了功能强大的单片机,可轻易的完成计程,计价,显示等基本工作。
1.2研究内容
计价器是主要负责出租车收费的职能仪表,它关系到消费者的经济利益,所以它对稳定性,准确性,精确性的要求非常的高。
本设计利用AT89C51作为核心控制中心,使计价器具有计价、计程、停车时间计价,时钟显示等相关功能。
2硬件平台
2.1单片机概述
单片机又称为单片微型计算机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文缩写字母MCU来表示单片机,单片机最早被用在工业控制领域。
单片机主要由中央处理器(CPU)、内部数据存储器(内部RAM)、内部程序存储器(内部ROM)、I/O口、串行口、定时器、终端程序等系统组成。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory),高性能CMOS8位微处理器,单片机的可擦除只读存储器可以反复擦除100次。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.1.1AT89C51单片机的中央处理器
单片机的核心部分是CPU,它相当于单片机的大脑和心脏。
CPU的主要功能是产生各种控制信号,以控制存储器、输入/输出端口的数据传送、数据的算术运算和逻辑预算以及位操作处理等。
AT89C51的中央处理器主要由运算器和控制逻辑组成,其中包括一些特殊功能寄存器(SFR)。
算术逻辑单元ALU能对数据进行加、减、乘、除等算术运算;“和”、“或”、“异或”等逻辑运算以及位操作运算。
ALU只进行运算,运算的操作数可以事先存放到累加器ACC或寄存器TMP中,运算结果可以送回ACC或通用寄存器或存储单元中,ACC也可简写为A。
寄存器B在乘法指令中用来存放一个乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。
2.1.2AT89C51单片机引脚介绍
AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,也可在线编程。
它将通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。
AT89C51单片机是高性能单片机,因为受引脚数目限制,所以有许多引脚具有第二功能,各引脚功能如图2-1所示。
图2-1AT89C51的引脚图
电源引脚VCC和VSS
VSS:
接地端。
VCC:
+5V电源端。
时钟信号引脚XTAL1和XTAL2
XTAIL1、XTAL2:
当使用单片机内部振荡电路时,用外接石英晶振和微调电容,XTAL1是内部振荡电路反相放大器的输入端,XTAL2是片内振荡电路反相放大器的输出端,振荡电路的频率就是晶振的固有频率。
当使用外部时钟时,XTAL1接地,XTAL2接外部时钟信号源。
控制信号引脚RST/VPD、ALE/
、
和EA/VPP
RST/VPD:
RET是复位信号输入端。
当输入的复位信号保持两个机器周期(24个时钟周期)以上的高电平时有效,用来完成复位操作;第二功能VPD作为备用电源输入端,当电源VCC发生故障,电压降低到低电平规定值时,可通过VPD为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,使系统在上电后能继续正常运行。
ALE/
:
ALE为地址锁存允许输出信号。
在访问外部存储器时,ALE用来锁存P0口扩展低8位地址的控制信号。
在不访问外部存储器时,ALE也以时钟振荡频率的1/6的固定频率输出,因而它又可以作对外输出时钟信号或其他需要,例如可以示波器查看ALE是否有脉冲信号输出来确定89C51芯片的好坏;第二功能PROG是对内部有EPROM的单片机的EPROM编程脉冲输入端,它和31号引脚的第二功能VPP一起使用。
:
外部ROM的读选通信号输出端。
在访问外部ROM时,PSEN产生负脉冲作为读外部ROM的选通信号。
而在访问外部RAM或片内ROM时,不会产生有效PSEN信号。
/VPP:
EA是访问外部ROM的控制信号。
EA为低电平时,CPU只执行外部ROM中的程序。
EA为高电平且PC值小于0FFF(4K)时,CPU执行内部ROM的程序,但当PC的值超出4K时将自动转去执行片外ROM的程序。
对于无片内ROM的8031或不使用内部ROM的89C51,EA必须接地;第二种功能VPP是作为8751的片内EPROM的+21V编程电源输入端。
并行I/O端口P0、P1、P2和P3
P0口(P0.0~P0.7):
P0口是一个8位双向I/O端口(无需外接上拉电阻)。
在访问外存储器时,分时提供低8位地址线和8位双向数据线。
P0口先输出片外存储器的低8位地址并锁存在地址锁存器中,然后再输入或输出数据。
P1口(P1.0~P1.7):
P1口是一个内部带有上拉电阻的8位准双向I/O端口。
且P1口只能作为一般I/O口使用。
P2口(P2.0~P2.7):
P2口是一个内部带有上拉电阻的8位准双向I/O端口。
在访问外部ROM或外部RAM时,输出高8位地址,和P0口提供的低8位地址一起组成16位地址总线。
P0口和P2口用作数据/地址线后,不能再作为通用I/O口使用。
P3口(P3.0~P3.7):
P3口是一个内部带有上拉电阻的8位准双向I/O端口,在系统中8个引脚都有各自的第二功能。
2.2硬件电路的组成
2.2.1复位电路的设计
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
本设计所用的复位电路如图2-2所示。
图2-2复位电路
2.2.2时钟电路的设计
AT89C51系列单片机内部有一个可控制的反相放大器,引脚XTAL1、XTAL2为反相放大器的输入端和输出端,在XTAL1、XTAL2上外接晶振和电容便组成振荡器。
具体的时钟电路如图2-3所示。
振荡器频率主要取决和晶振的频率,但小于器件所允许的最高频率。
振荡器的工作可由软件置‘1’,使振荡器停止振荡,从而使整个单片机停止工作,以达到节电的目的。
图2-3时钟电路
2.3单片机最小系统电路
单片机最小系统是指用最少的元件组成的单片机可以工作的系统。
对于AT89C51单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路等。
它们是AT89C51工作所需的最简外围电路。
单片机最小系统电路如图2-4所示。
图2-4单片机最小系统电路图
2.4A44E霍尔传感器
2.4.1A44E霍尔传感器简介
A44E霍尔传感器是一种磁传感器。
可以检测磁场及其变化,可在各种磁场有关的场合中使用。
以霍尔效应为其工作基础。
它结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动不怕一些污染和腐蚀,而且精度高工作温度范围宽。
这种霍尔元件大量用于直流无刷电机和测磁仪表。
A44E集成霍尔开关由稳压器A,霍尔电势发生器(即硅霍尔片)B,差分放大器C,施密特触发器D和OC门输出E五个基本部分组成。
(a)1—VCC2—GND(b)
3—OUT
图2-5集成霍尔开关外形及引线
在输入端输入电压VCC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则和这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。
这样两次电压变换,使霍尔开关完成了一次开关动作。
集成开关型霍尔传感器原理如图2-6所示。
图2-6集成开关霍尔传感器原理
2.4.2里程计算、计价单元设计
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的,其原理如图2-7所示。
图2-7 传感器测距示意图
由于A44E属于开关型的霍尔传感器件,其工作电压范围比较宽(4.5V~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的I/O端口上,而且其最高检测频率可达到1MHZ。
我们选择了P3.2口作为信号的输入端,内部采用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到1000次时,也就是1公里,单片机就控制将金额自动的增加,其计算公式:
当前单价×公里数=金额。
由于在仿真过程中不能直接用霍尔传感器,所以仿真时使用了系统中的频率来模拟霍尔传感器脉冲。
仿真时共用了四个不同频率的脉冲模拟传感器脉冲。
2.5液晶显示简介
LM016L是一款较常用的液晶。
通常有16条引脚线,其中有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,还有两个脚为背光源正负极,工作电压为5V。
液晶显示原理:
液晶显示的原理是利用液晶的物理性质,通过电压对其显示区域进行控制,有电就可显示出图形。
液晶显示具有厚度薄,使用于大规模集成电路进行驱动,目前已被广泛使用于众多领域,例如便携式电脑,数字摄像机,PDA移动通信工具等。
引脚如下:
第1脚:
VSS为地
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度,或直接通过一个电阻到地.
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
背光源正负极。
2.6时钟芯片DS1302
2.6.1DS1302的简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
采用三线接口和CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302的管脚如图2-8所示。
图2-8DS1302管脚
引脚介绍:
VCC1——后背电源VCC2——主电源
X1,X2——振荡源RST——复位/片选线
2.6.2DS1302的电路
在DS1302电路(如图2-9)中,VCC2是主电源,VCC1是后备电源。
当主电源关闭时,后背电源同样能保持时钟的连续运行。
DS1302由VCC1或VCC2中的电压较大的一个供电。
RST的输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,就会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在VCC≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
图2-9DS1302电路
2.6.3DS1302的控制字节
DS1302的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
1
RAN/CK
A4
A3
A2
A1
A0
RAN/K
图2-10DS1302的控制字节
3软件平台
3.1ProteusISIS仿真软件简介
ProteusISIS是一种操作简便而又功能强大的原理图编辑工具,它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点有:
(1)实现了单片机仿真和SPICE电路仿真的结合
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真等功能。
(2)支持主流单片机系统的仿真
目前支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能。
(4)具有强大的原理图绘制功能
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列等。
3.2ProteusISIS的仿真步骤
Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。
在ProteusISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件,对单片机设置完毕后就可以开始仿真了。
ProteusISIS仿真界面如图3-1所示。
图3-1ProteusISIS仿真界面
运行Proteus程序后,进入软件的主界面。
通过左侧工具栏中的P(从库中选择元件命令)命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置。
元件的选取界面如图3-2所示。
图3-2元件选取界面
3.3KeiluVision2调试软件
KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,提供丰富的库函数和功能强大的集成开发调试工具,和汇编相比,C语言在功能性、结构性、可读性、可维护性上有明显的优势。
KeiluVision2的使用流程如图3-3所示。
图3-3Keil的基本使用流程
KeiluVision软件的调试界面如图3-4所示。
图3-4KeiluVision2程序调试界面
本设计利用软件KeiluVision2,在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“OptionsForTarget”对话窗口中,选中“Output”选项中的“CreateHEXFile”,在编译链接后就可以生成.HEX文件。
此文件的选取界面如图3-5所示。
图3-5可执行的.HEX文件的选取界面
4软硬件设计
4.1电路的总体设计
4.1.1电路设计方案
如果我们在设计电路时用的是传统的数字电路或者模拟电路的话,那么可用的显示器就只能是LED显示,VFD显示,分段式数码管等这些传统的显示器,这样的话,仅显示电路框图和实际电路就已经非常得复杂,整体电路更是非常的麻烦。
此外,当进行计费模式切换时所用的按键是机械按键,而机械按键用久了很容易老化,会造成接触不良,容易导致功能不易实现。
和此相比,单片机的功能就强大很多,只需用较少的硬件和少量的软件就可以实现较复杂的设计要求,还可以添加更多的其他功能,灵活性很强,计费模式切换通过软件就可轻易实现,避免了因机械开关的老化而造成的潜在危险。
因此本电路以AT89C51单片机为中心,实现对出租车路程的统计,输出采用液晶显示器LM016L。
4.1.2计价器总体设计图
图4-1计价器设计原理框图
图4-2计价器设计原理图
原理图功能分析:
本设计一共采用了四个频率开关,每个开关对应的频率分别为5Hz,50Hz,150Hz,211Hz,这些频率是采用系统中的频率来模拟的霍尔传感器脉冲。
当选择低于10Hz的频率的时候,所表示的是出租车停止行驶,此时采用的是计时收费模式,即100s按照1km收费,1km收费1.4元,起步价为6元(含3km)。
当选择50Hz,150Hz,211Hz时,表示出租车分别行驶在中速,高速,超高速的行驶状态下,这是计价器的收费为计价收费,起步价为6元(含3km),行驶1km收费1.4元。
时间显示部分是用DS1302为时间基准计时的,N键和P键是调整时间的导航键,N键是顺序,P键是倒序,+键和-键是调节时间和日期的,E/C键是选择时间显示还是计费显示的按键。
Pause键是暂停计费的按键,当出租车正在行驶的过程中,也就是说计价器正在计价的时候,按下该按键,计费就会停止。
4.2计价器系统软件的设计
4.2.1主程序模块
在主程序模块设计中,要设置启动/清除标志寄存器、里程寄存器,然后对它们进行初始化,这时,主程序就会根据需要完成启动、清除、计程等各种操作。
初次之外还要对各接口芯片初始化,对中断向量的设计,开中断和循环等待的工作。
4.2.2定时中断服务程序
在定时中断服务程序中,每1ms就会产生一次中断,当产生1000次中断的时候,也就是一秒,然后把数据送到相应的显示缓冲单元,并调用显示子程序即可显示。
4.2.3液晶驱动程序
主程序的实现是用LCD驱动,系统初始化时涉及的硬件、键盘的控制,根据按键来启动或者停止里程的测量,然后调用用户界面程序定时更新日期和时间的显示,及时的更新价格、里程、费用等一些信息显示,文本、图形显示等功能。
4.2.4计价管理程序
计价管理程序主要作用是对脉冲的计量并转换为公里数,计算出所需费用,同时,测出出租车的行驶速度,统计低速行驶的时间和费用,并把检测到的结果传送给液晶显示器,及时的更新函数,以便主函数可以及时的控制用户界面,计时费用,行驶路程等信息。
计价管理程序主要包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。
4.3主程序设计及程序流程图
程序开始运行后,首先初始化各个硬件部分,同时打开时基中断,准备好为键盘扫描和时间管理做好服务工作,程序进入主循环之后会不断的对按键进行扫描,随时准备根据按键的启动、停止里程计量,或者是转换显示模式和进入设置模式,主循环时,时间也会及时更新。
主程序流程图如下图所示:
图4-3主程序流程图
主程序见附录
5ProteusISIS仿真结果
5.1出租车停止行驶时
图5-1出租车停止时
当频率选择在10Hz以下的情况时,出租车停止行驶,按一下按键E/C,切换至计费模式,LOW灯点亮,采用计时收费