基于at89s52的出租车计价器1毕业论文_第1页
基于at89s52的出租车计价器1毕业论文_第2页
基于at89s52的出租车计价器1毕业论文_第3页
基于at89s52的出租车计价器1毕业论文_第4页
基于at89s52的出租车计价器1毕业论文_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

目 录摘 要IAbstractII引 言1第一章 绪论21.1 课题来源21.2 单片机应用系统开发介绍31.2.1 开发流程31.2.2 开发语言41.3 AT89S52芯片介绍41.3.1 AT89S52引脚功能51.3.2 AT89S52单片机内部结构框图6第二章 硬件设计82.1 概述82.2 单片机最小系统82.2.1 时钟电路82.2.2 复位操作92.3 DS1302时钟电路102.3.1 DS1302芯片介绍102.3.2 时钟电路设计112.3.3 存储器的设计122.4 里程测量模块132.4.1 霍尔传感器介绍132.4.2 里程测量原理132.5 键盘控制电路142.5.1 按键的特性142.5.2 键盘电路152.6 显示部分162.6.1 显示器介绍162.6.2 LED数码管原理16第三章 软件设计173.1 主程序173.2 信息设定程序183.3 计价显示程序18第四章 电路调试214.1 硬件电路调试214.2 软件调试224.3 实例测试22结 论23致 谢24参考文献25附 录26附录A 电路原理图26附录B 时间显示单元测试27附录C 计费显示单元测试28附录D 主程序清单29基于AT89S52单片机的出租车计价器设计摘要:出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。一个具有良好性能的计价器,无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,本文设计了一套以AT89S52单片机,A44E霍尔测距传感器为核心的出租车计价系统。系统通过采用DS1302芯片设计时钟电路,单片机控制LED七段数码管显示,使用C语言进行编程,实现了功能键分屏控制里程、总金额和时间的动态显示,按键校订计时时钟、起步价及起步里程等基本操作功能。此外,本文还详细阐述了软硬件设计过程中的关键技术,提供了设计方法、流程图以及程序代码等。关键词:出租车计价器;AT89S52;A44E霍尔传感器;DS1302The Design of Taximeter Based on AT89S52 MCUAbstract: Taximeter is the transaction standards between passengers and drivers, which is an important indicator of the taxi development industry, and is the most important tools for a taxi. A Taximeter with good performance, both for the majority of taxi drivers or passengers is very necessary. Therefore, this paper designed Taximeter system, based on the core of AT89S52 MCU, A44E Hall ranging sensor. By using DS1302 chip design system clock circuit, MCU control LED seven-segment digital display, and using the C programming language, achieve a split-screen function keys control the mileage, the total amount and time of the dynamic display, keypad revision timing clock, starting fare and starting mileage and other basic operating functions. Additionally, this article elaborates detailedly the key technology of designing hardware and software process to provide a design methodology, flow charts and program codes. Key words: Taximeter; AT89S52 MCU; A44E Hall sensors; DS1302II引 言目前,单片机的发展非常迅速,应用也极为广泛,特别是C51系列的单片机,它具有体积小、功能强、性能稳定、价格低廉等优点,在诸多领域得到了广泛的应用。在此基础上发展起来的计量仪器无论是在测量的准确度、灵敏度、可靠性、自动化程度、应用功能等方面或在解决测试技术问题的深度及广度方面都取得了巨大的发展,以一种崭新的面貌展现在人们面前。出租车计价器就是单片机技术的一个典型应用。作为现代化城市必备基础设施,出租车已成为人们工作、生活不可或缺的一种交通工具。如何才能实现准确计费,成为了生产和制造出租车计价器的重要技术标准。出租车计价器是出租车营运收费的专用智能化仪表,它通过对出租车行驶里程的计量,进而转化为乘车金额。随着计算机技术、微电子技术及传感器技术的迅猛发展,出租车计价器技术也在不断进步提高。本系统是以AT89S52单片机为核心的多功能出租车计价器的设计。所设计的计价器不仅具备基本的计时计价功能,还能实现时钟校订、单价设定、计价器复位、里程/金额显示等功能。其结构主要包括:霍尔传感器测距模块、单片机模块、LED动态显示模块、DS1302时钟电路模块及按键模块等1。该系统的特点是功能明确、操作简单、计算准确、成本低廉、性能可靠等。该系统不但能实现基本的计价功能,而且还能够根据中途等待来调节单价,同时在不计价时还可作为时钟为司机提供方便。第一章 绪论1.1 课题来源近年来,我国出租汽车行业迅猛发展,出租汽车已经成为我国城市公共交通的重要组成部分和现代化城市必备的基础设施,成为人们工作、生活中不可缺少的交通工具。出租汽车服务行业和出租汽车计价器紧密相关,因为出租汽车必须安装出租汽车计价器才能投入营运。出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并直接显示车费值的计量器具。计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一。出租汽车计价器是一种集计程、计时、时钟和车速等多种计量功能于一体的极为专用的智能化计量仪器,它安装在出租汽车上,通过连接在车辆变速箱输出端齿轮的传感器传送电脉冲信号来记录车辆营运里程,按特定的计价收费模式连续累加并直接指示出行程中任一时刻乘客应付费用的总数,其金额值是计程和计时时间的函数。可见计程和计时是计价器计价的依据。计程指重车(车辆处于租用状态)时计价的里程,计时指重车低速状态时计价的时间。计程可分为起程和续程两部分,起程是租用车辆的最低计价里程,续程是在起程以后的最小计价里程。计时也分为起始时间和后续时间,起始时间是与起程相对应的计价时间,后续时间是起程后的最小计价时间,是与续程相对应的计价时间。由此可以看出,计程和计时通过相互进行等效折算参与计费。作为出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个阶段的发展,从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器,发展越来越迅速。本次设计就是以AT89S52单片机为核心的智能出租车计价体统,该系统具有时钟校订、单价设定、计价器复位、里程/金额显示等多种功能。1.2 单片机应用系统开发介绍 1.2.1 开发流程单片机本身只是一个裸机系统,内部没有任何驻机软件,因此,要使它成为一个应用系统,就需要进行软、硬件的开发。硬件是指单片机CPU、扩展存储器、输入/输出接口电路及设备等组成的电路系统;软件包括监控程序和各种应用程序。硬件和软件只有密切配合、协调一致,才能构成一个功能完善、工作可靠的单片机应用系统。开发设计流程如图1.1所示。系统分析硬件设计电路仿真、制作硬件软件设计系统仿真调试、修改软件下载脱机运行图1.1 单片机应用系统开发流程具体开发过程如下:(1)对单片机应用系统进行系统分析,确定系统设计的思路;(2)根据设计思路利用Protel DXP软件工具画出硬件设计原理图,并利用电路仿真软件Proteus对电路进行仿真,仿真通过后,制作硬件电路;(3)根据输入/输出应用系统的要求,进行软件设计,编制源程序,进行编译并生成可执行目标文件.HEX和.BIN文件;(4)利用Keil及Proteus等软件进行仿真调试、修改直至达到预期效果;也可以将仿真器与设计好的硬件相连接,仿真运行直至达到预期效果;(5)将程序下载至单片机芯片;(6)将单片机芯片插入电路中的单片机插座,脱机运行。1.2.2 开发语言程序是单片机应用系统的灵魂。单片机的程序设计就是根据应用系统(即目标产品)的要求和单片机的特点,采用适当的方法,合理地运用指令编写单片机的应用程序2。目前,用于程序设计的语言共有三种:机器、汇编和高级语言。机器语言由于晦涩难懂,不便于记忆,基本不用,常用汇编语言和高级语言进行单片机程序开发。用汇编语言编写的程序虽然效率高,存储空间小,运行速度快,但通用性较差,难以移植。随着单片机广泛使用及单片机的日益复杂化,单片机的开发应用已逐渐引入了高级语言,以使单片机移植性提高,从而提高程序的开发效率。C语言就是其中的一种。C语言是一种通用的计算机语言,既可以用来编写系统程序,又可以用来编写应用程序,它同时具有汇编语言和高级语言的特点。与汇编语言相比,C语言编写程序有如下优点:(1)不要求了解处理器的指令集,也不必了解存储器的结构;(2)寄存器分配和寻址方式由编译器管理,编程时不必考虑存储器的寻址等;(3)可使用与人的思维更接近的关键字和操作函数;(4)可使用C语言中库文件的许多标准函数;(5)通过C语言的模块化编程技术,可以讲已编制好的程序加入到新的程序中;(6)C语言编译器几乎适应于所有的目标系统,已完成的软件项目可以很容易地转移到其他微处理器和环境中。正因为C语言具有使用方便、通用性强、编程效率高和仿真调试容易等突出特点,才被广泛使用于单片机开发领域。本设计就是采用C语言进行单片机程序设计开发的。1.3 AT89S52芯片介绍一个完整的计算机系统包括运算器、控制器、数据或程序存储器和输入/输出接口四大部分。若将计算机的四大基本单元集成在一个晶体芯片使之成为一个完整的计算机,则称之为单片机3。在灿若河汉的单片机世界里,Intel公司的MCS-51系列单片机因为其功能较完善、价格低廉、应用软件齐全、开发工具成熟易学及机型不断升级,从而得到广泛应用。AT89S52单片机就是其中的一款。1.3.1 AT89S52引脚功能图1.2 AT89S52引脚图AT89S52单片机是采用40引脚双列直插封装的芯片,有些引脚具有两种功能,引脚分布如图1.1所示。引脚功能如下:l VCC:电源l GND:接地l P0口:双向I/O口,既可以作地址/数据总线口,也可以用作普通I/O口l P1口:准双向通用I/O口l P2口:准双向口,地址总线口输出地址高8位口l P3口:多功能端口,既可以用作普通I/O口,也可以按每位定义的第二功能进行操作,这时各引脚定义功能见表1.1所示 l ALE/PROG:地址锁存信号输出端l RST:复位信号输入端l EA/VPP:访问外部程序存储器控制信号l PSEN:程序存储允许输出信号端l XTAL1:振荡器反相放大器和内部时钟发生电路的输入端l XTAL2:振荡器反相放大器和内部时钟发生电路的输出端表1.1 P3口的第二功能 端口引脚复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)1.3.2 AT89S52单片机内部结构框图AT89S52的内部集成有:l 8位字长CPUl 振荡器和时钟电路,全静态操作:033MHzl 8KB系统内可编程Flash存储器l 256KB内部RAMl 4个I/O端口共32线l 3个16位定时/计数器 l 全双工(UART)串行口通道l ISP端口l 定时监视器(看门狗)l 双数据指针(DPTR)l 20多个特殊功能寄存器l 电源下降标志其内部结构框图如图1.3所示。图1.3 AT89S52单片机的内部结构框图此外,AT89S52还设计和配置了振荡频率可为0Hz的、可通过软件设置的省电工作模式。空闲模式下,CPU暂停工作,而RAM定时计数器、串行口、外中断系统可继续工作;掉电模式下冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位4。第二章 硬件设计2.1 概述出租车计费系统由以下几个部分组成:单片机AT89S52、DS1302时钟计时单元、里程测量单元、键盘控制电路、LED显示驱动电路等。利用AT89S52单片机丰富的I/O端口及其控制的灵活性,实现基本的里程计价功能、单价调整和时钟调整及显示等功能。本设计不但能实现所要求的功能,而且能在很大的程度上实现功能的扩展,更可方便的对系统进行升级。本系统组成如图2.1所示。电源AT89S52单片机LED屏显示键盘控制电路里程测量时钟电路图2.1 系统原理框图当车子启动,计价开始,由霍尔传感器检测到的脉冲信号,经过处理送到单片机里程寄存器中进行计算,判断出行驶里程是否已超过起步价公里数。若已超过起步里程,则根据里程值、每公里的单价数和起步价数来计算出当前的累计价格,并将结果存于价格寄存器中,再将时间和当前累计价格送给LED显示电路并显示出来。当到达目的地的时候,由于霍尔传感器没有送来脉冲信号,就停止计价,这时计价开关断开,显示当前所应该支付的金额和对应的单价,并可通过键盘查询出租车所行驶里程。系统具有复位功能,通过键盘即可重启计价器,自动对显示清零,并重新进行初始化过程。2.2 单片机最小系统2.2.1 时钟电路单片机的操作,简单地说,就是逐条执行已经编好并且存储在存储器中的指令,不断重复“取指译码执行”的过程。所有这些操作都是以时钟控制信号为基础,按一定顺序有条不紊地进行的。因此,时钟频率直接影响单片机的运行速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路设计有两种方式,内部时钟和外部时钟。内部时钟,是由单片机内部振荡电路产生的,外围电路简单,但是不够精确,而且温漂也较大;外部时钟,是使用现成的外部振荡器产生的脉冲信号,精度高,稳定性好,但是电路复杂5。因为出租车计价器设计对时钟频率精度要求并不高,所以本设计采用内部方式。电路连接如图2.2所示。图2.2 内部振荡方式本次设计利用了51单片机内嵌的高增益反相放大器,跨接石英晶体振荡器和微调电容,即构成了内部时钟产生电路。图中X1、X2引脚分别为高增益反相放大器的输入、输出端。电路中的CY1和CY2是微调电容,它的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快慢,微调电容的电容值一般选择为30PF。CYS(Y1)是晶体振荡器,它的振荡频率范围通常是在1.212MHz之间。晶振频率越高,系统的时钟频率就越快,单片机的运行速度也就越快。但是单片机运行速度一快,对存储器的速度要求就会很高,对实际电路的工艺要求也高,而且还会对系统的其他电路造成一定干扰。所以应该在满足使用要求的前提下,尽可能降低晶振频率,本设计选择振荡频率为12MHz的石英晶体。2.2.2 复位操作在单片机开始正常工作之前,必须使它复位一下。复位是单片机的初始化操作,当我们在单片机复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平时,就可以使单片机复位。复位之后,PC初始化成0000H,使单片机从0000H单元开始执行程序,P0P3口输出高电平,SP指向07H,程序计数器PC被清零。除了进入系统的正常初始化之外,由于程序运行出错或者操作错误而使系统处于死锁状态,为了摆脱这种死锁状态,就需要按复位键使RST脚为高电平,使单片机重新启动。因此,复位电路对单片机来说非常重要6。单片机的复位是由外部的复位电路来实现的。复位电路的常用复位方式有两种,上电自动复位和按钮复位。按钮复位电路原理图如图2.3所示。图2.3 单片机按钮复位方式的电路图上电自动复位电路是通过外部复位电路的电容来实现的,当电源接通时,只要电压上升时间不超过1ms,就可以实现自动上电复位;按钮复位,就是通过按下复位按钮来实现复位。因为按钮复位比上电自动复位更灵活,可以避免死机时通过关机来复位,所以本电路采用按钮复位方式。2.3 DS1302时钟电路为了方便乘客与司机对时间的掌握,需要显示时钟信息,因此,时钟电路的设计尤为重要。如果采用单片机设计时钟,一方面需要使用计数器,占用硬件资源;另一方面需要设置中断、查询等,耗费单片机的资源,设计繁杂。采用DS1302则能很好地解决这个问题。2.3.1 DS1302芯片介绍DS1302芯片是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路。作为现在最流行的几个时钟芯片之一,DS1302因其接口简单、价格低廉、使用方便,而被广泛地采用。它是一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,这样不仅能够为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。除了可以对年、月、日、周日、时、分、秒进行计时之外,还具有闰年补偿功能。DS1302芯片的工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力7。DS1302采用8条引脚,其引脚排列如图2.4所示。图2.4 DS1302的引脚排列各引脚功能如下表所示:l VCC1:备用电l VCC2:主电l GND:接地l X1、X2:晶振输入l I/O:数据输入/输出l SCLK:串行时钟输入l RST:复位2.3.2 时钟电路设计 本次设计的时钟电路主要是为了方便向出租车司机提供当前时间的显示,并能实现调时的功能。计时电路原理图如图2.5所示。图2.5 计时电路原理图在所设计的时钟电路中,主电源VCC1接电路电源,后备电源VCC2接电池BT1。这样,在主电源关闭的情况下,也能保持时钟的连续运行。因为DS1302芯片是由VCC1或VCC2两者中的较大者供电的。当VCC2大于VCC10.2V的时候,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32.768kHz(Y2)晶振。RST是复位/片选线,通过把RST输入驱动置于高电平来启动所有的数据传送。RST输入有两种功能:首先,将RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST能提供终止单字节或多字节数据的传送手段8。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。RST接AT89S52的P1.2端口。I/O为串行数据输入输出端(双向),SCLK始终是输入端。在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302数据,读数据时从低位0到高位7。I/O接AT89S52的P1.1端口,SCLK接AT89S52的P1.0端口9。2.3.3 存储器的设计掉电存储单元的作用是在电源断开的时候,存储系统存储当前的总金额和总路程信息。AT24C02是ATMEL公司的产品,256字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以达到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使方用便。其电路原理如图2.6所示。图2.6 掉电存储电路原理图图2.6中上拉电阻的作用是减少AT24C02 的静态功耗,由于AT24C02 的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用并读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用10。2.4 里程测量模块2.4.1 霍尔传感器介绍传感器是出租汽车计价器中的重要部件,传感器的准确性直接影响到计价器的计价精度,是计价器日常修理中遇到的最多的问题。它的功能是将转动的机械信号变成电脉冲信号,传输给计价器接口,根据输入的脉冲数来计算出租车行驶的里程。本次设计就使用了霍尔元件式传感器。霍尔式传感器因其可以检测转速、转数,霍尔传感器尺寸小,价格便宜,应用电路简单,性能可靠,而广泛应用。它是根据霍尔效应制作的。霍尔元件是在半导体薄片两端通过控制电流,并在薄片的垂直方向上施加磁场,且垂直于电流和磁场方向上将产生电压即称为霍尔电压,这一现象就是霍尔效应。2.4.2 里程测量原理霍尔元件测出租车里程的工作原理如图2.7所示,在非磁性材料的圆盘边上粘一块磁钢,霍尔传感器放在靠近圆盘边缘处,根据霍尔效应原理,当霍尔片处在磁场中时,其输出端输出低电平。当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平并完成一次数据采集。车轮每转一圈,霍尔开关就检测并输出信号,引起单片机中断,对脉冲计数,通过计算将脉冲增加体现了在金额和里程上。由于A44E型属于开关型霍尔器件,工作电压范围较宽(4.518V),其输出的信号符合TTL电平标准,可以直接接到单片机的I/O端口上,而且其最高检测频率可达到1MHz。图2.7 霍尔元件工作原理如果在汽车底盘主轴上(或变速箱内一转轴齿轮上)装上传感器,测出转的圈数,然后乘以2及外半径,即可求得出租车的行驶里程。2.5 键盘控制电路在单片机应用系统中,键盘是人机交互的重要组成部分,用于向单片机应用系统输入数据或控制信息。本次设计中,计价器初始化时需要进行一系列的信息设定,比如时钟调整、起步里程、起步价格的设定等,所以需要设计一个键盘接口电路。键盘形式一般有独立式键盘和矩阵式键盘两种。独立式键盘结构简单,但占用的资源多,通常用在按键数量较少的场合,大多数单片机采用这种方式;矩阵式键盘的结构相对复杂,但占用的资源较少,通常用在按键数量较多的场合。2.5.1 按键的特性键的按下与释放是通过机械触点的闭合与断开来实现的。由于机械触点存在一定弹跳现象,即机械按键在闭合与断开的瞬间均有一个抖动过程。抖动时间的长短与按键的机械特性有关,一般在510ms。这种抖动对判断按键是否按下或释放有较大影响,因此必须消除键的抖动,才能可靠地判断键的状态。在单片机应用系统中,消除抖动有硬件和软件两种方法。硬件去抖动方法主要是利用RS触发器或滤波电路,软件去抖动通常是程序检测到键被按下时,延时10ms后再检测键是否仍然闭合,若是则确认是一次真正的闭合,否则就忽略此次按键。最后松开的按键认为真正被按下的键,即如果有一个以上的按键被按下,则再扫描一遍,自到只有一个按键按下为止。本设计采用软件消抖。2.5.2 键盘电路由于出租车计价器系统中需要调整的量较少,故选用独立式按键。键盘的电路原理图如图2.8所示。图2.8 计价器键盘电路原理图如图,每一个按键的电路都是独立的,占用一条数据线。当其中任意一按键按下的时候,它所对应的数据的电平就变成低电平,读入单片机就是逻辑0,表示键闭合;若无按键按下,则所有的数据线的电平都是高电平。键盘各按键功能如下:l S1:开始按钮l S2:查询按钮l S3:删除按钮l S4:调价按钮l S5:调时按钮l S6:循环加按钮l S7:循环减按钮在独立式按键的程序设计中,包括按键查询和按键功能程序转移。在图2.8所示的电路中,单片机判断是否有键按下,具体过程就是不断查询P0和P1口线的状态,并判断所读入的数据,当有数据位为“0”时,说明其所对应的键被按下,单片机要转去执行相应的程序。2.6 显示部分 2.6.1 显示器介绍在单片机应用系统中,进行人机交互的数据和状态信息输出通常采用显示器,常用的显示器有四种:发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光管显示器和CRT显示器。如果采用LCD液晶显示,在距离屏幕1m之外就无法看清数据,而且在白天其对比度也不能够满足要求。LED数码管具有结构简单、价格低廉、耗电量少、与单片机接口容易等优点,所以本次设计使用LED数码管进行显示。2.6.2 LED数码管原理LED数码管显示器由7段条形的发光二极管组成“8”字形显示字段,用一只圆形的发光二极管做小数点。在LED数码管显示器中,通常将各段发光二极管的阴极或阳极编在一起作为公共端,这样可以简化驱动电路11。因此,LED数码管显示器就有共阳、共阴两种接法。在实际LED显示系统中,经常要进行多位显示。在这种情况下,LED数码管有静态显示和动态显示两种方式。静态显示是指显示器显示某一字符时,相应段的发光二极管处于恒定导通或截止状态,直至需要显示下一个字符为止。静态显示虽然设计的程序简单、亮度高,但是占用的硬件资源多、功耗大。因此,本设计采用动态显示技术。动态显示技术就是采用动态扫描方式,逐位轮流点亮各位LED数码管。对于每位数码管来说,每隔一段时间就将被AT89S52点亮一次,并持续一定的时间。虽然在同一时刻只有1位LED显示器在显示,但利用人眼的“视觉暂留”原理和发光二极管熄灭时的余辉效应,使人感觉好像若干位LED显示器在同时显示不同的数字一样。动态显示方式可以有效地降低成本和功耗,在进行多位LED显示时,深受欢迎。第三章 软件设计本次设计,以单片机为核心,利用AT89S52采集并判断路程检测传感器信号,当出租车启动时,单片机检测到霍尔传感器的脉冲信号开始进行里程计算。当没有乘客时,单片机调用实时时间芯片DS1302程序和AT24C02串口显示驱动程序,用2只4位七段数码管进行时钟显示;当乘客上车开始计价时,通过DS1302获取时间信息,开始计价并显示时间、里程和金额等信息;当乘客下车时,等待出租车再次启动后单次金额与里程等信息清零复位,就此完成一次计价。系统的软件设计由主程序、信息设定程序、里程计价显示程序三大模块构成12。3.1 主程序 主程序模块的流程图如图3.1所示:NY开始初始化计价信息设定计价金额/里程显示时钟显示有人?图3.1 主程序流程图在主程序模块中,需要完成对各芯片的初始化、各中断的初始化(外部中断0、外部中断1、T0的初始化),另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。初始化完成之后,进入信息设定模块。在此模块中,完成计价器系统正常工作所需信息的设定及调整,包括时钟的校订、起步价/起步里程的设定、单价/等待价格的设定等内容。这样,计价器就可以正常工作了13。3.2 信息设定程序信息设定模块的程序流程图如图3.2所示:开始时钟校订起步价、起步里程设定等待单价设定返回图3.2 信息设定模块的程序流程图本模块是通过键盘来实现对计价器工作前各种初始信息的设定的,包括时钟校订、起步价/起步里程的设定、等待单价设定等内容。键盘是由七个按键组成: S1键用于开始计价;S2键用于查询里程价格;S3键用于删除所调整的内容;S4键用于调整价格;S5键用于调整时间位;S6键对具体调整位进行加1调整;S7键对具体调整位进行减1调整。比如,现在要校订时钟,首先通过S5键切换到时钟显示界面,再按一下S5键,此时小时位闪烁,使用S6键和S7键就可以对小时进行校订了;再按一下S5保存对小时的校订并选择分钟校订,此时分钟位闪烁,使用S6键和S7键对其校订;分钟校订好之后,同样的方式对秒钟设定,这样就完成了时钟校订。当通过按键设定数据完毕后(如:等待价格、起步价格、起步里程等),系统就自动调用存储程序,将数据信息保存在单片机芯片内;当系统重新上电时,单片机就会自动调用读存储器程序,并将存储器内的数据信息,读到缓存单元中,供主程序使用,计价器正常工作14。3.3 计价显示程序计价显示部分是出租车计价器最为重要的功能,如有乘客上车,选择开始调整计算程序,计价器就开始启动,此时车轮转动,霍尔传感器源源不断地产生标准的脉冲信号,并送入单片机的定时/计数器T0中,单片机进行里程累加,并根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。没有超过,显示起步价格及起步里程;若已超过,则根据里程值、每公里的单价、起步价来计算出当前的累计价格,并将结果存储于价格寄存器中。它的设计流程图如图3.3所示。调整计算程序里程3总金价=起步价总金额=起步价总金额=(里程-3)*单价总金额+=等待时间*等待单价返回总金额+=等待时间*等待单价NY图3.3 计价显示程序流程图当中途塞车(等待或低速行驶)时,在一定时间内没有检测到传感器的脉冲信号,就启动T1计时器进行计时。当超过规定的等待时间后,计价器就根据等待价格进行当前金额的累加与显示,并在计价器上显示等待时间及等待金额。本出租车计价器显示总金额的计算公式是:总金额= 起步价+(总里程-起步价里程)*单价+等待时间*等待单价当到达目的地的时候,就停止计价,显示当前所应该付的金额,并可以通过键盘按键S2查看出租车所行驶的里程。等乘客下车后,按下复位按钮,启动出租车,计价器检测到传感器的脉冲信号,系统就自动对显示清零,并重新进行初始化过程,完成1次计价。其中,霍尔传感器输出的脉冲信号输入到单片机的外部中断0接口,车轮每转一圈就产生一个脉冲信号,单片机就进行一次中断,在中断程序中完成两项任务:(1)启动定时器1,表示出租车启动;(2)单次里程与总里程的累加计算并将结果存入寄存器中(设车轮转1圈为1m,则每中断1次,里程就增加1m)。当外部中断0进行中断时就启动改T1开始计时,每当计时到达1min,等待时间累加器值就自加,而超过规定的等待时间后,就对当前金额加上额外的中途等待的价钱,以后每0.1 min都自动加上中途等待的单价。当中途等待结束的时候,也就自动切换到正常的计价15。第四章 电路调试在完成了硬件设计和软件设计的制作工作后,所做的设计的系统是否达到了设计要求的技术指标,必须进行试验调试工作,以此来排除硬件和软件在工作时所发生的故障。调试是把已调好的各个模块,按照总体设计要求联成一个完整的整体,软件部分还要与所设计的硬件系统进行联机调试。调试工作包括硬件检查,软件调试,软硬件联通调试三部分。硬件检查主要是检查最后的具体电路是否连接正确;软件调试主要是检查语法错误,即能否正确编译、单步运行时逻辑上是否正确;软硬联调就是硬件电路与软件程序结合起来,看能否完整实现系统的功能,这一部分是最关键的环节,也是难度最大的部分。4.1 硬件电路调试硬件调试,主要是检查硬件电路在焊接上是否有错误,各原件和器件管脚的焊接位置是否正确,各元器件的工作状态是否正常,输入和输出之间的关系是否符合指标要求。该系统的硬件电路包括:DS1302时钟电路、显示电路、键盘电路等。在通电检测之前,为了防止电源正、负级接反或电源部分有问题而烧毁芯片,先对电路板进行目测,也就是用眼睛观察电路板是否有接错的地方,然后再通电用万用表检测芯片底座的各个相关脚的电压,判断有没有接错或没有接上的部分,最后根据电路图,对各个模块依次进行检查,查找其中的缺点,并进行改进。DS1302时钟电路:这个电路是由DS1302与32768(Y2)晶振构成的,要实现该电路的功能就要进行调试。首先用万用表检查DS1302芯片各个管脚电压,管脚连接正确,电源正常供电;然后用频率计测检测32768晶振的输出频率是否为32.581KHz,输出频率若是正确的,电路可以正常工作。显示电路:这部分由2个4位七段LED数码管。在测试过程中,想用静态方式进行显示,后来发现没有足够的输出端口,就改为原本设计的动态显示,既节省了单片机资源又减少了电路的复杂程度。经检测,显示电路可以正常工作。键盘电路:该部分的设计主要是由7个按键组成,每个按键有2个管脚。在检查时发现,当其中的一个按键在按下后单片机停止了工作,电路无法正常运行。用万用表一查才发现,原来是按键所接的管脚和电源管脚短路,按键一按下电源端就接地了,之后把这两个管脚重新焊接了一下,问题就解决了。4.2 软件调试软件调试,主要是检查汇编程序的编译是否正确,和流程图对照条理是否一致。软硬件联调采用的方法是分块调试,分布运行,主要是对各部分的功能加以实现。上机调试程序是检验程序正确性的一个重要环节。在调试时,应该在单片机开发系统上先对程序进行分块调试,对入口参数和变量预赋初值,观察运行结果。如果执行的结果和预想的不大一致,可采用设置断点或单步运行的方法,找出错误并修改。该设计是软硬件结合。软件的设计在与硬件联调之前主要是对所编写的程序进行语法错误的查找,然后进行编译,生成可以写入单片机的.HEX文件。在Keil IDE(Vision4)集成开发环境中运行后,通过观察数据窗口,可以看出一部分结果,但只有与硬件联调,在硬件上所显示的结果才能最终看出软件的调试成功与否。在软件调试过程中,同样也是按照分步调试的方法进行的。对软件的各个子模块进行了调试,在调试过程中也遇到了一些困难。在进行程序编译后,提示有错误,经过仔细检查,存在输入错误。原来是自己打字的时候太粗心,把程序打错了和漏打了部分语句,才导致程序出错编译无法通过。之后,本人对程序进行了查漏补缺工作,问题就解决了。4.3 实例测试在基本上排除了硬件故障并且软件编译没问题以后,就可以进入软硬件综合调试阶段,这个阶段的任务主要是排除软件错误并解决硬件遗留的问题。测试的主要内容是按实际操作的数据向系统的各个功能模块输入数据,检测输出结果是否符合预期要求。至此,本次设计要求的计时时钟、里程计价、时钟校订、工作时间调整、金额/里程显示、单价与起步价调整等功能基本实现,出租车计价器的设计工作完成。结 论本文设计了一款以AT89S52单片机为核心,以DS1302时钟芯片、AT24C02掉电存储芯片等为外设的新型出租车计价器,该计价器满足集计程、计费、显示等多种计量功能为一体的出租车计价器的实用要求。不仅可以实现计时时钟显示、里程计价等基本功能,还能设定起步价及起步里程并能对时钟进行校订。与已有的出租车计价器相比,该系统具有功能齐全、性能稳定、价格低廉、使用灵活、体积小等诸多特点,性价比较高,能够很好地满足市场对出租车计价器的要求,应用前景广阔。至此,系统符合设计要求,设计任务基本完成,但是由于水平和现实条件的不足,该系统还有一些需要改进和提高的地方,为更方便的乘客及时地了解出租车的营运状态,提高出租车的营运效率等等,可以添加发票打印机,或者添加空车灯电路,请各位老师予以批评指正!致 谢此次毕业设计已接近尾声,在杨欣老师的亲切指导和同学的帮助下,此次设计才得以完成,在此向所有给予我此次毕业设计指导和帮助的老师和同学表示最诚挚的感谢。首先,向本设计的指导老师杨欣老师表示最诚挚的谢意。在自己紧张的工作和学习中,仍然尽量抽出时间对我们进行指导,时刻关心我们的进展状况,严格督促我们抓紧学习。杨老师给予的帮助贯串于设计的完全过程,从借阅参考资料到现场的实际操作,他都给予了指导,不仅使我学会运用书本中的知识,更学会了学习操作方法。也懂得了如何把握设计重点,如何合理安排时间和论文的编写,同时在毕业设计过程中,他和我们在一起共同解决了设备出现的各种问题。其次,要向给予此次毕业设计帮助的老师们,以及同学们以诚挚的谢意,在整个设计过程中,他们也给我很多帮助和无私的关怀,更重要的是为我们提供了不少技术方面的资料,在此感谢他们,没有这些资料就不是一个完整的论文。感谢母校安阳工学院的辛勤培育之恩!感谢电子信息与电气工程学院给我提供了一次开发完整系统的机会,使我在其中学到了许多新的知识和操作技能。最后,我非常庆幸在这两年的学习、生活中认识了很多可敬的老师和可亲的同学,并感激师友的教诲和帮助!参考文献1 求实科技.单片机典型模块设计实例导航M.北京:人民邮电出版社,2004.2 陈小忠.单片机接口技术实用子程序M.北京:人民邮电出版社,2005.3 杨恢先,黄辉先.单片机原理及应用M.长沙:国防科技大学出版社,2003.4 李广弟.单片机基础M.北京:北京航空航天大学出版社,2006.5 赵晶主.电路设计与制版Protel99高级应用M.北京:人民邮电出版社,2000.6 徐淑华,程退安,姚万生主编.单片机微型机原理及应用M.哈尔滨:哈尔滨工业大学,2002.7 杨建潮主编.出租汽车计价器使用、维修与检定问答M.北京:中国计量出版社,2002.8 邹逢兴主编.计算机硬件技术及应用基础M.北京:国防科技大学,2001.9 马家辰,孙玉德,张颖编.MCS-51单片机原理及接口技术M.哈尔滨:哈尔滨工业大学,2002.10 谢淑如,郑光钦,杨渝生.PCB电路板设计M.北京:清华大学出版社,2001.11 阳进.基于单片机的LED显示屏的汉字显示J.中国科技信息,2005(12).12 黄保林.出租汽车计价器原理、使用、维修与检定M.北京:中国计量出版社,2006.13 孙涵芳等.单片机原理及应用M.北京:北京航空航天大学出版社,2007.14 谭浩强.C程序设计M.北京:清华大学出版社,2005.15 杨忠煌等.单芯片8051实务与应用M.北京:中国水利水电出版社,2004.附 录附录A 电路原理图 附录B 时间显示单元测试附录C 计费显示单元测试附录D 主程序清单/头文件#include #include#includeDS1302.H#includeAT24C02.H/常用变量类型宏定义#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/共阳数码管段选数组Uchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff,0 xbf,0X89,0XC7; /数码管位选数组uchar code table1=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;uchar data discop8=0; /显示缓存数组uchar Tim_red_tab3=0; /储存读取时间时分秒uchar num1=0;uchar num2=0;uchar Set_flag=0; /设置标志位/按键端口定义sbit key1=P15;sbit key2=P16;sbit key3=P17;sbit key4=P34;sbit key5=P35;sbit key6=P36;sbit key7=P37;sbit exint0=P32;bit START_FLOG=0; /开始标示位 “=1” 开始计价bit Look_flag=0; /查看总金额标示位uchar KEY_SET_Price=0; /设置价格标示位uchar Wait_Price=0; /等待价格(单位:角)uchar Km_Price=0; /每公里价格(单位:角)uchar Start_price=0; /起步价格 (单位:角)uint Sum_Money=0; /每次总金额uint Sum_Money_Day=0; /一天总金额uchar Total_distance=0; /总路程(Km)uchar Wait_time=0; /等待时间(Min)uint Circle_num=0;uchar time_num=0;uchar time_num1=0;uchar Wait_Cycl=0;/*短暂延时子程序*/void delayms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*按键扫描子程序*/void keyscan()if(!key1&!Look_flag) /开始停止按键delayms(5); /延时消抖if(!key1) /再判断一次if(KEY_SET_Price=0&Set_flag=0)START_FLOG=START_FLOG;if(START_FLOG) /如果开始标志位置位TR0=1;EX0=1;else/否则为停止TR0=0;EX0=0;time_num=0;time_num1=0;Wait_Cycl=0;Total_distance=0;Wait_time=0;Sum_Money_Day+=Sum_Money;/计算出总收入存入24C02Write_AT24C02_Byte(3,Sum_Money_Day/256);Write_AT24C02_Byte(4,Sum_Money_Day%256);Sum_Money=0;while(!key1);else if(!key2)/查看按键delayms(5);if(!key2)if(KEY_SET_Price=0&START_FLOG=0&!START_FLOG)Look_flag=Look_flag;while(!key2); else if(!key3) /清楚总金额按键delayms(5);if(!key3)if(Look_flag)Write_AT24C02_Byte(3,0);Write_AT24C02_Byte(4,0);Sum_Money_Day=0;while(!key3);else if(!key5&!Look_flag) /设置时间按键delayms(5);if(!key5&KEY_SET_Price=0&START_FLOG=0)Set_flag+;if(Set_flag3) Set_flag=0; WRITE_DS1302(DS1302_WRITE_PROTECT,DS1302_WRITE_PROTECT_NO);/禁止写保护 WRITE_DS1302(WRITE_DS1302_SECOND,Tim_red_tab2); /秒 WRITE_DS1302(WRITE_DS1302_MINUTE,Tim_red_tab1); /分 WRITE_DS1302(WRITE_DS1302_HOUR,Tim_red_tab0); /小时 WRITE_DS1302(DS1302_WRITE_PROTECT,DS1302_WRITE_PROTECT_OFF); /允许写保?while(!key5);else if(!key4&!Look_flag) /设置单间等按键delayms(5);if(

温馨提示

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

评论

0/150

提交评论