单片机应用技术.doc_第1页
单片机应用技术.doc_第2页
单片机应用技术.doc_第3页
单片机应用技术.doc_第4页
单片机应用技术.doc_第5页
已阅读5页,还剩227页未读 继续免费阅读

下载本文档

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

文档简介

目目 录录 项目一项目一 LEDLED 流水灯控制流水灯控制 2 任务一任务一 单片机概述单片机概述 2 任务二任务二 发光二极管的点亮控制发光二极管的点亮控制 9 任务三任务三 发光二极管的闪烁控制发光二极管的闪烁控制 31 任务四任务四 8 个发光二极管的循环点亮个发光二极管的循环点亮 48 项目二项目二 定时器控制定时器控制 63 任务一任务一 数码显示数码显示 63 任务二任务二 按键识别按键识别 73 任务三任务三 定时时间的设定定时时间的设定 83 任务四任务四 定时器定时器 92 项目三项目三 点阵显示器点阵显示器 112 任务一任务一 8 8 点阵显示器显示字符点阵显示器显示字符 112 任务二任务二 扩展并行扩展并行 I O 口的点阵显示器口的点阵显示器 116 任务三任务三 串口输出的点阵屏显示控制串口输出的点阵屏显示控制 127 任务四任务四 模拟串行口模拟串行口 137 任务五任务五 点阵显示内容的更新点阵显示内容的更新 144 任务六任务六 显示数据的片外存储显示数据的片外存储 158 项目四项目四 水位水温控制水位水温控制 162 任务一任务一 水位控制水位控制 162 任务二任务二 温度检测温度检测 172 任务三任务三 水温控制水温控制 187 项目五项目五 C 语言应用实例语言应用实例 交通灯控制交通灯控制 193 任务一任务一 发光二极管的闪烁控制发光二极管的闪烁控制 193 任务二任务二 8 8 个发光二极管的循环点亮个发光二极管的循环点亮 201 任务三任务三 数码管动态显示数码管动态显示 210 任务四任务四 交通灯控制交通灯控制 215 附录附录 224 附录附录 A 学习板原理图学习板原理图 224 附录附录 B MCS 51 单片机指令表单片机指令表 225 附录附录 C C MCS 51MCS 51 单片机指令对标志位的影响状况表单片机指令对标志位的影响状况表 229 参考文献参考文献 229 2 项目一项目一 LEDLED 流水灯控制流水灯控制 Intel 公司推出的 MCS 51 系列 8 位高档单片机 无论是片内 RAM 容量 I O 端口 系统扩展能力 还是指令系统和 CPU 的处理功能 都非常强 尤其是 MCS 51 所特有的 布尔处理机 在逻辑处理与控制方面具有突出优点 MCS 51 系列单片机适合于实时控 制 可构成工业控制器 智能仪表 智能接口以及通用测控单元等 目前世界上一些 大半导体公司推出的具有 51 内核的系列化单片机产品 其指令系统 地址空间和寻址 方式 甚至是引脚功能也完全兼容 由于 MCS 51 系列单片机体积小 功能全 价廉 面向控制 开发应用方便 因而具有极强的竞争力 今后它仍然是工业界 科技界广 泛应用的 8 位微控制器 本项目通过对 LED 流水灯的控制 主要讲授单片机内部结构 和汇编语言程序等知识 本项目知识要点 本项目知识要点 1 89C51 单片机的结构和工作原理 2 89C51 单片机的内部资源 特别是存储器配置 3 89C51 单片机 I O 接口特点 4 89C51 单片机的指令系统及寻址方式 5 常用指令的功能及使用方法 任务一任务一 单片机概述单片机概述 一 一 任务要求任务要求 开发一个单片机系统首先要选择单片机器件的型号 MCS 51 是指由美国 Intel 公 司生产的一系列单片机的总称 这一系列单片机包括了多个种类 如 8031 8051 8751 8032 8052 8752 等 其中 8051 是最早 最典型的产品 该系列 其他单片机都是在 8051 的基础上进行功能的增 减改变而来的 所以人们习惯于用 8051 来称呼 MCS 51 系列单片机 本任务主要目的是让初学者对单片机应用领域 特点 工作原理和开发等知识有初步了解 3 知识目标 知识目标 1 了解单片机的应用领域 2 熟悉单片机的特点 3 知道常用 MCS 51 系列单片机的内部硬件资源 4 了解微型计算机基本组成 5 知道微型计算机工作原理 6 熟悉单片机系统的研制过程 技能目标 技能目标 1 能根据实际应用情况选择不同型号的单片机 2 会利用图书馆 互联网等资源查找资料 二 二 知识知识链接链接 1 单片机的典型应用领域 本书中所有项目的实现 均以单片机为核心 这是以单片机的广泛应用为前提的 随着单片机的不断发展 完善 它已成为科技领域的智能化工具 应用领域主要表现 在以下几个方面 1 单片机在智能仪器仪表中的应用 单片机广泛应用于各类仪器仪表中 提高了 仪器仪表测量的自动化程度和精度 简化仪器仪表的硬件结构 从而可以方便地完成 仪器仪表的升级换代 如各种智能电气测量仪表 智能传感器等 2 单片机在机电一体化产品中的应用 机电一体化产品是集机械技术 电子技 术 自动化技术和计算机技术于一体 具有智能化特征的各种机电产品 单片机在机 电一体化产品的开发中可以发挥巨大的作用 典型产品如数控机床 机器人 医疗设 备 自动包装机和计算机外围设备等 3 单片机在工业测控中的应用 单片机还广泛应用于工业过程监测 过程控制 工业控制器等系统 利用单片机作为控制器 根据对各物理量的采集和分析 根据被 控对象的不同特征 采用不同的智能算法 实现期望的控制指标 提高了系统的效率 和产品质量 典型应用如温度控制 电机转速控制和自动生产线等 4 单片机在日常生活及家电中的应用 单片机愈来愈广泛地应用于日常生活中的 智能电气产品及家电中 例如手机 洗衣机 电冰箱 彩色电视机控制 空调 微波 炉 电饭煲 音响 电风扇等 提高了智能化程度 增加了功能 5 单片机在其他方面的应用 单片机在工商 金融 交通 教育 国防航空航天 4 等领域都有着十分广泛的用途 如自动售货机 电子收款机 银行统计机 交通指示 灯 加油机 汽车内部的自动装置 导弹制导 雷达 目标识别 跟踪 航天事业等 2 单片机的特点 单片机之所以得到了广泛的应用 是和其特点分不开的 主要特点有 1 集成度高 单片机将 CPU RAM ROM I O 口及定时器 计数器都集成在一块 芯片内 内部采用总线结构 减少了各芯片之间的连接 大大提高了单片机的可靠性 与抗干扰能力 与常规的计算机系统相比 具有体积小 集成度高的特点 2 控制功能强 为满足控制的需要 单片机有很强的逻辑控制能力 特别是具 有很强的位处理能力 单片机可以方便地实现多机和分布式控制 使整个控制系统的 效率和可靠性大为提高 3 低电压 低功耗 采用 CHMOS 制造工艺 集 HMOS 的高速 高集成度和 CMOS 的低功耗技术于一体 使单片机的功耗进一步降低 适应电压范围更宽 2 6 6V 4 性能价格比高 单片机另一个显著特点是成本低 运用灵活 易于产品化 能方便地组成各种智能化的控制设备和仪器 做到机电一体化 因此世界上各大公司 在提高单片机性能的同时 进一步降低价格 提高性能价格比是各公司竞争的主要策 略 3 常用 MCS 51 系列单片机的内部硬件资源 由于单片机的种类很多 在选择单片机时要依据实际设计要求选择合适的单片机 例如 当设计时仅仅需要一个单片机定时器 那么选择 89C1051 或是 89C2051 即可 而不需要选择 89C51 或是 89C52 因为后者要比前者在价格上贵一倍 当然 如果程序 和数据区的要求较高 那么选择的单片机还要能满足程序空间的要求 部分 51 单片机 的内部资源见表 1 1 表 1 1 部分 MCS 51 系列单片机 8 位 内部硬件资源 公司型号片内 ROM片内 RAMI O 口线中断源定时 计数器 8031 1283252 8051 4K 掩模 1283252 87514K ERPROM1283252 Intel 87528K EPROM2563263 ATMELAT89C10511K FLASH1281531 5 AT89C20512K FLASH1281552 AT89C514K FLASH1283252 AT89C528K FLSH2563263 在 ATMEL 公司成功推出 AT89 系列单片机后 几个著名的半导体生产商也相继生产 了类似的产品 如 PHILIPS 公司的 P89 系列单片机 SST 公司的 SST89 系列单片机 Winbond 公司的 W78 系列单片机等 其中 AT89C51 P89C51 SST89E51 W78E51 都是与 MCS 51 系列完全兼容的单片机 各芯片之间也是兼容的 所以不写前缀 仅写 89C51 可以是其中任何一个厂家的产品 本书如不做特殊声明 使用单片机的型号均为 89C51 4 单片机的发展趋势 单片机的发展趋势是向着 CMOS 化 大容量化 高性能化 小体积 低价格化和外 围电路内装化等几个方面发展 1 CMOS 化 CMOS 芯片除了低功耗特性外 还具有功耗的可控性 使单片机可以 工作在功耗精细管理状态 2 大容量化 片内存储器容量不断扩大 早期单片机的片内程序存储器ROM 为 1KB 4KB 片内数据存储器RAM 为128B 256B 在特殊的复杂控制场合 存储容量往 往不够 因此不得不外接扩充 为适应特殊领域的要求 运用新工艺 使片内存储器 大容量化 也是单片机的发展趋势之一 3 高性能化 CPU 的性能进一步改进 指令运行速度加快 位处理功能加强 中 断和定时控制功能加强 系统的可靠性提高 4 小容量 低价格化 是发展方向之一 这类单片机用于简单的控制电路 如家 电 玩具产品 5 外围电路内装化 这是单片机的内部资源增加的发展方向 随着大规模集成 电路的发展和集成度的不断提高 有可能把各种外围功能器件都集成在片内 例如在 片内集成 A D D A DMA 控制器 声音发生器 监视定时器 液晶显示驱动器 彩色 电视机和录像机用的锁相电路等 随着集成工艺的不断发展 单片机的集成度将更高 体积将更小 功能将更强 其应用前景是令人向往的 除了51系列单片机外 还有一些其他的单片机 这些系列单片机和51系列单片机 不兼容 程序指令也不相同 如摩托罗拉 PIC等系列的单片机 能够解决应用的芯片 6 还包括DSP处理器 片上系统SOC等 它们在速度和容量上远远优于单片机 但选择器 件关键在于是否够用 是否有很好的性能价格比 51系列单片机自1980年面世以来 依然没有被淘汰 而且还在不断的发展中 具有广阔的应用前景 所以学习和掌握51 系列单片机产品的设计具有极其重要的现实意义 5 微型计算机基本组成 单片机属于微型计算机 微型计算机在结构上通常由微处理器 存储器和I O接口 等部分组成 并且采用总线结构 如图1 1 所示 微处理器MPU是通过地址总线AB 数 据总线DB和控制总线CB同存储器及I O接口相连 图1 1 计算机基本结构框图 1 微处理器MPU 微处理器又称中央处理单元 CPU 由运算器和控制器组成 用以完成运算和对全机进行控制的功能 是计算机的核心部分 运算器主要包括加法器 移位 判断和寄存器电路等 用于进行算术运算和逻辑 操作 控制器由指令寄存器 指令译码器和控制电路等组成 是整个计算机的中枢 它根据指令码指挥着运算器 存储器和I O接口协调的工作 2 存储器 存储器用于存储数据和程序 分为ROM 只读存储器 和RAM 随机 存取存储器 两大类 ROM存储器在正常工作时只能读不能写 通常用来存放固定程序 和常数 RAM存储器在正常工作时既能读又能写 通常用来存放原始数据 中间结果和 实时数据等 3 地址总线 数据总线和控制总线 总线是将微处理器 存储器和I O接口等部 分连接起来 并进行信息传送的公共通道 包括地址总线AB 数据总线DB和控制总线 CB 地址总线AB仅传送PMU向存储器或I O接口发出的地址码 以选择相应的存储器或 寄存器 因此 地址总线AB必须和所有存储器的地址线相连 也必须和所有I O接口的 设备码线相连 这样 当微处理器MPU对存储器或外设读 写数据时 只要把存储单元 的地址码或外设的设备码送到地址总线上便可选中它们工作 数据总线是一种双向的 通信总线 用于传送MPU 存储器和I O接口三者之间的数据和指令码 控制总线CB用 于传送各类控制信号的单向通信总线 每条控制总线最多传送两个控制信号0和1 4 I O接口 I O接口是架设在微处理器和外设间的桥梁 主要功能是实现两者 7 之间的信号传输和匹配 6 微型计算机的基本工作原理 微型计算机完成任务的过程就是执行相应程序的过程 因此 微型计算机执行程 序的过程实际上也体现了微型计算机的基本工作原理 程序均由一条条指令组成 执 行程序的过程也就是依次执行每一条指令的过程 下面给出微型计算机执行程序中第N 条指令的过程 第1步 微处理器通过地址总线AB指出第N条指令所在存储单元的地址 接着通过 控制总线向存储器发出读取数据的控制信号 第2步 存储器将被选中的存储单元中存放的指令代码送到数据总线 MPU通过数 据总线DB读入指令代码 第3步 MPU读取指令代码后进行译码 判断出该指令要进行哪一种操作 以及参 加这类操作的数所在单元的地址 第4步 MPU根据译码结果 由控制器向与此操作相关的电路发出相应的控制信号 完成指令所规定的操作 一条指令执行完后 MPU内部的程序计数器PC将自动加1 控制MPU继续执行程序的 下一条指令 直到程序的最后一条指令执行完毕 简单的说 计算机的工作过程就是 一个不断地 周而复始地执行指令的过程 三 三 硬件电路设计硬件电路设计 一个单片机应用系统的硬件电路设计包含两部分内容 一是系统扩展 即单片机内 部的功能单元 如 ROM RAM I O 定时器 计数器 中断系统等不能满足应用系统的 要求时 必须在片外进行扩展 选择适当的芯片 设计相应的电路 二是系统的配置 即按照系统功能要求配置外围设备 如键盘 显示器 打印机 A D D A 转换器等 要设计合适的接口电路 1 尽可能选择典型电路 并符合单片机常规用法 为硬件系统的标准化 模块化 打下良好的基础 2 系统扩展与外围设备的配置水平应充分满足应用系统的功能要求 并留有适当 余地 以便进行二次开发 3 硬件结构应结合应用软件方案一并考虑 硬件结构与软件方案会产生相互影响 考虑的原则是 软件能实现的功能尽可能由软件实现 以简化硬件结构 但必须注意 由软件实现的硬件功能 一般响应时间比硬件实现长 且占用 CPU 时间 8 4 系统中的相关器件要尽可能做到性能匹配 如选用 CMOS 芯片单片机构成低功 耗系统时 系统中所有芯片都应尽可能选择低功耗产品 5 可靠性及抗干扰设计是硬件设计必不可少的一部分 它包括芯片 器件选择 去耦滤波 印刷电路板布线 通道隔离等 6 单片机外围电路较多时 必须考虑其驱动能力 驱动能力不足时 系统工作不 可靠 可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载 7 尽量朝 单片 方向设计硬件系统 系统器件越多 器件之间相互干扰越强 功耗也增大 不可避免地降低了系统的稳定性 随着单片机片内集成的功能越来越强 真正的片上系统SoC已经可以实现 如ST公司推出的 PSD32 系列产品在一块芯片 上集成了80C32核 大容量FLASH存储器 SRAM A D I O 两个串口 看门狗 上电 复位电路等等 四 软件设计四 软件设计 单片机应用系统的软件主要包括两大部分 即用于管理单片微型计算机系统工作 的监督管理程序和用于执行实际具体任务的功能程序 对于前者 尽可能利用现成微 型计算机系统的监控程序 为适应各种应用的需要 现代的单片机开发系统的监控软件 功能相当强 并附有丰富的实用子程序 可供用户直接调用 例如键盘管理程序 显 示程序等 因此在设计系统硬件逻辑和确定应用系统的操作方法时 就应充分考虑这 一点 这样可大大减轻软件设计的工作量 提高编程效率 后者要根据应用系统的功 能要求来编写程序 例如 外部数据采集 控制算法的实现 外设驱动 故障处理及 报警程序等 五 五 单片机系统的研制过程单片机系统的研制过程 在完成单片机系统的设计方案后 需要将其转换为产品 而这些产品必须以市场 需求为前提 一个完整的单片机系统的研制过程可以分为以下 5 个环节 1 单片机方案设计 单片机方案设计可以认为是狭义的单片机开发 即针对特定的要求而设计的单片 机解决方案 包括系统硬件设计和软件设计两大部分 2 电路原理图 利用电路设计软件 如 Protel等 将单片机设计方案的硬件部分用标准的电路原 理图表示 为电路板 PCB 图的生成提供依据 3 电路板图 9 根据电路原理图 利用电路设计软件 生成电路板 PCB 图 4 制板 根据电路板 PCB 图 加工印刷电路板 5 程序的调试和烧录 印刷电路板制作完毕 将器件焊接其上 并进行单片机程序的烧录和电路的调试 可以看出 对于一个具体的实例而言 除了在第一步的系统方案设计有所不同外 整个电路的实现是一种规范的 顺序的研制过程 对于电路设计软件和制板过程 可参看其他资料 本书重点说明单片机及其外围 器件电路的设计和单片机程序的编制 即第一个环节 单片机方案设计 六 拓展训练六 拓展训练 1 1 技能训练 技能训练 利用图书馆 互联网等资源查找 Motorola Microship Epson 华邦等公司各自 生产的单片机的特点 2 2 知识思考知识思考 1 微型计算机由哪几部分组成 各部分的作用是什么 2 简述微型计算机的工作过程 3 一个完整的单片机应用系统的研制过程包含哪些环节 任务二任务二 发光二极管的点亮控制发光二极管的点亮控制 一 一 任务要求任务要求 对于单片机系统 最简单的功能应该是控制输出电平的高低 这也是数字电路最 基本的功能 将 89C51 单片机 P1 端口接上 8 个发光二极管 用 1 个二极管的亮灭表示单片机系统是否能够正常工作 知识目标 知识目标 1 了解 89C51 单片机的引脚功能及片内结构 2 知道89C51单片机的时钟电路 复位的方法及复位电路 10 3 掌握89C51单片机的存储器配置 4 熟悉特殊功能寄存器的作用 5 看懂 89C51 单片机的工作时序 6 掌握单片机中数据的表示形式 7 熟悉 89C51 单片机 I O 端口的电气特性 8 了解 89C51 单片机的常用驱动电路 技能目标 技能目标 1 能进行晶振选择和典型晶振电路设计 2 能完成复位电路参数选择 知道常用复位电路的形式 3 能进行单片机 驱动电路以及发光二极管之间的连接 4 学会 74HC573 的使用 5 看懂简单的汇编语言程序 二 二 知识链接知识链接 1 单片机的引脚功能 对于一块集成电路 想要使用它 首先必须要知道它的引脚功能 才能会连线 双 列直插式 DIP 封装的89C51单片机的引脚排列图如图1 2 所示 图1 2 89C51单片机引脚排列图 1 电源引脚 VCC 40 脚 接电源 5V VSS 20 脚 接地 也就是 GND 2 时钟引脚 XTAL1 19 脚 和 XATL2 18 脚 接外部石英晶振的引脚 也可引入外部时钟 3 控制引脚 29 脚 片外 ROM 选通信号 低电平有效 PSEN ALE PROG 30 脚 地址锁存信号输出端 EPROM 编程脉冲输入端 RST VPD 9 脚 复位信号输入端 备用电源输入端 11 VPP 31脚 内外部ROM选择端 片内ROM编程电压输入端 EA 4 输入 输出 I 0 引脚 P0 口 39 32 脚 即可作地址 数据复用总线使用 又可作为通用 I O 口使用 P1 口 1 8 脚 通用 I 0 端口 P2 口 21 28 脚 准双向 I 0 口 即可作为通用 I O 口 又可作为高 8 位地址总 线 P3口 10 17脚 双功能端口 2 单片机内部结构 为了能充分发挥单片机的功能 必须对其内部结构进行必要的了解 89C51单片机 的内部结构如图1 3 所示 主要包括CPU 内部存储器 定时与中断系统 并行I O口 串行I O口和时钟电路等六部分 图1 3 89C51单片机内部结构框图 1 CPU CPU也叫中央处理器 是单片机的核心部件 主要用于完成单片机的运 算和控制功能 其内部由运算器和控制器组成 运算器 包括算术逻辑单元 ALU 布尔处理器 累加器 ACC 寄存器B 暂存器 TMP1 和TMP2 程序状态字 PSW 寄存器及十进制调整电路等 运算器可以对数据进行 算数运算和逻辑运算 并且能够完成数据传送 移位 判断和程序转移的操作 控制器 包括定时控制逻辑 指令寄存器 译码器以及信息传送控制部件等 用 于控制单片机的工作 2 内部存储器 单片机的内部存储器包括程序存储器 ROM 和数据存储器 RAM 它们是相互独立的 程序存储器 ROM 为只读存储器 用于存放程序指令 常数及数据表格 数据存储器 RAM 为随机存储器 用于存放数据 在89C51单片机内部有256 个RAM 单元 用于存放可读写的数据 其中后128 个被 专用寄存器占用 可作为一般RAM供用户使用的只有前128个单元 因此 通常所说的 内部数据存储器就是指前128个单元 简称内部RAM 3 定时与中断系统 89C51单片机内部有两个16位的定时器 计数器 用于实现 12 定时或计数功能 并以其定时或计数的结果 查询或中断方式 来实现控制功能 89C51单片机具有中断功能 可满足控制应用的需要 它共有5个中断源 89C52单 片机有6个中断源 即两个外部中断源 两个定时器 计数器中断源和一个串行口中断 源 全部中断可分为高级和低级两个优先级别 4 并行I O口 89C51单片机内部共有4个8位的并行I O 口 P0 P1 P2 P3 用于实现数据的并行输入和输出 5 串行I O口 89C51单片机还有一个全双工的串行口 用于实现与外部的串行 数据传送 6 时钟电路 时钟电路为单片机产生时钟脉冲序列 用于协调和控制其工作 89C51单片机的内部有时钟电路 在采用内部时钟时需要外接石英晶体振荡器和微调电 容 3 数据的表示形式 89C51单片机中 在原理知识描述和汇编语言程序中的数据可以有以下几种表示形 式 1 十进制数 末尾以字母D标识或将字母省略 如 88D 250 十进制是日常生活和生产中最常用的计数体制 它的每一位用0 9十个数码表示 基数为10 超过数码9的数则需要用多位数表示 其中相邻位数间的关系是逢十进一或 借一当十 2 二进制数 末尾以字母B标识 如 10001111B 二进制是计算机系统中所采用的进位计数制 在二进制数中 每一位仅有1和0两 个数码 所以计数的基数为2 相邻位数间的关系是逢二进一或借一当二 如1011B所表示的十进制数为 1011 2 1 23 0 22 1 21 1 20 8 0 2 1 11 10 对于十进制整数 可采用除2取余法换算为二进制数 例如将十进制数29转换为二 进制数的步骤可表示为 2 29 2 14 余数为 1 2 7 余数为 0 2 3 余数为 1 2 1 余数为 1 13 0 余数为 1 换算结果 29 10 11101 2 由此可见 将十进制不断用2去除 直到商为0 从下 往上写出余数 即为所求的二进制数 二进制数的位是计算机中数据的最小单位 8个二进制位构成1个字节 1个字节可 以表示28 256 个不同的值 0 255 字节中的位号从左至右依次为7 0 第7位 称为最高有效位 MSB 第0位称为最低有效位 LSB 当数值大于255时 就要用字 或双字进行表示 字可以表示216 65536 个不同的值 0 65535 这时MSB为第15 位 3 十六进制数 末尾以字母H标识 如 0100H 0A8H 应注意的是十六进制数 以字母A F开头时 须在其前面加上数字 0 由于实现二进制数所用器件容易获得 加上二进制算术运算简单 所以在数字电 路系统中广泛使用二进制 但二进制与十进制比较 人们使用不太方便 与等值十进 制相比 它所需要的位数多 例如 十进制数9是一位数 而等值的二进制数1001则为 四位 读写不方便 为了读写方便 常把二进制数改写成十六进制 为便于对照 将 部分十 二 十六进制等值关系列于表1 2 中 表1 2 常用计数体制数的表示方法 十进制数二进制数十六进制数十进制数二进制数十六进制数 00000B0H101010BAH 10001B1H111011BBH 20010B2H121100BCH 30011B3H131101BDH 40100B4H141110BEH 50101B5H151111BFH 60110B6H160001 0000B10H 70111B7H640010 0000B40H 81000B8H2551111 1111BFFH 91001B9H10001111101000B3E8H 十六进制是在计算机指令代码和数据的书写中经常使用的数制 采用 0 9 A B C D E F十六个数码 计数的基数为16 相邻位数间的关系是逢十六 进一或借一当十六 二进制转换为十六进制数时 对于整数只要将二进制数从最低有 效位往左每四位分成一组 每组用一个等价的十六进制数来代替即可 例如将 14 1111101000 2转换为十六进制数可表示为 11 1110 1000 3 E 8 所以 1111101000 2 3E8 16 由于4位二进制数可以方便的用1位十六进制数表示 所以人们对二进制的代码或数据常用十六进制形式缩写 十六进制数转换为二进制数 的方法是把十六进制数的每位分别用4位二进制数码表示 然后把它们排列起来 例如 把十六进制数2AC转换为一个二进制数可以表示为 2 A C 0010 1010 1100 所以 2AC 16 1010101100 2 十六进制数转换成十进制数 方法和二进制数转换成十进制数的方法类似 例如 3F 16 3 161 15 160 48 15 63 10 十进制整数转换成十六进制整数可以采用 除16取余法 即用16连续去除要转换的十 进制整数 直到商为0 然后把各次余数按逆序排列起来所得的数 便是所求的十六进 制数 例如 3901 10所对应的十六进制数可表示为 16 3901 16 243 余数 13 写作 D 16 15 余数 3 写作 3 0 余数 15 写作 F 把所得余数按从下到上排列起来便可得到 3901 10 F3D 16 对于各进制小数部分的相互转换 由于在单片机系统中很少应用 这里不再进行 详细介绍 4 ASCII码 以单引号括起来标识 如 AB 在计算机系统中 有时需要把数及数以外的其他信息 如字符或字符串 用一个 规定的二进制数来表示 二进制数只有0和1两个数码 把若干个0和1按一定规律编排 起来 用来表示某种信息含义的一串符号称为代码 这些二进制形式的代码称为二进 制编码 字符的编码经常采用的是美国标准信息交换代码 ASCII码 用于计算机与外围 设备的数据传输 一个字节的8位二进制码可以表示256个字符 当最高位为 0 时 所表示的字符为标准ASCII码字符 共有128个 分为两类 一类是图形字符 96个 15 用于表示数字 英文字母 标点符号等 这类字符有特定的形状可以显示在CRT上和打 印在纸上 另一类是控制字符 包括回车符 换行符等 没有特定形状 其编码虽然 可以存储 传送和起某种控制作用 但字符本身不能在CRT上显示和打印机上打印的 当最高位为 1 时 所表示的是扩展ASCII码字符 4 单片机的ROM 单片机能够完成各种功能 都是自动运行指令 程序 的结果 在单片机内部 专门用来存放程序的是程序存储器 ROM ROM 是一种写入信息后不能改写 只能读 出的存储器 断电后 ROM 中的信息保留不变 所以 ROM 用来存放固定的程序或数 据 所谓的只读只是针对工作情况下而言 也就是在使用这块存储器的时候 而不是 指制造这块芯片的时候 只要让存储器满足一定的条件就能把数据预先写进去 89C51 是一种带Flash ROM的单片机 Flash ROM是一种快速存储式只读存储器 这种程序存 储器的特点是可以电擦写 掉电后程序依然保存 编程寿命可以达到一千次左右 早 期的程序存储器还有掩膜ROM PROM EPROM三种 掩膜ROM中存储的信息是在制造过程 中固化进去的 一旦固化便不能再修改 适合于大批量的定型产品 可编程只读存储 器PROM中的信息可由用户通过特殊手段写入 但只能一次性写入 EPROM是可擦除 可 改写的PROM 用户可根据需要对它多次写入和擦除 但可以擦除的次数也是有限的 一般为几十次 存储容量是存储器存储信息量大小的指标 通常用字节表示 一个字节由8个信息 位组成 不同型号的单片机 其内部存储器容量也有所差异 8051 单片机在芯片内部 设置了4 KB 的ROM 而8751 单片机在芯片内部设置了4 KB的EPROM 89C51 单片机片 内有4 KB 的Flash 程序存储器 8031 已停产 单片机在芯片内部没有设置程序存储器 需要在单片机外部配置EPROM 深圳宏晶公司生产的STC89E516单片机的内部ROM容量已 达到64KB 每个字节在存储器中所处的位置是以地址标识的 一个字节对应一个地址 通过 地址码访问某一字节 单片机内部设立程序计数器PC 它在物理上是独立的 不属于 特殊功能寄存器区中的寄存器 PC是一个16位的计数器 里面存储的是将要执行的指 令地址 PC 有自动加1 的功能 即执行完一条指令后 其内容自动加1 可实现程序 的顺序执行 PC本身没有地址 是不可寻址的 因此用户无法对其进行读写操作 在 转移 调用和返回等指令中 PC 的值会改变 以控制程序按用户的要求去执行 PC 是一个 16 位计数器 其存储的地址码可以用 4 位十六进制表示 即 16 0000H FFFFH 可见 单片机所能访问的最大地址空间为 64K 字节 程序存储器 ROM 可分为内部程序存储器和外部程序存储器 单片机是通过引脚来控制内部和外部EA ROM 的 当 1 时 单片机读取内部 ROM 的地址范围 若超出范围 则 CPU 自动EA 读取外部 ROM 当 0 时 CPU 完全读取外部 ROM 因此对于不带 ROM 或 EPROM 的EA CPU 来说 引脚一律接地 当读取外部 ROM 时 单片机的端变为低电平 EAPSEN 当读取内部 ROM 时 单片机的端将保持高电平 PSEN 单片机复位后 程序计数器PC 为0000H 即从程序存储器的0000H 单元读出第一 条指令 但在程序存储器中 某些单元保留给系统使用 见表1 3 因此可在0000H 单元内放置一条跳转指令 如LJMP 表示主程序入口地址 由于系 统给每一个中断服务子程序预留了8个字节 因此 用户主程序一般存放在0033H 单元 以后 表1 3 保留的存储单元 存储器单元保留单元的目的 0000H 0002H复位后初始化引导程序 0003H 000AH外部中断0 000BH 0012H定时器0溢出中断 0013H 001AH外部中断1 001BH 0022H定时器1溢出中断 0023H 002AH串行端口中断 002BH 0032H定时器2溢出中断 5 数据存储器 RAM 在程序的执行过程中 总有一些暂时性的数据或中间结果等信息需要存储 而 ROM 中的内容在单片机工作状态下是不允许更改的 为此单片机中专门设立了数据存储器 RAM 在关闭电源时 其所存储的信息将丢失 单片机的数据存储器 分为片内 RAM 和片外 RAM 两大部分 1 内部数据存储器 89C51单片机内部数据存储器在结构上可以分为两个不同的存储空间 即低128单 元的数据存储器空间 00H 7FH 和高128 单元的具有特殊功能的专用寄存器存储器空 间 80H FFH 这两个空间是连续的 但只有低128 单元才能真正地作为数据存储器 17 提供给用户使用 在单片机中 尽管片内RAM 的容量不大 但它的功能多 使用灵活 128B的片内RAM分成工作寄存器区 位地址区 通用RAM区3部分 如图1 4 所示 图1 4 内部RAM分配 1 工作寄存器区 片内RAM中 00H 1FH 的32 个单元是4 个通用工作寄存器组 每组有8 个寄存器 即R0 R7 编程时 寄存器常用于存放操作数及中间结果等 正 在使用的寄存器组称为当前寄存器区 选择哪个工作组为当前工作区由程序状态控制 寄存器的RS1 位和RS0 位的状态来决定 用户可以在编程时用软件进行设置 切换当 前工作寄存器区 当前寄存器的选择和寄存器组的地址见表1 4 单片机上电复位后 工作寄存器为第0组 表1 4 RS1 RS0 与当前寄存器组的选择 RS1RS0 当前寄存器组R0 R7 的地址 00 第0组00H 07H 01 第1组08H 0FH 10 第2组10H 17H 11 第3组18H 1FH 2 位地址区 从20H 2FH 的16 个字节的RAM 为位地址区 有双重寻址功能 既 可以进行位寻址操作 也可以同普通RAM 单元一样按字节寻址操作 共有128 位 每 一位都有相对应的位地址 位地址范围从00H 7FH 位寻址是单片机的一个重要的特 点 3 通用RAM 区 数据缓冲器区 30H 7FH 共80 个字节为数据缓冲器区 用于存 放用户数据 只能按字节存取 通常这些单元可用于中间数据的保存 也用作堆栈的 数据单元 2 特殊功能寄存器 特殊功能寄存器也叫专用寄存器 SFR 就是将内部RAM的高128 个单元作为特殊 功能寄存器使用 其单元地址为80H FFH 51 系列单片机的专用寄存器总数为21个 而52系列单片机为26 个 这些寄存器仅占用了80H FFH 中的一小部分 其他空间虽 然未安排寄存器 但也不能进行读 写操作 特殊功能寄存器的名称 地址见表1 5 18 在特殊功能寄存器中 有11个寄存器不仅可以进行字节寻址 还可以进行位寻址 能进行位寻址的寄存器的特点是字节地址都能被8 整除 字节地址的末位是0 或8 SFR 中的位地址分布见表1 6 表1 5 特殊功能寄存器一览表 符号地址名称符号地址名称 ACCE0H 累加器 IEA8H 中断允许控制器 BF0H B寄存器 TMOD89H 定时器方式选择 PSWD0H 程序状态字 TCON88H 定时器控制器 SP81H 堆栈指针 TH08CH 定时器0高8位 DPL82H 数据寄存器指针 低8位 TL08AH 定时器0低8位 DPH83H 数据寄存器指针 高8位 TH18DH 定时器1高8位 P080H 通道0 TL18BH 定时器1低8位 P190H 通道1 SCON98H 串行控制器 P2A0H 通道2 SBUF99H 串行数据缓冲器 P3B0H 通道3 PCON87H 电源控制器 IPB8H 中断优先级控制器 表1 6 SFR中的位地址分布表 寄存器号 D7D6D5D4D3D2D1D0 字节地址 BF7F6F5F4F3F2F1F0F0H ACCE7E6E5E4E3E2E1E0E0H PSWD7D6D5D4D3D2D1D0D0H IP BCBBBAB9B8B8H P3B7B6B5B4B3B2B1B0B0H IEAF ACABAAA9A8A8H P2A7A6A5A4A3A2A1A0A0H SCON9F9E9D9C9B9A999898H P1979695949392919090H TCON8F8E8D8C8B8A898888H P0878685848382818080H 特殊功能寄存器 SFR 的每一位的定义和作用与单片机各部件直接相关 这里先 对部分SFR作一简要的说明 详细的用法将在相应的任务进行讨论 1 累加器ACC 简称累加器A 是在编程操作中最常用的专用寄存器 功能较多 可按位寻址 除了在传送指令中的运用较多外 89C51 单片机在进行各种算术和逻辑 19 运算时 大部分单操作数指令的操作数就取自累加器 而且许多双操作数指令中的一 个操作数也取自累加器 例如加 减 乘 除运算指令的运算结果都存放在累加器A 或AB 寄存器中 2 B寄存器 B 寄存器是一个8 位寄存器 既可以作为一般寄存器使用 也可用 于乘除运算 做乘法运算时 B 是乘数 且操作后 乘积的高8位存放在B 中 做除法 运算时 B 存放除数 且操作后 余数存放在B中 3 程序状态字 PSW 程序状态字用于存放程序运行的状态信息 可按位寻址 这些位的状态通常是指令执行过程中自动形成的 以供程序查询和判别 其中PSW 1为 保留位 未用 各标志位的说明见表1 7 各标志位定义如下 CyACF0RS1RS0OVP 表1 7 程序状态字的各标志位的说明 位标志名称功能 PSW7Cy 进位标志位 存放算术运算的进位标志 在布尔运算中作为累加器使用 PSW6AC 辅助进位标志位做BCD 运算时 若低4位向高4位进位或借位 则置1 PSW5F0 用户标志位用户可以用软件自定义的一个状态标记 PSW4RS1 当前寄存器区选择位 见表1 6 PSW3RS0 当前寄存器区选择位 见表1 6 PSW2OV 溢出标志位做算术运算时 OV 0 未溢出 做算术运算时 OV 1 溢出 PSW1 保留位 PSW0P 奇偶标志位若P 1 则累加器A 中1 的个数为奇数 若P 0 则累加器A 中1 的个数为偶数 4 堆栈指针 SP 堆栈指针操作是在内存RAM 区中专门开辟出来的按照 先进后 出 后进先出 的原则进行数据存取的一种工作方式 主要用于子程序调用及返回和中 断断点处理的保护及返回 在完成子程序嵌套和多重中断处理中是必不可少的 为保 证逐级正确返回 进入栈区的 点 数据应遵循 先进后出 后进先出 的原则 SP 用来指示堆栈所处的位置 在进行操作之前 先用指令给SP 赋值 以规定栈区在RAM 区的起始地址 栈底 当数据推入栈区后 SP 的值也自动随之变化 系统复位后 SP初始化为07H 如果不重新设置 就会使堆栈由08H 单元开始 因 为08H 1FH 单元属于工作寄存器区 所以在程序设计过程中 最好把SP的值设置得大 一些 一般将堆栈开辟在30H 7FH区域中 5 数据指针 DPTR 寄存器 数据指针是由两个8位寄存器 DPH 和 DPL 组合而成 的一个16 位专用寄存器 其中DPH 为DPTR的高8 位 DPL为DPTR的低8位 它既可作为 20 一个16 位寄存器来使用 也可作为两个独立的8 位寄存器 DPH 和DPL 来使用 DPTR 用于存放16 位地址指针 既可访问数据存储器 也可访问外部程序存储器 6 专用寄存器P0 P1 P2和P3分别是4个并行I O端口寄存器 可实现数据从相应 端口的输入 输出 既可按字节寻址 也可按位寻址 3 52增强型单片机片内RAM MCS 51单片机在功能上有基本型和增强型两类 以芯片型号的末位数字来区分 1 为基本型 如8031 8051 8751 89C51 89S51等 实际提供给用户使用的片内 数据存储器容量为128B 而8032 8052 8752 89C52 89S52等为增强型 实际提供 给用户使用的片内数据存储器容量为256B 增强型单片机的高128B 地址80H FFH 对应两个物理空间 一个空间作为用户 RAM区 供用户使用 另一个空间作为特殊功能寄存器区 供单片机功能部件控制用 两个空间地址重叠 但通过不同的寻址方式 详见任务三 可将他们区分开 对于用 户RAM区 只能采用寄存器间接寻址方式访问 而对SFR区只能采用直接寻址方式访问 4 外部数据存储器 当进行大量连续的数据采集时 单片机内部提供的数据存储器 RAM 是远远不够的 这时可以利用单片机的扩展功能 在芯片外部扩展数据存储器 RAM 单片机最大可扩展片外64 KB空间的数据存储器 地址范围为0000H FFFFH CPU通 过MOVX指令访问片外数据存储器 6 单片机的时钟电路 单片机执行指令的过程就是顺序地从程序存储器ROM中取出指令 一条一条的顺序 执行 然后进行一系列的微操作控制 来完成各种指定的动作 它在协调内部的各种 动作时必须要有一定的顺序 换句话说 就是这一系列微操作控制信号在时间上要有 一个严格的先后次序 这种次序就是单片机的时序 单片机的时钟信号用来为单片机 芯片内部各种操作提供时间基准 1 单片机的XTAL1和XATL2两个引脚就是专门为产生时钟振荡信号设立的端口 只 要在两个引脚外接晶振就可以了 如图1 5 a 所示 图中晶振的振荡频率范围一般选 择在 4 12 MHz之间 典型值为12MHz和6MHz 高速单片机可以工作在32MHz的振荡 频率下 电容器C1和C2的作用是稳定频率和快速起振 典型值为30pF 但在实际使用 时 需要根据实际起振情况选择 21 图1 5 单片机的时钟电路 如果多片单片机同时工作 为了保证单片机的同步 可采用外部时钟方式 即把 外部已有的时钟信号引入到单片机内 一般要求外部信号高电平的持续时间大于20 ns 且为频率低于12 MHz 的方波 图1 5 b 和 c 给出了两种外部时钟电路 可以根 据不同的单片机型号进行选择 在制造上MCS 51系列单片机按两种工艺生产 一种是HMOS工艺 即高密度短沟道 MOS工艺 在产品型号中不带有字母 C 的即为HMOS芯片 如8051 另一种是CHMOS工 艺 即互补金属氧化物的HMOS工艺 在产品型号中凡带有字母 C 的即为CHMOS芯片 它是CMOS和HMOS的结合 既保持了HMOS高速度和高密度的特点 又具有CMOS低功耗的 特点 2 机器周期和指令周期 89C51单片机包括4 个定时单位 即振荡周期 节拍 时钟周期 状态周期 机器周期和指令周期 单片机的两种常用晶振的4个周期信号的 对比见表1 8 表1 8 常用晶振的4 个周期信号的对比 晶振频率 MHz 振荡周期 s 时钟周期 s 机器周期 s 指令周期 s 61 61 32 2 8 121 121 61 1 4 1 振荡周期 振荡周期也叫做节拍 用P表示 是指为单片机提供定时信号的振 荡源的周期 由单片机振荡电路OSC产生 是最小的时序单位 2 时钟周期 时钟周期又叫做状态周期 用S 表示 是振荡周期的两倍 其前半 个周期对应的节拍叫P1节拍 后半个周期对应的节拍叫P2节拍 P1 节拍通常用于完成 算术和逻辑运算 P2节拍通常用于完成传送指令 3 机器周期 单片机每访问一次存储器的时间 称之为一个机器周期 它是一个 时间基准 89C51单片机的一个机器周期的宽度由6 个状态周期 12 个振荡周期 组成 并依次表示为S1 S6 分别记做S1P1 S1P2 S6P1 S6P2 4 指令周期 指令周期是最大的时序定时单位 是执行一条指令需要的时间 在 单片机中 指令按执行时间可以分为三类 见附录B 单周期指令 双周期指令和四 22 周期指令 四周期指令只有乘 除法两条指令 例如 当需要计算完成LJMP指令所需要的时间时 首先必须知道晶振的频率 如 所用晶振为12MHz 则一个机器周期就是1 s 而LJMP指令是双周期指令 所以执行一 次要2 s 如果该条指令执行了500次 正好用时1ms 3 典型时序 每一条指令的执行都可以分为取指和执行两个阶段 在取指阶段 CPU 从内部或外部ROM 中取出需要执行的指令的操作码和操作数 在执行阶段对指令 操作码进行译码 以产生一系列控制信号完成指令

温馨提示

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

评论

0/150

提交评论