收藏 分享(赏)

基于AT89C51单片机的出租车计价器系统设计.doc

上传人:精品资料 文档编号:10867791 上传时间:2020-01-16 格式:DOC 页数:22 大小:246KB
下载 相关 举报
基于AT89C51单片机的出租车计价器系统设计.doc_第1页
第1页 / 共22页
基于AT89C51单片机的出租车计价器系统设计.doc_第2页
第2页 / 共22页
基于AT89C51单片机的出租车计价器系统设计.doc_第3页
第3页 / 共22页
基于AT89C51单片机的出租车计价器系统设计.doc_第4页
第4页 / 共22页
基于AT89C51单片机的出租车计价器系统设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、 课程设计 (综合实验) 报告( 2013- 2014 年度第 2 学期)名 称:单片机与嵌入式系统课程设计题 目:基于 51 单片机的出租车计价器设计院 系:控制与计算机工程学院班 级:测控 1101 班学 号: 1111160108学生姓名: 李 权 指导教师: 吕跃刚 设计周数: 一 周 成 绩: 日期:2014 年 06 月 19 日课程设计(综合实验)报告1一、课程设计的目的与要求1 每三人一组,按学号排列分组。2 每组同学可按题目自行合理分工合作完成,答辩时可分别负责回答其中一部分,如资料查询、总体设计、外围器件研究、传感器研究、电路设计、硬件制版图绘制、软件编程等。3 每组课设只

2、给出题目,而没有给出具体技术功能要求。同学可以充分发挥、完善设计。4 建议每组应有一个同学学习掌握 protel 99SE 制版软件,并负责电路板设计。5 建议认真查阅资料,多参考别人的成果,但设计的内容要有自己的独立见解。6 课设报告按学校格式要求书写。二、设计正文1.1.1 单片机的概念单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器 CPU、数据存储器 RAM、程序存储器 ROM、定时器/计数器和多种 I/O 接口电路。图 1 是 80C51 单片机的基本结构图a. 89C51 单片机的结构特点有以下几点: 8 位 C

3、PU; 片内振荡器及时钟电路; 32 根 I/O 线; 外部存储器 ROM 和 RAM,寻址范围各 64KB;图 1 89C51 结构方框图中 断 控 制 器 4KBROM 定 时 /计 数 器CT0, /1128BRAMCPU4个 I/O 口总 线 控 制OSC 串 行 口 INT0INT1 XTAL1XTAL2 ALEPSNRDWR T1RXDP3P1P0 TXDP2T0 课程设计(综合实验)报告2 两个 16 位的定时器/计数器; 5 个中断源,2 个中断优先级 全双工串行口 布尔处理器b. 定时器/计数器89C51 内部有两个 16 位可编程定时器/计数器,记为 T0 和 T1。16

4、位是指它们都是由 16 个触发器构成,故最大计数模值为 2-1。可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时器来用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器 TMOD 来完成的.如果需要,定时器在计到规定的定时值时可以向 CPU 发出中断申请,从而完成某种定时的控制功能。在计数状态下同样也可以申请中断。定时器控制寄存器 TCON 用来负责定时器的启动、停止以及中断管理在定时工作时,时钟由单片机内部提供,即系统时钟经过 12 分频后作为定时器的时钟。技术工作时,时钟脉冲由 TO 和 T1 输入。c. 中断系统89C51 的中断系统允许

5、接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。外部中断申请通过 INTO 和 INT1(即 P3.2 和 P3.3)输入,输入方式可以是电平触发(低电平有效) ,也可以是边沿触发(下降沿有效) 。两个定时器中断请求是当定时器溢出时向 CPU 提出的,即当定时器由状态 1 转为全零时提出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。1.1.2 89C51 的芯片引脚图如图 2 所示VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏极开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1

6、 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。课程设计(综合实验)报告3图 2P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的 8

7、位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。因此作为输入时,P2 口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平

