数字转速表课程设计.doc_第1页
数字转速表课程设计.doc_第2页
数字转速表课程设计.doc_第3页
数字转速表课程设计.doc_第4页
数字转速表课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

目目 录录 第第 1 1 章章 概述概述 1 第第 2 2 章章 方案的确定方案的确定 3 2 1 设计思路 3 2 2 硬件电路总体设计方案 3 第第 3 3 章章 模块硬件电路设计模块硬件电路设计 4 3 1 LED 显示模块的电路设计 4 3 2 按键模块电路设计 4 第第 4 4 章章 软件设计软件设计 6 4 1 主程序设计 6 4 2 按键扫描设计 6 4 3 中断服务程序设计 6 4 4 进制转换设计 6 4 5 动态扫描显示设计 7 第第 5 5 章章 系统调试系统调试 12 5 1 软件模拟仿真 12 5 2 硬件调试 12 第第 6 6 章章 总结总结 14 参考文献参考文献 15 附录附录 16 1 第第 1 1 章章 概述概述 单片微型计算机简称单片机 是典型的嵌入式微控制器 Microcontroller Unit 常用英文字母的缩写 MCU 表示单片机 它最 早是被用在工业控制领域 单片机由芯片内仅有 CPU 的专用处理器发展 而来 最早的设计理念是通过将大量外围设备和 CPU 集成在一个芯片中 使计算机系统更小 更容易集成进复杂的而对体积要求严格的控制设备 当中 INTEL 的 Z80 是最早按照这种思想设计出的处理器 从此以后 单片机和专用处理器的发展便分道扬镳 早期的单片机都是 8 位或 4 位的 其中最成功的是 INTEL 的 8031 因为简单可靠而性能不错获得了很大的好评 此后在 8031 上发展出了 MCS51 系列单片机系统 基于这一系统的单片机系统直到现在还在广泛 使用 随着工业控制领域要求的提高 开始出现了 16 位单片机 但因为 性价比不理想并未得到很广泛的应用 90 年代后随着消费电子产品大发 展 单片机技术得到了巨大提高 随着 INTEL i960 系列特别是后来的 ARM 系列的广泛应用 32 位单片机迅速取代 16 位单片机的高端地位 并 且进入主流市场 而传统的 8 位单片机的性能也得到了飞速提高 处理 能力比起 80 年代提高了数百倍 目前 高端的 32 位单片机主频已经超 过 300MHz 性能直追 90 年代中期的专用处理器 而普通的型号出厂价 格跌落至 1 美元 最高端 1 的型号也只有 10 美元 当代单片机系统已 经不再只在裸机环境下开发和使用 大量专用的嵌入式操作系统被广泛 应用在全系列的单片机上 而在作为掌上电脑和手机核心处理的高端单 片机甚至可以直接使用专用的 Windows 和 Linux 操作系统 单片机比专用处理器更适合应用于嵌入式系统 因此它得到了最多 的应用 事实上单片机是世界上数量最多的计算机 现代人类生活中所 用的几乎每件电子和机械产品中都会集成有单片机 手机 电话 计算 器 家用电器 电子玩具 掌上电脑以及鼠标等电脑配件中都配有 1 2 部单片机 而个人电脑中也会有为数不少的单片机在工作 汽车上一般 2 配备 40 多部单片机 复杂的工业控制系统上甚至可能有数百台单片机在 同时工作 单片机的数量不仅远超过 PC 机和其他计算的总和 甚至比人 类的数量还要多 单片机又称单片微控制器 它不是完成某一个逻辑功能的芯片 而是 把一个计算机系统集成到一个芯片上 相当于一个微型的计算机 和计 算机相比 单片机只缺少了 I O 设备 概括的讲 一块芯片就成了一台 计算机 它的体积小 质量轻 价格便宜 为学习 应用和开发提供了 便利条件 同时 学习使用单片机是了解计算机原理与结构的最佳选择 3 第第 2 2 章章 方案的确定方案的确定 2 1 设计思路 利用 AT89C51 作为中控器和四个显示管组成一个测速表 电机转速 采用光电脉冲传感器来模拟 设置定时器 计数器 T0 和 T1 利用其内部 定时器 T0 设置为定时方式 且定时时间为 1s 计数器 T1 则设置为外部 脉冲计数工作方式 设在 1s 内测量的脉冲个数为 n 又由于脉冲频率为 60 个脉冲 转 故测到的转速 n 就是脉冲频率 定时 1s 在此时间段内 允许中断 每中断一次 软件计数器加 1 1s 后 中断关闭 则软件计 数器即为 1s 内的脉冲数 通过计数在一定时间内通过定时器的脉冲数和 软硬件结合工作即可测出光电脉冲的转速了 2 22 2 硬件电路总体设计方案硬件电路总体设计方案 根据设计的要求和设计思路 硬件电路应有 8 个部分构成 即单片 机按键输入 复位电路 时钟电路 LED 段码驱动 LED 位码驱动 LED 显示电路 其中 LED 段码由 74LS48 驱动 LED 位码由 ULN2003 驱动 采 取按键复位电路 步进马达转动用可调脉冲模拟 图 2 1 为总体硬件电 路的框图 图 2 1 总体硬件电路的框图 AT89C51 时钟电路 复位电路 按键电路 LED 段码驱动 LED 位码驱动 LED 显示 管 4 第第 3 章章 模块硬件电路设计模块硬件电路设计 3 1 LED 显示模块的电路设计 本课题所采用得是由四位 LED 数码管 作为显示电路 用以显示 由单片机对频率发生器的计数值转换后的 BCD 码值 以及开始测速时的 初始状态 其硬件电路连接是单片机 P0 0 P0 7 口分别经过驱动后接数 码管的 A G 的 8 各管脚 而 P2 4 P2 7 口则分别经过驱动后接数码管的 1 4 控制端口 如图 3 1 所示 且数码管采用共阴极连接的方法连接 如图 3 1 所示 3 2 按键模块电路设计 根据设计思路 对系统的控制只需用到启动 停止和复位三个键 因此可采用简单的独立方式对按键排布和接线 具体的接口连接如图 3 2 所示 启动 停止和复位键分别连接单片机的 P3 0 P3 2 端口 当 有键按下时 单片机的三个端口由高电平跳变为低电平 从而起到对显 示的控制作用 如图 3 2 所示 5 图 3 1 显示模块硬件电路图 图 3 2 按键电路图 6 第第 4 4 章章 软件设计软件设计 4 1 主程序设计 在初始化程序后 数码管显示初始化状态 接下来对按键循环的进 行扫描 检测是否有按键按下 当有按键按下时 判断是哪个键 再向 CPU 提出中断申请 进而执行相应按键的控制功能 执行完程序后返回 对按键的查询 当没有按键按下时 继续对按键扫描 如此循环 图 4 1 是总体设计的流程图 4 2 按键扫描设计 程序开始后 进行按键扫描 检测是否有按键按下 当有按键被按 下 为了消除抖动现象 对按键按下进行两个显示的延时操作 大概 20ms 直到按键闭合了 对相应的按键取值 送给单片机端口进行控制 当没有按键按下 给按键取值后 跳转回按键的扫描程序 为了更形象 的说明设计思路 下面是按键扫描的流程图 如图 4 2 所示 4 3 中断服务程序设计 当中断发生时候 TF0 自动置 1 开始进入中断服务程序 每次进入 中断服务程序之后 规定的变量自动加 1 当变量的值加到 20 的时候就 表示定时 1s 此时将呼叫进制转换程序来对计数值进行转换 并将 TR1 中的内容清零 以免下次计数发生重叠 流程图如图 4 3 所示 4 4 进制转换设计 当定时器 T0 定时 50ms R4 循环 20 次后 恰好是 1s 此时将十六 位的二进制数转换为十进制的 BCD 码显示 转换方法如下所示 分别用 M TH1 OX10 OX10 和 N TH1 OX10 表示 TH1 的高四位和低四位 再用 X TL1 OX10 OX10 和 Y TL1 OX10 表示 TL1 的高四位和低 四位 于是 T1 对应的十进制数表示为 Z M 4096 N 256 X 16 Y 1 又 7 因为定时时间为 1s 故需将 Z 乘以 60 才得到每分钟的转速 而在汇编 程序中 定义显示的缓冲区为 7AH 7DH 所以需将得到的 DEC 的四位再进 行分解 千位 DEC 1000 百位 DEC 1000 100 十位 DEC 100 10 个位 DEC 10 然后分别将千位至个位的数字送到 7AH 7DH 的单元 中 供显示程序使用 4 5 动态扫描显示设计 采用动态扫描显示的方法 也即任意时刻只有一个数码管被点亮 但由于人的视觉暂留效应 当显示速度合适的时候我们看到的将是所有 管子同时发亮的数字 实现方法是 TAB 存放着 0 9 的码字 我们让 R0 指向 7A 内存区 DPTR 指向 TAB 的首址 通过 A 我们使用 A DPTR 完 成查字 形编码表的工作 然后从 R0 开始扫描四次 完成了 7AH 7DH 中 内容的显示 位选使用 R6 先赋值为 0FEH 然后逐个左移 左移四次就 完成了四个数码管的轮流点亮 流程如图 4 4 所示 8 开始 初始化 调显示子程序 有无键 N Y 启动中断 处理程序 Y 暂停键 启动暂停处 理程序 N N Y N 启动键 复位键 图 4 1 总体设计的流程图 9 N 开始 有键按下 延时去抖 有键闭合 扫描取键值 闭合键释放 结束 Y Y 图 4 2 按键扫描流程图 10 中断服务开始 变量加 1 R4 等于 20 调用转换子程序 T1 和变量清零 中断返回 N Y 图 4 3 中断服务程序流程图 11 DPTR 指向 TAB 的表头 轮流扫描 从 开始扫描 次 显示数字 R0 指向 7A 内存区 和 分别赋值 和 查字形编码表 图 4 4 动态扫描显示设计图 12 第第 5 5 章章 系统调试系统调试 5 1 软件模拟仿真 试验所涉及的 2 个软件 keil 和 proteus 以下是仿真步骤 程序调试部分 keil 先新建一个工程 并保存在所建工程弹出的对话 框中选择 AT89C51 处理器 新建一个文档以编辑程序 将所设计的程序 输入到新建文档中 并保存文档 asm 汇编源文件 将所保存的文档添加 到工程中去 再进行工程配置 点击 Project 菜单下的 Options for Target 在弹出的对话框中设晶振为 12MHZ 将 Create HEX File 打上勾 再编 译文件 仿真部分 proteus 运行 proteus 的 ISIS 后进入仿真界面将所需元件选 择好 根据原理图画出仿真图 待仿真图换好后双击 AT89C51 写入 keil 所产生的程序 按开始进行仿真 5 2 硬件调试 硬件调试的步骤如下 接通电源和数据线 通过软件将在 keil 中生 成的 HEX 文件下载到单片机板子上 先对板子关电当显示请上电时按下 单片机上的电源开关按钮上电下载程序到单片机中 通过按键和 LED 的 显示进行调试 当程序下载完之后 按下电源开关 LED 上显示初始状态 按下启 动键显示接收数据的状态 按下停止键后显示当前所记录的数据 按下 复位键则显示初始状态 脉冲为 10HZ 时仿真结果如图 5 1 所示 脉冲为 50HZ 时仿真结果如 图 5 2 所示 13 图 5 1 脉冲 10HZ 时仿真结果 图 5 2 脉冲 50HZ 时仿真结果 14 第第 6 6 章章 总结总结 本次应用单片机设计数字转速表的课程设计给我带来了不一样的收 获 短短两周的时间里 锻炼了我主动动手解决问题和设计性思维的能 力 将理论应用于实践中确实并非易事 因为它不是单纯的理论学习和 理解 包含的东西远远超过我的想象 首先是扎实的理论基础 再是具 备创新设计思维 还必须懂得电脑仿真软件的应用 接着是拥有一定的 编写报告的能力 最后也是最重要的是要有刻苦专研和积极提问的精神 我想这也是为什么老师将我们分为几人一组完成课题的原因吧 课程设计不是一个人的事情 就像篮球运动一样 要靠团队的力量 才能取得成功 毕竟个人的力量是有限的 无法解决所有的问题 所以 在我们设计的过程中 团队的协作起到了很大的作用 尽管大部分的设 计都是由一个人完成 但其他人的协助为他解决了许多他没有考虑到的 问题 尤其是我们的指导老师 她起着关键性的作用 老师负责和严谨 态度让我们受益匪浅 短短的两个星期里 老师便和我们交流了五次 基本上是两天一指导 这不仅对我们的设计起到了一个督促作用 更是 给了我们方向性的指导 让我们得以更加高效的完成这次的设计 真的 非常感谢李老师在这次课程设计中给予我们的帮组和指导 通过这次的课程设计 不但让我对单片机有了更加深层的认识 而 且对课本的知识起到了很好的巩固作用 在此 我要感谢和我一组的其 他同学 对我的帮助 使对单片机得用途有了更多的了解 这些都是我 在课本上学不到的宝贵知识 很高兴这次的课程设计能够与他们一起共 进 同时谢谢李老师耐心的指导 通过这次的课程设计 我从不会设计开始学习 到了最后把设计搞 好 这个过程让我感到开心 设计能运行给了自己巨大的动力 在以后 的学习和工作中 我应该更要加油 通过自己的努力做好每一件事 15 参考文献参考文献 1 刘国荣 单片微型计算机技术 机械工业出版社 1996 2 张迎新 单片微型计算机原理 应用及接口技术 国防工业出版社 1993 3 房小翠 编单片机实用系统设计技术 国防工业出版社 1999 4 何立民 编单片机应用系统设计 北航出版社 2005 5 王为清 编 keilCx51 应用开发技术 人民邮电出版社 2007 6 先锋工作室 编单片机程序设计实例 清华大学出版社 2003 16 附录附录 总电路图总电路图 17 程序清单程序清单 ORG 0000H AJMP MIAN 转主程序入口 MAIN ORG 000BH T0 的中断入口 LJMP DVT0 定时器 T0 中断 ORG 0030H 设置中断向量 MIAN MOV SP 60H 设置堆栈区 MOV 30H 0 计数单元清零 MOV 31H 0 MOV 7AH 11H MOV 7BH 11H MOV 7CH 11H MOV 7DH 11H 复位状态字型码送缓冲区 MOV R4 20 MOV TMOD 51H 设置 T0 T1 工作方式字 MOV TH0 3CH MOV TL0 0B0H 给 T0 设置初值 MOV TH1 0 MOV TL1 0 T1 置初值 LOOP1 LCALL DIS 重复显示 查键 LCALL KEY1 JNZ KEY2 AJMP LOOP1 KEY2 LCALL DIS LCALL DIS LCALL KEY1 JNZ KEY3 18 LJMP LOOP1 KEY3 JNB P3 0 LP0 JNB P3 1 LP1 JNB P3 2 LP2 LJMP LOOP1 LP2 CLR ET1 CLR TR1 CLR EA CLR TR0 停止定时器 T0 CLR ET1 CLR TF0 LJMP MIAN LP1 CLR TR1 CLR TR0 停止定时器 T0 CLR ET0 CLR ET1 CLR EA CLR TF0 LJMP LOOP1 LP0 MOV 7AH 0H MOV 7BH 0H MOV 7CH 0H MOV 7DH 0H SETB TR0 启动定时器 0 SETB ET0 SETB EA 开放中断 并设置中断方式 SETB TR1 LJMP LOOP1 19 KEY1 MOV P3 0FFH 扫描显示初始化 MOV A P3 CPL A ANL A 07H RET 驱动驱动 LEDLED 显示器的程序显示器的程序 DIS MOV DPTR TAB DIS1 MOV R0 7AH MOV R1 01H MOV R2 04H DIS2 MOV P2 0 MOV A R0 四位轮流扫描显示 MOVC A A DPTR MOV P0 A MOV A R1 MOV P2 A LCALL DAY INC R0 RL A MOV R1 A DJNZ R2 DIS2 RET TAB DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H 88H 83H 0C6H 0A1H 86H 8EH 0FFH 0BFH 字形编码表 DAY MOV R6 1 D1 MOV R7 248 D2 NOP 20 NOP DJNZ R7 D2 DJNZ R6 D1 RET 定时器定时器 T0T0 中断服务程序中断服务程序 DVT0 PUSH PSW T0 中断程序 PUSH ACC 相关内容入栈保 护 MOV TH0 3CH MOV TL0 0B0H T0 重装初值 DJNZ R4 RTNO 1s 定时未到 继续 MOV R4 20 CLR

温馨提示

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

评论

0/150

提交评论