毕业设计基于AT89S51单片机出租车计价器设计.doc

上传人:仙人指路1688 文档编号:4149577 上传时间:2023-04-07 格式:DOC 页数:61 大小:6.09MB
返回 下载 相关 举报
毕业设计基于AT89S51单片机出租车计价器设计.doc_第1页
第1页 / 共61页
毕业设计基于AT89S51单片机出租车计价器设计.doc_第2页
第2页 / 共61页
毕业设计基于AT89S51单片机出租车计价器设计.doc_第3页
第3页 / 共61页
毕业设计基于AT89S51单片机出租车计价器设计.doc_第4页
第4页 / 共61页
毕业设计基于AT89S51单片机出租车计价器设计.doc_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《毕业设计基于AT89S51单片机出租车计价器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于AT89S51单片机出租车计价器设计.doc(61页珍藏版)》请在三一办公上搜索。

1、目 录摘要3ABSTRACT4前言51. 系统总体方案选定71.1 出租车计价器系统构成及工作原理71.2 计价器各组成部分的功能71.2.1 里程检测单元81.2.2 键盘控制及LED显示部分81.2.3 单片机部分82. 系统硬件设计92.1 里程检测单元电路设计92.2 按键控制及LED显示电路设计112.2.1按键控制部分112.2.2六位LED动态显示电路122.2.3 LED的结构及工作原理142.2.4三位一体LED的结构及工作原理152.3 单片机部分的硬件设计172.3.1单片机的特点172.3.2 AT89S51的最小系统172.3.3 AT89S51I/O端口183. 系

2、统软件设计203.1主程序模块203.2 89S51芯片内部RAM分配203.3 按键程序设计223.4中途等待中断服务程序233.5里程计数服务程序243.6 BCD译码子程序253.7显示服务子程序26结论27总结与体会29致谢30参考文献31附录1源程序32附录2元件清单41附录3电路图42附录4英文翻译43摘 要随着电子技术的发展,出租车计价器技术也在不断进步和提高,国内出租车计价器已经经历了四个阶段的发展,从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器,再从集成电路式到目前的单片机系统设计的出租车计价器。 本设计是以单片机AT89S51为

3、核心,以74LS04芯片、霍尔传感器A44E和LED数码管为外设的出租车计价器的微机系统设计,该系统满足集计程、计费等主要功能为一体的出租车计价器的实用要求。其里程计算是将A44E霍尔传感器安装在车轮上并将检测到的信号传输给单片机,通过测量转速来计算汽车的行驶路程。设计中充分考虑了出租车行驶过程中的各种情况,利用按键设计来切换计费模式。给出了硬件电路图及主程序流程图,阐述了软硬件设计过程中关键技术的处理。 关键词:计价器;单片机 ;霍尔传感器 ;ABSTRACTAlong with the electronic technology development, mileage fare mete

4、r technology is also progressing and the enhancement, the domestic rental car mileage fare meter has already experienced four stage development, from the tradition completely the mechanical type which is composed by the mechanical primary device, namely replaces the part mechanical primary device to

5、 half electronic formula with the electronic circuit the rental car mileage fare meter, again from integrated circuit type to present monolithic integrated circuit system design rental car mileage fare meter. This design is take monolithic integrated circuit AT89S51 as a core, take 74LS04, A44E, LED

6、 numerical code tube and so on the chips as the peripheral rental car mileage fare meter microcomputer system design, this system satisfies the collection idea regulation, the cost, and so on many kinds of measurement function is a body rental car mileage fare meter practical request. Its mileage ca

7、lculation is sensor installs A44E the Hall on the wheel and, will examine the signal and give the monolithic integrated circuit, will calculate the automobile based on the wheel trundle number of times the travel distance. In the design had considered fully in rental car travel process each kind of

8、situation, cuts the cost pattern using the keyboard design to solve. Has given the hardware circuit diagram and the master routine flow chart, elaborated in the software and hardware design process key technologies processing.Keywords: Mileage fare meter ;MCU;Hall sensor;前言随着我国经济的迅速发展,人民生活水平的显著提高,城市

9、交通的日趋完善,出租车计价器的应用也越来越广泛。虽然私家车的拥有量在大幅度地提高,但是出租车在我国的交通运输中还是承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。用户不仅要求计价器性能稳定、计价准确而且对它的要求也越来越高。单一功能的计价器已经不能满足人们的需要,因此,多功能计价器也就应运而生,比如语音功能,查询功能,甚至好多城市交通IC卡也能在出租车上使用,这就大大方便了人们的出行。 随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买卖纠

