基于AT89C51单片机的出租车计价系统的设计-毕业论文_第1页
基于AT89C51单片机的出租车计价系统的设计-毕业论文_第2页
基于AT89C51单片机的出租车计价系统的设计-毕业论文_第3页
基于AT89C51单片机的出租车计价系统的设计-毕业论文_第4页
基于AT89C51单片机的出租车计价系统的设计-毕业论文_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

中南民族大学工商学院中南民族大学工商学院 毕业论文毕业论文( (设计设计) ) 系部:系部:电子信息工程系电子信息工程系 专业:专业:电子信息工程电子信息工程年级:年级: 0606 级级 题目:题目:基于基于 AT89C51AT89C51 单片机的出租车计价系统的设单片机的出租车计价系统的设 计计 学学 生:生:涂燕雄涂燕雄学号:学号:2006064520060645 指导教师:指导教师:葛蓁葛蓁职称职称: :导师导师 20102010 年年 5 5 月月 8 8 日日 目 录 出租车计价器系统设计.3 摘要:.3 关键词:.3 Abstract.3 Keywords.3 1 前言.4 2元器件简介.4 2.1AT89C51 的硬件资源. 4 2.1.1 单片机的概念.4 2.1.2 89C51 的芯片引脚图.6 2.1.3 使用 I/O 口的注意事项.7 2.289C51 中断系统.7 2.2.1 中断源.7 2.2.2 中断的控制.8 2.2.3 中断响应.8 2.3单片机定时器/计数器的使用. 9 2.3.1 与 T/C 有关的特殊功能寄存器.9 2.3.2 定时器/计数器的初始化. 10 2.474LS273 和 74LS02 简介:.10 3方案论证.11 4出租车计价器系统设计.13 4.1硬件设计.13 4.2 软件设计.14 4.2.1 模块介绍.14 4.2.2 程序流程图.14 5 总结体会.16 参考文献.17 附录出租车计价器系统设计源程序.18 出租车计价器系统设计出租车计价器系统设计 摘要:摘要:本文介绍了一种以 AT89C51 单片机为核心的多功能出租车计价器。有显示功能, 文中在整体方案选择上对二个方案进行了对比, 软件设计采用汇编语言编写, 在对各芯片在 出租车计价器中所起的作用进行分析基础上对总体设计方案进行了分析。 出租车计价器单片 微机广泛的应用于各种中小型的控制系统中.我们所做的基于单片微机的出租车计价系统, 利用了 AT89C51 单片机串行口进行通信控制,充分显示了单片微机在串行通信中的应用。基 于单片机的计价器是由单片机和外部电路组成。 本课设利用 AT89C51 的全双工串行口进行通 信,其外接显示电路由 74LS273 和 74ls02 构成,实现了扩展并行 I/O 接口的功能,可以实 现单价,起步价,显示和修改时间。本课设主要了解应用单片机的定时器/计数器,以及中 断。 这是一个比较小的系统, 故采用汇编语言来编辑。 汇编语言是一种编译型程序设计语言, 它具有编译速度快,占用系统空间小,具有一定的助记可读性等特点。 关键词关键词:单片机,多功能,定时器/计数器 Taxi meter system design Abstract :This paper introduces a kind of with AT89C51 multifunctional meter taxi.A function, Based on the overall scheme selection of two schemes are compared, the software design using assembly language, for all chip in a taxi in the role of the meter is based on the analysis of the overall design scheme is analyzed. Single chip microcomputer meter taxi and widely used in all kinds of the control system. We have done based on single chip microcomputer taxi valuation system that USES AT89C51 serial. communication control, fully displays the single chip microcomputer application in serial communication. The meter is based on single-chip microcontroller and by external circuit. Using AT89C51 full-duplex serial communication, its external display circuit by 74LS273 and 74ls02 constitute, expand parallel I/O interface unit can realize the function, and started, display and modification time. This course mainly about the chip set the timer interruption, and counter /. This is a relatively small system, assembly language editing. The assembler language is a compilation of programming language, it has the compilation speed, small, have certain space system of mnemonic readability, etc. Keywords: SCM, multi-function, timer/counters 1 前言 出租汽车服务行业和出租汽车计价器紧密相关, 因为出租汽车必须安装出租汽车计价器 才能投入营运。 出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行 计价, 并直接显示车费值的计量器具。 计价器是出租汽车的经营者和乘坐出租汽车的消费者 之间用于公平贸易结算的工具, 因而计价器计价准确与否, 直接关系到经营者和消费者的经 济利益。依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器 具之一, 也是近年来国家质量技术监督部门强化管理的六类重点计量器具之一。 随着社会进 步,出租车已经越来越贴近生活,成为我们重要的交通工具,影响着我们现在的生活,出租 文化已成为一种显著的文化,成为社会生活的组成部分。出租车计费系统,关系司机和乘客 的切身利益, 也是问题纠纷的焦点。 本设计通过运用单片机设计的出租车计价器, 简单易懂, 是学习电子课程的一个综合性实验,有助于提高分析问题能力。本电路以 89C51 单片机为 中心、附加 74LS273 芯片和 74LS02 或非门,实现对出租车计价统计。 随着单片机性能不断提高而价格却不断下降, 单片机控制在越来越多的领域得以应用。 按照传统的模式, 在整个项目开发过程中, 先根据控制系统要求设计原理图, PCB 电路图绘 制, 电路板制作, 元器件的焊接, 然后进行软件编程, 通过仿真器对系统硬件和软件调试, 最后将调试成功的程序固化到单片机中。这一过程中的主要问题是, 应用程序需要在硬件完 成的情况下才能进行调试。虽然有的软件可以进行模拟调试, 但是对于一些复杂的程序如人 机交互程序, 在没有硬件的时候, 没有界面的真实感, 给调试带来困难。在软硬件的配合中 如需要修改硬件, 要重新制板, 在时间和投入上带来很大的麻烦。纵观整个过程, 无论是从 硬件成本上, 还是从调试周期上, 传统开发模式的效率有待提高。能否只使用一种开发工具 兼顾仿真, 调试, 制板, 以及最大限度的软件模拟来作为单片机的开发平台, 用它取代编程 器、仿真器、成品前的硬件测试等工作是广大单片机开发者的梦想。 2元器件简介 本电路主要由 AT89C51 单片机和外部电路组成,外部电路有 74LS273 芯片和 74LS02 或 非门等主要元器件。下面是对以上主要元器件的简单介绍: 2.12.1AT89C51AT89C51 的硬件资源的硬件资源 2.1.12.1.1 单片机的概念单片机的概念 单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计 算机。这些部件包括中央处理器 CPU、数据存储器 RAM、程序存储器 ROM、定时器/计数器和 多种 I/O 接口电路。图 2-1 是 80C51 单片机的基本结构图: 图图 2-12-1 89C5189C51 单片机的基本结构图单片机的基本结构图 89C51 单片机的结构特点有以下几点: 8 位 CPU; 片内振荡器及时钟电路; 32 根 I/O 线; 外部存储器 ROM 和 RAM,寻址范围各 64KB; 两个 16 位的定时器/计数器; 5 个中断源,2 个中断优先级; 全双工串行口; 布尔处理器; 定时器/计数器 89C51 内部有两个 16 位可编程定时器/计数器,记为 T0 和 T1。16 位是指它们都是 由 16 个触发器构成,故最大计数模值为 2 16 -1。可编程是指他们的工作方式由指令来 设定,或者当计数器来用,或者当定时器来用,并且计数(定时)的范围也可以由指令 来设置。这种控制功能是通过定时器方式控制寄存器 TMOD 来完成的. 如果需要, 定时器在计到规定的定时值时可以向 CPU 发出中断申请, 从而完成某种 定时的控制功能。在计数状态下同样也可以申请中断。定时器控制寄存器 TCON 用来负 责定时器的启动、停止以及中断管理 在定时工作时,时钟由单片机内部提供,即系统时钟经过 12 分频后作为定时器的 时钟。技术工作时,时钟脉冲由 TO 和 T1 输入。 中断系统 89C51 的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器 /计数器中断以及一个串行口中断。 外部中断申请通过 INTO 和 INT1(即 P3.2 和 P3.3)输入,输入方式可以是电平触 发(低电平有效) ,也可以是边沿触发(下降沿有效) 。两个定时器中断请求是当定时器 溢出时向 CPU 提出的, 即当定时器由状态 1 转为全零时提出的。 第五个中断请求是由串 行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。 2.1.22.1.2 89C5189C51 的芯片引脚图的芯片引脚图 VCC:供电电压。 GND:接地。图图 2-22-2 89C5189C51 引脚图引脚图 P0 口:P0 口为一个 8 位漏极开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管 脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为 数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口, P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时, 将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接 收。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口, P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。因此作为输入时, P2 口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。P2 口当用于外部程序存 储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。当对外部八位地址 数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时 接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。 当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为 低电平,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/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉 冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然 而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可 在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该 引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两 次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是 否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平 时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 2.1.32.1.3 使用使用 I/OI/O 口的注意事项口的注意事项 (1) P1,P2,P3 口的输出缓冲器可驱动 4 个 LSTTL 电路。 对于 HCMOS 芯片单片机的 I/O 口,在正常情况下,可任意由 TTL 或 NMOS 电路驱动。HMOS 及 CMOS 性的单片机 I/O 口有集 电极开路或漏极开路的输出来驱动时,不必外加上拉电阻。 (2)对于 74LS 系列,CD4000 系列以及一些大规模集成电路芯片(如 8155,8253,8279 等) ,都可以和 MCS-51 系列单片机直接接口。具体使用时,可以查阅有关器件手册或参考典 型电路。 (3)对一些线性组件,特别是应用键盘、码盘、LED 显示器等输入/输出设备时,应当 尽量增加驱动部分的容量,否则,单片机将提供不出足够的驱动电流供给负载使用。 2.22.289C5189C51 中断系统中断系统 所谓中断, 是指当计算机执行正常程序时, 系统中出现某些急需处理的异常情况和特殊 情求,CPU 暂停执行现行程序,转去对随机发生地更紧迫事件进行处理;处理完毕后,CPU 自动返回原来的程序继续执行。 中断允许软件设计不需要关心系统其他部分定时要求, 算术程序不需要考虑隔几个指令 检查 I/O 设备是否需要服务。 相反, 算术程序编写时好像有无限的时间作算术运算而无其他 工作在进行。若其它事件需要服务时,则通过中断告诉系统。 89C51 单片机有 5 个中断源,有两个中断优先级,每个中断源的优先级可以编程控制。 中断允许受到 CPU 开中断和中断源开中断的两级控制。 2.2.12.2.1 中断源中断源 中断源是指任何引起计算机中断的事件,一般一台机器允许有许多个中断源。89C51 系 列单片机至少有 5 个中断源。增加很少的硬件就可把各种硬件中断源“线或”成为一个外部 中断输入,然后再顺序检索一起中断的特定源。 89C51 单片机的 5 个中断源是: 1外部中断请求 0,由0INT(P3.2)输入; 2外部中断请求 1,由1INT(P3.3)输入; 3片内定时器/计数器 0 益处中断请求; 4片内定时器/计数器 1 溢出中断请求; 5片内串行口发送/接收中断请求; 为了了解每个中断源是否产生了中断请求,中断系统应设置许多个中断请。 求触发器(标志位)实现记忆。这些中断源请求标志位分别有特殊功能寄存器 TCON 和 SCON 的相应位锁存。 定时器/计数器控制寄存器 TCON,它是一个八位的寄存器,各位如下表所示 表 21 TF1TF0IE1IT1IE0IT0 IT0,IT1:外部中断 0、1 触发方式选择位,由软件设置。1 是下降沿触发, 0 是电平触发。 IE0,IE1:外部终端 0、1 请求标志位。 TF0,TF1:定时器/计数器 0、1 溢出中断请求标志。 2.2.22.2.2 中断的控制中断的控制 中断的控制主要实现中断的开关管理和中断优先级的管理。 这个管理主要通过对特殊 功能寄存器 IE 和 IP 的编程实现。 (1)中断允许寄存器 IE 表 22 EA-ET2ESET1EX1ET0EX0 EX0,EX1:外部终端 0,1 的中断允许位。1 是中断开,0 是中断关 ET0,ET1:定时器/计数器 0、1 溢出中断允许位。1 是开中断,0 是关中断 ES:串行口中断允许位。1 是中断开,0 是中断关 ET2:定时器/计数器 2 溢出中断位 EA:CPU 开/关中断控制位。1 是开中断,0 是关中断 (2)中断优先级寄存器 IP 表 23 PSPT1PX1PT0PX0 若系统中多个中断源同时请求中断, 则 CPU 按中断源的优先级别, 由高到低分别响应。 89C51 单片机有两个中断优先级:高优先级和低优先级。每个中断源都可以编程为高 优先级。这可以实现两级中断嵌套。嵌套的原则:一个正在执行的中断服务程序可以被高级 的中断请求中断,而不能被同级或较低级的中断请求中断。两级中断通过使用 IP 寄存器设 置,相应的位置 1,则优先级高,0 则优先级低。 PX0、PX1:终端 0、1 中断优先级控制; PT0、PT1:定时器/计数器 0、1 中断优先级控制。 PS:串行口中断优先级控制。 89C51 复位时,IP 被清零,5 个中断源都在同一个优先级。这时若其中几个中断源同 时产生中断请求, 则 CPU 按照片内硬件优先级链路的顺序相应中断, 硬件优先级由高到低的 顺序是: 外部终端 0定时器/计数器 0外部中断 1定时器/计数器 1串行 口中断。 2.2.32.2.3 中断响应中断响应 89C51 的 CPU 在每个机器周期采样中断源的中断请求标志位, 如果没有上述阻止条件, 则将在下一个机器周期响应被激活的最高级中断请求。阻止条件如下: 1CPU 正在处理同级或更高级的中断; 2现行机器周期不是所执行指令的最后一个机器周期; 3正在执行的是 RETI 或者是访问 IE 或 IP 的指令; CPU 在中断响应之后完成如下操作: 1硬件清除相应的中断标志位; 2执行一条硬件子程序,保护断点,并转向中断服务程序入口。 3结束中断时执行 RETI 指令,恢复断点,返回主程序。 89C51 的 CPU 在相应中断请求时,由硬件电路自动形成转向与该中断源对应的中断的 服务程序入口地址。这种方法为硬件向量中断法。 各中断源的中断服务程序入口地址如下: 表 24 编号中断源入口地址 0外部终端 00003H 1定时器/计数器 0000BH 2外部终端 10013H 3定时器/计数器 1001BH 4串行口中断0023H 各中断服务程序入口地址仅隔 8 个字节, 编译器在这些地址放入无条件转移指令, 跳到 服务程序的实际地址。 向量中断包括把先前的程序计数指针推入堆栈, 中断服务程序很像其他子程序。 当向量 中断发生时,硬件禁止所有中断。此时表明外部中断或定时器溢出的标志位由硬件清除。中 断服务程序的不同分支取决于中断源。在重新允许全局 CPU 中断 EA 之前,必须仔细清除各 种标志。标志会引起立即地重复中断。89C51 对终端实际上有特殊的返回指令-RETI。不 是 RET。RETI 重新允许系统识别其他中断。因而,没必要在正常使用中断时复位 EA,只要 在程序初始化时开中断一次就可以了。 2.32.3单片机定时器单片机定时器/ /计数器的使用计数器的使用 89C51 系列单片机至少有两个 16 位内部定时器/计数器。8952 有三个定时器/计数器, 其中连个基本定时器/计数器是定时器/计数器 0 和定时器/计数器 1。他们既可以编程为定 时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计 数 89C51 的输入引脚的脉冲信号,则它是计数器。 89C51 的 T/C 时加一计数的。定时器实际上也是工作在技术方式下的,只不过对固定频 率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。 当 T/C 工作在定时器时,对振荡源 12 分频的脉冲计数,即每个机器周期计数值加一, 频率加=fosc/12。晶振为 6MHz,计数频率=500KHz,每 2uS 计数加一。 当 T/C 工作在计数器时, 计数脉冲来自外部脉冲输入引脚 T0 或 T1。 当 T0 或 T1 脚上负 跳变需 2 个机器周期,即 24 个振荡周期。所以 T0 或 T1 脚输入的计数外部脉冲的最高频率 为 fosc/12。当晶振为 12MHz 时,最高技术频率为 500KHz,高于此频率将计数出错。 2.3.12.3.1 与与 T/CT/C 有关的特殊功能寄存器有关的特殊功能寄存器 (1)计数寄存器 TH 和 TL T/C 是 16 位的,计数寄存器有 TH 高 8 位 TL 低 8 位构成。在特殊功能寄存器中,对应 T/C0为TH0和TL0; 对应T/C1为TH1和TL1。 定时器/计数器的初始值通过TH1/TL1和TH0/TL0 设置 (2)定时器/计数器控制寄存器 TCON 表 25 TR1TR0 TR0、TR1:定时器/计数器 0、1 启动控制位。1 是启动,0 是停止 TCON 复位后清零,T/C 需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位 TF,即溢出中断请求标志 T/C 的方式控制寄存器 TMOD 表 26 GATEC/TM1M0GATEC/TM1M0 C/T:计数器或定时器选择位。1 位计数器,0 位定时器 GATE: 门控信号。 1 时 T/C 的启动控制受到双重控制, 即要求 TR0/TR1 和 INT0/INT1 同时为高;0 时 T/C 的启动仅受 TR0/TR1 控制。 M1 和 M0:工作方式选择位,具体见下表 表 27 M1M0方式功能 000为 13 位定时器/计数器,TL 存低 5 位,TH 存高 8 位 011为 16 定时器/计数器,TL 存低 8,TH 存高 8 位 102常数自动装入的 8 位定时器/计数器 113仅适用于 T/C0,两个 8 为定时器/计数器 2.3.22.3.2 定时器定时器/ /计数器的初始化计数器的初始化 (1)初始化步骤 在使用 89C51 的定时器/计数器前,应对它进行编程初始化,主要是对 TCON 和 TMOD 编 程,还需要计算和装载 T/C 的计数初值。一般完成以下几个步骤: 1确定 T/C 的工作方式-编程 TMOD 寄存器。 2计算 T/C 中的计数初值,并装载到 TH 和 TL。 3T/C 在中断方式工作时,须开 CPU 中断和源中断-编程 IE 寄存器。 4启动定时器/计数器-编程 TCON 中 TR1 和 TR0 位 (2)计数初值的计算 在定时器方式下, T/C 是对机器周期脉冲计数的, 如果 fosc=6MHz, 一个机器周期为 2us, 则 方式 013 位定时器最大时间间隔=(213-1)*2us=16.384ms; 方式 116 位定时器最大时间间隔=(216-1)*2us=131.072ms; 方式 28 位时器最大时间间隔=(2 8 -1)*2us=512us 若使 T/C 工作在定时器方式 1,要求定时 1ms,求计数初值。如设计数初值为 x,则有 (216-1)*2us=1000us x=216-500 因此,TH,TL 可置 65536-500。 2.42.474LS27374LS273 和和 74LS0274LS02 简介:简介: 图图 2-32-374LS27374LS273 管脚图管脚图 引脚功能: 74LS273 是 8 位数据/地址锁存器。 74LS273 是一种带清除功能的 8D 触发器, 1D8D 为数据输入端,1Q8Q 为数据输出端,正脉冲触发,低电平清除,常用作 8 位地址 锁存器。 图图 2-42-4 74LS0274LS02 管脚图管脚图 引脚功能:74LS02 是四二输入或非门。该芯片有四个或非门公选择,如 1A 或 1B 后, 经过非门再输出,只有当输入的两个变量同时为 0 时,输出才为 1。具有缓冲倒相功能。 3方案论证 本章是根据论文的要求分析了论文的主要任务。 继而概括出整个设计的主要思想和确定 出设计方案。 2.1 任务分析 单片机应用系统可以分为只能仪器表和工业测控系统两大类, 无论哪仪类, 都必须以市 场需求为前提。所以,在系统设计前,首先要进行广泛的市场调查,了解该系统的时常应用 概况,以分析系统当前存在的问题,研究系统的时市场前景,确定市场开发设计的目的和目 标。简单地说,就是通过调研克服旧缺点,开发新功能。 根据论文的设计要求: (1)熟悉 Keil 编程环境; (2)熟悉有关单片机的理论知识; (3)给出设计方案; 此次的设计先从硬件设计上着手。 先要整理出出租车计价系统的整体思路。 确定方案设 计中需要的硬件设备。我们在确定了大的方向基础上,就应该对系统实现进行规划。包括应 该采集的信号种种类、数量、范围,输出信号的匹配和转换,技术指标的确定等。 2.1 任务分析 本课设可以通过数字电路控制来实现, 也可以通过单片机控制来实现。 以上 2 种方案都 有自己的优点和不足之处,以下是我们将 2 种方案进行比较: 方案一方案一:采用数字电路控制。其原理方框图如图 11 所示。采用传感器件,输出脉冲 信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性 能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。 显示所需价格显示所用时间 移位寄存器,译码电路,驱动 电路等等 电源部分 图图 3-13-1 采用数字电路控制方法采用数字电路控制方法 方案二方案二:采用单片机控制。利用单片机丰富的 I/O 端口,及控制灵活性,实现基本的里 程计价功能和几个调节、时间显示功能。利用预先嵌入的程序来控制单片机工作,从而得到 想要的预先结果。其原理如图 1-2 所示。 AT89C51 显示所用 时间 显示所需 价格 I/O 口驱动电路 电源部分 开关按钮 锁存器 图图 3-23-2采用单片机控制方法采用单片机控制方法 方案比较方案比较: 通过以上两种方案框图, 我们可以看到用单片机来实现, 有较大的活动空间, 不但能实现所要求的功能,而且能在很大的程度上扩展功能,还能对系统进行升级,故我们 采用后一种方案。 4出租车出租车计价计价器器系统系统设计设计 4.14.1硬件设计硬件设计 图图 4-14-1整体硬件电路图整体硬件电路图 由上图我们可以清楚地看到, 本电路控制核心是 AT89C51 芯片。 该方案我们采用动态显 示的方法。动态显示的优点是,它占用 CPU 的时间少,每次只把一个数据送到外部接口,虽 然我们仿真看到的是全部数码管都亮着, 那是因为动态显示的时间比较快, 超过我们人眼的 辨别能力。若我们在仿真的时候暂停一下,就可以清楚地看到,时间单元和价格单元分别只 显示一位。静态显示,是每一个数码管不论在什么时候都点亮,占用 CPU 的时间很多。按键 主要控制系统的初始化、开始工作、数据锁存三项工作。刚开始上电,则所有的数码管同时 显示全 0 状态,当第一次按下开关,价格从起步价 006.0 元开始计费,等待是否超过三公里 以及计算,时间单元则从 00.00.00 开始计时,一秒一秒往上加。P0 口作为数据总线口,分 别把数据输送到 4 个 74LS273 地址锁存器中, 而锁存器的工作需要等待脉冲的到来。 脉冲通 过写地址有些端口 p3.6 和端口 p2.0-p2.3 经过或非门来产生。只有当把数据送到外部接口 时,p3.6 口才为低电平,p2.0-p2.3 用来控制到底是把数据送往哪一个锁存器。 算法公式是:费用=起步价+(路程-3)*1.2 路程=速度*时间 (速度恒定,60Km/h,也就是 1Km/min) 若路程小于等于 3,则收起步价 6 元,否则按费用公式算。 由于速度恒定,所以计算的核心是时间,只要判断时间超出 3 分钟,则费用公式就开始 计算,没多出一公里,费用就加上 1.2 元,一分钟一公里来计算,因此本设计比较简单。时 间单元由单片机的定时器/计数器来计算,延时 1ms 时间的初值由程序来设定。 4.24.2 软件设计软件设计 4.2.14.2.1 模块介绍模块介绍 该计费器系统的软件设计分为一下几个模块: (1) 主程序模块 在主程序模块中,需要完成对个接口芯片的初始化、出租车起步价和单价、中断向量的 设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存 器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的 内容,分别完成启动、清除、计程和计价等不同的操作。流程图如 2-4 所示。 当按下轻触开关时,开始对系统初始化,价格和时间都显示 0、0,再次按下开关,时 间单元开始计时,并计算时间是否超过 3 分钟,超过 3 分钟,则从第 4 分钟开始计费。价格 单元从起步价 6.0 元开始计费,每多一分钟,价格单元多加 1.2 元。 (2)显示子程序模块 由于显示是由显示时间子程序 DIS1 和显示价格子程序 DIS 组成的,时间由小时、 分、秒三个单元组成,共六个数码管。价格由元和角两个单元组成,最大可以显示 999.9 元。 4.2.24.2.2 程序流程图程序流程图 各缓冲区初始 开始 对定时器中断设置 开始计数 显示缓冲单元首址送 R0 扫描初值送 R2 取显示单元值, 转为段显 码送段数据口 扫描值送位数据口P0 让调整位的 DP 点亮 延时一小段时间 显示单元地址加一 显示状态是否切换查询 6 位显示完? 取段码送到显示缓冲区 N Y 分调整? YN 在显示的低位断码上加 80H,即点亮 DP。 查询下一个调整位 图图 4-24-2 程序流程程序流程 4.1 编程 KEIL 环境介绍 KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统, 与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 用过汇编语言后再使用 C 来开发,体会更加深刻。 KeilC51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界 面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 KeilC51 生成的目 标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能 体现高级语言的优势。KEILC51 标准 C 编译器为 89C51 微控制器的软件开发提供了 C 语言 环境,同时保留了汇编代码高效,快速的特点。C51 编译器的功能不断增强,更加贴近 CPU 本 身,及其它的衍生产品。C51 已被完全集成到 uVision2 的集成开发环境中,这个集成开发 环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE 可为它 们提供单一而灵活的开发环境。 5.3 调试与仿真 打开 Keil u Vision3,新建 Keil 项目,选择 AT89C51 单片机作为 CPU,新建汇编源文 件,编写程序,并将其导入到“Source Group 1”中。在“Options for Target”对话窗口 中, 选中 “Output”选项卡中的 “Create HEX File”选项和 “Debug”选项卡中的 “Use:Proteus VSM Simulator”选项。编译汇编源程序,改正程序中的错误。 打开 Proteus ISIS 编辑环境,添加所需要的元器件。 元件全部添加后,在 Proteus ISIS 的编辑区域中按图 5-2 所示的原理图连接硬件电路。 在 Proteus ISIS 中,选中 AT89C51 并单击鼠标左键,打开“Edit Component”对话窗 口,设置单片机晶振频率为 12MHz,在此窗口中的“Program File”栏中,选择先前用 Keil 生成的.HEK 文件。在 Proteus ISIS 的菜单栏中选择“File”“Save Design”选项,保 存设计。在 Proteus ISIS 的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“Use Remote Debug Monitor”选项,以支持与 Keil 的联合调试。 在 Keil 的菜单栏中选择“Debug” “Start/Stop Debug Session”选项,进入程序 调试环境。按“F5”键,顺序运行程序。 5 5 总结体会总结体会 本课设是我第一次比较系统完成的一次设计。在本次设计中我从选题,搜集资料,电路 设计到硬件电路的调试以及程序的调试, 软件的仿真, 比较系统的接触整个过程的各个环节, 从中受益匪浅。学会了几种软件,如 KEIL、PROTEUS、TKStudio 等。本课设基本上实现了设 计任务所要求的功能, 但由于时间的紧迫, 有许多本可以做的地方, 该课设没有做到。 例如: 对于里程及速度的计算,需要用到霍尔传感器;单价也没有变化,应该分为白天和晚上来计 算不同的单价;也没有等候时间收费问题,应该加一个等候时间收费设置;按键也只是用一 个来控制所有的功能,不够灵活。尽管如此,这次设计是对大学所学知识的一次综合运用, 增强了我理论结合实践能力。 通过本课设我进一步加深了对 51 系列单片机、74LS 系列产品的了解和应用,增强了我 对电路分析能力以及自学能力这为我以后的学习打下了良好的基础。 经过三个礼拜的努力,课设顺利地完成了!这一过程让我学得了很多平时没有学到的知 识。 本次课设是主要是对单片机知识的一次综合运用,也是由理论结合实践的第一步,为我以后 的学习奠定了良好的基础。经过这次课程设计,我对单片机系统有了更加清楚地认识,知道了 所学知识的重要性,对设计的过程与步骤以及应注意的细节都有了更为深刻的理解和领会。设 计中遇到了许多平时没有遇到的问题,但是,在葛老师的精心指点,以及在同组同学的帮助下, 基本上得到了解决。 在和同学一起做仿真实验时,使我认识到仿真软件的重要性,例如 Proteus 它除了其具 有和其它 EDA 工具一样的原理布图、PCB 自动或人工布线及电路仿真的功能外,其革命性的 功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原 型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效 果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus 为您建立 了完备的电子设计开发环境! Proteus 组合了高级原理布图、混合模式 SPICE 仿真,PCB 设 计以及自动布线来实现一个完整的电子设计系统。用户甚至可以实时采用诸如 LED/LCD、键 盘、RS232 终端等动态外设模型来对设计进行交互仿真。 其功能模块:个易用而又功能强大的 ISI

温馨提示

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

评论

0/150

提交评论