出租车计价器 单片机 汇编 硬件课设

上传人:优*** 文档编号:48746915 上传时间:2022-01-14 格式:DOC 页数:43 大小:654KB
收藏 版权申诉 举报 下载
出租车计价器 单片机 汇编 硬件课设_第1页
第1页 / 共43页
出租车计价器 单片机 汇编 硬件课设_第2页
第2页 / 共43页
出租车计价器 单片机 汇编 硬件课设_第3页
第3页 / 共43页
资源描述:

《出租车计价器 单片机 汇编 硬件课设》由会员分享,可在线阅读,更多相关《出租车计价器 单片机 汇编 硬件课设(43页珍藏版)》请在装配图网上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。 电子信息工程 专业课程设计题单 班级 088205242 学生 朱振华 课程名称 专业课程设计 课 题 出租车计价器 设计要求 里程显示为:*.*,公里能预置起步价及单价:如起步3公里6.00元;1.60/公里 课 题 发 给 日 期 2011.6.14 课程设计完成日期 2011.7.1 指 导 教 师 评语: 评分: 摘 要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,

2、加以完善。目前,单片机应用的非常广泛,几乎在所有的领域都能看到单片机的身影,导弹的导航装置,飞机上的各种仪表控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。 现实生活中越来越离不开Taxi,由于它的存在,生活变得便捷。它的智能计价,使得出租车费用得以规范,人们的打的生活变得更加美好。现实生活中打的有打表计时和打表计码两种方式,但是打表计码对大众来说应该合理一些。按里程计价有一个起步价,

3、超过里程按照相应价格计价,这样可谓几乎实现双赢。 关键字: 单片机 出租车 打表计码 起步价 8255 目 录前 言 .4第一章 绪 论 .51.1 引言 .51.2 课题背景 .51.3 研究的意义及内容 .5第二章 系统总体设计方案 .72.1 总体设计方案 .72.2 出租车计价器设计思想 .8 2.2.1具体设计思想 .8 2.2.2出租车计价状态 .8第三章 系统的硬件设计 .103.1 8051单片机简介 .103.2 内部资源 .113.2.1 串行口 .123.2.2 定时器/计时器 .123.2.3 中断系统 .123.3 出租车计价器各部分功能分析及各逻辑器件描述 .123

4、.3.1单片机输入输出引脚 .123.3.2 时钟定时控制部件 .123.3.3 LED数字显示电路 .143.3.4 复位电路 .153.3.5 出租车计价器显示电路 .163.3.6 扩展并行I/O口8255 .173.3.7 74LS373芯片简介 .18第四章 软件设计 .204.1 设计要求 .204.2 主程序流程图 .204.3 中断程序流程图 .214.4 源程序及代码注释 .25第五章 课程调试 .36第六章 总 结 .37参 考 文 献 .38附 录 .39 附图1:80C51与8255电路连接部分 .39 附图2:8255通过74LS245控制数码管显示部分 .40 附图

5、3:出租车计价器整体电路. . . 41前 言 随着计算机科学技术的不断发展,单片微型机得到了广泛的应用,是人们利用计算机设计和开发各种应用系统的基础。同时单片机接口技术也是一门实践性较强的课程, 理论与实践相结合可以更好的掌握知识,这也是这次交通灯系统控制的设计目的。道路交通事业的发展以及人们生活水平的提高都促使交通工具的不断变化,无论是在大城市或是中小城市越来越多的出租车公司不断的出现。出租车的出现方便了人们的生活,对于现在快节奏生活方式的人们来说出租车无疑是最好的交通工具。但是,传统的出租车收费方式完全是司机说了算,乘客不能很直观的看到比如收费标准以及行驶里程等各种数据,给本来想寻求方便