10、纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。用更加精良的计价器来为乘客提供更加方便快捷的服务。凡坐过出租车的人都知道,只要汽车一开动,开始时随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示不变,而当行驶到某一值时(如3Km)计费数字显示开始从起步价(如8元)增加。当出租车到达某地需要在那里等候时,司机只要按一下“暂停”键,每等候一定时间,计费显示就增加一个该收的等候费用。汽车继续行驶时,停止计算等候费,继续增加里程计费。到达目的地,便可按显示的数字收费。我国在70年代开始出现出租车,但那时的计费系统大都是国外进口,不但不准确,价格还十分昂贵。随着改革开放日

11、益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。国内出租车计价器已经经历了四个阶段的发展,从传统的全部由机械元器件组成

12、的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器,再从集成电路式到目前的单片机系统设计的出租车计价器。早期的机械式计价器按车所跑的里程数来换算车费。但是机械齿轮体积较大,计算不是很准确,而且容易磨损。后来采用模拟电路和数字电路设计的计价器,其整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本次设计采用AT89S51单片机作为主控芯片,以74

13、LS04芯片、霍尔传感器A44E和LED数码管为外设,满足计程、计时、计费等多种计量功能。由霍尔传感器A44E检测车轮滚动产生脉冲信号,将信号传送给单片机来进行里程测量。并且利用软件编程可设计出不同的计费模式,不同的情况采取不同的收费方式,使司机在工作中能够应付各种突发状况,设计理念更加人性化,符合当今社会的需要。其各种功能由按键控制,操作简单,且计价器造价低廉,安装方便。1. 系统总体方案选定1.1 出租车计价器系统构成及工作原理出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。从起步价开始,当汽车程行驶未满(比如3)公里时,均按起步价计算。过(比如3)

14、公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。完整的出租车计价器还应包括存储、查看、统计、语音播报、打印票据等功能项目。该计价器设计采用单片机控制。主要是利用单片机丰富的I/O端口以及其控制的灵活性,实现基本的里程计价功能和价格调整。其原理框图如图1所示。键盘控制 89S51单片机转速检测单元显示驱动电路总金额显示里程显示图1 计价器原理框图1.2 计价器各组成部分的功能 本次设计的计价器由里程检测单元、键盘控制、单片机核心部分、LED显示部分组成。1.2.1 里程检测单元里程检测是通过安装在车轮上的霍尔传感器A44E与

15、磁片配合,产生高低电平变化,将检测到的信号送入单片机,经处理计算,送给显示单元。1.2.2 键盘控制及LED显示部分按键控制采用一般的独立式按键,完成键盘输入功能。主要由四个按键组成:开始计费键(白天键,晚上键),复位(清零)键、计时键(模拟暂时停车信号)。还有对应的四个指示灯。当按键按下时有相应的指示灯会点亮,这些都是用软件实现的。显示部分采用六位LED数码管,其中计程屏前三位LED一开始显示单价,然后显示该乘客应所付的总金额,后三位同步显示公里数。1.2.3 单片机部分单片机以其强大的功能,低廉的价格,简单的操作渗透到我们生活的方方面面,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置

16、,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录相机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了,特别是中小型电子产品的制作,它的作用更是显得尤为重要。本设计也是采用单片机作为其核心部件。2. 系统硬件设计2.1 里程检测单元电路设计在出租车计价器中,我们需要通过里程来计算价格。价格的计算部分可通过软件的方法实现,问题主要就是如何准确检测到出租车所走的里程,检测到里程最直接的方法是检测车轮的转速。检测车轮转速的方法也

17、是有很多种的,比如光电方法、编码盘检测等,考虑到出租车上的实际应用条件和我们实验室的条件,本次设计我选择用霍尔传感器做检测,因为它具有价格便宜,不受环境限制,测量精确,无机械损耗等优点。我所用的是霍尔A44E。它在车轮上按如下图2安装:图2 霍尔元件安装原理图霍尔元件是本设计中转速测量的重要元件,所以有必要对它进行更深层次的了解。A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.518V),其输出的信号符合TTL电平标准,可以直接接到单片机的I/O端口上,所以使用起来很方便。下面图3是集成开关型霍尔传感器原理图:图3 集成开关型霍尔传感器原理图A44E集成霍尔开关由稳压器A、霍尔电势发生

