




免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文毕业论文 用单片机控制数码管显示数字用单片机控制数码管显示数字 的设计与研究的设计与研究 学生姓名 学生姓名 专专 业 业 年年 级 级 学学 号 号 指导教师 指导教师 职业技术学院毕业论文 1 目录目录 摘摘 要要 2 设计背景设计背景与方案与方案 3 第一章第一章 单片机介绍单片机介绍 5 1 1 单片机基础知识学习 5 1 2 AT89S51 单片机的主要性能参数 7 1 3 AT89S51 芯片内部结构简介 7 1 4 主要引脚功能 8 第二章第二章 数码管的介绍数码管的介绍 12 2 1 数码管分类 结构及工作原理 12 2 2 数码管的引脚 13 2 3 驱动方式 14 第三章第三章 KEIL 软件简介软件简介 16 3 1 系统概述 16 3 2 整体结构简介 16 3 3 建立项目步骤 17 第四章第四章 程序设计及仿真程序设计及仿真 22 4 1 设计要求 22 4 2 利用PROYEUS仿真软件画出电路图 22 4 3 流程图绘制以及说明 23 4 4 用KIEL设计程序及仿真结果 23 4 5 心得体会 29 附录附录 A 30 附录附录 B 31 致谢致谢 34 参考文献参考文献 35 职业技术学院毕业论文 2 摘摘 要要 单片机微型计算机是微型计算机的一个重要分支 也是颇具生命力的机种 单片机微型计算机简称单片机 特别适用于控制领域 故又称为微控制器 通 常 单片机由单块集成电路芯片构成 内部包含有计算机的基本功能部件 中 央处理器 存储器和 I O 接口电路等 因此 单片机只需要和适当的软件及外 部设备相结合 便可成为一个单片机控制系统 AT89S51 是美国 ATMEL 公司生产的低功耗 高性能 CMOS8 位单片机 片内含 4k bytes 的可系统编程的 Flash 只读程序存储器 器件采用 ATMEL 公司 的高密度 非易失性存储技术生产 兼容标准 8051 指令系统及引脚 它集 Flash 程序存储器 既可在线编程 ISP 也可用传统方法进行编程及通用 8 位微 处理器于单片芯片中 ATMEL 公司的功能强大 低价位 AT89S51 单片机可为 您提供许多高性价比的应用场合 可灵活应用于各种控制领域 关键词 关键词 单片机 AT89s51 数码管 proteus keil3 职业技术学院毕业论文 3 设计背景与方案设计背景与方案 一 设计背景一 设计背景 1 单片机发展前景 目前单片机渗透到我们生活的各个领域 几乎很难找到哪个领域没有单片 机的踪迹 导弹的导航装置 飞机上各种仪表的控制 计算机的网络通讯与数 据传输 工业自动化过程的实时控制和数据处理 广泛使用的各种智能 IC 卡 民用豪华轿车的安全保障系统 录像机 摄像机 全自动洗衣机的控制 以及 程控玩具 电子宠物等等 这些都离不开单片机 更不用说自动控制领域的机 器人 智能仪表 医疗器械了 因此 单片机的学习 开发与应用将造就一批 计算机应用与智能化控制的科学家 工程师 2 共阳极数码管的显示方法 LED 数码管是单片机控制系统中最常见的显示器件之一 一般用来显示处 理结果或输入输出信号的状态 数码管显示是一个系统工程中必不可少的人机 交互环节 因此关于数码管的驱动也就是系统工程中的一个重要的环节 数码 管的驱动分为动态驱动和静态驱动两种 所谓静态驱动 就是指无论多少位 LED 数码管 同时处于显示状态 动态显示驱动是指无论在任何时刻只有一个 LED 数码管处于显示状态 及单片机采用 扫描 方式控制各个数码管轮流显示 3 共阳极数码管的驱动设计 将数码管每个 LED 灯对应单片机的一个 I O 口 通过单片机的 P 口来控制 LED 灯的亮和灭 I O 口之间互相独立 需要用 I O 口直接控制 LED 动态显 示将数码管的每个引脚一对一连接在一起接单片机的数据 而将各个数码管的 公共端单独送至单片机的 I O 口进行片选 此外 在此基础上 用单片机与三 极管来驱动数码管 从而实现数码管的动态显示 二 设计方案二 设计方案 1 静态显示 静态显示 就是每一个数码管显示器都要占用单独的具有锁存功能的 I O 接口用于笔划段字形代码 这样单片机只要把要显示的字形代码发送到接口电 路 就不用管它了 直到要显示新的数据时 再发送新的字形码 因此 使用 这种办法单片机中 CPU 的开销小 能供给单独锁存的 I O 接口电路很多 各数 职业技术学院毕业论文 4 码管的公共极固定接有效电平 各数码管的字形控制端分别由各自的控制信号 控制 LED 显示亮度温度 容易调节 编程容易 工作是占用 CPU 时间短 但若直接用单片机输出各位数码管的字形信号时 占用单片机的 I O 口线较多 一般仅适用于显示位数较少的应用场合 2 动态显示 P2 0 端口控制数码管的个位的供电 当相应的端口变成低电平时 驱动相 应的三极管会导通 5V 通过驱动三极管给数码管相应的位供电 这是只要 P3 口送出数字的显示代码 数码管就能正常的显示数字 3 动态显示与静态显示对比 本设计要求循环显示 要求显示不同数字 所以要求用动态扫描的方式实 现 即采用动态的显示方式 就是显示 1 毫秒 不断循环 这样只要扫描时间 小于 1 50 秒 就会因为人眼的视觉残留效应 看到不同数字的稳定显示 数码 管的字形控制端对应的并在一起 由一组 I O 端口进行控制 公共极相互独立 分别由不同的 I O 控制信号控制 为了达到我们的设计要求 实现用单片机控制数码管显示数字的设计 下 面我们将从基础知识开始研究 职业技术学院毕业论文 5 第一章第一章 单片机介绍单片机介绍 单片机是一种集成在电路芯片 是采用超大规模集成电路技术把具有数据 处理能力的中央处理器 CPU 随机存储器 RAM 只读存储器 ROM 多种 I O 口 和中断系统 定时器 计时器等功能 可能还包括显示驱动电路 脉宽调制电路 模拟多路转换器 A D 转换器等电路 集成到一块硅片上构成的一个小而完善 的计算机系统 单片机也被称为 微控制器 Microcontroller Unit 常用英文字母的缩 写 MCU 表示单片机 它最早是被用在工业控制领域 单片机由芯片内仅有 CPU 的专用处理器发展而来 最早的设计理念是通过将大量外围设备和 CPU 集成在一个芯片中 使计算机系统更小 更容易集成进复杂的而对体积 要求严格的控制设备当中 INTEL 的 Z80 是最早按照这种思想设计出的处 理器 从此以后 单片机和专用处理器的发展便分道扬镳 1 1单片机基础知识学习单片机基础知识学习 早期的单片机都是 8 位或 4 位的 其中最成功的是 INTEL 的 8031 因 为简单可靠而性能不错获得了很大的好评 此后在8031 上发展出了 MCS51 系列单片机系统 基于这一系统的单片机系统直到现在还在广泛使用 随着工业控制领域要求的提高 开始出现了16 位单片机 但因为性价比不 理想并未得到很广泛的应用 90 年代后随着消费电子产品大发展 单片机 技术得到了巨大提高 随着 INTEL i960 系列特别是后来的 ARM 系列的广 泛应用 32 位单片机迅速取代 16 位单片机的高端地位 并且进入主流市场 而传统的 8 位单片机的性能也得到了飞速提高 处理能力比起80 年代提高 了数百倍 目前 高端的 32 位单片机主频已经超过 300MHz 性能直追 90 年代中期的专用处理器 而普通的型号出厂价格跌落至1 美元 最高端 的型号也只有 10 美元 当代单片机系统已经不再只在裸机环境下开发和使 用 大量专用的嵌入式操作系统被广泛应用在全系列的单片机上 而在作为 掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows 和 Linux 操作系统 单片机比专用处理器更适合应用于 嵌入式系统 因此它得到了最多的 职业技术学院毕业论文 6 应用 事实上单片机是世界上数量最多的 计算机 现代人类生活中所用的 几乎每件电子和机械产品中都会集成有单片机 手机 电话 计算器 家 用电器 电子玩具 掌上电脑以及鼠标等电脑配件中都配有 1 2 部单片机 而个人电脑中也会有为数不少的单片机在工作 汽车上一般配备40 多部单 片机 复杂的工业控制系统上甚至可能有数百台单片机在同时工作 单片机 的数量不仅远超过 PC 机和其他计算的总和 甚至比人类的数量还要多 单片机又称单片微控制器 它不是完成某一个逻辑功能的芯片 而是把 一个计算机系统集成到一个芯片上 相当于一个微型的计算机 和计算机相 比 单片机只缺少了 I O 设备 概括的讲 一块芯片就成了一台计算机 它 的体积小 质量轻 价格便宜 为学习 应用和开发提供了便利条件 同时 学习使用单片机是了解计算机原理与结构的最佳选择 单片机内部也用和电脑功能类似的模块 比如CPU 内存 并行总线 还有和硬盘作用相同的 存储器件 不同的是它的这些部件性能都相对我们的 家用电脑弱很多 不过价钱也是低的 一般不超过10 元即可用它来做一些 控制电器一类不是很复杂的工作足矣了 我们现在用的全自动滚筒洗衣机 排烟罩 VCD 等等的家电里面都可以看到它的身影 它主要是作为控制部 分的核心部件 它是一种在线式实时控制计算机 在线式就是现场控制 需要的是有较 强的抗干扰能力 较低的成本 这也是和离线式计算机的 比如家用PC 的主要区别 图 1 1 单片机芯片 目前 很多人对 汇编语言并不认可 可以说 掌握用 C 语言单片机编 程很重要 可以大大提高开发的效率 不过 初学者可以不了解单片机的汇 编语言 但一定要了解单片机具体性能和特点 不然在单片机领域是比较致 命的 如果不考虑单片机硬件资源 在 KEIL 中用 C 胡乱编程 结果只能 职业技术学院毕业论文 7 是出了问题无法解决 可以肯定的说 最好的C 语言单片机工程师都是从 汇编走出来的编程者因为单片机的C 语言虽然是高级语言 但是它不同于 台式机个人电脑上的 VC 什么的单片机的硬件资源不是非常强大 不同于 我们用 VC VB 等高级语言在台式 PC 上写程序毕竟台式电脑的硬件非常强 大 所以才可以不考虑硬件资源的问题 还有就是在单片机编程中C 语言 虽然编程方便 便于人们阅读 但是在执行效率上是要比汇编语言低10 到 20 所以用什么语言编写程序是要看具体用在什么场合下 总的来说做 单片机编程要灵活使用汇编语言与C 语言 让单片机的强大功能以最高是 效率展示给用户 1 2 AT89S51 单片机的主要性能参数单片机的主要性能参数 AT89S51 是美国 ATMEL 公司生产的低功耗 高性能 CMOS8 位单片机 片内含 4k bytes 的可系统编程的 Flash 只读程序存储器 器件采用 ATMEL 公司的高密度 非易失性存储技术生产 兼容标准 8051 指令系统及引脚 它 集 Flash 程序存储器既可在线编程 ISP 也可用传统方法进行编程及通用 8 位微处理器于单片芯片中 ATMEL 公司的功能强大 低价位 AT89S51单片机 可为您提供许多高性价比的应用场合 可灵活应用于各种控制领域 主要性能参数主要性能参数 与单片机产品兼容 4k 字节 Flash 闪速存储器 128 字节内部 RAM 1000 次擦写周期 全静态操作 0Hz 33Hz 三级加密程序存储器 32 个可编程 I O 口线 两个数据指针 两个 16 位定时 计数器 六个中断源 全双工 UART 串行通道低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定 时器 WDT 双数据指针 掉电标识符 一个 5 向量两级中断结构 片内 振荡器及时钟电路 同时 AT89S51 可降至 0Hz 的静态逻辑操作 并支持两 种软件可选的节电工作模式 空闲方式停止 CPU 的工作 但允许 RAM 定时 计数器 串行通信口及中断系统继续工作 掉电方式保存 RAM 中的内容 但 振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位 1 3 AT89S51 芯片内部结构简介芯片内部结构简介 AT89S51 单片机的片内硬件组成结构如附录 A 中图 1 所示 把作为控制应 用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上 下面介绍 附录 A 中图 1 里片内各功能部件 一 中央处理器 一 中央处理器 职业技术学院毕业论文 8 中央处理器 CPU 是整个单片机的核心部件 是 8 位数据宽度的处理器 能处理 8 位二进制数据或代码 CPU 负责控制 指挥和调度整个单元系统协调 的工作 完成运算和控制输入输出功能等操作 二 数据存储器二 数据存储器 内部内部 RAM 数据存储器用于存放变化的数据 AT89S51 中数据存储器的地址空间为 256 个 RAM 单元 但其中能作为数据存储器供用户使用的仅有前面 128 个 后 128 个被专用寄存器占用 三 程序存储器三 程序存储器 内部内部 ROM 程序存储器用于存放程序和固定不变的常数等 通常采用只读存储器 且 其又多种类型 在 89 系列单片机中全部采用闪存 AT89S51 内部配置了 4KB 闪存 四 定时四 定时 计数器计数器 ROM 定时 计数器用于实现定时和计数功能 AT89S51 共有 2 个 16 位定时 计数 器 五 并行输入输出五 并行输入输出 I O 口 口 8051 共有 4 组 8 位 I O 口 P0 P1 P2 或 P3 用于对外部数据的传输 每 个口都由 1 个锁存器和一个驱动器组成 它们主要用于实现与外部设备中数据 的并行输入与输出 有些 I O 口还有其他功能 六 全双工串行口 六 全双工串行口 AT89S51 内置一个全双工串行通信口 用于与其它设备间的串行数据传送 该串行口既可以用作异步通信收发器 也可以当同步移位器使用 七 时钟电路 七 时钟电路 时钟电路的作用是产生单片机工作所需要的时钟脉冲序列 八 中断系统 八 中断系统 中断系统的作用主要是对外部或内部的终端请求进行管理与处理 AT89S51 共有 5 个中断源 其中又 2 个外部中断源和 3 个内部中断源 1 4 主要引脚功能主要引脚功能 AT89S51 引脚图如图 1 2 所示 1 VCC 电源电压 2 GND 地线 3 P0 口 P0 口是一组 8 位漏极开路型双向 I 0 口 也即地址 数据总线 职业技术学院毕业论文 9 复用口 作为输出口用时 每位能驱动 8 个 TTL 逻辑门电路 对端口写 l 可作 为高阻抗输入端用 在访问外部数据存储器或程序存储器时 这组口线分时转 换地址 低 8 位 和数据总线复用 在访问期间激活内部上拉电阻 4 P1 口 Pl 是一个带内部上拉电阻的 8 位双向 I O 口 Pl 的输出缓冲 级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口写 l 通过内部 的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部 存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 IIL Flash 编程 和程序校验期间 Pl 接收低 8 位地址 表 1 具有第二功能的 P1 口引脚 端口引脚第二功能 P1 5MOSI 用于 ISP 编程 P1 6MOSI 用于 ISP 编程 P1 7MOSI 用于 ISP 编程 图 1 2 AT89S51 引脚图 5 P2 口 P2 是一个带有内部上拉电阻的 8 位双向 I O 口 P2 的输出 缓冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口写 1 通过 内部的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为 内部存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 IIL 在访 职业技术学院毕业论文 10 问外部程序存储器或 16 位地址的外部数据存储器 例如执行 MOVX DPTR 指 令 时 P2 口送出高 8 位地址数据 在访问 8 位地址的外部数据存储器 如执 行 MOVX Ri 指令 时 P2 口线上的内容 也即特殊功能寄存器 SFR 区 中 P2 寄存器的内容 在整个访问期间不改变 Flash 编程或校验时 P2 亦接 收高位地址和其它控制信号 6 P3 口 P3 口是一组带有内部上拉电阻的 8 位双向 I 0 口 P3 口输 出缓冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对 P3 口写入 l 时 它们被内部上拉电阻拉高并可作为输入端口 作输入端时 被外部拉低的 P3 口将用上拉电阻输出电流 IIL P3 口除了作为一般的 I 0 口线外 更重要 的用途是它的第二功能 如下表所示 表 2 具有第二功能的 P3 口引脚 端口引脚第二功能 P3 0RXD 串行输入口 P3 1TXD 串行输出口 P3 2 INT0 外中断 0 P3 3 INT1 外中断 1 P3 4T0 定时 计数器 0 外部输入 P3 5T1 定时 计数器 1 外部输入 P3 6 WR 外部数据存储器写选通 P3 7 RD 外部数据存储器读选通 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号 7 RST 复位输入 当振荡器工作时 RST 引脚出现两个机器周期以上 高电平将使单片机复位 WDT 溢出将使该引脚输出高电平 设置 SFR AUXR 的 DISRT0 位 地址 8EH 可打开或关闭该功能 DISRT0 位缺省为 RESET 输 出高电平打开状态 8 ALE Error 当访问外部程序存储器或数据存储器时 ALE 地址锁 存允许 输出脉冲用于锁存地址的低 8 位字节 即使不访问外部存储器 ALE 仍以时钟振荡频率的 1 6 输出固定的正脉冲信号 因此它可对外输出时钟或用 于定时目的 要注意的是 每当访问外部数据存储器时将跳过一个 ALE 脉冲 对 F1ash 存储器编程期间 该引脚还用于输入编程脉冲 PROG 如有必要 可通过对特殊功能寄存器 SFR 区中的 8EH 单元的 D0 位置位 可禁止 ALE 职业技术学院毕业论文 11 操作 该位置位后 只有一条 M0VX 和 M0VC 指令 ALE 才会被激活 此外 该引脚会被微弱拉高 单片机执行外部程序时 应设置 ALE 无效 9 Error 程序储存允许 Error 输出是外部程序存储器的读选通信号 当 AT89S51 由外部程序存储器取指令 或数据 时 每个机器周期两次Error 有效 即输出两个脉冲 当访问外部数据存储器 没有两次有效的Error 信号 10 Error VPP 外部访问允许 欲使 CPU 仅访问外部程序存储器 地 址为 0000H FFFFH EA 端必须保持低电平 接地 需注意的是 如果加密 位 LB1 被编程 复位时内部会锁存 EA 端状态 如 EA 端为高电平 接 VCC 端 CPU 则执行内部程序存储器中的指令 F1ash 存储器编程时 该引脚加上 12V 的编程电压 Vpp 11 XTAL1 振荡器反相放大器及内部时钟发生器的输入端 职业技术学院毕业论文 12 第二章第二章 数码数码管的介绍管的介绍 2 1 数码管分类 结构及工作原理数码管分类 结构及工作原理 一 数码管分类一 数码管分类 数码管也称 LED 数码管 数码管是一种半导体发光器件 其基本单元是发 光二极管 数码管按段数分为七段数码管和八段数码管 八段数码管比七段数码 管多一个发光二极管单元 多一个小数点显示 按能显示多少个 8 可分为 1 位 2 位 3 位 4 位 5 位 6 位 7 位等数码管 按发光二极管单元连接方 式分为共阳极数码管和共阴极数码管 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极 COM 的 数码管 共阳数码管在应用时应将公共极 COM 接到 5V 当某一字段发光二极 管的阴极为低电平时 相应字段就点亮 当某一字段的阴极为高电平时 相应 字段就不亮 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阳极 COM 的 数码管 共阴数码管在应用时应将公共极 PWR 接到电源输入 PWR 上 当某 一字段发光二极管的阴极极为低电平时 相应字段就点亮 当某一字段的阴极 为高电平时 相应字段就不亮 二 数码管结构二 数码管结构 LED 数码管 LED Segment Displays 是由多个发光二极管封装在一起组 成 8 字型的器件 引线已在内部连接完成 只需引出它们的各个笔划 公共 电极 LED 数码管常用段数一般为 7 段有的另加一个小数点 还有一种是类似 于 3 位 1 型 位数有半位 1 2 3 4 5 6 8 10 位等等 LED 数码 管根据 LED 的接法不同分为共阴和共阳两类 了解 LED 的这些特性 对编程 是很重要的 因为不同类型的数码管 除了它们的硬件电路有差异外 编程方 法也是不同的 共阴和共阳极数码管的内部电路 它们的发光原理是一样的 只是它们的电源极性不同而已 颜色有红 绿 蓝 黄等几种 LED 数码管广 职业技术学院毕业论文 13 泛用于仪表 时钟 车站 家电等场合 选用时要注意产品尺寸颜色 功耗 亮度 波长等 三 数码管工作原理三 数码管工作原理 数码管的每一段是由发光二极管组成 所以在使用时跟发光二极管一样 也要连接限流电阻 否则电流过大会烧毁发光二极管的 共阳极数码管中 8 个发光二极管的阳极 二极管正端 连接一起 即为共阳 极接法 简称共阳数码管 通常 公共阳极接高电平 一般接电源 其它管 脚接段驱动电路输出端 当某段驱动电路的输入端为低电平时 该端所连接的 字段导通并点亮 根据发光字段的不同组合可显示出各种数字或字符 此时 要求段驱动电路能吸收额定的段导通电流 还需根据外接电源及额定段导通电 流来确定相应的限流电阻 共阴极数码管中 8 个发光二极管的阴极 二极管负端 连接在一起 即为 共阴极接法 简称共阴数码管 通常 共阴极接低电平 一般接地 其它管脚 接段驱动电路输出端 当某段驱动电路的输出端为高电平时 该端所连接的字 符导通并点亮 根据发光字段的不同组合可显示出各种数字或字符 同样 要 求段驱动电路能提供额定的段导通电流 还需根据外接电源及额定段导通电流 来确定相应的限流电阻 2 2数码管的引脚数码管的引脚 数码管一般有七段或者八段 小数点 DP 段有就是八段 否则就是 ABCDEFG 七段 图 2 1 共阳极数码管引脚图 数码管分共阴极和共阳极两种 共阳极就是把所有 LED 的阳极连接到共同 接点 COM 而每个 LED 的阴极分别为 A B C D E F G 及 DP 小数 职业技术学院毕业论文 14 点 共阴极则是把所有 LED 的阴极连接到共同接点 COM 而每个 LED 的阳 极分别为 A B C D E F G 及 DP 小数点 引脚有 a c d e f g h 和公共端 如下图 h 引脚也叫做 DP 引脚 接的就是小数 点 图 2 2 共阴极数码管引脚图 对于单个数码管来说 从它的正面看进去 左下角那个脚为 1 脚 以逆时 针方向依次为 1 10 脚 左上角那个脚便是 10 脚了 上面两个图中的数字分别 与这 10 个管脚一一对应 注意 3 脚和 8 脚是连通的 这两个都是公共脚 2 3 驱动方式驱动方式 数码管要正常显示 就要用驱动电路来驱动数码管的各个段码 从而显示 出我们要的数字 因此根据数码管的驱动方式的不同 可以分为静态式和动态 式两类 一 静态显示驱动一 静态显示驱动 静态驱动也称直流驱动 静态驱动是指每个数码管的每一个段码都由一个 单片机的 I O 端口进行驱动 或者使用如 BCD 码二 十进制译码器译码进行驱 动 静态驱动的优点是编程简单 显示亮度高 缺点是占用 I O 端口多 如驱 动 5 个数码管静态显示则需要 5 8 40 根 I O 端口来驱动 要知道一个 89S51 单 职业技术学院毕业论文 15 片机可用的 I O 端口才 32 个呢 实际应用时必须增加译码驱动器进行驱动 增 加了硬件电路的复杂性 二 动态显示驱动二 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一 动态 驱动是将所有数码管的 8 个显示笔划 a b c d e f g dp 的同名端连 在一起 另外为每个数码管的公共极 COM 增加位选通控制电路 位选通由各 自独立的 I O 线控制 当单片机输出字形码时 所有数码管都接收到相同的字 形码 但究竟是哪个数码管会显示出字形 取决于单片机对位选通 COM 端电 路的控制 所以我们只要将需要显示的数码管的选通控制打开 该位就显示出 字形 没有选通的数码管就不会亮 通过分时轮流控制各个数码管的 COM 端 就使各个数码管轮流受控显示 这就是动态驱动 在轮流显示过程中 每位数 码管的点亮时间为 1 2ms 由于人的视觉暂留现象及发光二极管的余辉效应 尽管实际上各位数码管并非同时点亮 但只要扫描的速度足够快 给人的印象 就是一组稳定的显示数据 不会有闪烁感 动态显示的效果和静态显示是一样 的 能够节省大量的 I O 端口 而且功耗更低 职业技术学院毕业论文 16 第三章第三章 KeilKeil 软件简介软件简介 单片机开发中除必要的硬件外 同样离不开软件 我们写的汇编语言源程 序要变为 CPU 可以执行的机器码有两种方法 一种是手工汇编 另一种是机器 汇编 目前已极少使用手工汇编的方法了 机器汇编是通过汇编软件将源程序 变为机器码 用于 MCS 51 单片机的汇编软件有早期的 A51 随着单片机开发 技术的不断发展 从普遍使用汇编语言到逐渐使用高级语言开发 单片机的开 发软件也在不断发展 Keil 软件是目前最流行开发 MCS 51 系列单片机的软件 这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出 Keil 提供了包括 C 编译器 宏汇编 连接器 库管理和一个功能强大的仿真调试器等在内的完整 开发方案 通过一个集成开发环境 uVision 将这些部份组合在一起 运行 Keil 软件需要 Pentium 或以上的 CPU 16MB 或更多 RAM 20M 以上空闲的硬 盘空间 WIN98 NT WIN2000 WINXP 等操作系统 掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的 如果你使用 C 语言编程 那么 Keil 几乎就是你的不二之选 目前在国内你只能 买到该软件 而你买的仿真机也很可能只支持该软件 即使不使用 C 语言而 仅用汇编语言编程 其方便易用的集成环境 强大的软件仿真调试工具也会令 你事半功倍 3 1系统概述系统概述 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件 开发系统 与汇编相比 C 语言在功能上 结构性 可读性 可维护性上有明 显的优势 因而易学易用 用过汇编语言后再使用 C 来开发 体会更加深刻 Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具 全 Windows 界面 另外重要的一点 只要看一下编译后生成的汇编代码 就能体 职业技术学院毕业论文 17 会到 Keil C51 生成的目标代码效率非常之高 多数语句生成的汇编代码很紧凑 容易理解 在开发大型软件时更能体现高级语言的优势 3 2 整体结构简介整体结构简介 C51 工具包的整体结构 如图 3 1 所示 其中 uVision 与 Ishell 分别是 C51 for Windows 和 for Dos 的集成开发环境 IDE 可以完成编辑 编译 连接 调 试 仿真等整个开发流程 开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编 源文件 然后分别由 C51 及 A51 编译器编译生成目标文件 OBJ 目标文件可 由 LIB51 创建生成库文件 也可以与库文件一起经 L51 连接定位生成绝对目标 文件 ABS ABS 文件由 OH51 转换成标准的 Hex 文件 以供调试器 dScope51 或 tScope51 使用进行源代码级调试 也可由仿真器使用直接对目标板进行调试 也可以直接写入程序存贮器如 EPROM 中 图 3 1 C51 工具包的整体结构图 3 3 建立项目步骤建立项目步骤 1 点击 Project 菜单 选择弹出的下拉式菜单中的 New Project 如图 3 2 职业技术学院毕业论文 18 图 3 2 接着弹出一个标准 Windows 文件对话窗口 在 文件名 中输入您的第一 个 C 程序项目名称 保存 后的文件扩展名为 uv2 这是 KEIL uVision2 项 目文件扩展名 以后我们可以直接点击此文件以打开先前做的项目 2 选择所要的单片机 3 首先我们要在项目中创建新的程序文件或加入旧程序文件 如果你没 有现成的程序 那么就要新建一个程序文件 4 点击保存新建的程序 也可以用菜单 File Save 或快捷键 Ctrl S 进 行保存 我们把第一个程序命名为 test1 c 保存在项目所在的目录中 这时你 会发现程序单词有了不同的颜色 说明 KEIL 的 C 语法检查生效了 如图 3 3 鼠标在屏幕左边的 Source Group1 文件夹图标上右击弹出菜单 在这里可以做在 项目中增加减少文件等操作 图 3 3 5 C 程序文件已被我们加到了项目中了 下面就剩下编译运行了 如图 3 4 图中 1 2 3 都是编译按钮 不同是 1 是用于编译单个文件 2 是编译当 前项目 如果先前编译过一次之后文件没有做动编辑改动 这时再点击是不会 再次重新编译的 3 是重新编译 每点击一次均会再次编译链接一次 不管程 序是否有改动 在 3 右边的是停止编译按钮 只有点击了前三个中的任一个 停止按钮才会生效 在 4 中可以看到编译的错误信息和使用的系统资源情况等 以后我们要查错就靠它了 6 是有一个小放大镜的按钮 这就是开启 关闭调试 模式的按钮 它也存在于菜单 Debug Start Stop Debug Session 快捷键为 Ctrl F5 职业技术学院毕业论文 19 图 3 4 6 进入调试模式 软件窗口样式大致如图 3 5 所示 图中 1 为运行 当 程序处于停止状态时才有效 2 为停止 程序处于运行状态时才有效 3 是复位 模拟芯片的复位 程序回到最开头处执行 按 4 我们可以打开 5 中的串行调试 窗口 这个窗口我们可以看到从 51 芯片的串行口输入输出的字符 这里的第一 个项目也正是在这里看运行结果 首先按 4 打开串行调试窗口 再按运行按钮 要停止程序运行回到文件编辑模式中 就要先按停止按钮再按开启 关闭调试模 式按钮 然后我们就可以进行关闭 KEIL 等相关操作了 7 生成 HEX 文件 HEX 文件格式是 Intel 公司提出的按地址排列的数 据信息 数据宽度为字节 所有数据使用 16 进制数字表示 常用来保存单片机 或其他处理器的目标程序代码 它保存物理程序存储区中的目标代码映象 一 般的编程器都支持这种格式 职业技术学院毕业论文 20 图 3 5 打开目录 找到 test Uv2 的文件就可以打开先前的项目了 然后右击图 3 6 中的 1 项目文件夹 弹出项目功能菜单 选 Options for Target Target1 弹出项 目选项设置窗口 同样先选中项目文件夹图标 这时在 Project 菜单中也有一样 的菜单可选 图 3 6 打开项目选项窗口 转到 Output 选项页图 3 7 所示 图中 1 是选择编译输 出的路径 2 是设置编译输出生成的文件名 3 则是决定是否要创建 HEX 文件 选中它就可以输出 HEX 文件到指定的路径中 职业技术学院毕业论文 21 图 3 7 选好后再将它重新编译一次 很快在编译信息窗口中就显示 HEX 文件创建 到指定的路径中了 如图 3 8 这样我们就可用自己的编程器所附带的软件去读 取并烧到芯片了 再用实验板看结果 图 3 8 职业技术学院毕业论文 22 第四章第四章 程序设计及仿真程序设计及仿真 4 1 设计要求设计要求 要求利用单片机中断功能控制数码管显示 状态 当无外中断时 主程序 运行状态为七段数码管的 A 到 G 段依次点亮 不断循环 有外中断输入时 显 示为 0 到 9 然后返回主程序原断点 继续执行 数码管继续段点亮 4 2利用利用 proyeus 仿真软件画出电路图仿真软件画出电路图 首先添加元器件 元件拾取共有两种办法 一种是按类别查找和拾取元件 另一种是直接查找和拾取元件 然后在原理图编辑区单击鼠标左键即完成元件 的释放 最后电路连线 用鼠标左键单击编辑区元件的一个端点拖动到要连接 职业技术学院毕业论文 23 的另外一个元件的端点 先松开左键后再单击鼠标左键 即完成一根连线 以 此类推最终结果如图 4 2 所示 图 4 2 4 3流程图绘制以及说明流程图绘制以及说明 主程序主要分为四部分 包括复位电路部分 独立按键的判别部分 单 片机控制主程序部分和译码显示部分 模块流程图如图 4 1 所示 图 4 1 主程序流程图 结束 返回重新检测按键 将单片机处理的数据进行显 示 单片机主控制电路 向单片机申请显示 0 计数加 1 向单片机申请显示该 数值 Y 是否按键 开始 N 职业技术学院毕业论文 24 4 4 用用 keil 设计程序设计程序及仿真结果及仿真结果 一 程序如下 一 程序如下 ORG 0000H 从 0000H 单元开始 LJMP START 跳转到真正的程序起点 START MOV SP 5FH 堆栈初始化 MOV 20H 00H 20H 作为计数器 LOOP CALL DISP 调用显示程序 CALL DELAY 调用延时程序 INC 20H 计数器加 1 MOV A 20H 将计数器中的值送到 A 中 CJNE A 0AH L1 A 中的值到了 10 吗 未到转 L1 MOV 20H 00H A 中的值到了 10 让其回 0 L1 LJMP LOOP 转 LOOP 继续循环 DISP 显示子程序 CLR P2 7 由硬件电路要求 MOV A 20H 取出计数器中的值送 A MOV DPTR 50H 将字形码表的首地址送到 DPTR 中 MOVC A A DPTR 根据 A 中的值查表 MOV P0 A 查出相应字形码送到 P0 口 RET 返回 DELAY 延时子程序 MOV R7 10 R7 10 D1 MOV R6 250 R6 250 D2 MOV R5 250 R5 250 D3 DJNZ R5 D3 R5 中的值不等于 0 转本身循环 DJNZ R6 D2 R6 中的值不等于 0 转 D2 DJNZ R7 D1 R7 中的值不等于 0 转 D1 职业技术学院毕业论文 25 RET 返回 ORG 50H 从 50H 单元开始存放字形码表 DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H END 结束伪指令 二 程序仿真及烧录二 程序仿真及烧录 启动 Keil 软件 输入源程序 并保存起来 然后建立工程文件 加入源程 序 设置工程 打开 Debug 选项卡后 在左侧最下面的 Parametet 文本框中输 入 ddpj 单击 确定 关闭对话框 如图 4 3 所示 图 4 3 设置工程文件 按 F7 汇编 链接以获得目标文件 然后选择 Debug Start Stor Debug 菜单 项进入调试状态 选择 Peripherals 键盘显示实验仿真板 如图 4 4 所示 职业技术学院毕业论文 26 图 4 4 选择实验仿真板 再单击 运行 按钮即可开始运行 可以从仿真板上直观地观察到 LED 上 有数字的显示 如图 4 5 所示 图 4 5 仿真运行显示 职业技术学院毕业论文 27 三 仿真结果如下 三 仿真结果如下 从仿真板上直观地观察到 LED 上有数字的显示 显示数字从 0 到 9 如图 4 6 所示 职业技术学院毕业论文 28 职业技术学院毕业论文 29 图 4 6 仿真显示数字 0 到 9 4 5 心得体会 心得体会 本次设计主要是针对单片机知识 用汇编语言在 KEIL 中编程 在 PROTEUS 中绘制原理图并进行仿真 通过对这两个软件的学习 了解了其功 能的强大 掌握了 AT89S51 的内部结构及工作原理 对于我们以后的学习和实 践有很大的指导意义 这次课程设计使我在学习新知识的同时 还锻炼了我的 职业技术学院毕业论文 30 意志品质 当调试程序出现错误时 并没有使我灰心 让我放弃 而是通过自 己不懈的努力 弄懂了每一部分知识 因此 本次课设对我以后无论是学习还是工作 都有着较大的帮助 通过 这次课程设计 使我意识到了课本上的知识远远不能满足当今社会的需要 让 我知道了未来学习知识要更加注重实践与实用 通过此次设计给我最大的感触就是做任何事都要自信和认真 自信不可盲 目 更不要自大 一切有真实学和能力的人往往对此把握的游刃有余 认真是 一种作风和态度 是一个人品质的集中体现 也包含对事业的责任心 有时候 我们需要的太多 我们不妨从这两方面做起 去挑战自己 附录附录 A A 职业技术学院毕业论文 31 图 1 AT89S51 结构框图 附录附录 B 单片机单片机 AT89S51 汇编指令表汇编指令表 数据传送指令数据传送指令 序助记符功能字节数振荡周期 1MOVA Rn寄存器内容送入累加器112 2MOVA direct直接地址单元中的数据送入累加器212 3MOVA Ri间接 RAM 中的数据送入累加器112 4MOVA tata立即数送入累加器212 5MOVRn A累加器内容送入寄存器112 6MOVRN dinrect直接地址单元中的数据送入寄存器224 7MOVRn data立即数送入寄存器212 8MOVdirect A累加器内容送入直接地址单元212 9MOVdirect A寄存器内容送入直接地址单元224 10MOVDirect direct直接地址单元中的数据送入另一个直接地址单元324 11MOVDirect Ri间接 RAM 中的数据送入另一个直接地址单元224 12MOVEirect data立即数送入直接地址单元324 13MOV Ri A累加器内容送间接 RAM 单元112 14MOV Ri direct直接地址单元数据送入间接 RAM 单元224 职业技术学院毕业论文 32 15MOV Ri data立即数送入间接 RAM 单元212 16MOVDPTR datl616 位立即数送入地址寄存器324 17MOVC A A DPTR以 DPTR 为基地址变址寻址单元中的数据送入累加 器 124 18MOVCA A PC以 PC 位基地址变址寻址单元中的数据送入累加器124 19MOVXA Ri外部 RAM 8 位地址 送入累加器124 20MOVXA DPTR外部 RAM 16 位地址 送入累加器124 21MOVX Ri A累加器器送外部 RAM 8 位地址 124 22MOVX DPTR A累加器器送外部 RAM 16 位地址 124 23PUSHDirect直接地址单元中的数据压入堆栈224 24POPDirect弹栈送直接地址单元224 25XCHA Rn寄存器与累加器交换112 26XCHA direct直接地址单元与累加器交换212 27XCHA Ri间接 RAM 与累加器交换112 28XCHDA Ri间接 RAM 的低半字节与累加器交换112 算术操作类指令算术操作类指令 序助记符功能字节数振荡周期 1ADDA Rn寄存器内容加到累加器112 2ADDA direct直接地址单元的内容加到累加器212 3ADDA Ri间接 RAM 的内容加到累加器112 4ADDA data立即数加到累加器212 5ADDCA Rn寄存器内容带进位加到累加器112 6ADDCA direct直接地址单元的内容带进位加到累加器212 7ADDCA Ri间接 RAM 的内容带进位回到累加器112 8ADDCA data立即数带进位加到累加器212 9SUBBA Rn累加器带借位减寄存器内容112 10SUBBA direct累加器带借位减直接地址单元的内容212 11SUBBA Ri累加器带借位减间接 RAM 中的内容112 12SUBBA data累加器带借位减立即数212 13INCA累加器加 1112 14INCRn寄存器加 1112 15INCDirect直接地址单元加 1212 16INC Ri间接 RAM 单元加 1112 17DECA累加器减 1112 18DECRn寄存器减 1112 19DECDirect直接地址单元减 1212 20DEC Ri间接 RAM 单元减 1112 21INCDPTR地址寄存器 DPTR 加 1124 22MULABA 乘以 B148 23DIVABA 除以 B148 24DAA累回器十进制调整112 逻辑操作类指令逻辑操作类指令 职业技术学院毕业论文 33 序助记符功能字节数振荡周期 1ANLA Rn累加器与寄存器相 与 112 2ANLA Ri累加器与直接地址单元相 与 212 3ANLA Ri累加器与间接 RAM 单元单元相 与 112 4ANLA data累加器与立即数相 与 212 5ANLDirect A直接地址单元与累加器相 与 212 6ANLDirect data直接地址单元与累加器相 与 324 7ORLA Rn累加器与寄存器相 或 112 8ORLA direct累加器与直接地址单元相 或 212 9ORLA Ri累加器与间接 RAM 单元单元相 或 112 10ORLA data累加器与立即数相 或 212 11ORLDirect A直接地址单元与累加器相 或 212 12ORLDirect data直接地址单元与立即数相 或 324 13XRLA Rn累加器与寄存器相 异或 112
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古鄂尔多斯市东方控股集团有限公司校园招聘15人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025年勘察设计注册土木工程师考试(岩土专业知识)综合试题及答案
- 勘察设计注册土木工程师考试(岩土专业知识)模拟试题及答案(2025年玉林)
- 建筑结构设计面试题及答案
- 2025贵州省职工医院第十三届贵州人博会引进人才13人模拟试卷附答案详解(完整版)
- 2025年心肺复苏心跳呼吸停止处理考核试卷答案及解析
- 2025年精神病学典型病例分析模拟考试卷答案及解析
- 2025年感染科常见传染病病原体检测解读竞赛答案及解析
- 2025财务会计师考试题目及答案
- 2025财务会计单招试题及答案
- 高中化学374个必备知识点
- 单轴燃气蒸汽联合循环机组调试程序
- 武汉天河机场招聘笔试题及答案
- 舟山海域赤潮发生特点及成因分析
- 湿陷性黄土湿陷量计算表
- 丝杠安全操作保养规定
- 体育测量与评价PPT课件-第九章 运动员选材的测量与评价
- 《情满今生》读书笔记模板
- 胸痛中心网络医院STEMI患者绕行急诊和CCU方案流程图
- 大众蔚揽保养手册
- 急危重病人营养与代谢支持
评论
0/150
提交评论