6、的人们带了不便,也加重了司机的负担。我们设计的这种出租车计价器,它可以提供不同的收费标、准计时收费,允许司机根据情况修改单价,直观的显示当前单价、行驶里程、总金额等,有必要的话还可以打印输出各种数据。主要包括以下五个方面:1.课程设计题目名称;2.课程设计要求完成的任务;3.系统设计文档(包括了总体设计、详细设计以及程序设计等文档);4、课程设计总结 ;5.参考文献。第一章 绪 论1.1 引言 随着社会经济的发展,城市交通问题越来越引起人们的关注。虽然公交很便利,但是拥挤的公交还是让人们烦恼,出租车则不一样,它能够给你提供舒适的环境以及能高效的将你传送到目的的。的士之所以这么受大众欢迎,当然也

7、少不了它公平的价格了。谁成就了它呢,计价器也算是一大功臣。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。1.2 课题背景在今天,公交车穿梭在各个道口上,已经成为传送交通工具中最常见和最有效的工具之一。计价器的出现,使人们乘坐出租车时对自己的消费更加透明,使得收费更加合理化。因此,计价器的优化以及设计也是影响人们生活的一大因素。1.3 研究的意义及内容 随着我国社会经济的发展,城市化

8、、城镇化进程的加快,的士的普及,一个良好的出租车计价器成为了必不可少的交易工具之一。 该课题研究的内容主要是单片机,单片机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。随着单片机在各个领域的广泛应用,单片机以其自身的特点,已广泛的应用于智能仪器、工业控制、家用电器、电子玩具等各个领域。这种将单片机嵌入到对象体系中的嵌入式系统已渗透到每个单位、每个家庭和个人。随着社会需求的不断增长,单片机的应用有着广泛的和稳定增长的市场通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因

9、此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。由单片机构成计价器,在单片机内运行适当的程序即构成了出租车计价器。 第二章 系统总体设计方案2.1 总体设计方案由于实验条件的限制,即实验箱只有六个数码管,故起步价、大的费用以及单价均由P4、P5(即最左边两个数码管)显示,里程由P2、P3(即中间两个数码管)显示,脉冲计数由P0、P1(即最右边两个数码管显示)。由于缺少霍尔传感器,因此只能通过输入脉冲模拟。因此电路由时钟脉冲电路(8MHZ接P1.0)、复位电路、数码管显示电路构成。单片机时间显示金额单价显示显示电路设置电路里程检测系统复位存储电路路程单价显示等待时间单价

10、计费模式显示 2-1 出租车计价器总体设计图数码管显示电路时钟脉冲电路 复位电路单 片机键盘接口电路 2-1 单片机单元框图2.2 计价器设计思想2.2.1具体设计思想 利用80C51单片机控制出租车计价系统工作。 单片机P1.0口作为脉冲输入。8255的PB口连接一个74LS245芯片(双向总线驱动器),再与外部六个数码管连接,PB口连接一个74LS245芯片与6个数码管的公共COM端连接,用于选择数据输出的地址,这样就可以实现起始价、单价、里程、脉冲计数的动态显示,并且节省了端口数。数码管的段控制信号是由8255的PB口经74LS245缓冲器后输出得到,6位位控制信号由8255的PA口经7

11、4LS245缓冲器后输出得到。键盘电路由8255构成,其中8255的PC0-PC3作为矩阵式键盘行扫描线,8255的PA口为矩阵键盘列入线。 2.2.2计价器相应控制通过软件编程实现计价器起始价、单价、脉冲技术的显示以及按下相应键实现开始暂停、设置单价、复位功能,各个键按下的功能如表2-2所示。0键开始计数(价)E键暂停计数(价)F键复位(恢复起始价6元)2键 设置单价2元/公里3键 确定单价,恢复起始价表2-2 各个按键的功能在白天,不用调节价格,当里程超过3公里即按照每公里1元计算,3公里以内则均按起始价6元计费。操作如下:白天只要顾客上车,就按下0键,到达目的地按下E键,然后读数码管上的

