首页资源分类嵌入式处理器51内核 > 51单片机原理及应用--基于KeilC与Proteus.pdf

51单片机原理及应用--基于KeilC与Proteus.pdf

已有 445117个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:51单片机基于KeilC与Proteus

    分    享:

    文档简介

     51单片机原理及应用--基于KeilC与Proteus.pdf

    文档预览

    社 版 出 学 大 天 航 空 航 京 北 51单片机原理及应用 ———基于 KeilC 与 Proteus 社 陈海宴 编著 版 出 学 大 天 航 空 航 京 北 内容简介 本书以 Proteus电子仿真设计软件为核心,通过丰富的 实 例 详 细 叙 述 了 其 在 51 单 片 机 课 程 教 学 和 产 品 开发过程中的应用。全书共分14章,主要介绍51单片机基础知识、Keil和 Proteus相 关 软 件 的 使 用、Proteus 原理图绘制、仿真及其在单片机硬件电路设计 中 的 应 用;另 外,介 绍 了 多 种 外 部 设 备 的 使 用 方 法,如 LCD、电 机、D/A、A/D 转换器等。 本书所有章节编写的实例都有详细 说 明、程 序 设 计 和 电 路 设 计,并 在 Proteus软 件 中 仿 真 成 功。 每 章 既 独 立 成 篇 ,又 相 互 联 系 ,具 有 明 显 的 工 程 应 用 特 色 。 本书可作为高等院校单片机课程的 教 材,还 可 作 为 广 大 从 事 单 片 机 系 统 开 发 应 用 的 工 程 技 术 人 员 参 考 用书。 图 书 在 版 编 目 (CIP)数 据 51单片机原理及应用:基于 KeilC 与 Proteus/陈 海 宴 编 著 .--北 京 :北 京 航 空 航 天 大 学 出 版 社 ,2010.7 社 版 ISBN978 7 5124 0124 2 出 学 Ⅰ.①5… Ⅱ.①陈… Ⅲ.①单片微型计算机 Ⅳ. ①TP368.1 大 天 中国版本图书馆 CIP 数据核字(2010)第116578号 航 版 权 所 有 ,侵 权 必 究 。 空 航 51 单 片 机 原 理 及 应 用 京———基于 KeilC 与 Proteus 北 陈海宴 编著 责任编辑 董立娟 * 北京航空航天大学出版社出版发行 北京市海淀区学院路37号(邮编:100191) http://www.buaapress.com.cn 发行部电话:(010)82317024 传真:(010)82328026 读者信箱:emsbook@gmail.com 邮购电话:(010)82316936 有限公司印装 各地书店经销 * 开本:787mm×960mm 1/16 印张:23 字数:515千字 2010年7月第1版 2010年7月第1次印刷 印数:4000册 ISBN978 7 5124 0124 2 定价:39.00元 前言 单 片 机 已 经 在 工 业 控 制 、数 据 采 集 、智 能 仪 表 、机 电 一 体 化 、家 用 电 器 等 领 域 得 到 了 广 泛 应 社 用,极大地提高了这些领域的技术水平和智能化程度。各 大 院 校 都 将“单 片 机 原 理 与 应 用”课 版 程 列 为 工 科 类 重 要 的 专 业 基 础 课 程 。 为 了 更 直 接 、更 高 效 地 学 习 并 掌 握 单 片 机 知 识 ,在 课 程 设 出 计、毕业设计、电子设计大赛及社会实践中用好单片 机,作 者 将 长 期 从 事 该 课 程 教 学 和 科 研 活 动的经验进行了总结从而形成本书。 学 大 本 书 从 原 理 知 识 到 电 路 设 计 ,从 解 决 问 题 的 思 路 到 设 计 流 程 ,都 进 行 了 详 细 的 说 明 。 章 与 天 章 之 间 既 独 立 成 篇 ,又 相 互 联 系 。 本 书 具 有 以 下 特 点 : 航 ① 内容安排合理 在 内 容 编 排 上 由 浅 入 深、循 序 渐 进。 从 最 初 的 51 单 片 机 基 础 知 识、 Keil和 Proteus软件的使用,到单片机 内 部 单 元 的 实 现,再 到 单 片 机 外 围 扩 展,最 后 到 单 片 机 空 开发板的设计和 PCB 设计,这 样 的 编 排 既 符 合 学 习 规 律 也 让 读 者 可 以 根 据 自 己 的 情 况 选 择 航 阅读。 京 ② 强调实践环节 应用 Proteus软件作为单片机应用系统设计和 仿 真 平 台,搭 建 了 实 践 北 环 境 ,实 现 了 从 原 路 图 设 计 、程 序 调 试 到 印 刷 电 路 板 设 计 的 单 片 机 开 发 全 过 程 训 练 。 ③ 提高效率、节约教学成本 用 Keil编写程序并生成 .HEX 文件,然后 在 Proteus中 画 好硬件电路图,调用 HEX 文件进行虚拟仿真。在不用硬件电路的情况下,应用软件仿真进行 相 应 的 程 序 设 计 与 调 试 ,节 约 学 习 成 本 ,提 高 学 习 积 极 性 ,实 现 教 学 内 容 可 视 化 。 ④ 采用 C 语言编程 单片机编程已从汇编语言编程转向 C 语言编程,同时为了提高单片 机应用系统程序开发可移植性和可读性,并为 ARM 等高级器件的开发打下坚实的基础,本书 全部程序设计采用 C语言编写。 ⑤ 内容简练、针对性强 在 编 写 应 用 实 例 过 程 中 作 者 注 重 内 容 的 新 颖、简 练 和 适 用 性。 书 中 大 部 分 应 用 实 例 都 是 由 作 者 在 教 学 过 程 中 提 炼 出 来 的 比 较 适 合 学 习 的 例 子 ,具 有 针 对 性 。 ⑥ 内容丰富、分析详细 书中结合 51 单片机的功能介绍了多种元器件和外部设备 的 使 用方法及 Proteus仿真实例,包括继电器、LED、数码管、键盘、RS232、LCD1602和12864、直流 电机和步进电机、DAC0832、ADC0809 以 及 AT24C02、DS1302 和 DS18B20 等 器 件 的 仿 真 实 例 。 每 个 仿 真 实 例 又 含 有 设 计 要 求 、硬 件 设 计 、软 件 设 计 、联 合 调 试 与 运 行 、电 路 图 功 能 分 析 以 及 程 序 分 析 6 部 分 内 容 ,详 细 分 析 了 每 个 仿 真 实 例 从 设 计 到 实 现 的 全 过 程 。 参加本书编写的有陈海宴、李芬、高军、邹金 红、白 雪 松、侯 伟 玉、卢 东 华、曹 亚 丽、王 际 文、 王 靠 文 、李 世 卓 等 。 邹 金 红 、侯 伟 玉 、李 世 卓 、刘 进 、黄 宗 元 、邢 川 、王 涛 、俞 鹏 先 等 为 本 书 实 例 进 行 了 设 计 、仿 真 与 调 试 。 同 时 ,在 本 书 的 编 写 过 程 中 得 到 了 许 多 专 家 和 同 行 的 大 力 支 持 与 热 情 帮 助 ,这 里 一 并 表 示 诚 挚 的 感 谢 。 鉴 于 编 者 水 平 有 限 ,书 中 难 免 存 在 疏 漏 和 错 误 之 处 ,恳 请 专 家 和 广 大 读 者 批 评 指 正 。 有兴趣的读者,可以发送电 子 邮 件 到:chenhy736@sina.com,与 作 者 进 一 步 交 流;也 可 以 发 送 电 子 邮 件 到 :xdhydcd5@sina.com,与 本 书 策 划 编 辑 进 行 交 流 。 社 版 出 学 大 天 航 空 航 京 北 作者 2010 年 3 月 目录 第1章 51单片机基础知识 …………… 1 2.1 KeilC51的安装及启动………… 20 1.1 单片机概述 ……………………… 1 2.1.1 KeilC51的安装…………… 20 1.1.1 单片机的发展历史 ………… 1 1.1.2 51系列单片机 ……………… 2 社 2.1.2 启动 KeilμVision3程序 ……………………………… 20 1.1.3 单片机的实际应用 ………… 4 版 2.2 工作环境介绍…………………… 21 1.2 51单片机功能及引脚 …………… 4 出 2.3 创建项目………………………… 22 1.2.1 51单片机功能综述 ………… 4 学2.3.1 1.2.2 51单片机的封装 …………… 5 大 1.2.3 单片机引脚及功能 ………… 5 天 1.3 51单片机内部结构 ……………… 6 航 1.3.1 51单片机的 CPU 结构 …… 6 2.3.2 2.3.3 2.3.4 新建项目…………………… 22 创建新的源程序文件……… 22 为目标项目设定工具选项 ……………………………… 24 编译项目并创建.HEX 文件 空 1.3.2 存储器结构………………… 10 ……………………………… 25 航 1.3.3 I/O 端口结构 ……………… 14 2.4 KeilC 程序调试器及程序调试方 京 1.3.4 定时/计数器 ……………… 15 法………………………………… 26 北 1.3.5 中断系统…………………… 15 1.4 51单片机工作方式 …………… 15 2.4.1 程序调试器………………… 26 2.4.2 启动程序调试……………… 26 1.4.1 复位方式…………………… 15 2.4.3 断点设置…………………… 29 1.4.2 程序执行方式……………… 16 2.4.4 目标程序的执行…………… 29 1.5 51单片机单片机工作时序 …… 16 2.5 KeilC 程序调试实例 ………… 30 1.5.1 时钟电路…………………… 16 2.5.1 创建项目…………………… 30 1.5.2 机器周期及指令周期……… 17 2.5.2 创建新的源程序…………… 32 1.5.3 指令的执行时序…………… 17 2.5.3 把源程序添加到项目中…… 32 1.6 小 结…………………………… 18 2.5.4 为目标设定工具选项并进行 习 题 ………………………………… 18 编译………………………… 33 第2章 KeilC51软件入门与调试 …… 20 2.5.5 软件调试…………………… 34 2.6 C51语言概述 …………………… 36 4.2 并行I/O 口的应用 …………… 105 2.6.1 数据的存储类型…………… 36 4.3 I/O 口直接输入/输出实例 …… 105 2.6.2 C51中断子程序 …………… 37 4.4 并行I/O 口的扩展实例 ……… 107 2.6.3 头文件定义………………… 38 4.5 输入/输出电路设计…………… 110 2.7 小 结…………………………… 39 4.5.1 弱开关信号输入电路设计 习 题 ………………………………… 40 …………………………… 110 第3章 Proteus电子仿真软件与 Keil 4.5.2 强开关信号输入电路设计 联合调试 ……………………… 41 …………………………… 111 3.1 Proteus软件介绍 ……………… 41 4.5.3 直接驱动电路设计 ……… 111 3.1.1 Proteus软件组成和开发流程 4.5.4 晶体管驱动电路设计 …… 111 ……………………………… 41 4.5.5 继电器驱动电路设计 …… 112 3.1.2 Proteus编辑环境介绍 …… 42 社 4.6 小 结 ………………………… 113 3.2 电路原理图设计………………… 46 版 习 题………………………………… 113 3.3 单片机的仿真…………………… 58 出 3.4 ProteusISIS元件制作 ………… 59 学 3.5 Proteus虚拟仿真工具 ………… 65 大 3.5.1 ProteusISIS图表仿真 …… 65 3.5.2 ProteusVSM 激励源 …… 66 天 3.5.3 激励源的使用……………… 67 航 3.6 ProteusVSM 虚拟仪器 ……… 74 空 3.7 Proteus和 Keil联调仿真单片机 航 …………………………………… 91 京 3.7.1 安装 vdmagdi驱动 ……… 91 北 3.7.2 Proteus与 KeilC 接口 …… 91 实战训练……………………………… 113 第5章 中断系统……………………… 114 5.1 中断概述 ……………………… 114 5.2 51单片机中断系统的结构 …… 115 5.2.1 中断请求 ………………… 115 5.2.2 中断允许寄存器IE …… 117 5.3 外部中断应用实例 …………… 117 5.4 中断优先级寄存器IP ………… 121 5.5 中断优先级应用实例 ………… 122 5.6 51单片机中断响应过程 ……… 125 3.7.3 Proteus与 KeilC 联合调试 5.7 中断扩展应用实例 …………… 127 实例………………………… 92 5.8 小 结 ………………………… 129 3.8 小 结…………………………… 98 习 题………………………………… 129 习 题 ………………………………… 98 实战训练……………………………… 130 第4章 并行I/O 端口 ………………… 99 第6章 定时/计数器 ………………… 131 4.1 并行I/O 端口的基本概念 …… 99 6.1 定时/计数器的结构与工作原理 4.1.1 P0口结构 ………………… 100 ………………………………… 131 4.1.2 P1口结构 ………………… 102 6.1.1 硬件结构 ………………… 131 4.1.3 P2口结构 ………………… 103 6.1.2 工作原理 ………………… 132 4.1.4 P3口结构 ………………… 104 6.2 定时/计数器的工作方式……… 134 6.3 52单片机的定时/计数器2介绍 实战训练……………………………… 178 ………………………………… 137 第9章 输出设备……………………… 179 6.3.1 定时/计数器2控制寄存器 9.1 发光二极管的应用 …………… 179 T2CON ………………… 138 9.2 发光二极管应用实例 ………… 180 6.3.2 定时/计数器2的3种工作 9.3 流水灯应用实例 ……………… 181 模式 ……………………… 139 9.4 数码管应用 …………………… 183 6.4 定时/计数器的初始化………… 143 9.4.1 数码管概述 ……………… 183 6.5 定时器中断应用实例 ………… 144 9.4.2 数码管的驱动方式 ……… 185 6.6 小 结 ………………………… 147 9.5 数码管静态显示应用实例 …… 186 习 题………………………………… 147 9.6 数码管动态显示应用实例 …… 188 实战训练……………………………… 148 9.7 SMC1602液晶显示器的应用 第7章 串行通信接口………………… 149 社 ………………………………… 190 7.1 串行通信方式简介 …………… 149 7.2 51单片机的串行通信 ………… 149 7.2.1 串口接口的数据传输方式 …………………………… 149 7.2.2 串行接口寄存器 ………… 151 版 9.8 1602应用实例 ………………… 194 9.9 SMG12864液晶显示器的应用 出………………………………… 197 学 9.10 12864应用实例 ……………… 204 大9.11 直流电机控制………………… 210 天 7.2.3 串行口的工作方式 ……… 152 9.12 直流电机控制实例…………… 212 航 7.2.4 波特率的计算 …………… 155 9.13 步进电机控制………………… 214 空 7.3 RS232标准及应用 …………… 156 9.14 步进电机控制实例…………… 217 7.4 RS232串口应用实例 ………… 158 航 7.5 MAX487多机通信应用实例 京 ………………………………… 163 北 7.6 小 结 ………………………… 168 9.15 频率测量控制实例…………… 220 9.16 PWM 调制控制 ……………… 224 9.17 PWM 控制电机应用实例 …… 226 9.18 小 结………………………… 229 习 题………………………………… 168 习 题………………………………… 229 实战训练……………………………… 169 实战训练……………………………… 230 第8章 键盘输入……………………… 170 第10章 单片机系统扩展 …………… 231 8.1 按键在单片机中的应用 ……… 170 10.1 系统扩展概述………………… 231 8.2 矩阵式键盘的按键识别方法 … 171 10.2 8255A 可编程接口芯片 …… 231 8.3 按键去抖动 …………………… 172 10.3 8255A 应用实例 …………… 236 8.4 独立式按键应用实例 ………… 172 10.4 系统存储器扩展……………… 238 8.5 矩阵式键盘应用实例 ………… 174 10.4.1 单片机系统总线及总线信 8.6 小 结 ………………………… 177 号………………………… 239 习 题………………………………… 177 10.4.2 扩展存储器编址技术…… 240 10.5 RAM62256扩展应用实例 … 241 12.3 AT24C02的基础知识 ……… 271 10.6 小 结………………………… 244 12.4 AT24C02的应用实例 ……… 274 习 题………………………………… 244 12.5 SPI总线 DS1302实时时钟设计 实战训练……………………………… 245 ………………………………… 279 第11章 常用外围接口芯片 ………… 247 12.5.1 SPI总线简介 …………… 279 11.1 D/A 转换 …………………… 247 12.5.2 接口定义数据传输……… 279 11.1.1 D/A 转换器简介 ……… 247 12.5.3 SPI协议举例 …………… 282 11.1.2 D/A 转换器的基本原理 12.5.4 SPI主要特点 …………… 283 …………………………… 247 12.6 DS1302的基础知识 ………… 283 11.1.3 D/A 转换器的分类 …… 248 12.7 DS1302显示时钟的实例 …… 286 11.1.4 T 型电阻网络 D/A 转换器 12.8 1 Wire单总线介绍及 DS18B20 …………………………… 248 社 测量温度设计………………… 291 11.1.5 D/A 转换器的重要指标 …………………………… 249 11.2 D/A 转换芯片 DAC0832 …… 249 11.2.1 DAC0832的结构原理 … 249 11.2.2 D/A 转换器与单片机接口 版 12.8.1 1 wire单总线概述 …… 291 12.8.2 DS18B20的基础知识 … 292 出 12.8.3 程序参考………………… 296 学 12.9 DS18B20测量温度的实例 … 298 大12.10 小 结 ……………………… 302 天 …………………………… 251 习 题………………………………… 302 航 11.3 基于 DAC0832的三角波发生器 实战训练……………………………… 302 空 ………………………………… 252 第13章 单片机开发板设计 ………… 303 11.4 A/D 转换 …………………… 255 航 11.5 A/D 转换芯片 ADC0809 …… 257 京 11.5.1 ADC0809的结构原理 … 257 北 11.5.2 ADC0809的引脚及功能 13.1 单片机开发概述……………… 303 13.2 单片机开发硬件设计………… 305 13.2.1 开发板基本配置………… 305 13.2.2 I/O 端口配置 …………… 307 …………………………… 258 13.3 实验指导……………………… 307 11.5.3 ADC0809与 AT89C51接口 13.3.1 流水灯实验……………… 307 …………………………… 258 13.3.2 单按键识别……………… 309 11.6 数字电压表实例……………… 260 13.3.3 数码管显示……………… 310 11.7 小 结………………………… 263 13.3.4 A/D 转换实验 ………… 311 习 题………………………………… 263 13.3.5 D/A 转换实验 ………… 313 实战训练……………………………… 263 13.3.6 蜂鸣器…………………… 315 第12章 常用数据传输接口 ………… 265 13.3.7 4×4矩阵键盘 ………… 315 12.1 I2C 总线 AT24C02设计 …… 265 13.3.8 8×8点阵 ……………… 317 12.2 单片机模拟I2C 总线通信 …… 269 13.3.9 LCD1602显示实验 …… 319 13.4 小 结………………………… 321 14.6.4 元件布局及调整………… 341 习 题………………………………… 321 14.6.5 布线并调整……………… 343 第14章 PCB 印刷电路板设计 ……… 322 14.6.6 规则检查………………… 344 14.1 启动 ARES系统 …………… 322 14.6.7 敷 铜…………………… 345 14.2 ARES窗口简介 ……………… 323 14.6.8 3D 效果显示 …………… 347 14.3 工具箱和对象操作…………… 324 14.6.9 输出 CADCAM ………… 348 14.4 ProteusARES参数设置 …… 325 14.7 小 结………………………… 348 14.5 PCB 设计流程 ……………… 328 习 题………………………………… 348 14.6 基于 ProteusARES单片机最 附录 A KeilC 与 Proteus调试与运行 小系统的 PCB 制作实例 …… 329 ………………………………… 349 14.6.1 绘制电路原理图并仿真调 附录 B Proteus元器件库中英文对照表 试及元器件封装检查…… 329 社 ………………………………… 352 14.6.2 加载网络表及设计元件封装 …………………………… 334 14.6.3 设置电路板的相关参数 …………………………… 339 版 附录 C Proteus常用元器件中英文对照 表 ……………………………… 354 学出 参考文献………………………………… 358 大 天 航 空 航 京 北 1 第 章 51单片机基础知识 8051是 MCS 51系列单片机中的 典 型 产 品,本 书 将 以 其 作 为 代 表 进 行 系 统 讲 解。 其 他 51系列单片机与8051的系统结构 相 同,只 是 对 8051 进 行 一 些 功 能 扩 充,使 其 功 能 和 市 场 竞 争力更强。 1.1 单片机概述 社 版 出 1976年,Intel公司推出第一款8位单片机 MCS 48,宣告了单片机时代的到来。在短短 学 的 几 十 年 里 ,单 片 机 技 术 获 得 了 飞 速 的 发 展 ,在 越 来 越 多 的 领 域 得 到 了 广 泛 的 应 用 。 大 单片机系统大体上由两个部分组成,硬件部分和软件部分。硬件部分由电源、单片机最小系 天 统 、外 围 功 能 部 件 和 存 储 器 组 成 。 单 片 机 可 以 是 直 流 电 源 供 电 也 可 以 是 电 池 供 电 。 单 片 机 最 小 航 系统(或称为最小应用系统),是指用最少的元件组成的单片机可以工作的系统。对于51系列单 空 片机来 说,最小系统一 般 包 括 单 片 机、按 键 输 入、显 示 输 出 、复 位 电 路 和 晶 振 电 路 。 外 围 功 能 电 路,就是实现何种功能、采用什么电路,如温度采集系统中的温度传感器;而软件部分则是单片机 京航 系统的核心,决定着系统的功能和特点。硬、软件协同工作实现了单片机系统的功能。 北 1.1.1 单片机的发展历史 将 8 位 单 片 机 的 推 出 作 为 起 点 ,单 片 机 的 发 展 历 史 大 致 可 分 为 以 下 几 个 阶 段 : 第一阶段(1976—1978):单片机的探索阶段,以Intel公司的 MCS 48为代表。MCS 48 的推出是以工控领域的探索为目的,参与这一探索的公司还有 Freescale、Zilog等 都 取 得 了 满 意的效果。 第二阶段(1978—1982):单片机的完 善 阶 段。Intel公 司 在 MCS 48 基 础 上 推 出 了 完 善 的、典型 的 单 片 机 系 列 MCS 51,它 在 以 下 几 个 方 面 奠 定 了 典 型 的 通 用 总 线 型 单 片 机 体 系 结构: 完善的外部总线。MCS 51 设 置 了 经 典 的 8 位 单 片 机 的 总 线 结 构,包 括 8 位 数 据 总 线 、16 位 地 址 总 线 、控 制 总 线 及 具 有 多 机 通 信 功 能 的 串 行 通 信 接 口 。 CPU 外围功能电路的集中管理模式。 体现工控特性的位地址空间及位操作方式。 指 令 系 统 趋 于 丰 富 和 完 善 ,并 且 增 加 了 许 多 突 出 控 制 功 能 的 指 令 。 第三阶段(1982—1990):8位单片机的 巩 固 发 展 及 16 位 单 片 机 的 推 出 阶 段,也 是 单 片 机 向微控制器发展的阶段。Intel公司 推 出 的 MCS 96 系 列 单 片 机 将 一 些 用 于 测 控 系 统 的 模/ 数转换器、程序运行监视器、脉宽调制器等纳入 单 片 机 中,体 现 了 单 片 机 的 微 控 制 器 特 征。随 着 MCS 51系列的广泛应用,许多电气厂商竞相使用80C51 为内核,将许多测控系统中使用 的电路技术、接口技术、多通道 A/D 转换部件、可 靠 性 技 术 等 应 用 到 单 片 机 中,增 强 了 外 围 电 路 的 功 能 ,强 化 了 智 能 控 制 的 特 征 。 第四阶段(1990—):微控制器的全面发展阶 段。随 着 单 片 机 在 各 个 领 域 全 面 深 入 的 发 展 和 应 用 ,出 现 了 高 速 、大 寻 址 范 围 、强 运 算 能 力 的 8 位/16 位/32 位 通 用 型 单 片 机 以 及 小 型 廉 价 的专用型单片机。32位单片机的 字 长 32 位,具 有 较 高 的 运 算 速 度,处 理 功 能 强 大,嵌 入 式 操 作 系 统 基 本 上 是 在 32 位 机 上 实 现 的 。 社 总 的 来 说 ,现 在 的 单 片 机 产 品 非 常 丰 富 ,各 种 单 片 机 均 有 其 各 自 的 应 用 领 域 。 如 8 位 单 片 出版 机 应 用 于 中/小 规 模 电 子 设 计 领 域 ,高 性 能 的 16 位 、32 位 单 片 机 应 用 于 复 杂 的 控 制 系 统 。 1.1.2 51系列单片机 学 大 MCS 51是指Intel公司生产的一系列单片机的总称,这一系列单片机包括了很多种类, 天 如8031、8051、8751、8951、8032、8052、8752和 8952 等,其 中 8051 是 最 早、最 典 型 的 产 品。 该 航 系 列 的 其 他 单 片 机 都 是 在 8051 的 基 础 上 通 过 功 能 的 增 、减 改 进 而 来 。 空 20世纪80年代中期以后,在计算机领域,Intel以 专 利 转 让 的 形 式 把 8051 内 核 转 让 给 了 许多半导体厂家,如 Atmel、NXP、ANALOG DEVICES、DALLAS 等。 这 些 厂 家 生 产 的 芯 片 航 是 MCS 51系列的兼容产品,准确地说是与 MCS 51指令系统兼容的单片机。 京 以 下 是 一 些 典 型 的 51 系 列 单 片 机 : 北 Intel公司 MCS 48系列、MCS 51系列和 MCS 96系列,主要型号如表1.1.1所列; Atmel公司的 AT89系列单片机,主要型号如表1.1.2所列; Freescale公 司 的 6801、6802、6803、6805 和 68HC11 系 列 单 片 机 ; Zilog公司的 Z8、Super8系列单片机; Fairchild公司的 F8和3870系列单片机; TI公司的 TMS7000系列单片机; NEC 公司的 μPD7800系列单片机; Hitachi公司的 HD6301、HD6305系列单片机。 NXP 公司51系列单片机主要型号如表1.1.3所列。 这 些 单 片 机 与 8051 的 系 统 结 构 (主 要 是 指 令 系 统 )相 同 ,都 对 8051 做 了 一 些 功 能 扩 充 ,但 都 更 有 特 点 、功 能 和 市 场 竞 争 力 更 强 。 表1.1.1 MCS 51系列单片机主要产品及其性能 子系统 8X51/52 系 列 8XC51/52 系 列 8X54/58 系 列 子系统 8位 Flash系列 ISP_Flash 系 列 I2C_Flash 系 列 型号 8031 片内存储器 I/O 口 ROM/EPROM RAM/字节 无 128 32 UART 串口 1 中断 5 定 时/ 计数器 工 作 频 率/MHz 2 12 8051 4KBROM 128 32 1 5 2 12 8052 8KBROM 256 32 1 6 3 12 80C31 无 128 32 1 5 2 12/16 80C51 4KBROM 128 32 1 5 2 12/16 80C52 8KBROM 256 32 1 6 3 12/16/20/24 80C54 16KBROM 256 32 1 6 3 12/16/20/24 87C54 16KBEPROM 256 32 1 6 3 12/16/20/24 80C58 32KBROM 256 32 1 6 3 12/16/20/24 87C58 16KBEPROM 256 32 1 社6 3+5PCA 12/16/20/24 版 表1.1.2 Atmel公司的89系列单片机主要产品及其性能 片内存储器 出UART 型号 学 I/O 口 Flash/KB RAM/字节 串口 中断 定 时/ 计数器 工作频率 /MHz AT89C51 4 128 大32 1 5 2 33 AT89C52 8 天 256 32 1 5 3 33 AT89C51RC 32 AT89C1051 1 航512 64 32 15 1 1 6 3 2 40 24 AT89C2051 空 2 128 15 1 2 25 AT89C4051 航 4 256 15 1 2 26 AT89S51 京4 128 32 1 5 2 24 北 AT89S52 8 AT89C51RB2 16 256 32 1 5 3 256 32 1 6 3 25 60 AT89C51ED2 32 256 44 1 9 3 40 子系统 通用型系列 表1.1.3 NXP 公司51系列单片机主要产品及其性能 型号 片内存储器 I/O 口 程序存储器 RAM/字节 UART 串口 中断 P80C31 无 128 32 1 5 P80C51 4KBROM 128 32 1 5 P80C52 8KBROM 256 32 1 6 P80C54 16KBROM 256 32 1 6 P80C58 32KBROM 256 32 1 6 定 时/ 计数器 2 2 3 3 3 工 作 频 率/MHz 33 33 33 33 33 子系统 Flash 系 列 型号 片内存储器 I/O 口 程序存储器 RAM/字节 P89C51 4KBFlash 128 32 P89C52 8KBFlash 256 32 P89C54 16KBFlash 256 32 P89C58 32KBFlash 256 32 UART 串口 1 1 1 1 中断 6 6 6 6 续 表 1.1.3 定 时/ 计数器 工 作 频 率/MHz 3 33 3 33 3 33 3 33 1.1.3 单片机的实际应用 目前,国民经济建设、军 事 及 家 用 电 器 等 各 个 领 域,尤 其 是 在 手 机、汽 车 自 动 导 航 设 备、 PDA、智 能 玩 具 、智 能 家 电 、医 疗 设 备 等 行 业 中 单 片 机 技 术 得 到 了 广 泛 应 用 。 社 单 片 机 的 应 用 范 围 包 括 : 版 ① 测控系统。用单片机可以构成 各 种 不 太 复 杂 的 工 业 控 制 系 统、自 适 应 控 制 系 统、数 据 出 采 集 系 统 等 ,达 到 测 量 与 控 制 的 目 的 。 学 ② 智能仪表。用单片机改造原 有 的 测 量、控 制 仪 表,促 使 仪 表 向 数 字 化、智 能 化、多 功 能 化 、综 合 化 、柔 性 化 方 向 发 展 。 大 天 ③ 机电一体化产品。单片机与传 统 的 机 械 产 品 相 结 合,使 传 统 机 械 产 品 结 构 简 化,控 制 智能化。 航 ④ 智能接口。在计算机控制系统,特 别 是 在 较 大 型 的 工 业 测 控 系 统 中,用 单 片 机 进 行 接 空 口 的 控 制 与 管 理 ,加 之 单 片 机 与 主 机 的 并 行 工 作 ,大 大 提 高 了 系 统 的 运 行 速 度 。 航 ⑤ 智能民用产品。如在家用电器、玩具、游戏机、声像设备、电子秤、收银机、办公设备、厨 京 房设备等许多产品中,单片机控制器的引入使产品 的 功 能 大 大 增 强,性 能 得 到 提 高,获 得 了 良 好的使用效果。 北 1.2 51单片机功能及引脚 1.2.1 51单片机功能综述 8051 是 51 系 统 单 片 机 中 的 典 型 产 品 ,8051 单 片 机 主 要 参 数 及 功 能 如 下 : 8 位 CPU; 4KB 程序存储器(ROM); 128 字 节 的 数 据 存 储 器 (RAM); 32条I/O 口线; 111条指令,大部分为单字节指令; 21个专用寄存器; 2 个 可 编 程 定 时/计 数 器 ; 5 个 中 断 源 ,2 个 优 先 级 ; 1个全双工串行通信口; 外 部 数 据 存 储 器 寻 址 空 间 为 64 KB; 外部程序存储器寻址空间为64KB; 逻辑操作位寻址功能; 多种封装形式; 单一的+5V 电源供电。 1.2.2 51单片机的封装 51单 片 机 芯 片 有 两 种 封 装,一 种 是 双 列 直 插 式 DIP,另 一 种 是 方 形 封 装。DIP 封 装 及 引 脚 如 图 1.2.1 所 示 ,方 形 封 装 如 图 1.2.2 所 示 。 社 版 出 学 大 天 航 空 航 京 图1.2.1 DIP封装及引脚 图1.2.2 方形封装及引脚 北 1.2.3 单片机引脚及功能 这里以图1.2.1双列直插式封装为例,介绍 MCS 51系统单片机芯片的引脚功能。 Pin1~Pin8:P1.0~P1.7 输 入/输 出 脚 。 Pin9:RST/VP:复位信号复用脚。当8051通 电 时,时 钟 电 路 开 始 工 作,在 RST 引 脚 上 出 现 24 个 时 钟 周 期 以 上 的 高 电 平 ,系 统 即 初 始 复 位 。 Pin10~Pin17:P3.0~P3.7 输 入/输 出 脚 ,每 个 引 脚 都 有 第 二 功 能 。 Pin18:时钟 XTAL2脚,片内振荡电路的输出端。 Pin19:时钟 XTAL1脚,片内振荡电路的输入端。 Pin20:接 地 脚 。 Pin21~Pin28:P2.0~P2.7 输 入/输 出 脚 。 Pin29:PSEN脚。当访问外部程序存储器时,此 引 脚 输 出 负 脉 冲 选 通 信 号,PC 的 16 位 地 址数据将出现在 P0 和 P2 口上。当 P0 上的第 8 位地址锁存后,外部程序存储器则把指 令 数 据放到 P0口上,由 CPU 读入并执行。 Pin30:ALE/PROG。 当 访 问 外 部 数 据 存 储 器 时 ,ALE(地 址 锁 存 )的 输 出 用 于 锁 存 地 址 的 低位字节。 在访问内部程序存储器时,ALE 端 将 输 出 一 个 1/6 时 钟 频 率 的 脉 冲 信 号,这 个 信 号 可 以 用 于 识 别 单 片 机 是 否 工 作 ,也 可 以 当 作 一 个 时 钟 向 外 输 出 。 当访问外部程序存储器时,ALE 会 跳 过 一 个 脉 冲。 如 果 单 片 机 的 存 储 器 是 EPROM 型, 则 在 编 程 期 间PROG将 用 于 输 入 编 程 脉 冲 。 Pin31:EA/Vpp为程序存储器的内外部选通信 号 线。8051 和 8751 单 片 机 内 置 有 4 KB 的 程序存储器,当EA为高电平并且程序地址小于4KB 时,读取内部程序存储器指令数 据;而 超 过4KB 地址则读取外部指令数据。 社 Pin39~Pin32:P0.0~P0.7 输 入/输 出 脚 。 版 出 Pin40:正电源脚。正常工作或向片内 EPROM 下载程序时,接+5V 电源。 1.3 51单片机内部结构 学 大 航天 1.3.1 51单片机的 CPU 结构 空 单片机是单片微型计算机 的 简 称,是 把 各 种 功 能 部 件 包 括 中 央 处 理 器 (CPU)、只 读 存 储 航 器(ROM,ReadOnly Memory)、随 机 读 写 存 储 器 (RAM,Random Access Memory)、输 入/输 出(I/O)单元、定时/计数器以及串行口等集成在一块芯片上构成的微型计算机。MCS 51系 北京 列 的 8051 单 片 机 内 部 结 构 如 图 1.3.1 所 示 。 图1.3.1 8051单片机内部结构 8051 单 片 机 内 部 结 构 如 图 1.3.2 所 示 ,它 在 一 块 芯 片 上 集 成 了 各 种 功 能 部 件 。 社 版 出 学 大 天 航 空 航图1.3.2 单片机内部结构图 京 中央处理器(CPU)主要由算术逻辑单元、控制器部件和寄存器3部分电路组成。CPU 是 北 整 个 单 片 机 的 核 心 部 件 ,实 现 了 运 算 器 和 控 制 器 的 功 能 ,具 体 介 绍 如 下 : 1.算 术 逻 辑 单 元 8051的算术逻辑运算单元(ALU)由一个加法器、两个8位暂存器(TMP1和 TMP2)和布 尔处理器组成。ALU 是8051的处理核心,程序通过累加器 A、寄存器 B 和寄存器组 R0~R7 等控制 ALU 以完成各种算术和逻辑运算,同时可以用乘法和除法指令来增强运算能力。 2.定 时 控 制 部 件 定 时 控 制 部 件 起 到 控 制 器 的 作 用 ,由 定 时 控 制 逻 辑 、指 令 寄 存 器 和 振 荡 器 等 电 路 组 成 。 单 片机的工作过程就是执行用户编写程序的过程,而 控 制 单 元 可 以 完 成 此 项 重 任。指 令 寄 存 器 (IR,InstructionRegister)用 于 存 放 从 程 序 存 储 器 中 取 出 的 指 令 码 ,定 时 控 制 逻 辑 用 于 对 指 令 寄 存 器 中 的 指 令 进 行 译 码 ,并 在 晶 体 振 荡 器 的 配 合 下 产 生 执 行 指 令 所 需 的 时 序 脉 冲 ,从 而 完 成 指令的执行过程。 3.专 用 寄 存 器 组 专用寄存器组主要用来指示当前要执行指令 的 内 存 地 址、存 放 操 作 数 和 指 示 指 令 执 行 后 的状态等,包括程 序 计 数 器 (PC)、累 加 器 A、程 序 状 态 字 (PSW,Program Status Word)寄 存 器、堆栈指示器 SP 寄存器、数据指针 DPTR 和通用寄存器 B。 (1) 程序计数器 程序计数器是一个16位二进制的程序地址 寄 存 器,用 来 存 放 下 一 条 要 执 行 指 令 的 地 址, 指令执行完后可以自动加 1,以便指向下一条要执行的指令;可以说,CPU 就是靠 PC 指 针 来 实现程序的执行。 (2) 累加器 A 累加器 A 是一个8位二进制 寄 存 器,用 来 存 放 操 作 数 和 运 算 结 果。在 CPU 执 行 某 种 运 算前,两个操作数中的一个通常放在累加器 A 中,运算完成后便把结果存放在累加器 A 中;可 以说,累加器 A 是使用最频繁的寄存器。 社 (3) 程序状态字 版 出 PSW 是一个8位二进制寄存器,用来存放 指 令 执 行 后 的 有 关 CPU 状 态,通 常 由 CPU 来 学 填 写 ,但 是 用 户 也 可 以 改 变 各 种 状 态 位 的 值 。 标 志 位 的 定 义 参 见 表 1.3.1。 大 表1.3.1 PSW 标志位的定义 位序 位符号 PSW.7 Cy PSW.6 AC PSW.5 航天 F0 PSW.4 RS1 PSW.3 RS0 PSW.2 OV PSW.1 — PSW.0 P 1)进位标志位 Cy(Carry) 空 航 用于表示加法运算中的进位和减法中的借 位。加 法 运 算 中 有 进 位 或 减 法 运 算 中 有 借 位, 则 Cy位置1;否则,为0。 京 2)辅助进位位 AC(AuxiliaryCarry) 北 用 于 表 示 加 法 运 算 时 低 4 位 有 没 有 向 高 4 位 进 位 和 减 法 运 算 中 低 4 位 有 没 有 向 高 4 位 借 位。若有进位或借位则 AC 位置1,否则该位为0。 3)用户标志位 F0 (Flagzero) 该位是由用户根据程序执行的需要自行设定 的 标 志 位,用 户 可 以 通 过 设 置 该 位 来 决 定 程 序的流向。 4)寄存器选择位 RS1和 RS0(RegisterSelect) 8051单片机有4个寄存器组,每组有8个8位工作寄存器 R0~R7,它在 RAM 中的实际 物 理 地 址 可 以 根 据 需 要 来 选 择 确 定 使 用 哪 个 寄 存 器 组 ,参 见 表 1.3.2。 RS1、RS0 位 的 值 00 01 10 11 表1.3.2 RS1、RS0选择工作寄存器组 R0~R7 寄 存 器 组 号 R0~R7在 RAM 存储器中的物理地址 0 00H~07H 1 08H~0FH 2 10H~17H 3 18H~1FH 5)溢出标志位 OV(Overflow) 表示运算过程中是否发生了溢出。若执行结果超过了8位二进制数所能表示数据的范围 (即有符号数-128~+127),则 OV 标志位置1。 对于无符号数(也就是都是正数),如果加法 出 现 了 进 位、减 法 出 现 了 借 位,则 表 示 该 次 运 算 结 果 发 生 了 溢 出 。 对 于 有 符 号 数 ,如 果 正 数 减 负 数 的 结 果 出 现 了 负 数 、负 数 减 正 数 的 结 果 出 社 现 了 正 数 ,则 表 示 该 次 运 算 结 果 同 样 发 生 了 溢 出 。 版 无符号数与有符号数判断溢出的方法不一 样,对 于 有 符 号 数 需 要 通 过 OV 溢 出 标 志 位 来 出 判断,而无符号数要用进位表示位 Cy来判断。 学 6)PSW.1位 大 PSW.1 位 没 有 定 义 ,系 统 没 有 使 用 ,用 户 可 以 根 据 自 己 的 需 要 来 决 定 是 否 使 用 该 标 志 位 。 7)奇偶标志位 P(Parity) 天 航 奇 偶标志位 P 用于指示运算结果中1的个数的奇偶性。若 P=1,则累加器 A 中1的个数 为奇数;若 P=0,则累加器 A 中1的个数为偶数。 空 (4) 堆栈指针SP 航 堆栈是一种数据结构;堆栈指针 SP(StackPointer)是 一 个 8 位 寄 存 器,指 示 了 栈 顶 在 内 京 部 RAM 中的位置。数据写入堆栈称为入栈(PUSH),从堆栈中取出数据称为出栈(POP)。 北 堆 栈 是 为 了 中 断 操 作 和 子 程 序 的 调 用 而 设 立 的 ,用 于 保 存 现 场 数 据 ,即 常 说 的 断 点 保 护 和 现 场 保 护 。 单 片 机 无 论 是 转 入 子 程 序 或 中 断 服 务 程 序 的 执 行 ,执 行 完 后 还 是 要 返 回 到 主 程 序 。 在转入子程序和中断服务程序前,必须先将现场的数据保存起 来,否 则 返 回 时 CPU 根 本 不 知 道 原 来 的 程 序 执 行 到 哪 一 步 、应 该 从 何 处 开 始 执 行 。 MCS 51 的 堆 栈 是 在 RAM 中 开 辟 的,即 堆 栈 要 占 据 一 定 的 RAM 存 储 单 元。 同 时 MCS 51的堆栈可以由用户设置,SP 的初始值不同,堆栈的位置也不同。 堆栈的操作有两种方法: ① 自动方式。在响应中断服务程序或调用子程序时,返回地址自动入栈。当需要返回执 行程序时,返回的地址自动交给程序计数器 PC,以 保 证 程 序 返 回 断 点 处 继 续 执 行。这 种 方 式 不需要编程人员干预。 ② 手动方式。使用专用的 堆 栈 操 作 指 令 进 行 入 栈 和 出 栈 操 作 只 有 两 条 指 令:进 栈 使 用 PUSH 指令,用于在中断服务程序或子程序调用时保护现场;出栈使用 POP 指令,用于子程序 完成时为主程序恢复现场。 (5) 数据指针 DPTR 数据指针 DPTR(DataPointer)是一 个 16 位 的 寄 存 器,由 两 个 8 位 寄 存 器 DPH 和 DPL 组成,其中 DPH 为高8位,DPL 为低8位。 数据指针 DPTR 可以用来存放片内 ROM、片 外 RAM 和 片 外 ROM 的 存 储 区 地 址,用 户 通过该指针实现对不同存储区的访问。 (6) 通用寄存器 B 通用寄存器 B 是专门为乘法和除法而设置的寄存器,是一个二进制8位 寄 存 器。在 乘 法 或 除 法 运 算 之 前 用 来 存 放 乘 数 或 除 数 ,在 运 算 之 后 用 来 存 放 乘 积 的 高 8 位 或 除 法 的 余 数 。 1.3.2 存储器结构 社 MCS 51单片机存储器的特点是将程序存储器和数据存储器分开编址,并有各自的寻址 版 方式和寻址单 元。 对 存 储 器 的 划 分 在 物 理 上 分 为 4 个 空 间,片 内 ROM、片 外 ROM、片 内 学出 RAM 和片外 RAM,其结构示意图如图1.3.3所示。 大 天 航 空 航 京 北 图1.3.3 单片机的存储器结构图 其中,ROM 存储器地址空间有片内 ROM 和片外 ROM,其地址范围为0000H~FFFFH; 片内 RAM 地址空间的地址范围为00H~FFH;片外 RAM 地 址 空 间 的 地 址 范 围 为 0000H~ FFFFH。 1.程序存储器 ROM 程序设计人员编写的程序就存放在程序存储器中。 单片机重新启动后,程 序 计 数 器 PC 的 内 容 为 0000H,所 以 系 统 将 从 程 序 存 储 器 地 址 为 0000H 的单元处开始执行程序。但是考虑到中断系统的应用,用户程序一般不是从0000H 处 开 始 连 续 存 放 ,因 为 接 下 来 的 一 段 程 序 区 要 用 来 存 放 中 断 向 量 表 ,所 以 用 户 不 能 占 用 。 要 求 地 址分配如下: 0000H 存放转移指令,跳转到主程序。 0003H 外部中断0的中断地址区。 000BH 定时/计数器0中断地址区。 0013H 外部中断1的中断地址区。 001BH 定时/计数器1中断地址区。 0023H 串行通信中断地址区。 用户程序一般从0030H 处开始,而在0000H 处放置一条跳转指令,这样单片机复位后能 从0000H 处跳转到用户的主程序。 社 另外,当单片机的EA引脚接地时,程序存储器全部使用片外的 ROM;单片机的EA引脚接 版 高电平时,CPU 先从内部的程序存储器中读取程序,当程序计数器 PC 值超过内部 ROM 的容 出 量 时 ,才 转 向 外 部 的 程 序 存 储 器 读 取 程 序 。 学 2.片内 RAM 大 MCS 51的片内 RAM 存储器共有128字节,可分为4 个区域,特殊功能寄存器区、用户 天 区 、位 寻 址 区 和 工 作 寄 存 器 区 。 (1) 工作寄存器区 航 空 从00H~1FH 为4组工作寄存器区,每组占用8个 RAM 字节,记为 R0~R7。工作寄存 航 器组的选择由程序状态字 PSW 中的 RS1~RS0位确定。 (2) 位寻址区 京 北 从20H~2FH 为位寻址区,16个字节的128位可以单独操作,可对每一位进行读取或写操 作。每一位都有其自身位地址00H~7FH 与之对应。位单元与其地址对应关系参见表1.3.3。 表1.3.3 位单元与其地址对应关系 单元字节地址 MSB(最高位) 位地址 LSB(最 低 位 ) 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H 2DH 6FH 6EH 6H 6CH 6BH 6AH 69H 68H 2CH 67H 66H 65H 64H 63H 62H 61H 6H 2BH 5FH 5H 5DH 5CH 5BH 5AH 59H 58H 2AH 5H 56H 55H 54 53H 52H 51H 50H 29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 续 表 1.3.3 单元字节地址 MSB(最高位) 位地址 LSB(最 低 位 ) 28H 47H 46H 45H 44H 43H 42H 41H 40H 27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 26H 37H 36H 35H 34H 3H 32H 31H 30H 25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 24H 27H 26H 25H 24H 23H 22H 21H 20H 23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 22H 17H 16H 15H 14H 13H 12H 11H 10H 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 社 (3) 用户区 版 用户区共80个 RAM 单元,用于存放用户数据或作为堆栈区。用户区中的存储区按字节 出 进行存取。 (4) 特殊功能寄存器 学 大 MCS 51有21个特殊功 能 寄 存 器 SFR(SpecialFunctionRegister),每 个 RAM 地 址 占 天 用一个 RAM 单元,离散地分布在 80H~FFH 地 址 中。这 些 寄 存 的 功 能 已 做 了 专 门 的 规 定, 航 用 户 不 能 修 改 其 结 构 。 表 1.3.4 是 特 殊 功 能 寄 存 器 分 布 一 览 表 。 空 表1.3.4 特殊功能寄存器一览表 标识符号 ACC B 地址 航0E0H 京 0F0H 累加器 B寄存器 寄存器名称 北 PSW 0D0H 程序状态字 SP 81H 堆栈指针 DPTR 82H、83H 数据指针(16)位含 DPL 和 DPH IE 0A8H 中断允许控制寄存器 IP 0B8H 中断优先控制寄存器 P0 80H I/O 口0寄存器 P1 90H I/O 口1寄存器 P2 0AH I/O 口2寄存器 P3 0BH I/O 口3寄存器 PCON 87H 电源控制及波特率选择寄存器 标识符号 SCON SBUF TCON TMOD TL0 TH0 TL1 TH1 地址 98H 99H 88H 89H 8AH 8CH 8BH 8DH 寄存器名称 串行口控制寄存器 串行口数据缓冲寄存器 定时控制寄存器 定时器方式选择寄存器 定时器0低8位 定时器0高8位 定时器1低8位 定时器1高8位 续 表 1.3.4 1)ALU 相关 SFR 社 ⓐ 累加器 A(Accumulator) 版 累加器 A 是最常用的寄存器,专 门 用 来 存 放 操 作 数 或 运 算 结 果,大 部 分 的 数 据 操 作 都 要 出 通过累加器 A 进行。 学 ⓑ 通用寄存器 B 大 通用寄存器 B 是专门为乘法和除法设置的寄存器,为8位二进制寄存器。 ⓒ 程序状态字 PSW 天 航 该 寄 存 器 中 保 存 了 程 序 的 运 行 状 态 。 2)指针相关 SFR 空 ⓐ SP(StackPointer) 航 SP 为程序的堆栈指针,指向栈顶元素,在操作堆栈时需要用到。 京 ⓑ 数据指针 DPTR 北 数据指针 DPTR 是一个16位寄存器,由两个8位寄存器 DPH 和 DPL 组成。其中,DPH 为高8位,DPL 为低8位。 3)中断相关 SFR IE(InterruptEnable)中断允许位寄存器 用来设置全局、定时器、串行口以及外部中断。 IP(InterruptPriority)中断优先级寄存器 用来设置各种中断的优先级,各中断源可以设 置为高优先级或低优先级。 4)端口相关 SFR P0、P1、P2、P3 可以通过端口寄存器对端口进行读或写操作。 PCON(电源控制及波特率选择寄存器) 用来设置电源工作方式以及串行通 信 口 中 的 波 特率。 SCON(串口控制寄存器) 用来控制串口工作模式、数据格式、发送及接收中断标志等。 SBUF(串行数据缓冲寄存器) 是为 接 收 或 发 送 数 据 而 设 置 的,为 8 位 二 进 制 寄 存 器,通 过移位操作进行数据的接收或发送。 5)定时/计数器相关 SFR TCON(定时/计数器控制 寄 存 器) 用 来 设 置 中 断 请 求 方 式、定 时 模 式。设 置 定 时/计 数 器的启动停止等。 TMOD(定时/计数器工作方式寄存器) 定时/计数器有4种工作模式,通过 设 置 TMOD 来决定工作方式。 TL0、TH0、TL1、TH1 在设置定时器初值时要用到 TL 和 TH,TL 为数据低8位,TH 为 数据高8位,也可以直接访问16位寄存器 T0或 T1。 另外,对于特殊功能寄存器 SFR,当其末位地址为0或8 时可以进行位寻址。比如 P1 的 地址为90H,可以进行位寻址;而 SP 的地址为81H,不能进行位寻址。 3.片外 RAM 社 版 如果片内 RAM 容量太小、不能满足系统需求,则可以外接 RAM;但外部 RAM 大小不能 超 过 64 KB,因 为 8051 的 寻 址 范 围 为 64 KB。 出 1.3.3 I/O 端口结构 学 大 I/O 端口是单片机控制 外 围 设 备 的 重 要 接 口,是 和 外 设 进 行 信 息 交 换 的 主 要 途 径。I/O 天 端口有串行口和并行口之分。并行口一次可以传送一组 二 进 制 数 据(如 8 位),而 串 行 口 一 次 航 只 能 传 送 一 位 二 进 制 数 ,传 送 多 位 数 据 时 要 分 段 发 送 。 (1) 并行I/O 端口 空 航 8051有4个并行I/O 端口,分别为 P0、P1、P2、P3。每个端口都 有 双 向I/O 功 能,可 以 从 京 端 口 读 取 数 据 和 向 端 口 写 入 数 据 。 北 4个端口在结构上各有 不 同,因 此 功 能 也 不 一 样。P0、P2 口 除 了 作 为 通 用I/O 口 外,P0 还可以作为外接存储器的低8位地址 和 数 据 端 口,P2 口 可 以 用 来 外 接 存 储 器 的 高 8 位 地 址; P1口通常只作为输入、输出口使用;P3口除了作为通用I/O 口外,每个引脚都具有第二功能, 如 表 1.3.5 所 列 。 表1.3.5 P3口引脚的第二功能 位线 引脚号 第二功能 P3.0 10 RXD(串 行 输 入 口 ) P3.1 11 TXD(串 行 输 出 口 ) P3.2 12 INT0(外 部 中 断 0) P3.3 13 INT1(外 部 中 断 1) P3.4 14 T0(定 时 器 0 的 计 数 输 入 ) 位线 P3.5 P3.6 P3.7 引脚号 15 16 17 续 表 1.3.5 第二功能 T1(定 时 器 1 的 计 数 输 入 ) WR(外 部 数 据 存 储 器 写 脉 冲 ) RD(外 部 数 据 存 储 器 读 脉 冲 ) (2) 串行I/O 端口 8051 具 有 一 个 全 双 工 的 可 编 程 串 行 口 ,可 以 实 现 8 位 并 行 数 据 的 串 行 发 送 和 接 收 。 在 使 用串行口之前必须对其初始化,即对 PCON 及 SCON 寄存器进行设置。 1.3.4 定时 /计数器 8051具有两个16位定时/计数器 T0和 T1,分 别 与 2 个 8 位 寄 存 器 TL0、TH0 及 TL1、 社 TH1 对 应 。8051 的 定 时/计 数 器 可 以 工 作 在 定 时 方 式 和 计 数 方 式 。 版 定时方式 定时方式实现对单片机内部的时钟脉冲或分频后的脉冲进行计数。 出 计数方式 计数方式实现对外部脉冲的计数。 1.3.5 中断系统 学 大 天 在 程 序 的 执 行 过 程 中 ,有 时 需 要 停 下 正 在 执 行 的 工 作 转 而 执 行 一 些 其 他 的 重 要 工 作 ,并 在 航 执 行 完 后 返 回 到 刚 才 执 行 的 程 序 来 继 续 执 行 ,这 就 是 中 断 的 一 般 过 程 。 8051有5个中断源,两个外部 中 断INT0、INT1,两 个 定 时 器 中 断 T0、T1,还 有 一 个 串 行 空 中 断 。 其 中 ,有 两 个 中 断 优 先 级 控 制 可 实 现 中 断 服 务 嵌 套 。 京航 中断的控制由中断允许寄存器IE 和中断优先级寄存器IP实现。 北 1.4 51单片机工作方式 1.4.1 复位方式 在51单片机中,最常见的复位电路有如图1.4.1 所 示 的 上 电 复 位 和 手 动 复 位 电 路,能 有 效地实现复位。 RST 引脚是复位信号输入端,复位信号为高电平有效,有效持续时间在 24 个振荡周期以 上才能完成复位操作。若使用 6 MHz晶 振,则 须 持 续 4μs以 上 才 能 完 成 复 位 操 作。 在 通 电 瞬间,由于 RC 的充电过程,在 RST 端出现一定宽度的正脉冲;只要该脉冲保持 10 ms以上, 就能使单片机自动复位。在6 MHz时钟 时,通 常 C 取 22μF,R1 取 200Ω,R2 取 1kΩ,这 样 就能可靠的上电复位和手动复位。 图1.4.1 51单片机的复位电路 社 CPU 在第二个机器周期内执行内部复位操作,以后每个机器周期重复一次,直至 RST 端 版 电平变低。在单片机复位期间,ALE 和 PSEN 信号都不产生。复位操作将对部分专用寄存器 出 产生影响。 学 1.4.2 程序执行方式 大 天 连续执行方式 连续执行方式是单片机执行 的 基 本 工 作 方 式,所 要 执 行 的 代 码 放 在 程 序 航 存储器 ROM 中(可以是片内或片外),CPU 不断地从程序存储器中取指令、分析并执行。 空 单步执行方式 程序的执行处于外加脉冲(通常 用 一 个 按 键 生 产)的 控 制 下,一 般 利 用 中 断来实现程序的单步执行。 航 京 1.5 51单片机单片机工作时序 北 时序即信号的时间 顺 序。CPU 实 质 上 就 是 一 个 同 步 时 序 电 路,在 时 钟 脉 冲 的 推 动 下 工 作。CPU 能够顺序读取、分析和执行指令,它们都和工作时序息息相关。 1.5.1 时钟电路 根 据 硬 件 电 路 的 不 同 ,单 片 机 的 时 钟 连 接 方 式 可 以 分 为 内 部 时 钟 和 外 部 时 钟 方 式 。 内部振荡方式:MCS 51 单 片 机 内 有 一 个 用 于 构 成 振 荡 器 的 高 增 益 反 向 放 大 器,引 脚 XTAL1和 XTAL2分别是此放大器的输入 端 和 输 出 端。 把 放 大 器 与 作 为 反 馈 元 件 的 晶 体 振 荡 器 或 陶 瓷 谐 振 器 连 接 ,就 构 成 了 内 部 自 激 振 荡 器 并 产 生 振 荡 时 钟 脉 冲 。 外部振荡方式:外部振荡方式就是把外部已有的时钟信号引入单片机内,即接 XTAL2引 脚,而 XTAL1引脚接地。 1.5.2 机器周期及指令周期 1)振 荡 周 期 振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。 2)时 钟 周 期 时钟周期又称为状态周期或状态时间 S,是振荡周期的两倍,分为 P1节拍和 P2节拍。通 常在 P1节拍完成算术逻辑操作,在 P2节拍完成内部寄存器之间的传送操作。 3)机 器 周 期 一 个 机 器 周 期 由 6 个 状 态 组 成 ,如 果 把 一 条 指 令 的 执 行 过 程 分 为 几 个 基 本 操 作 ,则 将 完 成 一个基本操作所需的时间称作机器周期。单片机的单周期指令执行时间为一个机器周期。 4)指 令 周 期 社 指 令 周 期 即 执 行 一 条 指 令 所 占 用 的 全 部 时 间 ,通 常 为 1~4 个 机 器 周 期 。 总 之 ,一 个 机 器 周 期 =6 个 状 态 周 期 =12 个 节 拍 。 版 1.5.3 指令的执行时序 出 学 单片机执行指令分为取指令和执行指令两步。在取 指 令 阶 段,CPU 把 PC 中 的 地 址 送 到 大 程序存储器,并取出需要执行指令的操作码和操作 数;在 指 令 执 行 阶 段,先 对 指 令 的 操 作 码 进 天 行 译 码 ,然 后 取 出 操 作 数 并 执 行 指 令 。 指 令 执 行 时 序 如 图 1.5.1 所 示 。 1)单 字 节 单 周 期 指 令 航 空 这 类 指 令 只 占 用 一 个 字 节 ,CPU 从 取 出 指 令 到 完 成 指 令 的 执 行 仅 需 一 个 机 器 周 期 ; 在 ALE 信 号 第 一 次 有 效 (上 升 沿 )时 从 ROM 中 读 出 指 令 码 ,送 到 指 令 寄 存 器 IR 中 开 始 航 执 行 。 京 在执行期间,CPU 一方面在 ALE 第二次有效时封锁 PC 的加1操作,使第 二 次 读 操 作 无 北 效;另一个方面在 S6期间完成指令的执行。 2)双 字 节 单 周 期 CPU 在执行这类指令时需要分两次从 ROM 中 读 取 指 令 码。ALE 信 号 第 一 次 有 效 时 读 出指令的操作码,CPU 在译码后得 知 其 为 双 字 节 指 令;然 后 使 程 序 计 数 器 加 1,并 在 ALE 信 号第二次有效时读出指令的第二字节;最后在 S6期间完成指令的执行。 3)单 字 节 双 周 期 指 令 CPU 在 第 一 个 周 期 的 S1 期 间 读 取 指 令 的 操 作 码 ,译 码 后 得 知 该 指 令 为 单 字 节 双 周 期 指 令 。 所 以 控 制 器 自 动 封 锁 后 面 的 连 续 3 次 的 读 操 作 ,并 在 第 二 个 周 期 的 S6 期 间 完 成指令的执行。 社 版 出 学 大 图1.5.1 指令执行时序图 1.6 小 结 天 航 空 本章简单介绍了51系列单片机的发展历史和 应 用 领 域,然 后 介 绍 了 单 片 机 的 基 本 知 识, 航 包括单片机的内部结构、引脚功能、中央处理器 CPU、存储器结构、单片机复位、单片机工作时 京 钟 和 时 序 ,为 读 者 后 续 的 学 习 打 下 基 础 。 北 习题 1.1 简述单片机的发展历史。 1.2 单片机主要应用在哪些领域? 1.3 举例说明51单片机的主要型号和特点。 1.4 51单片机的EA、ALE 和PSEN引脚有哪些功能? 1.6 51单片机内部包含哪些功能部件,它们完成什么功能? 1.7 开机复位后,CPU 使用的是哪一组工作寄存器? 它们的地 址 是 什 么? CPU 如 何 确 定和改变当前工作寄存器组? 1.8 在 程 序 寄 存 器 中,0000H、0003H、000BH、0013H、001BH、0023H 这 6 个 地 址 单 元 的含义是什么? 1.9 在51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间,为 什么不会发生冲突? 1.10 51单片机 P0~P3口的结构有什么不同? P3口有哪些第二功能? 1.11 51单片机定时/计数器的定时方式和计数方式的区别是什么? 1.12 51单片机中断系统的组成有哪些? 1.13 51单片机有哪几种复位方式? 它们的工作过程是什么? 1.14 51单片机的时钟周期、机器周期、指 令 周 期 是 如 何 定 义 的? 当 振 荡 频 率 为 6 MHz 时 ,一 个 机 器 周 期 是 多 少 微 秒 ? 社 版 出 学 大 天 航 空 航 京 北 2 第 章 KeilC51软件入门与调试 单 片 机 的 程 序 设 计 需 要 在 特 定 的 编 译 器 中 进 行 。 编 译 器 完 成 对 程 序 的 编 译 、链 接 等 工 作 , 并生成可执行文件。对于单片机程序的开发,一般采用 Keil公司的μVision集成开发环境,它 支持 C51语言的程序设计。 本章主要介绍 μVision3集成开发环 境 以 及 如 何 使 用 该 集 成 开 发 环 境 进 行 单 片 机 的 开 发 版社 和调试。 2.1 KeilC51的安装及启动 出 学 2.1.1 KeilC51的安装 大 安装 KeilC51非常简单,步骤如下: 天 航 ① 运 行 KeilC51 软 件 SETUP 目 录 下 的 程 序 “c51v802. exe”,如 图 2.1.1 所 示 。 空 ② 在接下来的几 个 对 话 框 中 选 择 Next或 Yes,当 提 示 填 入 航 用 户 名 和 公 司 名 时 ,照 实 际 情 况 填 写 。 京 ③ 安装完毕按 Finish结束。 图2.1.1 KeilC51软件开始图标 北 2.1.2 启动 KeilμVision3程序 安装好 KeilC51 后,自动在桌面和开始菜单中生成一个 KeilμVision3 图标 。 双 击 该 图标即可启动运行,也可以选 择 “开 始”→ “程 序”→KeilμVision3。 启 动 KeilC51 应 用 程 序, 则 首 先 出 现 如 图 2.1.2 所 示 的 启 动 界 面 。 随 后 ,出 现 如 图 2.1.3 所 示 的 主 窗 口 。 图2.1.2 KeilC51启动画面 社 版 出 学 大 图2.1.3 KeilC51主窗口 2.2 工作环境介绍 天 航 空 如 图 2.1.3 所 示,该 软 件 提 供 了 丰 富 的 工 具,常 用 命 令 都 具 有 快 捷 工 具 栏。除 代 码 窗 口 航 外,软件还具有多种观察窗 口,这 些 窗 口 可 使 开 发 者 在 调 试 过 程 中 随 时 掌 握 代 码 所 实 现 的 功 京 能。屏幕界面和 VC 类似,提供菜单命令栏、快捷工具栏、项目窗口、代码窗口、目标文件窗口、 北 存储 器 窗 口、输 出 窗 口、信 息 输 出 窗 口 和 大 量 的 对 话 框。μVision3 中 可 以 打 开 多 个 项 目 文 件 进行编辑。 1)工 程 工 作 区 窗 口 工程工作区用于管理项目中的文件、调试运 行 时 的 寄 存 器 以 及 工 程 相 关 的 说 明 文 档。在 其 File区可以添加/移除文件、编译单个文件或调试工程;在 Regs区可以参看、设置寄存器的 值;在 Books区有关于开发环境的说明以及芯片器件的用户手册等。 2)文 件 编 辑 窗 口 文件编辑窗口用于对源文件编辑、查看串行口输入/输出、浏览整个工程以及代码性能分析。 3)信 息 输 出 窗 口 编译窗口输出程序编译结果,包括编译、链 接、程 序 区 大 小、输 出 文 件 的 个 数/名 称 以 及 错 误 、警 告 等 信 息 。 2.3 创建项目 KeilμVision3中有一个项目管理器,用 于 对 项 目 文 件 进 行 管 理;它 包 含 了 程 序 的 环 境 变 量和编辑有关的全部信息,为单片机程序的管理带 来 了 很 大 的 方 便。创 建 一 个 新 项 目 具 体 步 骤如下: 2.3.1 新建项目 启动 μVision3 后,选 择 Project→New Project菜 单 项,则 弹 出 CreateNew Project对 话 框 ,如 图 2.3.1 所 示 。 社 版 出 学 大 天 航 图2.3.1 KeilC51新建项目窗口 空 键入项目名称(建议每个项目使 用 一 个 独 立 的 文 件 夹)后 单 击 “保 存”,则 弹 出 SelectDe航 viceforTarget‘Target1’对 话 框 ,如 图 2.3.2 所 示 。 在 此 对 话 框 中 ,根 据 需 要 选 择 合 适 的 单 片 京 机型号。也 可 以 选 择 Project→SelectDeviceforTarget弹 出 如 图 2.3.2 所 示 的 对 话 框。 其 北 中,Database栏中列出了各厂商名及其 产 品,Description 栏 是 对 选 中 的 单 片 机 指 示 说 明。 选 中所需要的单片机 CPU,单击“确定”即可。 2.3.2 创建新的源程序文件 单击图标 或选择 File→New 菜单项,则可以 创 建 一 个 源 程 序 文 件。此 命 令 会 打 开 一 个 空 的 编 辑 窗 口 ,如 图 2.3.3 所 示 。 在该窗口用单片机 C 语言键入源代码后,选择 File→Save/Saveas菜单项对源程 序 进 行 保存,或直接单击图标 进行保存。保存时文件名可以是字符、字母 或 数 字,而 且 需 要 自 己 带 上扩展名;使用单片机 C 语言编写的源程序,扩展名为“.C”。保存好源程序后,源程序窗口中 的关键字呈彩色高亮度显示。 源 程 序 文 件 创 建 后 ,要 把 此 文 件 添 加 到 项 目 中 ,在 工 作 环 境 中 左 边 中 间 位 置 的 项 目 工 作 区 ProjectWorkspace显示框 内 单 击 文 件 夹 Target1 左 边 的 符 号 “+ ”,再 右 击 文 件 夹 Source Group1,在弹出的界面中选择 AddFilestoGroup ‘SourceGroup1’,如图2.3.4所示。在弹 出的对话框中选择刚才创建的源程序文件,然后单击 Add,再单击 Close关闭对话框即可。 社 版 出 学 大 图2.3.2 KeilC51器件选择窗口 天 航 空 航 京 北 图2.3.3 KeilC51编辑窗口 图2.3.4 KeilC51源程序文件添加到项目的窗口 2.3.3 为目标项目设定工具选项 社 版 单击 图 标 或 选 择 Project→ Optionsfor Target 菜 单 项,则 弹 出 Optionsfor Target ‘Target1’对 话 框 ,如 图 2.3.5 所 示 。 出 在此对话框中可对硬件目 标 及 所 选 的 器 件 片 内 部 件 进 行 参 数 设 定。Target对 话 框 各 项 学 描 述 如 表 2.3.1 所 列 。 天大 表2.3.1 Target对话框各项描述 选项 航 描述 Xtal 空 指定器件的 CPU 时钟频率。在多数情况下,它的值与 Xtal的频率相同 UseOn chipROM 航 使用片上自带的 ROM 作为程序存储器 Memory Model 京 指定 C51编译器的存储模式。在开始编译新应用时,默认 SMALL CodeRom Size 北指定 ROM 存储器的大小 Off chipCodememory 指定目标硬件上所有外部程序存储器的地址范围 Off chipXdatamemory 指定目标硬件上所有外部数据存储器的地址范围 CodeBanking 指定 CodeBanking参数 标 准 80C51 的 程 序 存 储 器 空 间 为 64 KB;若 程 序 空 间 超 过 64 KB,则 可 在 如 图 2.3.5 所 示 的 Target对话框中对 CodeBanking栏进行设置。CodeBanking为地址复用,可以扩展 现 有 的 CPU 程序存储器寻址空间。选中 CodeBanking复 选 框,用 户 根 据 需 求 在 Banks列 表 框 中 选择合适的块数。在 KeilC51中,用户最多能使用32块64KB 的程序存储空间,即2 MB 的 空间。 社 版 出 大学 图2.3.5 OptionsforTarget‘Target1’———Target选项卡 天 2.3.4 编译项目并创建.HEX 文件 航 在 Target选项卡中设置好工具后,就可以对源程序进行编译。单击图标 或选择 Project→ 空 BuildTarget菜 单 项 ,则 可 以 编 译 源 程 序 并 生 成 应 用 。 当 编 译 的 程 序 有 错 误 时 ,μVision3 将 会 航 在输出窗口(OutputWindow)的编译页 (Build)中 显 示 出 错 误 和 警 告 信 息,如 图 2.3.6 所 示。 京 双 击 某 一 条 信 息 ,则 光 标 停 留 在 文 本 编 译 窗 口 中 出 错 或 警 告 的 源 程 序 位 置 上 。 当 编 译 成 功 后 , 北 就可以开始调试。当要求产生一个.HEX 文件时,要将 Optionsfor‘Target1’对 话 框 Output 选项卡中的 CreateHEXFile复选框 选 中,则 生 成 的.HEX 文 件 就 可 以 下 载 到 EPROM 编 程 器或模拟器中。 图2.3.6 项目编译结果显示 2.4 KeilC 程序调试器及程序调试方法 2.4.1 程序调试器 μVision3 中 集 成 了 一 种 新 型 调 试 器 (Debug),它 提 供 了 两 种 调 试 模 式 : ① 软件模拟仿真(UseSimulator):此模式为纯软件调试,能够仿真8051系列产品的绝大 多数功能而不需要任何硬件目标板。 ② 硬件目标板在线仿真:硬件仿真。 这两种模式可以在 Optionsfor‘Target1’对话框的 Debug选项卡中选择,如图2.4.1所示。 社 版 出 学 大 天 航 空 航 京 北 图2.4.1 仿真设置 2.4.2 启动程序调试 Debug选项配置完成之后,选择 Debug→Start/StopDebugSession菜单项,即可启动 Debug开始调试。启动 Debug后 μVision3窗口分配如图2.4.2所示。 命令窗口用于键入各种调试命令,存储器窗口 用 于 显 示 程 序 调 试 过 程 中 单 片 机 的 存 储 器 状 态 ,观 察 窗 口 用 于 显 示 局 部 变 量 和 观 察 点 的 状 态 。 此 外 ,主 调 试 窗 口 位 置 还 可 以 显 示 反 汇 编 社 版 出 图2.4.2 调试窗口 学 窗口、串行窗口以及性能分析窗 口;通 过 选 择 View 菜 单 中 的 相 应 选 项(或 单 击 工 具 条 中 相 应 按 钮 ),可 以 很 方 便 地 实 现 窗 口 切 换 。 大 (1) 反汇编窗口 天 在 进 行 程 序 调 试 及 分 析 时 ,经 常 用 到 反 汇 编 。 反 汇 编 窗 口 同 时 显 示 了 目 标 程 序 、编 译 的 汇 航 编程序和二进制文件。选择 Debug→Dissembly Window,则弹出如图 2.4.3 所示的反汇编窗 航空 口,用于显示已经装到 μVision3的用户程序汇编语言指令、反汇编代码及其他地址。 京 北 图2.4.3 反汇编窗口 已经执行了的指令都可以通过选择 Debug→View TranceRecords菜单项显示;要想有历 史记录,则选择 Debug→Enable/DisableTranceRecords菜 单 项 即 可。 当 反 汇 编 窗 口 作 为 当 前活动窗口时,若单步执行指 令,则 所 有 的 程 序 按 照 CPU 指 令 即 汇 编 指 令 来 单 步 执 行,而 不 是 C语言的单步执行。 在反汇编的 窗 口 中 可 以 使 用 右 键 功 能,将 鼠 标 指 向 反 汇 编 窗 口 并 右 击,则 可 弹 出 如 图 2.4.4所 示 界 面 。 该 菜 单 第 一 栏 中 的 选 项 用 于 选 择 窗 口 内 反 汇 编 内 容 的 显 示 方 式 。 (2) 寄存器窗口 选择 Debug→Start/StopDebugSession菜单项后,则在 ProjectWindows的 Page页中显 示 CPU 寄存器内存,如图2.4.5所示。 社 版 出 学 大 天 航 空 航 京 北 图2.4.4 反汇编窗口右键界面 图2.4.5 寄存器窗口 (3) 存储器窗口 存 储 器 窗 口 中 ,最 多 可 以 通 过 4 个 不 同 的 页 来 观 察 4 个 不 同 的 存 储 区 ,每 页 都 能 显 示 存 储 器中的内容,如图2.4.6所示。在 Address文本框中输入地址值后,则显示区域直接显示该地 址 的 内 容 ;若 要 更 改 地 址 中 的 内 容 ,则 只 需 要 在 该 地 址 上 双 击 并 输 入 新 的 内 容 。 (4) 串行窗口 μVision3提供了3个专门用于 串 行 调 试 输 入 和 输 出 的 窗 口,被 模 拟 仿 真 的 CPU 串 行 口 数据输出将在该窗口中显示,输入串行窗口中的 字 符 将 输 入 到 模 拟 的 CPU 中。选 择 View→ SerialWindow #1 或 Serial Window #2 或 Serial Window #3 菜 单 项 即 可 打 开 串 行 调 试 窗口。 图2.4.6 存储器窗口 2.4.3 断点设置 程 序 调 试 时 ,一 些 程 序 行 必 须 满 足 一 定 的 条 件 才 能 被 执 行 到 (如 程 序 中 某 变 量 达 到 一 定 的 值、按键被按下、串口接收到数据、有中断产生等),这 些 条 件 往 往 是 异 步 发 生 或 难 以 预 先 设 定 社 的 ,这 类 问 题 使 用 单 步 执 行 的 方 法 是 很 难 调 试 的 ,这 时 就 要 使 用 到 程 序 调 试 中 的 另 一 种 非 常 重 版 要的方法———断点设置。断点设置的方法有多 种,常 用 的 是 在 某 一 程 序 行 设 置 断 点。设 置 好 出 断 点 后 可 以 全 速 运 行 程 序 ,执 行 到 该 程 序 行 即 停 止 ,可 在 此 观 察 有 关 变 量 值 ,以 确 定 问 题 所 在 。 可以通过以下方法来设置断点: 学 ① 选择 Debug→Start/StopDebugsession菜单项或单击快捷键 开始调试程序。 大 ② 用 Debug→Insert/RemoveBreakPoint菜单项设 置 或 移 除 断 点(也 可 以 用 鼠 标 在 该 行 天 双 击 实 现 同 样 的 功 能 );Debug→Enable/DisableBreakpoint开 启 或 暂 停 光 标 所 在 行 的 断 点 功 航 能 ;Debug→DisableAllBreakpoin 暂 停 所 有 断 点 ;Debug→KillAllBreakPoint清 除 所 有 的 断 空 点 设 置 。 这 些 功 能 也 可 以 用 工 具 条 上 的 快 捷 按 钮 进 行 设 置 。 航 ③ 利用 Debug菜单项,打开 Breakpoint对话框,在这个对话框中可以查看定义或更改断 点的设置。 京 北 ④ OutputWindow 窗 口 的 Command 页 也 可 以 使 用 Breakset、Breakkill、Breaklist、 BreakEnable和 BreakDisable命令选项进行断点设置。 2.4.4 目标程序的执行 目标程序的执行有以下方法: ① 选择 Debug→GO 菜单项或直接单击图标 。 ② 在文 本 编 辑 窗 口 或 反 汇 编 窗 口 中 右 击,在 弹 出 快 捷 菜 单 上 选 择 RuntillCursorline 命令。 ③ 在 OutputWindow 窗口 Command页中可以使用 Go、Ostep、Pestp、Tstep命令。 2.5 KeilC 程序调试实例 本例将通过对最简单 的 流 水 灯 程 序 的 调 试 来 演 示 如 何 用 KeilC 调 试 程 序,本 程 序 使 用 AT89C51单片机,使用 P2口连接8个 LED 灯。 源程序: /* * * * * * * * * * * * * * * * * * * 必要的变量定义* * * * * * * * * * * * * * * * * / # include< reg51.h> # include< intrins.h> //声 明 头 文 件 ,该 头 文 件 包 含 “_crol_”函 数 # define uchar unsigned char /* * * * * * * * * * * * * * * * * * * * * 延时子程序* * * * * * * * * * * * * * * * * / void delay( ) { uchar i,j; for(i= 200;i> 0;i-- ) for(j= 150;j> 0;j-- ); 社 版 出 } /* * * * * * * * * * * * * * * * * * * * * * 主程序* * * * * * * * * * * * * * * * * * / void main( ) { uchar i; 学 大 uchar temp= 0x00; P2= temp; 天 while(1) { P2= 0x01; 航 空//点亮与 P2.0 连接的 LED 灯 航 for(i= 0;i< 8;i++ ) { P2= _crol_(P2,1); 京 delay( ); 北 } //_crol_()为循环移位函数,对 P2 存放的数值进行循环移位 //延 时 一 段 时 间 } } 2.5.1 创建项目 选择 Project→NewProject菜单项,则弹出新建项目对话框,如图2.5.1所示。 选择保存路径且输入文件名“liushuideng”之 后 则 弹 出 如 图 2.5.2 所 示 的 CPU 选 择 对 话 框,双击 Atmel展开其产品,找到 AT89C51 单 击。然 后 单 击“确 定”,则 弹 出 如 图 2.5.3 所 示 的 对 话 框 ,单 击 “是 ”就 建 好 了 项 目liushuideng。 图2.5.1 新项目创建界面 社 版 出 学 大 天 航 空 航 京 北 图2.5.2 选择单片机型号界面 图2.5.3 复制51启动代码并把文件加入到项目中 2.5.2 创建新的源程序 单击工具栏中的图标 ,则弹出如图2.5.4所示的源程序编辑窗口。 社 版 出 学 大 图2.5.4 源文件编辑窗口 天 在此窗口添加上面 的 源 程 序,然 后 单 击 图 标 进 行 保 存。 输 入 保 存 文 件 名 时 加 上 后 缀 名 “.C”,如 图 2.5.5 所 示 。 航 空 航 京 北 图2.5.5 保存文件界面 2.5.3 把源程序添加到项目中 在 ProjectWorkspace显示 框 内 单 击 文 件 夹 Target1 左 边 的 符 号 “+ ”,再 右 击 文 件 夹 SourceGroup1。在弹出的界面中选中 AddFilestoGroup ‘SourceGroup1’选 项,在 弹 出 的 对话框中选择刚才创建的 源 程 序 文 件liushuideng.C,如 图 2.5.6 所 示。 然 后 单 击 Add,再 单 击 Close关闭对话框即可。此时,ProjectWorkspace中的 SourceGroup1目录下可看到源程 序liushuideng.C,如 图 2.5.7 所 示 。 图2.5.6 添加文件到项目界面 社 图2.5.7 添加文件到项目后显示的界面 2.5.4 为目标设定工具选项并进行编译 版 出 单击 图 标 或 选 择 Project→Optionsfor Target 菜 单 项,则 弹 出 Optionsfor Target 学 ‘Target1’对话框。在此对话框中对 硬 件 目 标 及 所 选 的 器 件 片 内 部 件 进 行 参 数 设 定,本 例 中 大 的 Target及 Debug的各项参数设置如图2.5.8、图2.5.9所示。 天 航 空 航 京 北 图2.5.8 Target选项卡 社 版 出 学 图2.5.9 Debug选项卡 大 设置 好 目 标 工 具 选 项 后 开 始 编 译 程 序,单 击 工 具 条 中 的 图 标 Window 显示正确,如图2.5.10所示。 天 航 ,编 译 成 功 后,Output 空 航 京 北 图2.5.10 编译成功后的信息输出窗口 2.5.5 软件调试 单击工具条中的按钮 进入软件 调 试 界 面,如 图 2.5.11 所 示。 然 后 单 击 调 试 开 始 按 钮 ,此时调试已开始,选择 Peripherals→I/O Ports →Port2 菜单项,则调出 P2 口 的 模 拟 界 面,如图2.5.12所示。此时可以看到 P2上8个引脚的电平依次由低变到高,如 此 循 环(选 框 内标“√”表示高电平,没有标的为低电平);选择 View→ Watch & Callstack Window 菜单项 调 出 观 察 窗 口 ,如 图 2.5.13 所 示 。 社 版 出 学 大 天 图2.5.11 软件调试界面窗口 航 空 航 京 北图2.5.12 单片机 P2端口的模拟界面 图2.5.13 单片机 P2端口的观察窗口 在 Watch #1 页 中,双 击 项 TypeF2toedit,则 可 以 通 过 输 入 想 要 观 察 的 点 来 观 察。 例 如,本演示例子要观察 P2 口 的 数 值 变 化,因 此 输 入 P2,则 可 以 看 到 P2 的 值 在 循 环 变 化,如 图2.5.13所示。选择 View→Memorywindow 菜单项调出存储器 窗 口,在 Address文 本 框 中 输 入 地 址 0x0004,则 即 可 显 示 此 存 储 器 里 的 内 容 ,如 图 2.5.14 所 示 。 图2.5.14 单片机存储器 单击工具条中的按钮 即可停止调试,选 择 Debug→Breakpoints菜 单 项,则 弹 出 断 点 设 置。本例中设置3个断点,如图2.5.15所示。然后接着单击按钮 继续调试。 社 版 出 学 大 天 航 空 航 京 北 图2.5.15 断点显示 2.6 C51语言概述 2.6.1 数据的存储类型 C51是面向单片机及其硬件控制系统的开发工具,利 用 C51 编 写 的 程 序 最 后 要 转 换 成 机 器码,并下载到单片机中运行。单片机中数据的 存 储 空 间 有 4 类:片 内 程 序 存 储 器 空 间、片 外 程序存储器空间、片内数据存储器空间和片外数据 存 储 器 空 间。数 据 的 存 储 类 型 定 义 了 数 据 在单片机系统中的存储位置,所以在 C51中变量、常量要定义成各种存储类型,目的是将 它 们 定 位 在 相 应 的 存 储 空 间 。 根 据 单 片 机 硬 件 结 构 的 特 点 ,C51 定 义 了 6 种 存 储 类 型 :data、bdata、 idata、pdata、xdata、code,这 些 存 储 类 型 与 51 单 片 机 实 际 存 储 空 间 有 如 下 对 应 关 系 : (1) 片内数据存储器 片内 RAM 最大可达到128字节,可分为3个区域: data:片内直接寻址区,位于片内 RAM 低128位。 bdata:片内位寻址区,位于片内 RAM 寻址区(20H~2FH)。 idata:片内间接寻址区,片内 RAM 所有字节。 (2) 片外数据存储器 xdata:外部存储器,为片外 RAM 的64KB 空间。 pdata:外部存储器,片外 RAM 中的一个页面,为256字节。 (3) 片内、外程序存储器 code:程序代码存储器,为片内、外 ROM 的64KB 空间。 程序中定义变量的类型是编程中首先遇到 的 问 题。一 个 程 序 中 肯 定 会 有 数 据,首 先 要 选 社 择 数 据 类 型 ,一 个 变 量 可 能 有 多 大 的 数 值 ,到 底 要 几 个 字 节 才 能 存 下 ,在 够 用 的 情 况 下 ,尽 量 选 择 8 位 即 一 个 字 节 的 char型 。 版 变量的数据和存储类型举例如下: 出 unsingned char data var1; bit bdata flag; float idata a,b,c; 学 大 unsigned int pdata temp; unsigned char xdata array1[10]; unsigned int code array2[12]; 天 航 空 上述语句定义了 变 量 var1、flag、a、b、c、temp 和 数 组 array1、array2。无 符 号 字 符 型 变 量 航 var1的存储类型为 data,定位在内部 RAM 区;flag位变量的存储类型为 bdata,定位在片内数 京 据 存 储 区 的 位 寻 址 区 ;a、b、c浮 点 变 量 的 存 储 类 型 为idata,定 位 在 片 内 数 据 存 储 区 ;temp 无 符 北 号整型变量的存储类型为 pdata,定位在片外数 据 存 储 区;无 符 号 字 符 型 一 维 数 组 变 量 array1 的存储类型为 xdata,定 位 在 片 外 数 据 存 储 区;无 符 号 整 型 一 维 数 组 array2 的 变 量 类 型 为 code,定 位 在 程 序 存 储 区 。 访问片内数据存储器(data、bdata、idata)花 费 的 时 间 比 访 问 片 外 数 据 存 储 器(xdata、pda- ta)相对要少,因此可将经常使用的变量置于片内 RAM,而将规模较大的或不常使用的数据置 于片外 RAM 中。 2.6.2 C51中断子程序 C51编译器支持在 C 源程序中直接编写中断程序。中断服务函数的完整语法如下: void 函数名(void)interrupt n [using r] 其 中 ,n(0~31)代 表 中 断 号 。C51 编 译 器 允 许 32 个 中 断 ,具 体 使 用 哪 个 中 断 由 芯 片 决 定 。 r(0~3)代 表 第r组 寄 存 器 。 调 用 中 断 函 数 时 ,要 求 中 断 过 程 调 用 的 函 数 所 使 用 的 寄 存 器 组 必 需 与 其 相 同 。 逻 辑 上 ,一 个 中 断 服 务 程 序 不 能 传 递 参 数 进 去 ,也 不 可 返 回 值 。 当中断发生时,编译器插入的代码被运行,它将累加器 A、B、DPTR 和 PSW(程序状态字) 入 栈 。 最 后 ,在 退 出 中 断 程 序 时 ,预 先 存 储 在 栈 中 的 数 据 被 恢 复 。 为了用 KeilC 语言创建一个中断服务程序,则可以利用interrupt关键词和正确的中断号 声明一个staticvoid函数。KeilC 编译器自动生成中断向量以及中断程序的进口、出口代码。 interrupt函数属性标志着该函数为中断服务程序。可用 using属性指定中断服务程序使用哪 一个寄存器区,这是可选的。有效的寄 存 器 区 范 围 为 0~3。 单 片 机 中 断 源、C 中 断 号 和 中 断 源 的 矢 量 位 置 见 表 2.6.1。 表2.6.1 单片机中断源、C 中断号和中断源的矢量位置对照表 中断源 Keil中 断 编 号 矢量地址 外部中断0 0 社0x0003 定时器0溢出 外部中断1 定时器1溢出 串口 定时器2溢出(C52或 S52) 最高优先级 1 版0x000B 出 2 3 学 4 大5 0x0013 0x001B 0x0023 0x002B 天6 0x0033 DMA 航7 0x003B 空 硬件断点 8 0x0043 航 JTAG 9 0x004B 京 例 如 ,一 个 定 时 器 0 的 溢 出 中 断 程 序 编 写 格 式 如 下 : 北 void timer0(void) interrupt 1 //timer0(void)为 中 断 名 { TR0= 0; //关闭定时器 0 TH0= ReloadValueH; //重 新 装 载 初 值 TL0= ReloadValueL; TR0= 1; //启动定时器 0 count++ ; //中断次数计数器加 1 } 2.6.3 头文件定义 任何一种 C51都要有头文件,它 由 预 处 理 命 令 组 成。 头 文 件 就 是 放 在 程 序 开 头 的 文 件, 一般都是由 C51开发商和芯片厂商提供的;这些文件的后缀为“h”,用 #include <......> 格式在程序开始处标注出来。C51在编译 时 首 先 会 将 标 注 的 程 序 应 用 到 编 译 器 里,所 以 在 使 用时要确保这些文件的存在。 以下是头文件的举例: # include< reg51.h> # include< stdio.h> 头 文 件 reg51.h 中 包 含 芯 片 的 引 脚 定 义 和 功 能 电 路 的 变 量 定 义 ,可 以 直 接 拿 来 使 用 ,而 不 必 关 心 该 芯 片 的 具 体 硬 件 问 题 ,这 就 是 与 硬 件 无 关 性 ;stdio.h 是 标 准 输 入 输 出 头 文 件 ,用 到 标 准 输 入 输 出 函 数 时 ,就 要 调 用 这 个 头 文 件 。 其他 C头文件的主要作用如下: # include < assert.h> //设 定 插 入 点 # include < ctype.h> //字 符 处 理 # include < errno.h> //定 义 错 误 码 # include < float.h> # include < fstream.h> # include < iomanip.h> # include < iostream.h> //浮 点 数 处 理 //文 件 输 入/输 出 社 //参 数 化 输 入/输 出 版 //数 据 流 输 入/输 出 # include < limits.h> # include < locale.h> # include < math.h> # include < stdio.h> # include < stdlib.h> # include < string.h> # include < strstrea.h> 出 //定 义 各 种 数 据 类 型 最 值 常 量 //定 义 本 地 化 函 数 //定 义 数 学 函 数 学 //定 义 输 入/输 出 函 数 大//定 义 杂 项 函 数 及 内 存 分 配 函 数 天 //字符串处理 //基 于 数 组 的 输 入/输 出 # include < time.h> # include < wchar.h> # include < wctype.h> 航 空 //定 义 关 于 时 间 的 函 数 //宽 字 符 处 理 及 输 入/输 出 //宽 字 符 分 类 航 51系列单片机有21个特殊 功 能 寄 存 器 (SFR),对 它 的 操 作 只 能 采 用 直 接 寻 址 方 式。 在 京 C51编译器中专门提供了一种定义 方 式,即 用 sfr定 义 特 殊 功 能 寄 存 器,用 sbit定 义 位 地 址。 例如: 北 sfr TMOD= 0x89; sbit Cy= PSW^7; 对于片外扩充的接口,可以根据硬件地址,用 # define 语句进行定义,例如: # define PORT XBYTE [0xffc0] 2.7 小 结 本章详细介绍了 KeilμVision3集成开发环境,包括 μVision3的安装和启动、项目开发过 程、程序调试过程并举例说明。项目开发过程主 要 包 括 项 目 的 创 建 和 设 置、软 件 编 译、链 接 和 软 件 调 试 。Keil提 供 了 许 多 调 试 窗 口 ,可 以 通 过 这 些 窗 口 来 观 察 单 片 机 各 种 状 态 的 变 化 。 μVision3是一个十分优秀的单片机开发软件,应用十分广泛。熟练掌握 μVision3集成开 发 环 境 的 使 用 并 在 使 用 过 程 中 不 断 总 结 ,将 为 单 片 机 的 设 计 和 开 发 奠 定 坚 实 的 基 础 。 习题 2.1 简述创建一个新 KeilC51工程的步骤。 2.2 生成.HEX 文件的目的是什么,在 Keil51C 中如何生成.HEX? 2.3 断点的作用是什么,如何在 KeilC51中设置断点? 2.4 创 建 一 个 工 程,并 编 写 一 个 程 序,实 现 P1.0 口 输 出 80 Hz的 方 波,并 用 调 试 窗 口 观察。 2.5 对习题2.4中编写的程序进行调试,在调试过程中练习断点的设置、熟悉调试方法。 社 2.6 使用 P2口连接8个 LED 灯,设计一个流水灯程序完成一次点亮、间隔点亮、循环点 亮 等 功 能 ,并 练 习 断 点 的 设 置 和 进 行 调 试 。 版 出 学 大 天 航 空 航 京 北 3 第 章 Proteus电子仿真软件与 Keil联合调试 本章简要介绍 Proteus软件组成,详细说明 Proteus软件的基本操作、原理图设计、单片机 仿真过程、元器件的制作、虚拟仿真工具的使用以及 Proteus与 Keil软件联调过程。以典型数 码管显示为例 讲 述 基 于 ProteusISIS 的 电 路 设 计、程 序 调 试、系 统 仿 真 过 程,及 Proteus与 Keil软 件 联 合 调 试 。 社 3.1 Proteus软件介绍 版 出 学 Proteus软件有20多年的历 史,应 用 广 泛,除 了 具 有 和 其 他 EDA 工 具 一 样 的 画 原 理 图、 大 PCB 自动或人工布线及电路仿真的功能外,其特殊功能是,它的电路仿真是互动的;针 对 微 处 天 理器的应用,还可以直接在基于原理图的虚拟原型 上 编 程,并 实 现 软 件 源 代 码 级 的 实 时 调 试、 航 显 示 及 输 出 ,能 看 到 运 行 后 输 入 输 出 的 效 果 ,还 配 置 了 虚 拟 仪 器 如 示 波 器 、逻 辑 分 析 仪 等 。 航空 3.1.1 Proteus软件组成和开发流程 京 1.Proteus软 件 组 成 北 Proteus系统包括ISIS.EXE(电路原理图设 计、电 路 原 理 仿 真)及 ARES.EXE(印 刷 电 路 板设计)两个主要程序。Proteus组合了高 级 原 理 布 图、混 合 模 式 SPICE 仿 真、PCB 设 计 以 及 自 动 布 线 功 能 ,从 而 实 现 了 一 个 完 整 的 电 子 设 计 系 统 。 Proteus软件集原理图设计、仿真和 PCB 设计于一体,实现了从概念到产品的设计;具 有 模拟电路、数字电路、单片机应用系统设计和仿真功 能;具 有 各 种 信 号 源 和 电 路 分 析 所 需 的 虚 拟仪器;支持 Keil、MATLAB 等第三方的软件编译和调试 环 境;具 有 强 大 的 原 理 图 到 PCB 设 计 功 能 ,可 以 输 出 多 种 格 式 的 电 路 设 计 报 表 。 Proteus软 件 由 以 下 6 部 分 组 成 : 原 理 图 输 入 系 统ISIS; 混合模型仿真器; 动态器件库; 高级图形分析模块; 处理器仿真模型 VSM; PCB 设计编辑 ARES。 2.基于 Proteus软件产品开发流程 基于 Proteus的电子产品开发流程如图3.1.1所示。 图3.1.1 基于 Proteus的电子产品开发流程 基于 Proteus产品设计优点: ① 完成原理图设计之后就可以进行电路调试与仿真; ② 交互式仿真特性使得软件的调试与测试能在设计电路板之前完成; ③ 硬件设计的改动很容易,如同软件设计改动一样简单。 3.1.2 Proteus编辑环境介绍 社 版 在电脑中 安 装 好 Proteus软 件 后,选 择“开 始”→“所 有 程 序”→Proteus7Professional中 学出 的图标 即可启动程序。启动界面如图3.1.2所示。 大 天 航 空 航 京 北 图3.1.2 Proteus启动界面 进入启动画面两三秒后进入编辑操作界 面,如 图 3.1.3 所 示。它 由 菜 单 栏、主 工 具 栏、预 览窗口、器件选择按钮、工具箱、原理图编辑窗 口、对 象 选 择 器、方 向 工 具 栏、状 态 栏、仿 真 按 钮 组成。 1.菜 单 栏 ISIS 系 统 的 操 作 主 菜 单 如 表 3.1.1 所 列 ,共 有 12 项 菜 单 ,每 项 都 有 下 一 级 菜 单 。 表3.1.1 主菜单名称和下一级菜单内容 菜单图标 菜单名称 下一级菜单内容 File 文件菜单 新 建 、加 载 、保 存 、打 印 等 文 件 操 作 View 浏览菜单 图 纸 网 格 设 置 、快 捷 工 具 选 项 、图 纸 的 放 置 缩 小 等 操 作 菜单图标 Edit Library Tools Design Graph Source Debug Template System Help 社 版 出 学 大 天 空航 图3.1.3 ISISProfessional编辑操作界面 航 菜单名称 京 编辑菜单 北 库操作菜单 下一级菜单内容 编 辑 取 消 、剪 切 、复 制 、粘 贴 、器 件 清 理 等 操 作 器 件 封 装 、库 编 辑 、库 管 理 等 操 作 续 表 3.1.1 工具菜单 实 时 标 注 、自 动 放 线 、网 络 表 生 成 ,电 器 规 则 检 查 、材 料 清 单 生 成 等 设计菜单 设 置 属 性 编 辑 、添 加 和 删 除 图 纸 、电 源 配 置 等 图形菜单 传 输 特 性 、频 率 特 性 分 析 菜 单 ,编 辑 图 形 ,添 加 曲 线 ,分 析 运 行 等 源文件菜单 选 择 可 编 程 器 件 的 源 文 件 、编 译 工 具 、外 部 编 辑 器 、建 立 目 标 文 件 等 调试菜单 启 动 调 试 、复 位 显 示 窗 口 等 模板菜单 设 置 模 板 格 式 、加 载 模 板 等 系统菜单 设 置 运 行 环 境 、系 统 信 息 、文 件 路 径 等 帮助菜单 打 开 帮 助 文 件 、设 计 实 例 、版 本 信 息 等 2.预 览 窗 口 预览窗口可显示两部分内容: ① 在对象选择器中单击某个元件或在工具 箱 中 单 击 元 件 按 钮 、元 件 终 端 按 钮 、子 电 路按钮 、虚拟仪器按钮 等对象,则预览窗口显示该对象的符号。 ② 当鼠标光标落在原理图编辑窗口或在工具箱中选择按钮 时,则显示整张原理图的缩 略 图 ,以 及 一 个 绿 色 方 框 、一 个 蓝 色 方 框 。 绿 色 方 框 里 的 内 容 就 是 当 前 原 理 图 编 辑 窗 口 中 显 示 的内容,可在它上面单击来改变绿色方框的位置,从 而 改 变 原 理 图 的 可 视 范 围;蓝 色 方 框 内 是 可 编 辑 区 的 缩 略 图 ,如 图 3.1.4 所 示 。 3.器 件 选 择 按 钮 在 工 具 箱 中 单 击 元 件 按 钮 时 才 有 器 件 选 择 按 钮 ,如 图 3.1.5 所 示 。 社 版 出 学 大 图3.1.4 预览窗口 天图3.1.5 器件选择按钮 航 器件选择按钮中的 P 为对象 选 择 按 钮,L 为 库 管 理 按 钮。 单 击 P 按 钮,则 弹 出 一 个 对 象 空 选择对话框。在此对话框的 Keywords栏 中 键 入 器 件 名,单 击 OK 按 钮 就 可 以 从 库 中 选 择 元 航 件 ,并 将 所 选 器 件 名 列 在 对 象 选 择 器 窗 口 中 。 4.工 具 箱 京 北 在ISIS 系 统 中 提 供 了 许 多 图 标 工 具 按 钮 ,这 些 按 钮 对 应 的 操 作 如 下 : 选择 按钮(Selection Mode):可在原理图编辑窗口中单击任意元件并编辑元件的属性。 元件 按钮(ComponentsMode):在器件选择按钮中单击 P 按钮时,根据需要从库中将元 件 添 加 到 元 件 列 表 中 ,也 可 以 在 列 表 中 选 择 元 件 。 连接点 按钮(JunctionDotMode):可 在 原 理 图 中 放 置 连 接 点,也 可 在 不 用 边 线 工 具 的 前 提 下 ,方 便 地 在 节 点 之 间 或 节 点 到 电 路 中 任 意 点 或 线 之 间 连 线 。 连线的网络标号 按钮(WireLableMode):在绘制电路图时,使用网络标号可使连线简 单化。 文本脚本 按钮(TextScriptMode):在电路中输入文本脚本。 总线 按钮(BussMode):总线在电路中显示的是一条粗线,它是一组端口线,由许多根单 线 组 成 。 使 用 总 线 时 ,总 线 的 分 支 线 都 要 标 好 相 应 的 网 络 标 号 。 子电路 按钮(SubCircuitsMode):用于绘制子电路。 元件终端 按钮(TerminalsMode):单击此按钮,则弹出 TerminalsSelector窗口。此窗 口中提供了各种常用的端子,其中,DEFAULT 为默认的无定义的端子,INPUT 为 输 入 端 子, OUTPUT 为 输 出 端 子,BIDIR 为 双 向 端 子,POWER 为 电 源 端 子,GROUND 为 接 地 端 子, BUS 为 总 线 端 子 。 元件引脚 按钮(DevicePinsMode):单击该按钮时,则弹出窗口中出现各种引脚供用户 使 用 ,如 普 通 引 脚 、时 钟 引 脚 等 。 图表 按钮(Graph Mode):单击该按钮,则在弹出的 Graph 窗口中出现各种仿真分析所 需要的图标供用户选择。ANALOGUE 为模拟图表,DIGTAL 为数字图表,MIXED 为混合图 表,FREQUENCY 为 频 率 图 表,TRANSFER 为 转 换 图 表,NOISE 为 噪 声 图 表,DISTOR- TION 为失 真 图 表,FOURIER 为 傅 里 叶 图 表,AUDIO 为 声 波 图 表,INTERACTIVE 为 交 互 社 式图表,CONFORMANCE 为一致性图表,DCSWEEP 为直流扫描图表、ACSWEEP 为 交 流 扫描图表。 版 录音机 按钮(TapeRecorderMode):对设计电路分割仿真时采用此模式。 出 信号源 按钮(GeneratorMode):单击此按钮,则弹出的 Generator窗口 中 将 出 现 各 种 激 学 励源供用户选择,如 DC(直流激励源)、SINE(正弦激励源)、PULSE(脉冲激励源)、EXP(指数 激 励 源 )等 。 大 天 电压探针 按钮(VoltageProbeMode):在原理图中添加电压探针,在电路仿真时可显示 各探针处的电压值。 航 空 电流探针 按钮(CurrentProbeMode):在原理图中添加电流探针,在电路仿真时可显示 各探针处的电流值。 航 虚拟仪 器 按 钮(VirtualInstruments):单 击 该 按 钮,则 弹 出 的Instruments窗 口 中 出 现 京 虚拟仪器 供 用 户 选 择,如 OSCILLOSCOPE(示 波 器 )、LOGIC ANALYSER(逻 辑 分 析 仪 )、 北 COUNTER TIMER(计 数/定 时 器)、SPIDEBUGGER(SPI总 线 调 试 器 )、I2C DEBUGGER (I2C总线调试器)、SIGNAL GENERATOR(信号发生器)等。 画线 按钮(2D GraphicsLine Mode):用 于 创 建 元 件 或 表 示 图 表 时 绘 画 线。 单 击 该 按 钮,则弹出的窗口中出现多种画线工具供用户选择。COMPONENT 为元件连线,PIN 为引脚 连线,PORT 为端口连线,MARKER 为标 记 连 线,ACTUATOR 为 激 励 源 连 线,INDICATOR 为指示器连线,VPROBE 为电压探 针 连 线,IPROBE 为 电 流 探 针 连 线,TAPE 为 录 音 机 连 线, GENERATOR 为信号发生器连线,TERMINAL 为 端 子 连 线,SUBCIRCUIT 为 子 路 连 线,2D GRAPHIC 为二位图连线,WIREDOT 为线连接点连线,WIRE 为线连线,BUS WIRE 为总线 连线,BORDER 为边界连线,TEMPLATE 为模板连线。 方框 按钮(2D GraphicsBox Mode):用于创建元件或者表示图表绘制方框。 圆 按钮(2D GraphicsCircleMode):用于创建元件或表示图表时绘制圆。 弧线 按钮(2D GraphicsArcMode):用于创建元件或表示图表时绘制弧线。 曲线 按钮(2D GraphicsPath Mode):用于创建元件或表示图表时绘制任意形状曲线。 文本 按钮(2D GraphicsTextMode):用于插入各种文本。 符号 按钮(2D GraphicsSymbolMode):用于选择各种符号。 坐标原点 按钮:用于产生各种坐标标记。 5.方 向 工 具 栏 除 了 可 以 在 工 具 栏 中 单 击 这 些 方 向 按 钮 使 用 外 ,也 可 以 先 右 击 ,再 单 击 相 应 的 按 钮 即 可 。 为 旋 转 按 钮 。 单 击 一 次 旋 转 角 度 为 90°,方 向 顺 时 针 。 为 旋 转 按 钮 。 单 击 一 次 旋 转 角 度 为 90°,方 向 逆 时 针 。 为 输 入 旋 转 角 度 按 钮 ,旋 转 的 角 度 只 能 是 90°的 整 数 倍 。 为 翻 转 控 制 按 钮 ,用 于 水 平 翻 转 。 为 翻 转 控 制 按 钮 ,用 于 垂 直 翻 转 。 社 6.仿 真 按 钮 版 出 :运行按钮; :单步运行按钮; :暂停按钮; :停止按钮。 7.原 理 图 编 辑 窗 口 学 大 原 理 图 编 辑 窗 口 用 于 放 置 元 件 、连 线 、绘 制 原 理 图 。 在 该 窗 口 中 ,蓝 色 方 框 为 可 编 辑 区 ,电 天 路 设 计 必 须 在 此 窗 口 内 完 成 。 该 窗 口 设 有 滚 动 条 ,用 户 单 击 预 览 窗 口 ,拖 动 鼠 标 移 动 预 览 窗 口 航 的 绿 色 方 框 就 可 以 改 变 可 视 电 路 图 区 域 。 空 在原理图编辑窗口中的操作与常用的 Windows应用程序不同,其操作有以下特点: 3D 鼠标中间的滚轮用于放大或缩小原理图。 航 单 击 用 于 放 置 元 件 、连 线 。 京 双 击 右 键 可 删 除 已 放 置 的 元 件 或 者 删 除 连 线 。 北 先 单 击 后 右 击 可 编 辑 元 件 属 性 。 按住鼠标左键或右键拖出方框可选中方框中的多个元件或者连线。 先 右 击 选 中 对 象 再 按 住 左 键 移 动 ,或 双 击 元 件 使 元 件 变 成 黄 色 时 ,可 拖 动 元 件 或 连 线 。 3.2 电路原理图设计 电 路 原 理 图 是 由 电 子 器 件 符 号 和 连 接 导 线 组 成 的 图 形 。 图 中 器 件 有 编 号 、名 称 、参 数 等 属 性 ,连 接 导 线 有 名 称 、连 接 的 器 件 引 脚 等 属 性 。 电 路 原 理 图 的 设 计 就 是 放 置 器 件 并 把 相 应 的 器 件 引 脚 用 导 线 连 接 起 来 ,并 修 改 器 件 和 导 线 的 属 性 。 1.新 建 设 计 文 件 选择“开始”→“所有程序”→Proteus7Professional中的 即可启动程序进入编辑操作 界面,然后选择 File→New Design菜单 项,则 弹 出 如 图 3.2.1 所 示 的 图 纸 选 择 界 面。 横 向 图 纸为 Landscape,纵向图纸为 Portrait。DEFAULT 为默认模板,如果设计没有特殊要求,则选 DEFAULT 即可。单击 OK 将自动建 立 一 个 默 认 标 题(UNTITLED)的 文 件,再 选 择 单 击 文 件菜单中的保存标志 ,在弹出的界面中选择保存的路径和输入文件的名称,然后单击“保存” 即可。 社 版 出 学 大 天 航 2.设 计 图 纸 大 小 航空 图3.2.1 图纸模块选择界面 京 北 ProteusISIS为用户提供了 A4~A0这4种纸张大小的选择,如图 3.2.2 所示;用户可以 选择 System→SetSheetsize菜单项,弹出该对话 框。根 据 设 计 需 要 选 择 图 纸 的 大 小,然 后 单 击 OK 即可。 3.添 加 元 器 件 单击工具栏中的元器件选择图标 ,然后单击图纸预览窗口下面的对象选择器按钮 ,如 图3.2.3所示,或选择 Library→PickDevice菜单项。在弹出如图3.2.4所示的元器件选择对 话框,在 Keywords文本框中输入需要查找的 元 件 名,则 在 Results栏 中 显 示 出 与 输 入 匹 配 的 元件。例如,在 Keywords文本框中输入at89c51,则在 Results中显示出若干匹配的at89c51, 如 图 3.2.4所 示 。 然 后 双 击 就 可 以 将 元 件 添 加 到ISIS 对 象 选 择 器 中 ,在 元 件 表 中 可 以 看 到 选 中的元件名称。 图3.2.2 纸张大小选择对话框 图3.2.3 对象选择按钮 社 版 出 学 大 天 航 空 航 京 北 图3.2.4 元器件选择对话框 4.放 置 、移 动 、旋 转 、删 除 对 象 1)放 置 元 件 经 过 前 面 3 步 将 所 需 要 的 元 器 件 添 加 到ISIS 对 象 选 择 器 中 后 ,在 对 象 选 择 器 中 单 击 要 放 置 的 元 件 ,则 蓝 色 条 出 现 在 该 元 件 名 字 上 ,再 在 原 理 图 编 辑 窗 口 中 单 击 就 放 置 了 一 个 元 件 。 2)移 动 元 件 在原理图编辑窗口中,若要移动元件或连线,则 先 单 击 对 象,使 元 件 或 连 线 处 于 选 中 状 态 (默认情况下为红色),再按住鼠标左键拖动,则元件或 连 线 就 跟 随 指 针 移 动,到 达 合 适 位 置 松 开鼠标左键即可。 3)旋 转 元 件 放置元件前先单击要放置的元件,则蓝色条 出 现 在 该 元 件 名 上。单 击 方 向 工 具 栏 上 相 应 的 转 向 按 钮 可 旋 转 元 件 ,再 在 原 理 图 编 辑 窗 口 中 单 击 就 放 置 了 一 个 已 经 改 变 方 向 的 元 件 。 若 在 原 理 图 编 辑 窗 口 中 需 要 改 变 元 件 方 向 ,则 右 击 该 元 件 ,在 弹 出 的 对 话 框 中 键 入 旋 转 的 角度即可实现更改元件方向。 4)删 除 元 件 在原理图编辑窗口中,右键双击 该 元 件 就 可 删 除 该 元 件,或 者 先 单 击 再 按 下 Delete键 也 可删除元件。 社 版 通 过 放 置 、移 动 、旋 转 、删 除 元 件 后 ,可 将 各 元 件 放 置 在ISIS 原 理 图 编 辑 窗 口 的 合 适 位 置 。 5.放 置 电 源 、地 出 1)放 置 电 源 学 大 单击工具箱中的“元件终端”图 标 ,在 对 象 选 择 器 中 单 击 POWER 使 其 出 现 蓝 色 条,再 在原理图编辑窗口的合适位置单击将电源放置在原理图中。 天 2)放置地 航 单击工具箱中的元件终端图标 ,在对象选择器中单击 GROUND,再在原理图编辑 窗 口 空 的 合 适 位 置 单 击 就 将 地 放 置 在 原 理 图 中 。 航 6.布 线 京 在ISIS原理图编辑窗口中设有专 门 的 布 线 按 钮,但 系 统 默 认 自 动 布 线 按 钮 有 效,因 此 可 直接画线。 北 1)在 两 个 对 象 之 间 连 线 将 光 标 靠 近 一 个 对 象 的 引 脚 末 端 单 击 ,移 动 鼠 标 指 针 使 其 放 在 另 一 个 对 象 的 引 脚 末 端 ,再 次单击就可以画一条连线。如果想手动设定走线路 径,则 拖 动 鼠 标 在 想 要 拐 点 处 单 击 设 定 走 线路径,到达画线端的另一端单击,就可画好一条连线。在拖动鼠标的过程中按住 Ctrl键,在 画线的另一端单击即可手动画一条任意角度的连线。 2)移 动 画 线 、更 改 线 型 右击画线,选中 DragWire项,则画线变成黄色。拖动鼠标,则该线跟随移动。若同时移动多根 线,则先框选这些线,再单击快移动按钮 ,拖动到合适的位置单击就可以改变线条的位置。 3)总 线 及 分 支 线 的 画 法 画线 将光标靠近一个对象的引脚末端单 击,然 后 拖 动 鼠 标,在 合 适 位 置 双 击 即 可,画 出 一条直线。 画总线 可以把已经画好的单线设置为总 线。选 中 该 线 右 击,在 弹 出 的 级 联 菜 单 中 选 择 EditWireStyle项,如图3.2.5所示。在 GlobalStyle下拉列表框中选择 BUS WIRE,然后单 击 OK 即可。 画分支 将光标靠近一个对象引脚末端单击,然后拖动鼠标,在总线上单击即可画好一条 分支。若要使分支与总线成任意角度,则要同时按住 Ctrl键,再在总线上单击即可。 社 版 出 学 大 图3.2.5 编辑线样式对话框 7.设 置 、修 改 元 件 属 性 天 航 在需要修改的元件上右击,在弹出的级联菜单中选择 EditProperties或按快捷方式 Ctrl+E, 空 则弹出 EditComponent对话框。例如,要修改一个电阻的属性,其属性对话框如图3.2.6所示。 航 京 北 图3.2.6 电阻属性设置对话框 在此对话框中设置元件属性。如果需要成 组 设 置,则 可 以 使 用 属 性 分 配 功 能。用 左 键 框 选需要设置的所有器件,选择 Tools→PropertyAssignmentTool菜单项或者按快捷方 式 A, 则弹出如图3.2.7所 示 的 属 性 分 配 对 话 框。 例 如,要 把 好 几 个 电 阻 设 置 阻 值 均 为 100,则 在 String文本框输入“value=100”,且选中 GlobalTagged单选按钮,然后单击 OK 关闭对 话 框 即可。 社 版 出 学 大 天 航 图3.2.7 属性分配对话框 8.建 立 网 络 表 空 航 网络就是一个设计中有电器连接 的 电 路。选 择 Tools→NetlistComplier菜 单 项,则 弹 出 京 对 话 框 。 在 此 对 话 框 中 ,可 设 置 网 络 表 的 输 出 形 式 、模 式 、范 围 、深 度 和 格 式 等 。 9.电 气 检 查 北 在一个电路设计中,画完电路并生成网络表后,可进行电器检测。选择 Tools→Electrical RuleCheck菜单项或者单击主工具栏中的图标 ,则弹出电气检测窗口;此窗口中前面是一些 文本信息,接着是电气检测结果。若有错,则有 英 文 提 示,并 附 有 详 细 的 说 明。图 3.2.8 为 显 示的检测结果。 10.存 盘 及 输 出 报 表 如果设计 的 原 理 图 没 有 保 存,则 将 其 保 存。 保 存 后,选 择 Tools→ElectricalRuleCheck 菜单项,在其子菜单中选择其中一个选项或单击按钮 ,则生成 BOM 文档。 11.单 片 机 原 理 图 设 计 实 例 这里以设计数码管显示为例子,详细讲解原 理 图 设 计 的 具 体 步 骤。数 码 管 显 示 的 原 理 图 如 图 3.2.9 所 示 。 社 版 出 学 图3.2.8 电气检测界面 大 天 航 空 航 京 北 图3.2.9 原理图 (1) 新建设计文件 选择“开 始”→ “程 序”→Proteus7Professional→ISIS7Professional菜 单 项 打 开ISIS7 Professional窗口。选择 File→New Design 菜 单 项,则 弹 出 图 纸 模 板 选 择 对 话 框。 选 DEFAULT,如图3.2.10所示,单击 OK 即完成了新建模板。 社 版 出 学 大 图3.2.10 图纸模板选择对话框 建完模板后要保存。单击 工 具 栏 的 图 标 ,则 弹 出 保 存 路 径 对 话 框,如 图 3.2.11 所 示。 航天 选 择 好 路 径 后 ,在 文 件 名 项 中 输 入 文 件 名 “实 例 ”,然 后 单 击 “保 存 ”即 完 成 了 保 存 。 空 航 京 北 图3.2.11 保存对话框 (2) 图纸设定 选择 System→SetSheetSize菜 单 项,在 弹 出 的 设 置 纸 张 大 小 对 话 框 中 选 择 “A4”项,如 图3.2.12所示,单击 OK 即可。 (3) 添加元件 本例要用的元件如下: AT89C51 7SEG COM AN GRN CRYSTAL RES CAP BUTTON CAP ELEC 图3.2.12 设置图纸大小对话框 单击器件选 择 按 钮 ,则 弹 出 添 加 元 器 件 对 话 框。 在 关 键 字 (Keywords)文 本 框 输 入 at89C51,如图 3.2.13 所 示。然 后 双 击 AT89C51 所 在 的 行 即 可 把 AT89C51 添 加 到 列 表 中。 社 同样的方法把数码管(7SEG COM AN GRN)、电 容(CAP)、电 解 电 容(CAP ELEC)、晶 版 振 (CRYSTAL)及 电 阻 (RES)添 加 到 器 件 列 表 中 ,如 图 3.2.14 所 示 。 出 学 大 天 航 空 航 京 北 图3.2.13 器件选择对话框 (4) 放置元件 把元件 添 加 到 对 象 选 择 列 表 后,在 对 象 选 择 列 表 单 击 要 放 置 的 元 件 (这 里 先 放 AT89C51),然后把鼠标拖到编辑区,选好要放置的地方再单击两次即可将其放置到 编 辑 窗 口 中 ,如 图 3.2.15 所 示 。 社 版 出 学 大 天 图3.2.14 器件选择列表 空航 图3.2.15 放置 AT89C51 航 同样的方法将列表中余下的元件放到编辑 窗 口 中,对 元 件 位 置 的 进 行 移 动、旋 转 等 操 作。 把 所 有 的 器 件 都 放 置 到 编 辑 窗 口 ,如 图 3.2.16 所 示 。 京 (5) 放置电源、地 北 单击工具箱中的“元件终端”图标 ,在器件选择框中选择 POWER(电源),然后拖动鼠标 将其放到选定的地方单击两次 即 可。 然 后 在 器 件 选 择 框 中 选 择 GROUND,用 同 样 的 方 法 把 “地 ”放 置 到 编 辑 框 中 。 (6) 连 线 单击工具箱中的2D GraphicsLineMode图标 ,在弹出的列表 中 选 择 WIRE,然 后 将 编 辑窗口的元器件连线,再在列表中选择 BUS WIRE,在编辑窗口中画一条总线。 (7) 设置元件属性 单击工具箱 中 的 Selection Mode ,然 后 右 击 “按 钮 ”,在 弹 出 的 快 捷 菜 单 中 选 择 Edit Properties,则弹 出 如 图 3.2.17 所 示 的 按 钮 属 性 编 辑 对 话 框。 在 ComponentReference文 本 框中输入 SW1,然后单击 OK 即可完成对按钮的属性设置。按照同样的方法把剩下的元件的 属性设置好。 社 版 出 大学 图3.2.16 所有器件放置图 天 航 空 航 京 北 图3.2.17 按钮属性设置对话框 (8) 给导线添加网络标签 右击 P1.0口与总线连接的那根导线,在弹出的快捷菜单中选 择 Placewirelabel,在 弹 出 的添加网络标签对话框中的 String文本框输入 P1_0,单击 OK 即可。用同样的方法为所有和 总 线 相 连 的 导 线 添 加 网 络 标 签 ,具 体 每 根 导 线 的 标 签 内 容 如 图 3.2.18 所 示 。 如 果 觉 得 以 上 的 标 号 方 法 麻 烦 ,则 可 以 成 组 标 号 。 此 操 作 要 使 用 到 属 性 分 配功 能,选 择 Tools→Property AssignmentTool 菜单项,或者按 快 捷 方 式 A,则 弹 出 属 性 分 配 对 话 框。在 String文本框输入“net=P1_#”,然后单击 OK 关闭对话框。此时 鼠 标 移 到 需 要 标 号 线 时,鼠 标 箭 头 会 出 现 一 个 绿 色 符 号 “= ”,单 击 一 下 需 要 标 图3.2.18 给导线添加网络标签 号 的 线 即 可 自 动 生 成 一 个 网 络 标 号 ,只 要 单 击 需 要 社 的所有线即可完成网络标号。 版 (9) 电气检测 出 单击菜单工具栏中的图标 ,或选择 Tools→ElectricalRulesCheck 菜单项,则弹出电 气 学 检 测 结 果 对 话 框 ,如 图 3.2.19 所 示 。 从 图 中 可 知 ,本 例 子 没 有 电 气 错 误 。 大 天 航 空 航 京 北 图3.2.19 电气检测结果对话框 3.3 单片机的仿真 Proteus系 统 能 够 仿 真 单 片 机 的 指 令 执 行 过 程 ,能 够 在 连 接 其 他 接 口 电 路 之 后 实 现 对 电 路 的快速调试。对单片机进行仿真分以下几个步骤: 1.添 加 程 序 菜单的 Source中有添加删除程序(Add/RemoveSourcefile)、选 择 代 码 生 成 工 具(Define CodeGenerationTools)、设置外 部 文 本 编 辑 器 (SetupExternalTextEditor)、编 译 所 有 文 件 (BuildAll)4 项 。 单 击 添 加 删 除 程 序 (Add/RemoveSourcefile),则 在 弹 出 对 话 框 中 的 代 码 生 成 工具栏(CodeGenerationTool)下拉列表框中选中 ASEM51,如图3.3.1所示。在源文件选 择项中单击 Change来改变保存的路径,键入路径后单击“打开”,在弹出的是否建立新文 件 对 社 话框中,单击“是”即成功添加了源程序文本。在弹出的源程序文本框中写入源程序,选择 File →Save菜 单 项 关 闭 文 本 框 即 可 。 版 出 学 大 天 航 空 航 京 北 图3.3.1 添加源件对话框 2.编 译 程 序 选择 Source→BuildAll菜单项,如果文件无错误就产生了.HEX 文件。 3.添 加 和 执 行 程 序 双击需要添加程 序 的 单 片 机,则 弹 出 属 性 编 辑 对 话 框。 在 Program File项 中 单 击 图 标 ,在弹 出 的 SelectFileName(选 择 文 件)对 话 框 中 选 择 上 一 步 产 生 的.HEX 文 件,单 击 “打 开”按钮回到单片机属性对话框,单击 OK 即可。单击编辑窗下边的仿真按钮或者选择调试菜 单 Debug下的执行功能即可执行。 4.观 察 单 片 机 内 部 状 态 程序执行后单击暂停按钮,选择 Debug→8051CPU 菜单项,则有3项命令可以选择:Registers_U1(通用寄存器)、SFR Memory_U1(特殊功能寄存器)及InternalIDATA Memory_U1 (片内数据存储器)。可以任意单击一项,将其调出 来 查 看 状 态。图 3.3.2 是 片 内 数 据 存 储 器 的状态,同时按快捷方式 F10或 F11单步运行观察其状态。 社 版 出 大学 图3.3.2 片内数据存储器状态 天 3.4 ProteusISIS元件制作 航 空 在绘制原理图的过程中,如果遇到原理图元件库中 找 不 到 的 元 器 件 或 没 有 适 合 使 用 的 元 航 器 件 时 ,需 要 自 行 制 作 原 理 图 元 件 。 这 里 以 74LS373 的 制 作 为 例 进 行 介 绍 。 京 1.绘 制 元 件 图 形 模 型 北 ProteusISIS 中 没 有 专 门 的 元 件 编 辑 模 式 ,所 有 的 制 作 符 号 、元 件 边 界 工 作 都 在 原 理 图 编 辑窗口中完成。单击工具箱中的按钮 或者 在 原 理 图 编 辑 窗 口 中 的 空 白 处 右 击,然 后 在 弹 出 的菜单中选择 Place,在其子菜单中选择“ ”,再在对象选择器中单击 COMPONENT,然后 在 原 理 图 编 辑 窗 口 中 拖 出 一 个 矩 形 框 ,如 图 3.4.1 所 示 。 2.放 置 器 件 引 脚 单 击 工 具 箱 中 的 按 钮 或 者 在 原 理 图 编 辑 窗 口 中 的 空 白 处 右 击 ,然 后 在 弹 出 的 菜 单 中 选择 Place,在 其 子 菜 单 中 选 择“ ”,则 绘 制 引 脚 列 表 中 列 出 了 如 图 3.4.2 所 示 的 绘 制 引 脚 。 其 中 ,DEFAULT 为 普 通 引 脚 ,INVERT 为 低 电 平 有 效 引 脚 ,POSCLK 为 上 升 沿 有 效 的 时 钟 输 入 引 脚 ,NEGCLK 为 下 降 沿 有 效 的 时 钟 输 入 引 脚 ,SHORT 为 较 短 引 脚 ,BUS为 总线。 在 对 象 选 择 器 中 单 击 DEFAULT,然 后 在 原 理 图 编 辑 窗 口 中 的 已 绘 制 图 形 模 型 旁 放 置 器 件 引 脚 ,如 图 3.4.3 所 示 。 放 置 器 件 引 脚 时 要 注 意 ,引 脚 不 含 “× ”的 一 端 放 置 在 图 形 方 框 旁 边 ,对 器 件 引 脚 方 向 可 用 方 向 工 具 栏 进 行 更 改 。 然 后 单 击 BUS,把 总 线 放 置 在 元件旁。 图3.4.3所示的引脚1为 GND,PIN10;引脚2为 D[0...7];引脚3为 OE,PIN1;引脚4 为 LE,PIN11;引脚5为 VCC,PIN20;引脚6为 Q[0...7]。 社 版 图3.4.1 绘制元件图形模型 图3.4.2放置器件引脚 出 图3.4.3 引脚名称列表 学 3.引脚编辑 大 先右击后单击引脚1,则 弹 出 如 图 3.4.4 所 示 的 引 脚 属 性 对 话 框,键 入 和 选 择 图 中 的 内 天 容 。 同 理 ,引 脚 2 的 属 性 设 置 如 图 3.4.5 所 示 。 引 脚 3、4 的 属 性 设 置 如 图 3.4.6、图 3.4.7 所 航 示 。 引 脚 5、6 的 属 性 设 置 如 图 3.4.8、图 3.4.9 所 示 。 总 体 制 作 的 元 件 图 如 图 3.4.10 所 示 。 空 航 京 北 图3.4.4 引脚1属性对话框 图3.4.5 引脚2属性对话框 图3.4.6 引脚3属性对话框 图3.4.7 引脚4属性对话框 社 版 出 学 大 天 航 空 航 京 北 图3.4.8 引脚5属性对话框 图3.4.9 引脚6属性对话框 4.添 加 中 心 点 单击工具箱中的 图标,在列表中选“ORIGIN”,中心的位置可任意放,如图3.4.11所示。 图3.4.10 制作出的74LS373 图3.4.11 添加中心点 5.封 装 入 库 用右键选 择 整 个 元 件,然 后 选 择 Library→MakeDevice菜 单 项,在 弹 出 的 对 话 框 中 键 入 如 图 3.4.12 所 示 的 内 容 。 社 版 出 学 大 天 航 空 航 京 北 图3.4.12 MakeDevice对话框 单击 Next按钮,则弹出选择 PCB 封装的对话框,接着单 击 Next即 可 弹 出 设 置 元 件 参 数 的 对 话 框 ,如 图 3.4.13 所 示 。 单击 New 按钮,在弹出的下拉菜单(见图3.4.14)中选择ITFMOD。然后在 DefaultValue文本框键入 TTLLS,如图3.4.15所示。再单击 New,选择 MODFILE,并在 DefaultValue 中键入74XX373.MDF。接着单击 Next,弹出的对话框不加以设置,继续单击 Next,则弹出元 件 存 放 位 置 对 话 框 如 图 3.4.16 所 示 。 社 版 出 学 大 图3.4.13 设置元件参数对话框 天 航 空 航 京 北 图3.4.14 参数选择框 图3.4.15 器件的特征和定义设置对话框 社 版 出 图3.4.16 选择元件存放位置对话框 学 默认是在 USERDVC 中。左边是选择类别,最好自己新建一个,单击 DeviceCategory下 大 拉列表框右边的 New 按钮,在弹出的对话框中键入 MYLIB,单击 OK 即可。然后再单击 OK 天 按钮就把元件74LS373制 作 好 了。可 以 选 择 Library→Library Manager菜 单 项 打 开 库 管 理 航 器来管 理 自 己 的 元 件,如 图 3.4.17 所 示。 此 时 只 要 在 元 件 库 管 理 器 的 右 边 双 击 空 74LS373.BUS即 可 将 其 添 加 到 编 辑 环 境 中 的 器 件 列 表 中 。 航 京 北 图3.4.17 元件库管理器

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。