基于51单片机的简易出租车计价器设计_第1页
基于51单片机的简易出租车计价器设计_第2页
基于51单片机的简易出租车计价器设计_第3页
基于51单片机的简易出租车计价器设计_第4页
基于51单片机的简易出租车计价器设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机课程设计20摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于89C51单片机的多功能出租车计价器,阐述硬件设计过程中关键技术的处理。结果表明该计价器具有集计程、计时、计费、存储等多种计量功能,并且具有打印和显示等多种功能。本课题主要研究出租车计价器的硬件设计。论文详细阐述了该计价器的总体设计:时钟电路模块、掉电存储模块、里程检测模块、LED显示模块、键盘模块等。目录引言 31.设计背景 41.1课题背景 41.2设计内容 42出租车计价器系统简介 43系统硬件设计 53.1主控制器选择 53.2LED显示模块 63.3掉电保护模块 73.4里程采集模块 83.5按键输入模块 93.6晶振系统 103.7复位电路 103.8时钟模块 124软件设计简介 134.1汇编语言简介 134.2程序设计 145电路仿真 175.1Proteus软件介绍 175.2出租车计价器proteus仿真 185总结 19参考文献 19附录:源程序代码 19引言出租车行业在我国是八十年代初兴起的一项新兴行业,随着出租车行业的发展,出租车已经是城市交通的重要组成部分,出租车计费器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计费器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。要将出租车计价系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节单价以及计价方式。因此,研究出租车计价器及扩大其应用,有着非常现实的意义。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。我国第一家生产计价器的是重庆市起重机厂,最早的计价器全部采用机械齿轮构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。出租汽车计价器是一种专用的计量仪器,它安装在出租汽车上,能连续累加,并指示出行程中任一时刻乘客应付费用的总数,其金额值是计程和计时时间的函数。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。随着电子技术的发展以及对计价器的不断改进和完善,便产生了诸多的附加功能。例如:(1)LED显示功能,数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;(2)永久时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;(3)存储功能,可存储多项营运数据,便于查询。新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年。1.设计背景1.1课题背景在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。1.2设计内容本设计主要是介绍了单片机控制下的出租车计价器设计,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:(1)启动/清除数据(2)键盘输入(3)掉电保护(4)LED显示(5)里程采集2出租车计价器系统简介设计的整体电路框图如图所示,整个系统由单片机AT89C51控制电路,配合六个数码管组成的显示模块;以A44E霍尔传感器测距,实现对出租车的多功能的计价设计;采用掉电存储单元AT24C02来实现在系统掉电的时候保存单价和系统时间等信息;按键键盘电路、LED驱动显示电路及电源电路组成。89C5189C51单片机启动/清除数据开关键盘输入模块AT24C02掉电保护模块A44E霍尔传感里程采集模块LED显示模块时间起步价里程总金额单片机采集并判断空车灯信号及路程检测传感器信号,当出租车启动时,单片机检测到霍尔传感器的脉冲信号并进行里程计算。当无乘客时,单片机调用实时时间芯片8563程序和8255串口显示驱动程序,用4只LED进行时钟显示;当空车灯掰下乘客上车时,通过8563获取时间信息分辨白天/晚上,然后调用AT24C02程序获取白天/晚上的单价及起始价,便开始计价并显示时间、里程和金额等信息;当空车灯打上乘客下车时,打印好票据,单片机将营运数据信息存储到AT24C02中,等待出租车再次启动后单次金额与里程等信息清零复位,就此完成一次计价。3系统硬件设计3.1主控制器选择对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位AT89C51单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。图3-1AT89C51引脚图3.2LED显示模块本设计是用六个七段数码管动态扫描来实现的时钟与计价的显示。图3-2LED管脚配置图LED显示块是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED。这种显示块有共阴极和共阳极两种,如上图所示,共阴极LED显示块的发光二极管阴极共地,如图中所示,当某个发光二极管的阳极为高电平时,发光二极管点亮。共阳极LED显示块的发光二极管阳极并接,当某个二极管的阴极为低电平时,该二极管点亮。通常的七段LED显示块中有八个发光二极管,故也称为八段显示器。其中七个二极管构成七笔字型“8”,一个发光二极管构成小数点。控制不同组合的二极管导通,就能显示各种字符。设8位控制器按低到高的次序依次控制LED显示块的a~f和小数点dp,我们称控制器输出的控制LED显示块显示字符的8位字节数据为段选码。共阳极与共阴极的段选码互为反码。在单片机应用系统中使用LED还可构成任意位的LED显示器。如8位LED显示器有8根位选线和8χ8根段选线。每根位选线控制该位的LED的8根段选线控制该位LED显示什么字符。段选线控制显示字符的字型,而位选线控制显示位的亮、暗。显然,多位LED控制线占用太多。在多位LED显示时,为了简化电路,降低成本,将所有位LED的段选线并接在一起,在某一刻时,将要显示的字符段码同时送到每一个显示器的各段,但是只让这一位LED显示。下一时刻又送下一位LED要显示字符的段码,并只让下一位LED显示…….如此轮流,使每位显示该为的字符,这样不断的循环送出响应的段选码﹑位选码,就可以获得视觉稳定的显示状态。用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间,更重要的是能节省成本。硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。软件译码是用软件来完成硬件的功能,硬件简单,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。3.3掉电保护模块利用I2C总线原理接线,采用掉电保护单元AT24C02。数据存储部分的作用是在电源断开时,存储当前设定的单价信息。掉电储存电路原理图:图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。存储程序,将数据信息保存在芯片内;当系统重新上电时,自动调用读存储器程序,将存储器内的数据信息,读到缓存单元中,供主程序使用,保存在AT24C02中的数据是不能随意进行改动的,此外出租车营运过程中的一些营运数据,如:单次出租的营运额和营运里程、一段时间内的营运总额和总路程等,也存储在AT24C02中,以便出租车公司及司机查询,使出租车司机更方便的管理营运数据,出租车行业得到更有效的管理。3.4里程采集模块根据在霍尔电势发生器的两端加上电压VCC后,根据物理学中的霍耳效应原理,当霍耳片处在磁场中时,霍尔传感器A44E的输出端输出低电平。当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器A44E输出一次低电平完成一次数据采集。我们选择了P3.2口作为信号的输入端,内部采用外部中断0,车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数。通过计算将脉冲增加体现在金额和里程上。本设计中用IPULSE来代替霍尔传感器。3.5按键输入模块矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。如一个3*3的行、列结构可以构成一个有9个按键的键盘。在按键数量较多的场合,矩阵键盘与独立式键盘相比,要节省很多I/O口。矩阵式键盘的工作原理:按键设置在行、列线交点上,行、列分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。列线如果此时电平为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。这一点是识别矩阵式键盘是否被按下的关键。由于矩阵键盘中行、列线为多键共用,名按键均影响该键所在行和列的电平。因此各按键彼此相互发生影响,所以必须将行、列信号配合起来并做适当的处理,才能确定闭合键的位置。本设计采用了以8255作4*4键盘的接口。键盘分为行线和列线,本键盘共有4条行线4条列线。在行线和列线的交点处有一个键,由于行线和列线分别与键的不同端相连,平时键处于断开状态,所以行线和列线互不相通。接口时,行线一端接输入口,另一端悬空;而列线一端经电阻接+5V电源,另一端接输入口。由于列线通过电阻与+5V相连,所以列线的状态始终为高电平。3.6晶振系统本设计采用PCF8563作为芯片。它在系统中的作用是设定,例如:可以设定时、分、秒。计价器在出租车空车行驶时需要显示实时时钟,因为它的时钟是作为白天/晚上单价自动转换的一个基准,而且计价器的时钟显示能为司机和乘客提供方便,所以选择一个好的时钟芯片对计价器很重要。时钟可提供秒、分、时,通过设置8563的控制/状态寄存器选择,时钟方式经过初始校准后即可工作使用。PCF8563是PHILIPS公司推出的一款工业级内含I2C总线接口功能的具有极低功耗的多功能时钟/日历芯片I2C总线通讯方式不但使外围电路及其简洁而且也增加了芯片的可靠性同时每次读写数据后内嵌的字地址寄存器会自动产生增量当然作为时钟芯片。PCF8563是一款性价比极高的时钟芯片它已被广泛用于电表水表气表电话传真机便携式仪器以及电池供电的仪器仪表等产品领域。图3-3晶振电路3.7复位电路单片机在启动运行时都需要进行复位操作,以便使CPU和系统中的其它部件都处于某一确定的初始状态,并从这个状态开始工作。AT89C51单片机有一个引脚RST,它是施密特触发器的输入端,其输出端接复位电路的输入。复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即二个机器周期)以上,若使用频率为6MHz的晶振,则复位信号持续时间应超过4μs才能完成复位操作。复位之后,使ALE、PSEN、P0、P1、P2口的输出均为高电平(即为输入状态),复位后,内部寄存器的状态如表3、1所示。RST变为低电平后,便又退出复位状态。CPU从初始化工作,由状态表可知,复位后:程序寄存器为0000H开始执行程序,内部RAM不受复位影响。复位有电复位和按键手动复位两种。按键手动复有电平方式和脉冲方式两种。本次设计中,为方便人的操作,采用按键手动复位的按键电平复位。其复位电路如下表示:PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P30FFHSCON00HIPXX000000HSBUF00HIE0X000000HPCON不定TMOD00H0XXX0000B图3-4复位电路3.8时钟模块时钟电路产生的振荡脉冲经过触发器进行二分频之后,才能为单片机的时钟脉冲信号。一般电容C3和C4取30uF左右。晶体振荡频率范围是1.2MHz—12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行也就快,但反过来运行速度快对存储器的速度要求就高,对印刷电路板的工艺要求也高(线间寄生电容要小)。在本次设计中,我们选取晶振频率为6MHz,C1和C2的值均为30uF。图3-5时钟电路4软件设计简介4.1汇编语言简介汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。根据应用领域的不同,处理器的种类繁多,比如用于工业控制和嵌入式计算的Z80、MC68000和MCS-51、广泛应用于个人计算机的INTELx86系列,以及基于ARM体系结构的处理器,包括苹果公司在内的大企业都是ARM的客户。事实上,今天的ARM是最受欢迎的32位嵌入式处理器,而且,今天的ARM处理器比INTEL奔腾系列卖得还多,基本上是3:1的比例。不同的处理器有不同的指令集。正是因为这个原因,每一种处理器都会有自己专属的汇编语言语法规则和编译器。即使是同一种类型的处理器,也可能拥有不同的汇编语言编译器。一个明显的例子是INTELx86系列的处理器,围绕它就开发出好多种编译器来,如MASM、NASM、FASM、TASM和AT&T等。而且,这每一种编译器,都使用不同的语法。4.2程序设计计价部分原理程序如下: 起步价10元,3公里内10元,超出3公里部分,每公里1.6元,车暂停时,2分钟内不加价,超出2分钟部分,每分钟2.5元。feipin:process(clk_240,start)beginifclk_240'eventandclk_240='1'thenifstart='0'thenq_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0';elseifq_15=15thenq_15<=0;f_15<='1';--此IF语句得到频率为15Hz的信号elseq_15<=q_15+1;f_15<='0';endif;ifq_16=14thenq_16<=0;f_16<='1';--此IF语句得到频率为16Hz的信号elseq_16<=q_16+1;f_16<='0';endif;ifq_1=239thenq_1<=0;f_1<='1';--此IF语句得到频率为1Hz的信号elseq_1<=q_1+1;f_1<='0';endif;ifen1='1'thenf<=f_15;--此IF语句得到计费脉冲felsifen0='1'thenf<=f_16;elsef<='0';endif;endif;endif;endprocess;process(f_1)beginiff_1'eventandf_1='1'thenifstart='0'thenw<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";elsifstop='1'thenifw=59thenw<=0;--此IF语句完成等待计时ifm0="1001"thenm0<="0000";--此IF语句完成分计数ifm1<="101"thenm1<="000";elsem1<=m1+1;endif;elsem0<=m0+1;endif;ifm1&m0>"0000001"thenen1<='1';--此IF语句得到en1使能信号elseen1<='0';endif;elsew<=w+1;en1<='0';endif;elsiffin='1'thenifk0="1001"thenk0<="0000";--此IF语句完成公里脉冲计数ifk1="1001"thenk1<="0000";elsek1<=k1+1;endif;elsek0<=k0+1;endif;ifk1&k0>"00000010"thenen0<='1';--此IF语句得到en0使能信号elseen0<='0';endif;elseen1<='0';en0<='0';endif;cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;--费用数据输出km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;--公里数据、分钟数据输出endif;endprocess;process(f,start)beginifstart='0'thenc3<="0000";c2<="0001";c1<="0000";c0<="0000";elsiff'eventandf='1'thenifc0="1001"thenc0<="0000";--此IF语句完成对费用的计数ifc1="1001"thenc1<="0000";ifc2="1001"thenc2<="0000";ifc3<="1001"thenc3<="0000";elsec3<=c3+1;endif;elsec2<=c2+1;endif;elsec1<=c1+1;/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论