12、L6、L5(最左边两位数码管)即为费用,中间两位即为里程。顾客付费完后按下F键复位,恢复起始价格,等待下一个顾客的到来。在晚上,由于夜间行车风显以及司机加班状态,价格翻倍,3公里内还是按照起始价6元计费;超过3公里则按照每公里2元计价。操作如下:按下2键显示单价2元/公里,按下3键确定单价是2元/公里并恢复起始价6元,待顾客上车按0键开始计价,到达目的地按下E键,然后读数码管上的L6、L5(最左边两位数码管)即为费用,中间两位即为里程。顾客付费完后按下F键复位,恢复起始价格,等待下一个顾客的到来。第三章 系统的硬件设计3.1 80C51单片机简介 80C51单片机属于MCS-51系列单片机,由

13、Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成

14、熟,故采用来作为控制核心。其管脚封装如图3-1所示。图3-1 80C51 管脚封装80C51包含以下部分,其结构图如图3-2所示(1)一个8位微处理器CPU(2)片内数据存储器RAM和特殊功能寄存器SFR(3)片内程序存储器ROM(4)两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计数(5)四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出(6)一个串行端口,用于数据的串行通信(7)中断控制系统(8)内部时钟电路图3-2 80C51内部结构图功能特性概述:80C51 提供以下标准功能:8K字节 Flash 闪速存储器,256字节内部 RAM,32 个 I/O 口线

15、,3 个 16 位定时/计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,80C51 可降至 0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2 内部资源3.2.1 串行口8051单片机内部有一个可编程的、全双工的串行接口。串行收发贮存在特殊功能寄存器SFR中的串行数据缓冲器SBUF中的数据,SBUF占用内部RAM地址99H。但在机器内部,实际上有两个数据缓冲器:发送缓

16、冲器和接收缓冲器,因此,可以同时保留收/发数据,进行收/发操作,但收/发操作都是对同一地址99H进行的。3.2.2 定时器/计时器 8051内部有两个16位可编程计时器/计数器,记为T0和T1。16为是指他们都是由16个触发器构成,故最大计数模值为216-1,可编程是指他们的工作方式由指令来设定,或者当计数器用,或者当定时器用。并且计数(定时)的范围可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。 如果需要,定时器在记到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。在计数状态下同样可以申请中断。定时控制寄存器TCON用来负责定时器的启动、停止以及

17、中断管理。 在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频作为定时器的时钟。计数工作时,时钟脉冲(计数脉冲)由T0和T1(即P3.4,P3.5)输入。3.2.3 中断系统8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。外部中断申请通过INT0和INT1(即P3.2,P3.3)输入,输入方式可以是电平触发(低电平有效),也可以是边沿触发(下降沿有效)。两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态全1转为全0时发出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可以提出一次中断

18、请求。8051单片机可以设置两个中断优先级,即高优先级和低优先级,由中断优先控制器IP来控制。3.3 计价器各部分功能分析及各逻辑器件描述3.3.1单片机输入输出引脚 (1) P1端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉电阻的8位双向I/0端口。输出

19、时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电

20、阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请参看下表。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RD3.3.2 时钟定时控制部件由于AT89C52单片机内部有一个用于构成振荡器的高增益反向放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,该电路采

21、用的是内部方式,如图3-3所示。图3-3 时钟定时电路 在XTAL1和XTAL2的两端接石英晶体振荡器,与内部反向器构成稳定的自激振荡器,发出的时钟脉冲直接进入片内定时定时控制部件。用以提供交通灯时钟信号。在该电路的设计过程中,C1、C2的选取对频率有微调作用,选取值是22pF。为了减少寄生电容,保证振荡器稳定和可靠的工作,在接线时将晶振和电容的管脚接在单片机最近的地方。3.3.3 LED数字显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显

22、示器之一,如图3-4所示。图3-4 LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图3-5是共阳式、共阴式LED数码管的原理图和符号。表3-1是两种数码管段码与显示字形的关系。图3-5 数码管原理图和数码管符号图显示字型0123456789段码共阳C0HF9HA4HB0H99H92H82H

23、F8H80H90H共阴3FH06H5BH4FH66H6DH7DH07H7FH6FH表3-1段码与显示字形的关系3.3.4 复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在80C51的9(RST)引脚上时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位

