基于AT89C51单片机的出租车计价器系统设计.doc_第1页
基于AT89C51单片机的出租车计价器系统设计.doc_第2页
基于AT89C51单片机的出租车计价器系统设计.doc_第3页
基于AT89C51单片机的出租车计价器系统设计.doc_第4页
基于AT89C51单片机的出租车计价器系统设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

四川师范大学成都学院电子工程系课程设计报告 摘摘要 要 随着出租车行业的发展 对出租车计费器的要求也越来越高 二十世纪后半期 随着集成 电路和计算机技术的飞速发展 单片机技术也得到了飞速发展 基于单片机的出租车计费器不仅可以 解决电子系统小型化 低功耗 高可靠性等问题 而且其开发周期短 开发软件投入少 芯片价格不 断降低 特别是对小批量 多品种的产品需求 单片机具有体积小 功能强可靠性高 价格低廉等一 系列优点 不仅已成为工业测控领域普遍采用的智能化控制工具 而且已渗入到人们工作和和生活的 各个角落 有力地推动了各行业的技术改造和产品的更新换代 应用前景广阔 使用单片机的外围 电路比较简单 在时间计数和速度的计算上便于扩展功能很 系统能够实现升级 很多数值可以预 先写到芯片中 本设计假设速度恒定为 60Km h 即 1Km min 本设计主要了解应用单片机的定时器 计数器 以及中断 这是一个比较小的系统 故采用汇编 语言来编辑 汇编语言是一种编译型程序设计语言 它具有编译速度快 占用系统空间小 具有一定 的助记可读性等特点 本系统假设速度恒定 60Km h 1Km min 单价一定 1 3 元 Km 起步价 5 0 元 超过三公里开始计 费 每公里加 1 3 元 关键词关键词 出租车计费器 AT89C51 定时器 计数器 Abstract As the taxi industry taxi meters on the request also getting higher and higher The latter half of the 20th century along with integrated circuits and the rapid development of computer technology SCM technology has been developing rapidly based on SCM taxi meters can not only solve the electronic system of small low power high Reliability and other issues and its short development cycle a smaller software development chip prices are lower especially for small quantities and more varieties of product demand MCU is small in size high reliability and strong features such as a low price Series of advantages not only has become widely adopted in the field of industrial measurement and control of intelligent control but also to have infiltrated into people s work and life and every corner of a powerful impetus to the technological transformation of various industries and the upgrading of products the application of a broad prospect SCM use of the relatively simple external circuit in time count and the speed of calculation is very easy expansion of functions the system can be realized upgrade Numerical wrote a lot of chips in advance The curriculum design assumptions for the constant speed of 60 Km h that is 1 Km min Learn this lesson a major application MCU timer counter and disruption This is a 四川师范大学成都学院电子工程系课程设计报告 relatively small system the use of assembly language to edit Compilation of language is a compiler based programming language it has compiled fast occupy space on the system have some help in mind the characteristics of readability The system assumed a constant speed of 60 Km h 1Km min priced some 1 3 yuan Km with fares starting 5 0 yuan accounting began more than three kilometers and 1 3 yuan per km Key words axi billing AT89C51 imer counter 目录目录 1 1 前言前言 1 1 1 我国出租车的发展 1 1 2 现阶段出租车计价器的要求 2 2 2 单片单片机机 89C89C5 51 1 的的简简介介 4 2 1 主芯片 89C51 的硬件资源 4 2 1 1 单片机的概念 4 2 1 2 89C51 的芯片引脚图 4 2 1 3 使用 I O 口的注意事项 6 2 2 89C51 中断系统 6 2 2 1 中断源 6 2 2 2 中断的控制 7 2 2 3 中断响应 7 2 3 单片机定时器 计数器的使用 8 2 3 1 与 T C 有关的特殊功能寄存器 9 2 3 2 定时器 计数器的初始化 9 3 3 计价器计价器系系统统设设计计 11 3 1 硬件设计 11 3 1 1 整体硬件电路图 11 3 1 2 74LS273 和 74LS02 简介 12 3 2 软件设计 13 3 2 1 模块介绍 13 3 2 2 程序流程图 14 结束语 25 参考文献 25 四川师范大学成都学院电子工程系课程设计报告 1 1 1 前前 言言 1 11 1 我国出租车的发展我国出租车的发展 20 世纪 20 30 年代是我国城市出租汽车行业的大发展时期 20 年代初 北京自用及 营运汽车有 1231 辆 出租汽车行达 51 家 据统计 上海市于 2933 1934 年间 有出租汽 车行达 91 家 营业站 153 处 营运汽车达 1151 辆 20 年代末 哈尔滨由于外国侨民剧 增 使得出租汽车增多 在 500 辆 1934 年 河南出现了最早的出租汽车 开封有了首家私人出租车户 经营 5 辆小客 车 1935 年 河南长途汽车营业部购进 3 辆福特牌小客车 也在市区经营出租业务 当 时 因出租车很时髦 用户多是豪绅富商 他们走官场 讲阔气 不惜高价租用 所以 出租车的营业状况较好 抗日战争爆发后 国土的沦陷 战争的纷扰 出租汽车发展受到冲击 数量急剧减 少 至 1942 年 北京出租汽车行减少到 48 家 营运汽车约 446 辆 以后逐渐萎缩 至 1946 年 仅剩出租汽车 303 辆 上海在此期间 出租汽车行仅存 30 家 至 1948 年 出 租汽车行仅有 51 家 车数减少到 705 辆 中华人民共和国成立初期 出租汽车主要由两种成分组成 一种为私有制的出租汽 车 这种成分由于服务对象发生变化 客流量下降 加上车辆难以更新 营运车辆日趋 减少 到 1956 年前 北京市出租一汽车行仅剩 30 家 另一种成分为公有制事业单位 主要是为了满足接待外宾来访和重要会议需要 由各省市人民政府组建成的汽车公司和 汽车队 50 年代末至 60 年代初 国家旅游主管部门为适应旅游事业发展的需要 先后 在各地组建了旅游汽车队 文革 时期 乘出租车被称为 四旧 受到批判 车辆大 量停驶 出租汽车行业处于奄奄一息状态 当时 北京市仅有出租汽车 200 多辆 其他 城市出租汽车也为数不多 1978 年 12 月 党的十一届三中全会召开以后 国家实行了改革开放政策 城市经 济日益繁荣 对外经济文化交流日益频繁 人民生活有了很大的改善和提高 出租汽车 不再是北京 上海 天津及广州 哈尔滨等大城市的专利 全国很多中小城市在 1980 年 以后也出现了出租汽车 且连续出现几次高速发展浪潮 国家为解决群众 乘车难 问 题 满足不同层次乘客出行的需要 对出租汽车行实行国营 集体 个人一起上 各行 各业均可参与经营出租汽车的政策 为出租汽车行业的发展带来了契机 80 年代后期至 90 年代 形成了快速发展的态势 根据市场发展的需要 国家有关部委相继颁布了出租 汽车行业的管理规定 各地政府也根据本地实际制定了不少出租汽车管理办法 使出租 汽车行业逐步走上了规范化 正规化的法制管理轨道 四川师范大学成都学院电子工程系课程设计报告 2 1 21 2 现阶段出租车计价器的要求现阶段出租车计价器的要求 随着出租车行业的发展 对出租车计费器的要求也越来越高 用户不仅要求计费器 性能稳定 计费准确 有防作弊功能 同时还要求其具有车票资料打印 IC 卡付费 语音报话 和电脑串行通信等功能 通常 设计出租车计费器面临以下三方面的问题 1 不同国家和地区的计费方式存在差异 有些地区有夜间收费及郊区收费等 而 有些地区则无夜间收费和郊区收费 即使同一地区 不同车型的出租车 其计费方式也 有差别 另一方面 出租车还面临几年一次的调价或调整计费方式等问题 因此 所设 计的计费器不仅要能满足不同国家和地区的要求 而且计费方式的调整也应当很方便 2 由于个别地区对计费器有特殊要求 有时必须修改软件 另外 计费器还面临 软件的升级 因而 所设计的计费器应能很方便地重新编程 3 计费器必须要有防作弊功能 能有效防止司机作弊 同时要防止计费器在营运 过程中死机 为此 设计出一款好的计费器 解决了上述问题是非常必要的 该计费器内设置了 多达 64 个选项 几乎涵盖了大多数国家和地区的出租车计费方式 因此 使用时无需更 改计费器的硬件 而只需更改相应的选项资料 便可适用于不同的国家和地区 且计费 资料的传送可由电脑通过 RS 232 串口或专用的手持式资料传输器来完成 非常方便 由 于采用了具有单片机 AT58C51 因此 编程时无需将单片机从电路板上取下 就可以直 接对单片机进行编程 另外 该设计还采用单 双信号防作弊技术和看门狗电路 较好 地解决了计费器的作弊现象及死机问题 目前 该计费器已在许多大中城市得到了广泛 的应用 四川师范大学成都学院电子工程系课程设计报告 3 2 2 单片机单片机 89C5189C51 的简介的简介 2 12 1 主芯片主芯片 89C5189C51 的硬件资源的硬件资源 2 1 12 1 1 单片机的概念 单片机 microcontroller 又称微控制器 是在一块硅片上集成了各种部件的微型 计算机 这些部件包括中央处理器 CPU 数据存储器 RAM 程序存储器 ROM 定时器 计 数器和多种 I O 接口电路 图 4 1 是 80C51 单片机的基本结构图 a 89C51 单片机的结构特点有以下几点 8 位 CPU 片内振荡器及时钟电路 32 根 I O 线 外部存储器 ROM 和 RAM 寻址范围各 64KB 两个 16 位的定时器 计数器 5 个中断源 2 个中断优先级 全双工串行口 布尔处理器 b 定时器 计数器 89C51 内部有两个 16 位可编程定时器 计数器 记为 T0 和 T1 16 位是指它们都是 图 4 1 89C51 结构方框图 中断控制器 4KB ROM 定时 计数器 C T0 C T1 128B RAM CPU 4个I O 口 总线控制 OSC 串行口 INT0INT1 XTAL1XTAL2 ALEPESNRDWR T1 RXD P3 P1P0 TXD P2 T0 四川师范大学成都学院电子工程系课程设计报告 4 由 16 个触发器构成 故最大计数模值为 2 1 可编程是指他们的工作方式由指令来设定 或者当计数器来用 或者当定时器来用 并且计数 定时 的范围也可以由指令来设置 这种控制功能是通过定时器方式控制寄存器 TMOD 来完成的 如果需要 定时器在计到规定的定时值时可以向 CPU 发出中断申请 从而完成某种 定时的控制功能 在计数状态下同样也可以申请中断 定时器控制寄存器 TCON 用来负责 定时器的启动 停止以及中断管理 在定时工作时 时钟由单片机内部提供 即系统时钟经过 12 分频后作为定时器的时 钟 技术工作时 时钟脉冲由 TO 和 T1 输入 c 中断系统 89C51 的中断系统允许接受五个独立的中断源 即两个外部中断申请 两个定时器 计数器中断以及一个串行口中断 外部中断申请通过 INTO 和 INT1 即 P3 2 和 P3 3 输入 输入方式可以是电平触发 低电平有效 也可以是边沿触发 下降沿有效 两个定时器中断请求是当定时器溢 出时向 CPU 提出的 即当定时器由状态 1 转为全零时提出的 第五个中断请求是由串行 口发出的 串行口每发送完一个数据或接收完一个数据 就可提出一次中断请求 2 1 22 1 2 89C5189C51 的芯片引脚图的芯片引脚图 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏极开路双向 I O 口 每脚可吸收 8TTL 门电流 当 P1 口的 管脚第一次写 1 时 被定义为高阻输入 P0 能够用于外部程序数据存储器 它可以被定 义为数据 地址的第八位 在 FIASH 编程时 P0 口作为原码输入口 当 FIASH 进行校验 时 P0 输出原码 此时 P0 外部必须被拉高 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓冲器能接收输出 图 4 2 89C51 引脚图 四川师范大学成都学院电子工程系课程设计报告 5 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 编程电源 四川师范大学成都学院电子工程系课程设计报告 6 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 2 89C5189C51 中断系统中断系统 所谓中断 是指当计算机执行正常程序时 系统中出现某些急需处理的异常情况和 特殊情求 CPU 暂停执行现行程序 转去对随机发生地更紧迫事件进行处理 处理完毕 后 CPU 自动返回原来的程序继续执行 中断允许软件设计不需要关心系统其他部分定时要求 算术程序不需要考虑隔几个 指令检查 I O 设备是否需要服务 相反 算术程序编写时好像有无限的时间作算术运算 而无其他工作在进行 若其它事件需要服务时 则通过中断告诉系统 89C51 单片机有 5 个中断源 有两个中断优先级 每个中断源的优先级可以编程控 制 中断允许受到 CPU 开中断和中断源开中断的两级控制 2 2 1 中断源中断源 中断源是指任何引起计算机中断的事件 一般一台机器允许有许多个中断源 89C51 系列单片机至少有 5 个中断源 增加很少的硬件就可把各种硬件中断源 线或 成为一 个外部中断输入 然后再顺序检索一起中断的特定源 89C51 单片机的 5 个中断源是 外部中断请求 0 由 P3 2 输入 外部中断请求 1 由 P3 3 输入 片内定时器 计数器 0 益处中断请求 片内定时器 计数器 1 溢出中断请求 片内串行口发送 接收中断请求 为了了解每个中断源是否产生了中断请求 中断系统应设置许多个中断请 求触发器 标志位 实现记忆 这些中断源请求标志位分别有特殊功能寄存器 TCON 四川师范大学成都学院电子工程系课程设计报告 7 和 SCON 的相应位锁存 定时器 计数器控制寄存器 TCON 它是一个八位的寄存器 各位如表 4 1 所示 表 4 1 定时器 计数器控制寄存器 TCON TF1TF0IE1IT1IE0IT0 IT0 IT1 外部中断 0 1 触发方式选择位 由软件设置 1 是下降沿触发 0 是电平 触发 IE0 IE1 外部终端 0 1 请求标志位 TF0 TF1 定时器 计数器 0 1 溢出中断请求标志 2 2 2 中断的控制中断的控制 中断的控制主要实现中断的开关管理和中断优先级的管理 这个管理主要通过对特 殊功能寄存器 IE 和 IP 的编程实现 1 中断允许寄存器 IE 表 4 2 中断允许寄存器 IE 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 表 4 3 中断优先级寄存器 IP PSPT1PX1PT0PX0 若系统中多个中断源同时请求中断 则 CPU 按中断源的优先级别 由高到低分别响 应 89C51 单片机有两个中断优先级 高优先级和低优先级 每个中断源都可以编程为 高优先级 这可以实现两级中断嵌套 嵌套的原则 一个正在执行的中断服务程序可以 被高级的中断请求中断 而不能被同级或较低级的中断请求中断 两级中断通过使用 IP 寄存器设置 相应的位置 1 则优先级高 0 则优先级低 PX0 PX1 终端 0 1 中断优先级控制 PT0 PT1 定时器 计数器 0 1 中断优先级控制 PS 串行口中断优先级控制 89C51 复位时 IP 被清零 5 个中断源都在同一个优先级 这时若其中几个中断源 同时产生中断请求 则 CPU 按照片内硬件优先级链路的顺序相应中断 硬件优先级由高 到低的顺序是 外部终端 0 定时器 计数器 0 外部中断 1 定时器 计数器 1 串行口中 断 四川师范大学成都学院电子工程系课程设计报告 8 2 2 3 中断响应中断响应 89C51 的 CPU 在每个机器周期采样中断源的中断请求标志位 如果没有上述阻止条 件 则将在下一个机器周期响应被激活的最高级中断请求 阻止条件如下 CPU 正在处理同级或更高级的中断 现行机器周期不是所执行指令的最后一个机器周期 正在执行的是 RETI 或者是访问 IE 或 IP 的指令 CPU 在中断响应之后完成如下操作 硬件清除相应的中断标志位 执行一条硬件子程序 保护断点 并转向中断服务程序入口 结束中断时执行 RETI 指令 恢复断点 返回主程序 89C51 的 CPU 在相应中断请求时 由硬件电路自动形成转向与该中断源对应的中断 的服务程序入口地址 这种方法为硬件向量中断法 各中断源的中断服务程序入口地址如下 表 4 4 中断源的中断服务程序入口地址 编号中断源入口地址 0 外部终端 0 0003H 1 定时器 计数器 0 000BH 2 外部终端 1 0013H 3 定时器 计数器 1 001BH 4 串行口中断 0023H 各中断服务程序入口地址仅隔 8 个字节 编译器在这些地址放入无条件转移指令 跳到服务程序的实际地址 向量中断包括把先前的程序计数指针推入堆栈 中断服务程序很像其他子程序 当 向量中断发生时 硬件禁止所有中断 此时表明外部中断或定时器溢出的标志位由硬件 清除 中断服务程序的不同分支取决于中断源 在重新允许全局 CPU 中断 EA 之前 必须 仔细清除各种标志 标志会引起立即地重复中断 89C51 对终端实际上有特殊的返回指 令 RETI 不是 RET RETI 重新允许系统识别其他中断 因而 没必要在正常使用中 断时复位 EA 只要在程序初始化时开中断一次就可以了 2 32 3 单片机定时器单片机定时器 计数器的使用计数器的使用 89C51 系列单片机至少有两个 16 位内部定时器 计数器 8952 有三个定时器 计数器 其中连个基本定时器 计数器是定时器 计数器 0 和定时器 计数器 1 他们既可以编程为 定时器使用 也可以编程为计数器使用 若是计数内部晶振驱动时钟 则它是定时器 若是计数 89C51 的输入引脚的脉冲信号 则它是计数器 89C51 的 T C 时加一计数的 定时器实际上也是工作在技术方式下的 只不过对固 定频率的脉冲计数 由于脉冲周期固定 由计数值可以计算出时间 有定时功能 四川师范大学成都学院电子工程系课程设计报告 9 当 T C 工作在定时器时 对振荡源 12 分频的脉冲计数 即每个机器周期计数值加一 频率加 fosc 12 晶振为 6MHz 计数频率 500KHz 每 2uS 计数加一 当 T C 工作在计数器时 计数脉冲来自外部脉冲输入引脚 T0 或 T1 当 T0 或 T1 脚 上负跳变需 2 个机器周期 即 24 个振荡周期 所以 T0 或 T1 脚输入的计数外部脉冲的最 高频率为 fosc 12 当晶振为 12MHz 时 最高技术频率为 500KHz 高于此频率将计数出 错 2 3 1 与与 T 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 表 4 5 定时器 计数器控制寄存器 TCON TR1TR0 TR0 TR1 定时器 计数器 0 1 启动控制位 1 是启动 0 是停止 TCON 复位后清零 T C 需要受到软件控制才能启动计数 当计数计满时 产生向高 位的进位 TF 即溢出中断请求标志 T C 的方式控制寄存器 TMOD 表 4 6 T C 的方式控制寄存器 TMOD GATEC TM1M0GATEC TM1M0 C T 计数器或定时器选择位 1 位计数器 0 位定时器 GATE 门控信号 1 时 T C 的启动控制受到双重控制 即要求 TR0 TR1 和 INT0 INT1 同时为高 0 时 T C 的启动仅受 TR0 TR1 控制 表 4 7 M1 和 M0 工作方式选择位 M1 M0方式功能 0 00为 13 位定时器 计数器 TL 存低 5 位 TH 存高 8 位 0 11为 16 定时器 计数器 TL 存低 8 TH 存高 8 位 1 02常数自动装入的 8 位定时器 计数器 1 13仅适用于 T C0 两个 8 为定时器 计数器 2 3 2 定时器定时器 计数器的初始化计数器的初始化 1 初始化步骤 在使用 89C51 的定时器 计数器前 应对它进行编程初始化 主要是对 TCON 和 TMOD 编程 还需要计算和装载 T C 的计数初值 一般完成以下几个步骤 确定 T C 的工作方式 编程 TMOD 寄存器 四川师范大学成都学院电子工程系课程设计报告 10 计算 T C 中的计数初值 并装载到 TH 和 TL T C 在中断方式工作时 须开 CPU 中断和源中断 编程 IE 寄存器 启动定时器 计数器 编程 TCON 中 TR1 和 TR0 位 2 计数初值的计算 在定时器方式下 T C 是对机器周期脉冲计数的 如果 fosc 6MHz 一个机器周期为 2us 则 方式 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 1000us x 2 500 因此 TH TL 可置 65536 500 四川师范大学成都学院电子工程系课程设计报告 11 3 3 计价器系统设计计价器系统设计 3 13 1 硬件设计硬件设计 3 1 13 1 1 整体硬件电路图整体硬件电路图 由上图我们可以清楚地看到 本电路控制核心是 AT89C51 芯片 该方案我们采用动 态显示的方法 动态显示的优点是 它占用 CPU 的时间少 每次只把一个数据送到外部 接口 虽然我们仿真看到的是全部数码管都亮着 那是因为动态显示的时间比较快 超 过我们人眼的辨别能力 若我们在仿真的时候暂停一下 就可以清楚地看到 时间单元 和价格单元分别只显示一位 静态显示 是每一个数码管不论在什么时候都点亮 占用 图 3 1 整体硬件电路图 四川师范大学成都学院电子工程系课程设计报告 12 CPU 的时间很多 按键主要控制系统的初始化 开始工作 数据锁存三项工作 刚开始 上电 则所有的数码管同时显示全 0 状态 当第一次按下开关 价格从起步价 005 0 元 开始计费 等待是否超过三公里以及计算 时间单元则从 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 分钟 则费用公式就 开始计算 每多出一公里 费用就加上 1 5 元 一分钟一公里来计算 因此本设计比较 简单 时间单元由单片机的定时器 计数器来计算 延时 1ms 时间的初值由程序来设定 3 1 23 1 2 74LS27374LS273 和和 74LS0274LS02 简介简介 引脚功能 74LS273 是 8 位数据 地址锁存器 74LS273 是一种带清除功能的 8D 触发 器 1D 8D 为数据输入端 1Q 8Q 为数据输出端 正脉冲触发 低电平清除 常用作 8 位地址锁存器 图 2 2 74LS273 管脚图 图 3 2 74LS273 管脚图 图 3 3 74LS02 管脚图 四川师范大学成都学院电子工程系课程设计报告 13 引脚功能 74LS02 是四二输入或非门 该芯片有四个或非门公选择 如 1A 或 1B 后 经过非门再输出 只有当输入的两个变量同时为 0 时 输出才为 1 具有缓冲倒相功能 3 23 2 软件设计软件设计 3 2 13 2 1 模块介绍模块介绍 该计费器系统的软件设计分为一下几个模块 1 主程序模块 在主程序模块中 需要完成对个接口芯片的初始化 出租车起步价和单价 中断向 量的设计以及开中断 循环等待等工作 另外 在主程序模块中还需要设置启动 清除标 志寄存器 里程寄存器和价格寄存器 并对它们进行初始化 然后 主程序将根据各标 志寄存器的内容 分别完成启动 清除 计程和计价等不同的操作 流程图如 3 4 所示 当按下轻触开关时 开始对系统初始化 价格和时间都显示 0 0 再次按下开关 时间单元开始计时 并计算时间是否超过 2 分钟 超过 2 分钟 则从第 3 分钟开始计费 价格单元从起步价 5 0 元开始计费 每多一分钟 价格单元多加 1 5 元 2 显示子程序模块 由于显示是由显示时间子程序 DIS1 和显示价格子程序 DIS 组成的 时间由小时 分 秒三个单元组成 共六个数码管 价格由元和角两个单元组成 最大可以显示 999 9 元 四川师范大学成都学院电子工程系课程设计报告 14 3 2 23 2 2 程序流程图程序流程图 各缓冲区初始 化 开始 对定时器中断设置 开始计数 显示缓冲单元首址送 R0 扫描初值送 R2 取显示单元值 转为段 显码送段数据口 段显码送段数据口 扫描值送位数据口 P0 让调整位的 DP 点亮 延时一小段时间 显示单元地址加 1 扫描值右移一位 显示状态是否切换查询 6 位显示完 取段码送到显示缓冲区 单元 N Y 分调整 YN 在显示的低位断码上加 80H 即点亮 DP 查询下一个调整位 图 3 4 程序流程 四川师范大学成都学院电子工程系课程设计报告 15 3 2 33 2 3 汇编程序汇编程序 ORG 0000H 初始化段地址 LJMP MAIN 长跳转到主函数 MAIN 处 ORG 000BH TT0 开始地址 LJMP TT0 长跳转到 TT0 处 ORG 0030H 主函数开始地址 避开 00 30 敏感段 MAIN MOV SP 40H 设堆栈底指针 下一个数据将放在 41H 单元 MOV 70H 60 价格单元的起步价 MOV 71H 00 价格单元的十位和百位 MOV 72H 00 秒单元清零 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 R1 DJNZ 6BH KKK 76H 7FH 单元全部清零 备用 LCALL DIS 调用价格显示子程序 LCALL DIS1 调用时间显示子程序 MOV TMOD 11H 定时器 计数器工作方式设置 MOV TH0 3CH MOV TL0 0B0H 这句和上一句设置延时 50ms MOV 6EH 20 将 6EH 单元设置 20 达到 1s 的延时 四川师范大学成都学院电子工程系课程设计报告 16 G2 LCALL DIS 长调用价格显示子程序 LCALL DIS1 长调用时间显示子程序 JB P1 0 G2 开关没按下 等待按下 显示初始状态 全部为零 LCALL TIME1 调用 TIME1 延时子程序 JB P1 0 G2 开关没按下 跳到 G2 否则转到下一步 G1 LCALL DIS LCALL DIS1 JNB P1 0 G1 开关按下 继续显示价格和时间 并转到中断 SETB EA 开中断 SETB ET0 定时器 0 中断允许 向 CPU 申请中断 SETB TR0 定时器 0 工作允许 SETB 01H 01H 单元置位 LLL LCALL CHAI 调用现场保护子程序 LCALL DIS LCALL JISUAN 调用计算子程序 LCALL DIS1 JB P1 0 G3 开关没按下 则返回 LCALL TIME1 JB P1 0 G3 CPL 01H 01H 单元此时为零 JNB 01H G5 01H 单元内容为 0 跳到 G5 SETB ET0 定时器 0 中断允许 向 CPU 申请中断 G6 LCALL DIS LCALL DIS1 JNB P1 0 G6 开关按下 显示所走的时间及费用 LJMP MAIN 重新等待下一个工作状态 G5 CLR ET0 G4 LCALL DIS LCALL DIS1 JNB P1 0 G4 G3 LJMP LLL TT0 CLR ET0 定时一秒 CLR TR0 MOV TH0 3CH MOV TL0 0B0H 四川师范大学成都学院电子工程系课程设计报告 17 SETB TR0 SETB ET0 DJNZ 6EH JJJ LCALL ADD1 MOV 6EH 20 JJJ RETI DIS MOV 6DH 06H 价格显示子程序 MOV R0 7AH MOV 6CH 0FEH HHH MOV DPTR 0FDFFH 数据指针出口地址 低 8 位给 P0 口 高 8 给 位 P2 口 MOV A 6CH MOVX DPTR A MOV A R0 MOV DPTR TAB 查表首地址 MOVC A A DPTR 查表值送 A MOV DPTR 0FEFFH MOVX DPTR A LCALL TIME1 MOV A 6CH RL A MOV 6CH A INC R0 DJNZ 6DH HHH RET DIS1 MOV 6DH 04H 时间显示子程序 MOV R0 72H MOV 6CH 0FEH HHH1 MOV DPTR 0F7FFH FF 给 P0 口 F7 给 P1 0 P1 3 口 MOV A 6CH MOVX DPTR A 将 6CH 的内容放到 0F7FFH 中 MOV A R0 MOV DPTR TAB 查表首地址 四川师范大学成都学院电子工程系课程设计报告 18 MOVC A A DPTR 查表值送 A MOV DPTR 0FBFFH MOV R1 6DH CJNE R1 03H K1 ORL A 80H K1 MOVX DPTR A LCALL TIME1 MOV A 6CH RL A MOV 6CH A INC R0 DJNZ 6DH HHH1 RET TIME1 MOV 6AH 0AH 延时子程序 FFF MOV 69H 0AH GGG DJNZ 69H GGG DJNZ 6AH FFF RET JISUAN JB 00H K2 判断是否超过 3 公里及计算价格子程序 MOV A 78H CLR C SUBB A 03H MOV 73H 06H JC K3 SETB 00H LJMP K3 K2 MOV R3 71H MOV R4 70H MOV R2 00H MOV R5 00H MOV R6 03H MOV R7 0E8H 四川师范大学成都学院电子工程系课程设计报告 19 LCALL NDIV42 MOV 75H R4 MOV A R6 MOV R3 A MOV A R7 MOV R4 A MOV R2 00H MOV R7 100 LCALL NDIV31 MOV 74H R4 MOV A R7 MOV B 10 DIV AB MOV 73H A MOV 72H B K3 RET CHAI MOV 6FH 03H 保护现场子程序 MOV R0 77H MOV R1 7AH ZZZ MOV A R0 ANL A 0FH 保存 77H 单元中的低 4 位 MOV R1 A MOV A R0 SWAP A ANL A 0FH INC R1 MOV R1 A INC R0 INC R1 DJNZ 6FH ZZZ 循环三次 RET ADD1 MOV A 77H 加一子程序 CJNE A 59H L18 四川师范大学成都学院电子工程系课程设计报告 20 LJMP L19 L18 ADD A 01H DA A MOV 77H A LJMP L24 L19 MOV 77H 00H JNB 00H S1 CLR C MOV A 70H ADD A 12 MOV 70H A MOV A 71H ADDC A 00H MOV 71H A S1 MOV A 78H CJNE A 59H L20 LJMP L21 L20 ADD A 01H DA A MOV 78H A LJMP L24 L21 MOV 78H 00H MOV A 79H CJNE A 23H L22 LJMP L23 L22 ADD A 01H DA A MOV 79H A L23 MOV 79H 00H L24 RET NDIV42 MOV A R1 四除二子程序 PUSH

温馨提示

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

评论

0/150

提交评论