8、,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断 0)P3.3 /INT1(外部中断 1)P3.4 T0(定时器/计数器 0 外部输入)P3.5 T1(定时器/计数器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE

9、/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH课程设计(综合实验)报告4编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存

10、储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。1.1.3 使用 I/O 口的注意事项(1)P1,P2,P3 口的输出缓冲器可驱动 4 个 LSTTL

11、 电路。对于 HCMOS 芯片单片机的 I/O 口,在正常情况下,可任意由 TTL 或 NMOS 电路驱动。HMOS 及 CMOS 性的单片机 I/O 口有集电极开路或漏极开路的输出来驱动时,不必外加上拉电阻(2)对于 74LS 系列,CD4000 系列以及一些大规模集成电路芯片(如 8155,8253,8279 等) ,都可以和 MCS-51 系列单片机直接接口。具体使用时,可以查阅有关器件手册或参考典型电路(3)对一些线性组件,特别是应用键盘、码盘、LED 显示器等输入/输出设备时,应当尽量增加驱动部分的容量,否则,单片机将提供不出足够的驱动电流供给负载使用1.2 89C51 中断系统所谓

12、中断,是指当计算机执行正常程序时,系统中出现某些急需处理的异常情况和特殊情求,CPU 暂停执行现行程序,转去对随机发生地更紧迫事件进行处理;处理完毕后,CPU 自动返回原来的程序继续执行。中断允许软件设计不需要关心系统其他部分定时要求,算术程序不需要考虑隔几个指令检查 I/O设备是否需要服务。相反,算术程序编写时好像有无限的时间作算术运算而无其他工作在进行。若其它事件需要服务时,则通过中断告诉系统。89C51 单片机有 5 个中断源,有两个中断优先级,每个中断源的优先级可以编程控制。中断允许受到 CPU 开中断和中断源开中断的两级控制。1.2.1 中断源中断源是指任何引起计算机中断的事件,一般

13、一台机器允许有许多个中断源。89C51 系列单片机至少有 5 个中断源。增加很少的硬件就可把各种硬件中断源“线或”成为一个外部中断输入,然后再顺序检索一起中断的特定源。89C51 单片机的 5 个中断源是: 外部中断请求 0,由(P3.2)输入; 外部中断请求 1,由(P3.3)输入;课程设计(综合实验)报告5 片内定时器/计数器 0 益处中断请求; 片内定时器/计数器 1 溢出中断请求; 片内串行口发送/接收中断请求;为了了解每个中断源是否产生了中断请求,中断系统应设置许多个中断请求触发器(标志位)实现记忆。这些中断源请求标志位分别有特殊功能寄存器 TCON 和 SCON 的相应位锁存定时器

14、/计数器控制寄存器 TCON,它是一个八位的寄存器,各位如表 1 所示:表 1 定时器/计数器控制寄存器 TCONTF1 TF0 IE1 IT1 IE0 IT0IT0,IT1:外部中断 0、1 触发方式选择位,由软件设置。1 是下降沿触发,0 是电平触发。IE0,IE1:外部终端 0、1 请求标志位。TF0,TF1:定时器/计数器 0、1 溢出中断请求标志。1.2.2 中断的控制中断的控制主要实现中断的开关管理和中断优先级的管理。这个管理主要通过对特殊功能寄存器IE 和 IP 的编程实现。(1)中断允许寄存器 IE表 2 中断允许寄存器 IEEA - ET2 ES ET1 EX1 ET0 EX

15、0EX0,EX1:外部终端 0,1 的中断允许位。1 是中断开,0 是中断关ET0,ET1:定时器/计数器 0、1 溢出中断允许位。1 是开中断,0 是关中断ES:串行口中断允许位。1 是中断开,0 是中断关ET2:定时器/计数器 2 溢出中断位EA:CPU 开/关中断控制位。1 是开中断,0 是关中断(2)中断优先级寄存器 IP表 3 中断优先级寄存器 IPPS PT1 PX1 PT0 PX0若系统中多个中断源同时请求中断,则 CPU 按中断源的优先级别,由高到低分别响应。89C51 单片机有两个中断优先级:高优先级和低优先级。每个中断源都可以编程为高优先级。这可以实现两级中断嵌套。嵌套的原

16、则:一个正在执行的中断服务程序可以被高级的中断请求中断,而不能被同级或较低级的中断请求中断。两级中断通过使用 IP 寄存器设置,相应的位置 1,则优先级高,0 则优先级低。PX0、PX1:终端 0、1 中断优先级控制;PT0、PT1:定时器/计数器 0、1 中断优先级控制。PS:串行口中断优先级控制。89C51 复位时,IP 被清零,5 个中断源都在同一个优先级。这时若其中几个中断源同时产生中断请求,则 CPU 按照片内硬件优先级链路的顺序相应中断,硬件优先级由高到低的顺序是:外部终端课程设计(综合实验)报告60,定时器/计数器 0,外部中断 1,定时器/计数器 1 串行口中断。1.2.3 中

17、断响应89C51 的 CPU 在每个机器周期采样中断源的中断请求标志位,如果没有上述阻止条件,则将在下一个机器周期响应被激活的最高级中断请求。阻止条件如下: CPU 正在处理同级或更高级的中断; 现行机器周期不是所执行指令的最后一个机器周期; 正在执行的是 RETI 或者是访问 IE 或 IP 的指令;CPU 在中断响应之后完成如下操作: 硬件清除相应的中断标志位; 执行一条硬件子程序,保护断点,并转向中断服务程序入口。 结束中断时执行 RETI 指令,恢复断点,返回主程序。89C51 的 CPU 在相应中断请求时,由硬件电路自动形成转向与该中断源对应的中断的服务程序入口地址。这种方法为硬件向

18、量中断法。各中断源的中断服务程序入口地址如下:表 4 中断源的中断服务程序入口地址编号 中断源 入口地址0 外部终端 0 0003H1 定时器/计数器 0 000BH2 外部终端 1 0013H3 定时器/计数器 1 001BH4 串行口中断 0023H各中断服务程序入口地址仅隔 8 个字节,编译器在这些地址放入无条件转移指令,跳到服务程序的实际地址。向量中断包括把先前的程序计数指针推入堆栈,中断服务程序很像其他子程序。当向量中断发生时,硬件禁止所有中断。此时表明外部中断或定时器溢出的标志位由硬件清除。中断服务程序的不同分支取决于中断源。在重新允许全局 CPU 中断 EA 之前,必须仔细清除各

19、种标志。标志会引起立即地重复中断。89C51 对终端实际上有特殊的返回指令-RETI。不是 RET。RETI 重新允许系统识别其他中断。因而,没必要在正常使用中断时复位 EA,只要在程序初始化时开中断一次就可以了。1.3 单片机定时器/计数器的使用89C51 系列单片机至少有两个 16 位内部定时器/计数器。8952 有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器 0 和定时器/计数器 1。他们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数 89C51 的输入引脚的脉冲信号,则它是计数器。89C51 的 T/C 时加一计数的。

20、定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。当 T/C 工作在定时器时,对振荡源 12 分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。晶振为 6MHz,计数频率=500KHz,每 2uS 计数加一。课程设计(综合实验)报告7当 T/C 工作在计数器时,计数脉冲来自外部脉冲输入引脚 T0 或 T1。当 T0 或 T1 脚上负跳变需 2个机器周期,即 24 个振荡周期。所以 T0 或 T1 脚输入的计数外部脉冲的最高频率为 fosc/12。当晶振为 12MHz 时,最高技术频率为 500KHz,高于此频率

21、将计数出错。1.3.1 与 T/C 有关的特殊功能寄存器(1)计数寄存器 TH 和 TLT/C 是 16 位的,计数寄存器有 TH 高 8 位 TL 低 8 位构成。在特殊功能寄存器中,对应 T/C0 为TH0 和 TL0;对应 T/C1 为 TH1 和 TL1。定时器/计数器的初始值通过 TH1/TL1 和 TH0/TL0 设置(2)定时器/计数器控制寄存器 TCON表 5 定时器/计数器控制寄存器 TCONTR1 TR0TR0、TR1:定时器/计数器 0、1 启动控制位。1 是启动,0 是停止TCON 复位后清零,T/C 需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位 TF,

22、即溢出中断请求标志T/C 的方式控制寄存器 TMOD表 6 T/C 的方式控制寄存器 TMODGATE C/T M1 M0 GATE C/T M1 M0C/T:计数器或定时器选择位。1 位计数器,0 位定时器GATE:门控信号。1 时 T/C 的启动控制受到双重控制,即要求 TR0/TR1 和 INT0/INT1 同时为高;0 时 T/C 的启动仅受 TR0/TR1 控制。表 7 M1 和 M0 工作方式选择位M1 M0 方式 功能0 0 0 为 13 位定时器/计数器,TL 存低 5 位,TH 存高 8 位0 1 1 为 16 定时器/计数器,TL 存低 8,TH 存高 8 位1 0 2 常

23、数自动装入的 8 位定时器/计数器1 1 3 仅适用于 T/C0,两个 8 为定时器/计数器1.3.2 定时器/计数器的初始化(1)初始化步骤在使用 89C51 的定时器/计数器前,应对它进行编程初始化,主要是对 TCON 和 TMOD 编程,还需要计算和装载 T/C 的计数初值。一般完成以下几个步骤: 确定 T/C 的工作方式-编程 TMOD 寄存器。 计算 T/C 中的计数初值,并装载到 TH 和 TL。 T/C 在中断方式工作时,须开 CPU 中断和源中断-编程 IE 寄存器。 启动定时器/计数器-编程 TCON 中 TR1 和 TR0 位(2)计数初值的计算在定时器方式下,T/C 是对

24、机器周期脉冲计数的,如果 fosc=6MHz,一个机器周期为 2us,则课程设计(综合实验)报告8方式 0 13 位定时器最大时间间隔=(2-1)2us=16.384ms;方式 1 16 位定时器最大时间间隔=(2-1)2us=131.072ms;方式 2 8 位定时器最大时间间隔=(2-1)2us=512us若使 T/C 工作在定时器方式 1,要求定时 1ms,求计数初值。如设计数初值为 x,则有(2-1)2us=1000usx=2-500因此,TH,TL 可置 65536-500。2、 计价器系统设计2.1 硬件设计2.1.1 整体硬件电路图由上图我们可以看到,本电路控制核心是 AT89C

25、51 芯片。该方案我们采用动态显示的方法。动态显示的优点是,它占用 CPU 的时间少,每次只把一个数据送到外部接口,虽然我们仿真看到的是全部数码管都亮着,那是因为动态显示的时间比较快,超过我们人眼的辨别能力。若我们在仿真的时候暂停一下,就可以清楚地看到,时间单元和价格单元分别只显示一位。静态显示,是每一个数码管不论在什么时候都点亮,占用 CPU 的时间很多。按键主要控制系统的初始化、开始工作、数据锁存三项工作。刚开始上电,则所有的数码管同时显示全 0 状态,当第一次按下开关,价格从起步价 005.0 元开图 3 整体硬件电路图课程设计(综合实验)报告9始计费,等待是否超过三公里以及计算,时间单

26、元则从 00.00.00 开始计时,一秒一秒往上加。P0 口作为数据总线口,分别把数据输送到 4 个 74LS273 地址锁存器中,而锁存器的工作需要等待脉冲的到来。脉冲通过写地址有些端口 p3.6 和端口 p2.0-p2.3 经过或非门来产生。只有当把数据送到外部接口时,p3.6 口才为低电平,p2.0-p2.3 用来控制到底是把数据送往哪一个锁存器。算法公式是:费用=起步价+(路程-3)1.3路程=速度时间 (速度恒定,60Km/h,也就是 1Km/min)若路程小于等于 3,则收起步价 5 元,否则按费用公式算。 由于速度恒定,所以计算的核心是时间,只要判断时间超出 2 分钟,则费用公式

27、就开始计算,每多出一公里,费用就加上 1.5 元,一分钟一公里来计算,因此本设计比较简单。时间单元由单片机的定时器/计数器来计算,延时 1ms 时间的初值由程序来设定。2.1.2 74LS273 和 74LS02 简介引脚功能:74LS273 是 8 位数据/地址锁存器。74LS273 是一种带清除功能的 8D 触发器,1D8D为数据输入端,1Q8Q 为数据输出端,正脉冲触发,低电平清除,常用作 8 位地址锁存器。引脚功能:74LS02 是四二输入或非门。该芯片有四个或非门公选择,如 1A 或 1B 后,经过非门再输出,只有当输入的两个变量同时为 0 时,输出才为 1。具有缓冲倒相功能。2.2

28、 软件设计2.2.1 模块介绍该计费器系统的软件设计分为一下几个模块:(1)主程序模块图 2-2 74LS273 管脚图图 4 74LS273 管脚图图 5 74LS02 管脚图课程设计(综合实验)报告10在主程序模块中,需要完成对个接口芯片的初始化、出租车起步价和单价、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。流程图如 3-4 所示。当按下轻触开关时,开始对系统初始化,价格和时间都显示 0、0,再次按下开关,时间单元

29、开始计时,并计算时间是否超过 2 分钟,超过 2 分钟,则从第 3 分钟开始计费。价格单元从起步价 5.0元开始计费,每多一分钟,价格单元多加 1.5 元。(2)显示子程序模块由于显示是由显示时间子程序 DIS1 和显示价格子程序 DIS 组成的,时间由小时、分、秒三个单元组成,共六个数码管。价格由元和角两个单元组成,最大可以显示 999.9 元。2.2.2 程序流程图各缓冲区初始化开始对定时器中断设置开始计数显示缓冲单元首址送 R0扫描初值送 R2取显示单元值,转为段显码送段数据口 段显码送段数据口扫描值送位数据口 P0让调整位的 DP 点亮延时一小段时间显示单元地址加 1扫描值右移一位显示

30、状态是否切换查询6 位显示完?取段码送到显示缓冲区单元NY分调整?Y N在显示的低位断码上加80H,即点亮 DP。查询下一个调整位图程序流程课程设计(综合实验)报告112.2.3 汇编程序ORG 0000H ;初始化段地址LJMP MAIN ;长跳转到主函数 MAIN 处ORG 000BH ;TT0 开始地址LJMP TT0 ;长跳转到 TT0 处ORG 0030H ;主函数开始地址,避开 0030 敏感段MAIN: MOV SP,#40H ;设堆栈底指针,下一个数据将放在 41H 单元MOV 70H,#60 ;价格单元的起步价MOV 71H,#00 ;价格单元的十位和百位MOV 72H,#0

31、0 ;秒单元清零MOV 74H,#00 ;时单元清零MOV 75H,#00 ;75H 单元清零备用CLR 00H CLR 01H ;将 00H,01H 单元清零MOV 6BH,#0AH ;将 0AH(既十进制 10)放入 6B 单元MOV R1,#76H ;把 76H 放到 R1 中KKK: MOV R1,#00H ;将 76H 单元的内容清零INC R1DJNZ 6BH,KKK ;76H7FH 单元全部清零,备用LCALL DIS ;调用价格显示子程序LCALL DIS1 ;调用时间显示子程序MOV TMOD,#11H ;定时器/计数器工作方式设置MOV TH0,#3CH MOV TL0,#

32、0B0H ;这句和上一句设置延时 50msMOV 6EH,#20 ;将 6EH 单元设置 20,达到 1s 的延时G2: LCALL DIS ;长调用价格显示子程序LCALL DIS1 ;长调用时间显示子程序 JB P1.0,G2 ;开关没按下,等待按下,显示初始状态,全部为零LCALL TIME1 ;调用 TIME1 延时子程序JB P1.0,G2 ; 开关没按下,跳到 G2,否则转到下一步G1: LCALL DIS LCALL DIS1JNB P1.0,G1 ;开关按下,继续显示价格和时间,并转到中断SETB EA ;开中断SETB ET0 ;定时器 0 中断允许,向 CPU 申请中断课程

33、设计(综合实验)报告12SETB TR0 ;定时器 0 工作允许SETB 01H ;01H 单元置位LLL: LCALL CHAI ;调用现场保护子程序LCALL DISLCALL JISUAN ;调用计算子程序LCALL DIS1JB P1.0,G3 ;开关没按下,则返回LCALL TIME1JB P1.0,G3CPL 01H ;01H 单元此时为零JNB 01H,G5;01H ;单元内容为 0,跳到 G5SETB ET0 ;定时器 0 中断允许,向 CPU 申请中断G6: LCALL DISLCALL DIS1JNB P1.0,G6 ;开关按下,显示所走的时间及费用LJMP MAIN ;重

34、新等待下一个工作状态G5: CLR ET0G4: LCALL DISLCALL DIS1JNB P1.0,G4G3: LJMP LLLTT0: CLR ET0 /*定时一秒*/CLR TR0MOV TH0,#3CHMOV TL0,#0B0HSETB TR0SETB ET0DJNZ 6EH,JJJLCALL ADD1MOV 6EH,#20JJJ: RETIDIS: MOV 6DH,#06H /*价格显示子程序*/MOV R0,#7AHMOV 6CH,#0FEH课程设计(综合实验)报告13HHH: MOV DPTR,#0FDFFH /数据指针出口地址,低 8 位给 P0 口,高 8 给/位 P2

35、口MOV A,6CHMOVX DPTR,AMOV A,R0MOV DPTR,#TAB ;查表首地址MOVC A,A+DPTR ;查表值送 AMOV DPTR,#0FEFFHMOVX DPTR,ALCALL TIME1MOV A,6CHRL AMOV 6CH,AINC R0DJNZ 6DH,HHHRETDIS1: MOV 6DH,#04H /*时间显示子程序*/MOV R0,#72HMOV 6CH,#0FEHHHH1: MOV DPTR,#0F7FFH ;FF 给 P0 口,F7 给 P1.0P1.3 口MOV A, 6CHMOVX DPTR,A ;将 6CH 的内容放到 0F7FFH 中MOV

36、 A,R0MOV DPTR,#TAB ;查表首地址MOVC A A+DPTR ;查表值送 AMOV DPTR,#0FBFFHMOV R1,6DHCJNE R1,#03H,K1ORL A,#80HK1: MOVX DPTR,ALCALL TIME1MOV A, 6CHRL AMOV 6CH,AINC R0课程设计(综合实验)报告14DJNZ 6DH,HHH1RETTIME1: MOV 6AH,#0AH /*延时子程序*/FFF: MOV 69H,#0AHGGG: DJNZ 69H,GGGDJNZ 6AH,FFFRETJISUAN:JB 00H,K2 /*判断是否超过 3 公里及计算价格子程序*/

37、MOV A,78HCLR CSUBB A,#03HMOV 73H,#06HJC K3SETB 00HLJMP K3K2: MOV R3,71HMOV R4,70HMOV R2,#00HMOV R5,#00HMOV R6,#03HMOV R7,#0E8HLCALL NDIV42MOV 75H,R4MOV A,R6MOV R3,AMOV A,R7MOV R4,AMOV R2,#00HMOV R7,#100LCALL NDIV31MOV 74H,R4MOV A,R7课程设计(综合实验)报告15MOV B,#10DIV ABMOV 73H,AMOV 72H,B K3: RETCHAI: MOV 6FH

38、,#03H /*保护现场子程序*/MOV R0,#77HMOV R1,#7AHZZZ: MOV A,R0ANL A,#0FH ;保存 77H 单元中的低 4 位MOV R1,AMOV A,R0SWAP AANL A,0FHINC R1MOV R1,AINC R0INC R1DJNZ 6FH,ZZZ ;循环三次RETADD1: MOV A,77H /*加一子程序*/CJNE A,#59H, L18LJMP L19L18: ADD A,#01HDA AMOV 77H,ALJMP L24L19: MOV 77H,#00HJNB 00H,S1CLR CMOV A,70HADD A,#12MOV 70H

39、,A课程设计(综合实验)报告16MOV A,71HADDC A,#00HMOV 71H,AS1: MOV A,78HCJNE A,#59H,L20LJMP L21L20: ADD A,#01HDA AMOV 78H,ALJMP L24L21: MOV 78H,#00HMOV A,79HCJNE A,#23H, L22LJMP L23L22: ADD A,#01HDA AMOV 79H,AL23: MOV 79H,#00HL24: RET NDIV42:MOV A,R1 /*四除二子程序*/PUSH ACCMOV B,#00HNDV421:MOV A,R2CLR CSUBB A,R7MOV R1

40、,AMOV A,R5SUBB A,R6JC NDV422MOV R5,AMOV A,R1MOV R2,AINC BSJMP NDV421课程设计(综合实验)报告17NDV422:PUSH B MOV B,#10HNDV423:CLR CMOV A, R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A, R2RLC AMOV R2,AXCH A,R5RLC AXCH A,R5MOV F0,CCLR CSUBB A,R7MOV R1,AMOV A,R5SUBB A,R6JB F0,NCV424JC NDV425NCV424:MOV R5,AMOV A,R1MOV R

41、2,AINC R4NDV425:DJNZ B,NDV423POP ACCCLR OVJNZ NDV426SETB OVNDV426:XCH A,R2MOV R7,A课程设计(综合实验)报告18MOV A,R5MOV R6,APOP ACCMOV R1, ARETNDIV31:MOV A,R2 /*三除一子程序*/MOV B,R7DIV ABPUSH ACCMOV R2, BMOV B,#10HNDV311:CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV F0,CCLR CSUBB A,R7JB F0

42、,NDV312JC NDV313NDV312:MOV R2,AINC R4NDV313:DJNZ B,NDV311POP ACCCLR OVJZ NDV314SETB OVNDV314:XCH A,R2MOV R7,A课程设计(综合实验)报告19RETTAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07HDB 7FH, 6FHEND三、课程设计总结或结论经过这次出租车计价器的课程设计,我收益非浅,从中我学到了很多东西.课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,

43、以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,另外,还学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89S51 单片机及其引脚说明,为本次课程设计提供了一定的资料。在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。 总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用

44、的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。经过这次的课程设计,也为我们以后毕业设计的制作奠定了一定的基础。四、参考文献1:周立功、夏宇闻.单片机与 CPLD 综合应用技术M.北京:北京航空航天大学出版,20062:丁元杰.单片微机原理及应用M.北京:机械工业出版社,20053:靳达编.单片机应用系统开发实例导航M.北京:人民邮电出版社,20074:李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,20065:胡宴如.高频电子线路M.北京:高等教育出版社,20066:白驹珩、雷晓平.单片计算机及其应用M.成都:电子科技大学出版社,20057:李广弟.单片机基础M.北京:北京航空航天大学出版社,20068:沈美明、温冬婵.IBM 汇编语言程序设计M.北京:清华大学出版社,20049:彭传正、林春景.凌阳单片机原理与实践M.北京:北京航空航天大学出版社,200610:李荣正、陈学军.PIC 单片机实践教程M.北京:北京航空航天大学出版社,200611:阎石.数字电子技术基础M.北京:高等教育出版社,200725

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报