24、电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用12MHz时,C取10F,R约为10K。复位操作不会对内部RAM有所影响。常用的复位电路如图3-6所示: 图3-6 单片机复位电路3.3.5 出租车计价显示电路 出租车计价器显示电路主要由代码实现。显示电路如下图所示。图3-7 出租车计价器显示电路3.3.6 扩展并行I/O口82558255A芯片是一个采用NMOS工艺制造的、40引脚双列直插式封装组建的大规模集成电路,采用单一+5V电源供电。40个引脚中有24个为与外围设备的接口。8255管脚封装如图3-8所示。图3-8 8255

25、管脚封装图(1)数据总线缓冲器 这是一个三态双向缓冲器,其宽度是8位,用做8255的内部数据总线与系统中的数据总线相连时的缓冲部件。缓冲器向数据总线送出数据,或从数据总线接收数据都是CPU指令控制下进行的。 (2)读写逻辑控制 这一部件用来管理所有的数据、控制字或状态资的传送。他接收来自CPU的各种控制信号,并以此为依据,控制数据总线缓冲器数据的传送方向。与CPU相连的个引脚说明如下:1) CS:芯片选择信号。来自地址译码器,低电平有效。2) RD:芯片读出信号。来自系统总线,低电平有效。3) WR:芯片写入信号。来自系统总线,低电平有效。4) RESET复位信号。当它为高电平时,清除所有内部

26、寄存器的内容,并将3 个数据端口PA,PB,PC置为输入方式。5) A1,A0:端口地址选择信号。用于选择8255A的3个数据端口和1个控 制口。当A1A0为00、01、10时,分别选择数据端口PA、PB、PC;当A1A0 为11时,选择控制口。 6) Vcc、GND:电源和地线。 (3) 端口PA、PB与PC8255A有三个与外围设备相连的端口PA,PB,PC。各端口可以独立工作,由程序控制位将它设成各种不同的工作方式。端口A,B一般用做独立的输入或输出端口,每个端口包括一个四位琐存器,分别与A口,B口配合使用,作为与外设之间的联络信号3.3.7 74LS373芯片简介 74LS373 是一

27、种带三态门的8D锁存器,其管脚示意图3-9所示。其中:D0-D7为8个输入端。 Q0-Q7为8个输出端。 LE为数据打入端: 当LE为“1”时,锁存器输出状态同输入状态; 当LE由“1”变“0”时,数据打入锁存器 为输出允许端: 当=0时,三态门打开; 当=1时,三态门关闭,输出为高阻状态。 图3-9 74LS373管脚封装图第4章 软件设计 软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由硬件和软件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。

28、同时,对软件进行全面测试也是检验错误排除故障的重要手段。4.1 设计要求 (1) 里程显示为:*.*公里,能预置起步价和单价(根据现实实验条件显示为*.*.*单价、起步价、费用在最高两位显示,里程中间两位显示,脉冲计数最后两位显示)。 (2)起步价3公里6元;可以设置单价白天1元,晚上2元。4.2主程序流程图软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,等待外部中断,发送显示数据,以及根据所需要的功能进行相应的操作。程序可以分为两大块: 1、主程序:对系统初始化,等待中断; 2、中断:键扫和数显。 其主程序流程图如图4-1所示。开始8255初始化定

29、时器、显缓单元以及标志显示单元初始化清借位开定时器0等待中断结束 图4-1 主程序流程图4.3 中断程序流程图 中断程序主要由两部分组成,分别为键盘扫描和数码管显示,其中中断程序流程图如图4-2所示,键盘扫描流程图如图4-3所示,数码管显示如图4-4显示。中断服务程序入口定时器0初始化 调用键盘扫描 即0键按下否开始计数R1=0 是 否复位,恢复起始价6元R3=0 即F键按下 即E键按下数码管显示否暂停计数R4=0 是否显示单价2元/公里R7=0即2键按下是否R2=0即3键按下确定单价2元/公里,并恢复起始价6元是图4-2 中断程序流程图 键盘扫描服务程序入口0键适是否按下F键适是否按下2键适