18、器(即硅霍尔片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。在输入端输入电压V CC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差H V输出,该H V信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC 门输出。当施加的磁场达到“工作点”时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,通常称这种状态为“开”。当施加的磁场达到“释放点”时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为“关”。这样两次电压变换,使霍尔

19、开关完成了一次开关动作。出租车中需要一个能准确获得车轮转速即路程计量信号的装置,以得到标准的脉冲信号送入单片机T1即P3.5引脚,由单片机完成计数及车费的换算及显示。我们在汽车联轴器按圆周间隔嵌入磁钢,用霍尔传感器集成芯片A44E检测并输出脉冲。霍尔传感器集成芯片A44E有信号转换、电压放大、整形输出等功能。为增加其抗干扰,再通过光偶送入P3.5引脚,原理图如图4所示。 图4 转速检测电路霍尔元件一开始3和2脚之间是高电平,经过74LS04之后变为低电平,于是光耦就导通了,光耦中的三极管就导通了,因此在P3.5口我们检测到的是低电平。当车轮上的小磁钢经过霍尔元件时,它的3和2脚之间的电平变成低

20、电平,于是光耦就截止了,因此我们在P3.5口检测到的是高电平。上图中的接单片机的电阻是上拉电阻,起的作用就是保证光耦没有导通的时候单片机接收到的始终是高电平。2.2 按键控制及LED显示电路设计2.2.1按键控制部分按键控制采用一般的独立式按钮开关,平时按键的两个触点处于断开状态,按键按下时,两个触点闭合,即完成按键输入功能。本设计中主要有四个按键:白天键,晚上键,清零键,计时键(模拟暂时停车)等。电路如下图5所示,图5中接单片机的电阻是上拉电阻,所起作用就是保证按键没有按下时单片机接收到的始终是高电平。图5 单片机接按键示意图2.2.2六位LED动态显示电路 LED显示是本设计的重要单元,因

21、为单价和里程都要在上面显示出来,下面重点介绍一下LED数码管。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。根据数码管驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示

22、方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点

23、亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 由于设计中要用到4个按键和4个发光二极管做指示灯,还要6位LED显示,若采用静态显示则占用I/O太多,所以我们选择用动态显示方式。本次设计采用六位LED数码管,三位LED一开始显示单价然后显示乘客应所付的总金额。其中单价占三位LED显示,单价计费为8元每三公里,此数在程序里设定,初始化时即送入。在设计中,通过单片机的由6个I/O端口,然后用三极管驱动6个共阳极的LED数码管,达到动态显示的目的。二极管选用的是常用的9012,数码管可以选用三位一

24、体或者六位一体的数码管,这样可以简化很多焊接工作,显示电路如下图所示:图6 LED动态显示电路2.2.3 LED的结构及工作原理数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相

25、应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。由于发光二极管基本上属于电流敏感器件,其正向压降的分散性很大,并且还与温度有关,为了保证数码管具有良好的亮度均匀度,就需要使其具有恒定的工作电流,且不能受温度及其它因素的影响。另外,当温度变化时驱动芯片还要能够自动调节输出电流的大小以实现色差平衡温度补偿。数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分

26、别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图7中的8个LED分别与上面那个图中的ADP各段相对应,通过控制各个LED的亮灭来显示数字,而共阴极的管脚则刚好相反。图7 共阳极数码管各段对应图2.2.4三位一体LED的结构及工作原理在本设计中我们采用了三位一体的数码管,它的最大好处在于减小了焊电路板的难度,保证了显示的可靠性,并且显示效果基本上和单个数码管没有两样,最主要的是价格比一般的数码管还稍微便宜。三位数码管就是内部的3个数码管共用adp这8根数据线,为人们

27、的使用提供了方便,因为里面有3个数码管,所以它有3个公共端,加上adp,共有12个引脚。下面是本设计中用到的数码管的具体技术指标。 1型号:JM-S05631A-B2规格:3.外型尺寸及引脚排布(长宽高 )37.619.68.00( mm)05631A(共阴极)05631B(共阳极)管脚顺序:2.3 单片机部分的硬件设计我的这次设计采用的是AT89S51单片机。单片机也被称为微控制器(Microcontroller),是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外

28、存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。2.3.1单片机的特点单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。2.3.2 AT89S51的最小系统单片机想要正常工作,那就让它满足一定的基本条

29、件,我们称之为最小应用系统。它主要包括时钟电路也就是XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端,然后要特别注意几个引脚,比如复位端、外部程序存储器地址允许使用端。如下图8所示:图8 单片机最小系统上面的几个端口是最小系统的必需引脚,现在说明一下各引脚功能。1.RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。2. ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。2.3.3 AT

30、89S51I/O端口单片机有丰富的端口,89S51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。在我的设计中几乎用到了所有的I/O端口,我用P0口接数码管,用P1口接按键。用P3做按键指示灯,P2口用来接数码管位选端。介绍一下每个口的功能:P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。P0口也用以输出外部存储器的低8位地图1址。由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。P1口是专门供用户使用的I/O口,是准双向口。P2口是从系统扩展时作高8位地址线用。不扩展外部存储器时,P2口也可以作为用户I/O口线使

31、用,P2口也是准双向口。P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。作为第一功能使用时操作同P1口。我在设计中主要用到了AT89S51的资源为:14个8位并行I/O端口2. 定时器T0中断源3. VCC - 芯片电源,接+5V4.VSS - 接地端。3. 系统软件设计软件设计包括主程序模块,按键程序模块,计算单元和BCD译码程序模块,显示模块,T0计时中断程序模块 ,延迟程序模块等。下面一步一步分别介绍一下各个模块的详细设计过程。3.1主程序模块在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计、开中断、循环等待以及启动/清

32、除标志寄存器、里程寄存器和价格寄存器等工作。主程序将根据各标志寄存器的内容,分别完成启动、显示、计程和计价等不同的操作。主程序流程图如图9所示。3.2 89S51芯片内部RAM分配30H ;里程数个位31H ;里程数十位32H ;里程数百位33H ;单价或总价小数点后一位34H ;单价或总价个位35H ;单价或总价十位 36H ;存放车轮转的圈数,三公里以后清零37H ;存放车轮转的圈数38H ;存放白天和晚上单价变量 39H ;存放刹车时定时计数值 20H ;标志位,判断是否满3公里 21H ;标志位,判断满三公里后,白天和晚上对应的标志位、起步价赋初值等待乘客上车(白天或晚上)白天模式按键

33、判断中途等待按键 看有没有停车 开 始晚上模式按键等待霍尔元件的信号(即车子是否启动)计数寄存器开始计车轮的圈数计算里程价格程序 BCD译码停车等待计时程序否是调用计时时价格计算程序,然后和原先的里程价格相加,最后BCD译码是返 回显示总价格和里程否是是调用显示 用来显示起步价判断复位按键 是否图9主程序流程图3.3 按键程序设计按键S0:模式选择按键。按S0为白天价格,LED0亮。然后第一个三位数码管就开始显示起步价比如(8块钱),然后就可以等待S4键有没有按下,因为S4是清零键,它不按下来就得一直继续白天的价格,意思是要等到这个乘客下车为止。 按键S1:模式选择按键。按S1为晚上价格,LE

34、D1亮。然后第一个三位数码管就开始显示起步价比如(9块钱),然后就可以等待S4键有没有按下,因为S4是清零键,它不按下来就得一直继续晚上的价格,只到这个乘客下车为止。以上的程序都简单,只是一个检测按键的程序,先判断有没有按键按下,然后再调一段显示程序(起延时的作用),在判断按键是否真的按下。确定有按键按下时,还要自循环,目的是等待按键弹起。详细如下:WAIT: ACALL DISPLAY JNB P1.1 ,NIGHT1 JB P1.0 ,WAIT ;没有按键按下时等待MAIN: LCALL DISPLAY ;调显示,算是延时 JNB P1.0 ,MAIN ;等待按键弹起 CLR P3.0 ;

35、按键指示灯 SETB P3.1 SETB P3.2 SETB P3.3 NIGHT1: ;执行另一个按键的要求按键S3:计时按键(模拟暂时停车)当只有按键一和二都按下时才可以检测到按键三和四。按下时LED2亮。相当于只有有乘客上车司机启动计价器,才可以等待清零或停车。当有一或二的按键按下时,检测到按键三它要执行的是计时,收费方式也是改成计时。PANDUAN1: JNB P1.3,RESET ;判断清零按键有无按下 JNB P1.2 ,TINGCHE ;判断是否暂时停车TINGCHE: SETB TR0 ;开定时器T0 CLR P3.2 ;开计时指示灯 LJMP PANDUAN1 按键S4:清零

36、按键。按下按键LED3亮。也就是乘客下车然后就清零的。也是一个初始化的过程。 详细如下:RESET: CLR TR0 ;关定时计数器 CLR P3.3 ;开指示灯 SETB P3.0 ;关其它的指示灯 SETB P3.1 ;关其它的指示灯 SETB P3.2 ;关其它的指示灯 MOV A,#00H ;清零 CLR FLAG ;请标志位 CLR FLAG1 ;请标志位 MOV R0,#30H ;所有存数据的寄存器清零3.4中途等待中断服务程序在定时中断服务程序中并调用显示子程序实时显示。主要有几点要说的:1. 选用定时器中断,所以一定要选对中断的入口地址。如:ORG 000BH2. 用到堆栈时考

37、虑好堆栈的操作方式。3. 用到定时计数器的时候,算初值、和选择定时器的工作方式。由于我们的定时时间要超过五分钟,可能更长所以要用定时器工作方式1。因为在四种工作方式中,为了减少中断或定时的次数,避免响应误差或中间重置误差,使定时更精确,所以选用定时时间最长的一中方式,即方式1。初值的计算公式为:本程序中f=12Mhz,X=50MS 所以算出来的X=15536=03CB0H ORG 0000H LJMP STAR ORG 000BH ;定时器T0中断方式 AJMP PINT0 PINT0: PUSH ACC INC TIME MOV TH0,#03CH ; 再赋初值 MOV TL0,#0B0H

38、MOV A,TIME CJNE A,#200,STOP1 ;判断有没有到计时时间比如 10秒 MOV TIME,#0 ACALL BCDNUM3STOP1: POP ACC RETI3.5里程计数服务程序我们硬件上设计的里程计价单元是用霍尔元件的,单片机检测到的结果是:到车轮上的磁体经过元件时,霍尔元件检测到的是1,当错过小磁体时它的输入为0,所以我们的检测程序要在车每转一圈时检测到,并进行计数。具体如下:DAY2: JNB P3.5,PANDUAN ;判断车轮启动 JB P3.5,$ CLR TR0 ;关定时计数器 SETB P3.2 ;关定时计数器指示灯 INC NUM ;圈数加一 INC

39、 NUM1 3.6 BCD译码子程序显示里程或者价格的时候,我们车轮每转一定次数就要寄存器内加1,还有可能显示价格,当价格或里程超过9的时候就要译码程序,然后分别显示(动态显示)。这个译码程序很重要。原理也很简单,主要原理是当显示数据超过9的时候,它就要和10做除法,余数显示低位的数据,商判断有没有到10,商如果到了10继续做除法,余数显示当前位,而新的商则在高一位显示。如此循环,价格的显示只不过是在加完数据时再做译码然后显示。BCDNUM: MOV A,NUM1 ;把转的圈数赋值给A MOV B,#10 ;到了10就要进位了 DIV AB ;用除法 MOV A_BIT,B ;把余数存在B里

40、MOV B,#10 ;再赋值给B 10 DIV AB ;把商再除法运算除数还是10 MOV B_BIT,B ;最后把余数传到十位 MOV C_BIT,A ;把商传到百位RET ;其实整个程序就是把一个三位数拆成三位分别显示3.7显示服务子程序显示的时候我们分别从30H到35H中取出数据,然后在R6中一位一位的驱动显示的时候要有2ms到5ms的延时使二极管有足够的时间点亮数码管。还要注意显示某些位的时候要开小数点。驱动数码管时用到了循环左移指令,简化了程序。DISPLAY: MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#30H MOV R6,#0FBH ;R6用来存位选段

41、的数据 DIS0: MOV A,R0 MOVC A,A+DPTR ;开始查表 MOV P0,A ;送到P0口显示 MOV A,R6 ;把R6数据送到A MOV P2,A ;然后送到P2口 用来驱动9012 RL A ;累加器循环左移 MOV R6,A ;把左移后的值送到R6 ACALL D1MS ;延时 INC R0 CJNE R0,#35H,DIS1 ;显示每一位数码管 CLR P0.7 ;开小数点 SJMP DIS0 ;返回DIS1: CJNE R0,#35H,DIS2 ;显示每一位数码管 CLR P0.7 ;开第二个小数点 SJMP DIS0 ;返回DIS2: SETB P0.7 ;置小

42、数点 CJNE R0,#36H,DIS0 ;判断显示完了没有 RET结论时间总是过得很快,转眼间我的毕业设计就接近尾声了。在老师和同学们的热心帮助和我的不懈努力,我的毕业设计圆满完成了。我的设计实现了出租车计价器实际应用中的大部分功能。即可以实现白天晚上两种不同的按里程收费方式,还有中途暂停时的计时收费方式,另外还有复位功能。下面是一张计价器晚上工作时的实物图。我的设计可以很好的模拟出真实的计价器几乎所有的功能,但是还是有些不足,比如当途中遇到红灯或者乘客要求停车等待时,真正的计价器不需要什么按键来计时,因为它会自动计时,当达到一定时间(比如5分钟),它就会在总价格上加上一定数额的费用(比如一元)。而我所设计的计价器由于没有很好的检测车轮停止转动的装置。所以我做了个按键模拟停车信号,当这个按键按下时,计价器开始按时间收费。不过收费方式和真正的计价器还是一样的。现在我做的这个计价器可以很好的模拟出计价器的主要功能,但离真正的计价器还是有点距

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号