30、是否按下3键适是否按下E键适是否按下仅R1置1仅R3置1仅R7置1仅R2置1仅R4置1返回总中断开始计数复位,恢复起始价 6元显示单价为2/公里确定单价为2元/公里,恢复起始价暂停计数否否否否否否是是是是是 图4-3 键盘扫描程序流程图 中断服务程序入口脉冲计数高位显示00H=001H=002H=003H=004H=0里程低位显示里程高位显示显示价格低位显示价格高位显示否否否否否是是是是返回总中断脉冲计数低位显示清标志位00H-04H 图4-4 数码管显示程序流程图4.4 源程序及代码注释 ORG 0000H ;程序入口地址 SJMP MAIN ;相对跳转到主程序 ORG 000BH ;中断0

31、入口地址 SJMP INT ;相对跳转到中断程序MAIN: CLR TR0 ;定时器0清零 MOV A,#81H ;控制字 MOV DPTR,#0FF23H ;8255芯片初始化 MOVX DPTR,A ;控制口赋控制字 MOV TMOD,#01H ;T0作为定时器 MOV TH0,#0FAH ;定时器T0高位赋初值 MOV TL0,#68H ;定时器T0低位赋初值 MOV IE,#82H ;开总中断,开中断0(相当于SETB EA,SETB TR0 ) MOV 71H,#00H ;置各数码1管显示初值 MOV 72H,#00H ;置各数码2管显示初值 MOV 73H,#00H ;置各数码3管

32、显示初值 MOV 74H,#00H ;置各数码4管显示初值 MOV 75H,#06H ;置各数码5管显示初值 MOV 76H,#00H ;置各数码6管显示初值 MOV 40H,#50 ;置动态显示循环次数 MOV 00H,#00H ;值数码管2是否显示的标志初始值 MOV 01H,#00H ;值各数码管3是否显示的标志初始值 MOV 02H,#00H ;值各数码管4是否显示的标志初始值 MOV 03H,#00H ;值各数码管5是否显示的标志初始值 MOV 04H,#00H ;值各数码管6是否显示的标志初始值 MOV R1,#00H ;置用于标志是否调用功能程序的寄存器R1初值 MOV R3,#

33、00H ;置用于标志是否调用功能程序的寄存器R3初值 MOV R4,#00H ;置用于标志是否调用功能程序的寄存器R4初值 MOV R5,#00H ;置用于标志是否调用功能程序的寄存器R5初值 MOV 50H,#10 ;对存储数码管1循环显示值的循环次数的存储单元赋值 MOV 51H,#10 ;对存储数码管2循环显示值的循环次数的存储单元赋值 MOV 52H,#10 ;对存储数码管3循环显示值的循环次数的存储单元赋值 MOV 53H,#10 ;对存储数码管4循环显示值的循环次数的存储单元赋值 MOV 54H,#10 ;对存储数码管5循环显示值的循环次数的存储单元赋值 MOV 55H,#10 ;

34、对存储数码管6循环显示值的循环次数的存储单元赋值 SETB TR0 ;开定时器T0 CLR C ;清借位 SJMP $ ;中断等待INT: MOV TH0,#0FAH ;定时器T0高位初始化 MOV TL0,#68H ;定时器T0低位初始化 LCALL KEY_STATE ;调用键扫程序 CJNE R1,#0,ZZ ;寄存器R1为零则转到ZZ段执行 CJNE R3,#0,STOP ;寄存器R3为零则转到STOP段执行 CJNE R4,#0,RESET ;寄存器R4为零则转到RESET段执行 CJNE R7,#0,LOOP11 ;寄存器R7为零则转到LOOP11段执行 CJNE R2,#0,MM

35、 ;寄存器R2为零则转到MM段执行 RETIMM: AJMP LOOP12 ;调到LOOP12,确定单价,并恢复起始价HH: AJMP LL ZZ: MOV R5,#0 ;价格标志寄存器清零 AJMP RUN ;转各数码管显示方式的功能程序RESET: ;E复位功能程序段,恢复起始价6元 MOV 71H,#00H ;数码管1内容为0 MOV 72H,#00H ;数码管2内容为0 MOV 73H,#00H ;数码管3内容为0 MOV 74H,#00H ;数码管4内容为0 MOV 75H,#06H ;数码管5内容为6 MOV 76H,#00H ;数码管6内容为0 MOV 50H,#10 ;数码管1

36、循环次数为10 MOV 51H,#10 ;数码管2循环次数为10 MOV 52H,#10 ;数码管3循环次数为10 MOV 53H,#10 ;数码管4循环次数为10 MOV 54H,#10 ;数码管5循环次数为10 MOV 55H,#10 ;数码管6循环次数为10 LJMP SHOW ;调显示 RET ;返回主循环STOP: LJMP STOP1 ;调到暂停程序LOOP11: ;设置2键晚上单价为2.00功能程序 MOV 71H,#00H ;数码管1内容为0 MOV 72H,#00H ;数码管2内容为0 MOV 73H,#00H ;数码管3内容为0 MOV 74H,#00H ;数码管4内容为0

37、 MOV 75H,#02H ;数码管5内容为2,显示单价2元/公里 MOV 76H,#00H ;数码管6内容为0 MOV 50H,#10 ;数码管1循环次数为10 MOV 51H,#10 ;数码管2循环次数为10 MOV 52H,#10 ;数码管3循环次数为10 MOV 53H,#10 ;数码管4循环次数为10 MOV 54H,#10 ;数码管5循环次数为10 MOV 55H,#10 ;数码管6循环次数为10 LJMP SHOW ;调显示 RET ;返回主循环LOOP12: ;设置3键起步价功能程序 MOV 71H,#00H ;数码管1内容为0 MOV 72H,#00H ;数码管2内容为0 M

38、OV 73H,#00H ;数码管3内容为0 MOV 74H,#00H ;数码管4内容为0 MOV 75H,#06H ;数码管5内容为6 MOV 76H,#00H ;数码管6内容为0 MOV 50H,#10 ;数码管1循环次数为10 MOV 51H,#10 ;数码管2循环次数为10 MOV 52H,#10 ;数码管3循环次数为10 MOV 53H,#10 ;数码管4循环次数为10 MOV 54H,#10 ;数码管5循环次数为10 MOV 55H,#10 ;数码管6循环次数为10 LJMP SHOW ;调显示 MOV R5,#01H ;单价标志寄存器赋值1(即单价+1) RET ;返回主循环STO

39、P1:LJMP SHOW ;暂停程序KEY_STATE: ;键扫程序段 KEY_0: ;判断0键是否按下的功能程序段 MOV R2,#0FDH ;0键对应键值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 MOVX DPTR,A ;通过PA口对8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_F ;累加器第二位为高电平则0键没按下,判断下个键 SJMP KEY_DOWN0 ;0按下则转去相应寄存器赋值程序段 RET ;返回主循环KEY_F: ; 判断F

40、键是否按下程序段 MOV R2,#0F7H ;F键对应键值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 MOVX DPTR,A ;通过PA口对8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_2 ;累加器第二位为高电平则F键没按下,判断下个键 SJMP KEY_DOWNF ;F按下则转去相应寄存器赋值程序段 RET ;返回主循环KEY_2: ;2键键扫程序段 MOV R2,#0B0H ;2键对应键值放寄存器R2 MOV DPTR,#0FF20H ;取

41、8255PA口地址 MOV A,R2 ;通过PA口对8255初始化 MOVX DPTR,A ;通过PA口对8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_3 ;累加器第二位为高电平则2键没按下,判断下个键 SJMP KEY_DOWN2 ;2按下则转去相应寄存器赋值程序段 RET ;返回主循环KEY_3: ;3键键扫程序段 MOV R2,#0AFH ;3键对应键值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 ;通过PA口对8255初始化 MOVX D

42、PTR,A ;通过PA口对8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_E ;累加器第二位为高电平则3键没按下,判断下个键 SJMP KEY_DOWN3 ;3按下则转去相应寄存器赋值程序段 RET ;返回主循环KEY_E: ; 判断E键是否按下的功能程序段 MOV R2,#0DFH ;E键对应键值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 ;通过PA口对8255初始化 MOVX DPTR,A ;通过PA口对8255初始化 MOV DPTR,#0

43、FF22H ; 取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,RETURN2 ;累加器第二位为高电平则E键没按下,返回总中断 SJMPKEY_DOWNE ;E按下则转去相应寄存器赋值程序段RETURN2: RETI ;无键按下则返回中断断点继续等待KEY_DOWN0: ;0键按下,R1赋非零值1其它积存器赋0 MOV R1,#1 ;置用于标志是否调用功能程序的寄存器R1初值1 MOV R3,#0 ;置用于标志是否调用功能程序的寄存器R3初值0 MOV R4,#0 ;置用于标志是否调用功能程序的寄存器R4初值0 MOV R0,#0 ;置用于标志是否调

44、用功能程序的寄存器R0初值0 MOV R6,#0 ;置用于标志是否调用功能程序的寄存器R6初值0 MOV R7,#0 ;置用于标志是否调用功能程序的寄存器R7初值0 MOV R2,#0 ;置用于标志是否调用功能程序的寄存器R2初值0 RET ;返回主循环KEY_DOWNF: LJMP KEY_DOWNF1KEY_DOWN2: ;2键按下,R7赋非零值1其它积存器赋0 MOV R1,#0 ;置用于标志是否调用功能程序的寄存器R1初值0 MOV R3,#0 ;置用于标志是否调用功能程序的寄存器R3初值0 MOV R4,#0 ;置用于标志是否调用功能程序的寄存器R4初值0 MOV R6,#0 ;置用

45、于标志是否调用功能程序的寄存器R6初值0 MOV R7,#1 ;置用于标志是否调用功能程序的寄存器R7初值1 MOV R2,#0 ;置用于标志是否调用功能程序的寄存器R2初值0 RET ;返回主循环KEY_DOWN3: ;3键按下,R2赋非零值1其它积存器赋0 MOV R1,#0 ;置用于标志是否调用功能程序的寄存器R1初值0 MOV R3,#0 ;置用于标志是否调用功能程序的寄存器R3初值0 MOV R4,#0 ;置用于标志是否调用功能程序的寄存器R4初值0 MOV R6,#0 ;置用于标志是否调用功能程序的寄存器R6初值0 MOV R7,#0 ;置用于标志是否调用功能程序的寄存器R7初值0

46、 MOV R2,#1 ;置用于标志是否调用功能程序的寄存器R2初值1 MOV R5,#1 ;置单价标志寄存器R5初值1RET ;返回主循环KEY_DOWNF1: MOV R3,#1 ;置用于标志是否调用功能程序的寄存器R3初值1 MOV R1,#0 ;置用于标志是否调用功能程序的寄存器R1初值0 MOV R4,#0 ;置用于标志是否调用功能程序的寄存器R4初值0 MOV R6,#0 ;置用于标志是否调用功能程序的寄存器R6初值0 MOV R7,#0 ;置用于标志是否调用功能程序的寄存器R7初值0RET ;返回主循环KEY_DOWNE: MOV R4,#1 ;置用于标志是否调用功能程序的寄存器R4初值1 MOV R3,#0 ;置用于标志是否调用功能程序的寄存器R3初值0 MOV R1,#0 ;置用于标志是否调用功能程序的寄存器R1初值0 MOV R6,#0 ;置用于标志是否调用功能程序的寄存器R6初值0 MOV R7,#0 ;置用于标志是否调用功能程序的寄存器R7初值0 RET ;返回主循环RUN: DJNZ 40H,SHOW ;动态循环显示,以致肉眼看它好像是静态的 MOV 40H,#50 ; 恢复恢复动态显示循环初值LOOP8: JB P1.0,LOOP8 ;外部

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!