
本书以MCS-51单片机为对象,阐述了其结构和功能、指令系统、汇编语言和C51语言程序设计、中断系统和定时/计数器、并行和串行存储器扩展技术、串行通信接口、显示器和键盘接口技术、数/模和模/数转换器的接口技术;介绍了常用仿真软件Proteus和Keil的Windows 集成开发环境的使用方法;以典型例题为载体,以汇编语言和C51语言相对应的方式介绍了程序设计方法及单片机系统的设计方法。本书以C51语言为主,汇编语言为辅。本书中所有例题均给出源程序及仿真运行结果。
前 言 自从20世纪70年代单片微型计算机(简称单片机)诞生以来,单片机以其功能强、体积小、质量小、价格低、可靠性高、可塑性好等优点得到了广泛的应用。单片机是目前世界上数量最多的计算机。在现代人类生活中,几乎每件电子产品和机械产品都集成有单片机,因而,单片机已成为工程师们开发嵌入式应用系统和小型智能化产品的首选控制器。 为了满足社会的需求,国内大部分工科专业已经将单片机列为专业必修课或选修课。虽然单片机的机型很多,但MCS-51单片机仍然是主流机型。为此,本着“通用、适用、实用、易用”的原则,本书以MCS-51单片机为对象,介绍其内部结构、基本原理、接口技术及软硬件系统的设计方法。本书的特点体现在以下几个方面。 (1) 理论以够用为度,加大典型例题的引入。单片机课程的特点是理论性和实践性都很强,而对于大部分工科专业,本课程的目标是培养创新型和应用型人才,因此理论内容安排以够用为度,加大了典型例题的介绍。所有例题均上机调试通过。通过大量例题的学习,使初学者掌握单片机的基本原理和软硬件系统的设计方法。 (2) 汇编语言和C51语言相得益彰。汇编语言与单片机的硬件密切相关,且其代码效率高。学习汇编语言可以了解单片机的工作原理,但是汇编语言的灵活性差,编程较难。与汇编语言相比,C51语言在功能、结构性、可读性方面有明显的优势,因而易学易用。此外,它对单片机的内部结构和工作原理的掌握性要求较低,但是代码效率较低。为了既让学生了解汇编语言的结构及面向机器的特点,同时又便于学生较快地进行单片机系统的开发,对于书中的例题,给出了汇编语言和相应的C51语言程序。两种语言的掌握对于开发高效的程序非常重要。 (3) 仿真软件Keil μVision4和Proteus的引入使学习者更容易进行系统开发。科技的发展使得计算机仿真技术已成为许多设计部门重要的前期设计手段。Keil μVision4软件提供了丰富的库函数和功能强大的集成开发调试工具,方便易用的集成环境、强大的软件仿真调试工具使单片机开发者事半功倍。Proteus是目前仿真单片机系统的优秀软件,它具有设计灵活、结果和过程统一的特点。Proteus的引入使学生在只有一台PC的情况下就能进行单片机系统的设计和开发,大大缩短了开发周期。 本书的第1~6章、第8、第9章由西北农林科技大学郭文川编写,第7章由西南大学吴永烽编写,第10章由山西农业大学李志伟编写,第11章由湖南农业大学李旭(Keil部分)和西北农林科技大学许景辉(Proteus部分)编写,第12章由西北农林科技大学许景辉编写,附录由郭文川整理和提供,全书由郭文川整理和统稿。在本书的编写过程中参考了许多资料,主要参考资料列在了参考文献中,在此向所有资料的作者表示衷心的感谢。 读者可注册并登录华信教育资源网(www.hxedu.com.cn)后免费下载本书课件。 限于能力和水平有限,书中难免出现不足,希望读者不吝赐教(E-mail:wencg915@sina. com)。 2020年12月
目 录 第1章 微型计算机基本知识 1 1.1 数制与编码 1 1.1.1 数制 1 1.1.2 编码 3 1.2 计算机中有符号数的表示方法 5 1.2.1 数的符号的表示法 5 1.2.2 原码、反码和补码 6 1.2.3 补码的加减法运算 8 1.3 微型计算机系统组成及工作工程 9 1.3.1 微型计算机的组成 9 1.3.2 中央处理单元的组成 10 1.3.3 微型计算机的工作过程 12 1.4 单片机概述 15 1.4.1 单片机系统的特点 16 1.4.2 单片机的应用 16 1.4.3 单片机的发展历史及未来方向 17 1.4.4 MCS-51系列单片机 18 1.4.5 主流的单片机类型 20 1.4.6 STC单片机标识说明 22 本章小结 22 思考题和习题 23 第2章 MCS-51系列单片机的结构和工作原理 24 2.1 MCS-51单片机的内部组成和信号引脚 24 2.1.1 80C51单片机的内部组成 24 2.1.2 MCS-51系列单片机的引脚及功能 26 2.2 51子系列单片机的存储器配置 28 2.2.1 程序存储器 29 2.2.2 数据存储器 30 2.3 并行I/O口P0~P3的结构 35 2.3.1 P0口 35 2.3.2 P1口 36 2.3.3 P2口 37 2.3.4 P3口 37 2.4 时钟电路与时序 38 2.4.1 时钟电路 38 2.4.2 时序定时单位 39 2.4.3 MCS-51典型指令时序 39 2.5 复位电路和低功耗工作方式 41 2.5.1 复位电路 41 2.5.2 掉电保护方式 42 2.5.3 低功耗工作方式 42 本章小结 44 思考题与习题 44 第3章 MCS-51单片机的指令系统 46 3.1 概述 46 3.1.1 指令和程序设计语言 46 3.1.2 汇编语言程序语句格式 47 3.1.3 操作数的类型 48 3.1.4 机器语言语句格式 48 3.1.5 伪指令 49 3.2 寻址方式 52 3.2.1 符号注释 53 3.2.2 寻址方式 53 3.3 MCS-51单片机的指令系统 57 3.3.1 数据传送类指令 58 3.3.2 算术运算类指令 62 3.3.3 逻辑运算及移位类指令 66 3.3.4 控制转移类指令 68 3.3.5 位操作类指令 73 本章小结 75 思考题与习题 76 第4章 MCS-51单片机的汇编语言程序设计 78 4.1 顺序程序设计 78 4.2 循环程序设计 79 4.3 分支程序设计 81 4.4 子程序设计 83 本章小结 85 思考题与习题 85 第5章 单片机的C51语言编程基础 86 5.1 C51程序的基本结构和常用的头文件 86 5.1.1 C51程序的基本结构 86 5.1.2 C51中常用的头文件 87 5.2 C51的基本数据类型、数据存储类型和存储模式 89 5.2.1 C51的基本数据类型 89 5.2.2 C51数据的存储类型 90 5.2.3 C51数据的存储模式 90 5.2.4 变量声明举例 91 5.3 C51的运算符 92 5.4 C51的函数 93 5.4.1 函数的分类 94 5.4.2 函数的定义 94 5.4.3 函数的调用 94 5.4.4 对被调用函数的说明 95 5.5 单片机的C51语言编程 95 5.6 C51与汇编语言的混合编程 99 本章小结 101 思考题与习题 102 第6章 MCS-51单片机中断系统与定时/计数器 103 6.1 中断概述 103 6.1.1 数据的输入/输出传送方式 103 6.1.2 中断的基本概念 104 6.2 51子系列单片机的中断系统结构及中断控制 105 6.2.1 中断源 106 6.2.2 中断控制 107 6.2.3 中断矢量地址 109 6.2.4 中断响应过程及中断响应时间 110 6.3 中断的汇编和C51语言程序设计及外部中断应用举例 111 6.3.1 中断的汇编和C51语言程序设计基本问题 111 6.3.2 外部中断应用举例 112 6.4 51子系列单片机定时/计数器的结构和寄存器 116 6.4.1 定时和计数的概念 116 6.4.2 51子系列单片机定时/计数器的结构 117 6.4.3 定时/计数器的寄存器 118 6.5 定时/计数器的工作方式及应用 119 6.5.1 工作方式0 119 6.5.2 工作方式1 121 6.5.3 工作方式2 123 6.5.4 工作方式3 124 6.6 定时/计数器的应用实例 126 6.6.1 在测试信号中的应用 126 6.6.2 在驱动直流电动机中的应用 127 6.6.3 在音乐输出方面的应用 129 本章小结 132 思考题与习题 133 第7章 MCS-51单片机串行接口 135 7.1 串行通信概述 135 7.1.1 异步通信和同步通信 135 7.1.2 串行通信的线路传输方式 136 7.1.3 波特率 137 7.2 MCS-51单片机串行口 137 7.2.1 串行口结构及工作原理 137 7.2.2 与串行口相关的特殊功能寄存器 139 7.2.3 波特率的设计 141 7.2.4 串行通信工作方式 142 7.2.5 串行口的应用举例 143 7.2.6 串行口方式2和方式3的应用 148 7.3 RS-232C标准接口总线及串行通信硬件设计 149 7.3.1 RS-232C标准接口总线 149 7.3.2 信号电气特性与电平转换 150 7.3.3 RS-232C的应用 152 7.3.4 单片机与单片机及单片机与PC之间的串行通信接口电路 153 7.4 单片机之间的点对点串行异步通信 154 7.4.1 通信协议 154 7.4.2 通信程序举例 154 7.5 单片机与PC之间的通信 160 7.5.1 PC串口调试助手的介绍 160 7.5.2 单片机与PC通信的举例 162 本章小结 164 思考题与习题 165 第8章 存储器的扩展 166 8.1 单片机的扩展结构 166 8.1.1 单片机的扩展结构 166 8.1.2 单片机扩展的实现 167 8.2 并行存储器的扩展 168 8.2.1 并行程序存储器的扩展 168 8.2.2 并行数据存储器的扩展 174 8.2.3 并行程序存储器和数据存储器的混合扩展 177 8.3 I2C总线及串行E2PROM的扩展 179 8.3.1 I2C总线概述 179 8.3.2 基于I2C总线的串行E2PROM的扩展 182 本章小结 187 思考题与习题 187 第9章 单片机并行I/O接口扩展 188 9.1 I/O接口扩展概述 188 9.1.1 I/O接口电路应具有的功能 188 9.1.2 I/O接口的基本结构 189 9.1.3 I/O接口的操作 189 9.2 简单并行I/O接口扩展 190 9.2.1 扩展并行输入口 190 9.2.2 扩展并行输出口 191 9.3 可编程并行I/O接口芯片8255A 193 9.3.1 8255A芯片内部结构及功能 193 9.3.2 8255A的操作说明 194 9.3.3 8255A与单片机的接口设计 197 9.4 数码管接口技术 200 9.4.1 数码管简介 201 9.4.2 数码管的静态显示接口 202 9.4.3 动态显示接口 203 9.5 LCD接口技术 205 9.5.1 LCD1602简介 205 9.5.2 LCD1602应用举例 209 9.6 键盘接口技术 211 9.6.1 键盘结构及闭合键的识别方法 211 9.6.2 行列式键盘接口举例 216 本章小结 219 思考题与习题 220 第10章 并行A/D及D/A转换器接口技术 222 10.1 A/D及D/A转换器主要参数 222 10.1.1 A/D转换器主要参数 222 10.1.2 D/A转换器主要参数及输入输出特性 223 10.2 8位并行DAC0832及其接口技术 224 10.2.1 DAC0832简介 224 10.2.2 DAC0832与单片机的接口及编程 226 10.3 12位并行DAC1210及其接口技术 232 10.3.1 DAC1210简介 232 10.3.2 DAC1210与单片机的接口技术 233 10.4 并行ADC0808(0809)及其接口技术 234 10.4.1 ADC0808和ADC0809简介 234 10.4.2 ADC0808(0809)与单片机的接口及编程 237 10.5 12位并行AD574A及其接口技术 241 10.5.1 AD574A简介 241 10.5.2 AD574A与单片机的接口与编程 244 本章小结 245 思考题与习题 245 第11章 单片机系统开发软件使用说明 247 11.1 Keil软件使用说明 247 11.1.1 Keil工程的建立 247 11.1.2 工程的设置 251 11.1.3 编译和链接 254 11.1.4 调试 254 11.2 Proteus ISIS使用简介 259 11.2.1 Proteus软件组成 260 11.2.2 启动Proteus ISIS 260 11.2.3 菜单介绍 262 11.2.4 基本操作 265 11.2.5 Proteus组件库 271 11.2.6 电路原理图设计方法 274 11.2.7 实例讲解 274 本章小结 276 第12章 单片机应用系统设计与调试 277 12.1 单片机应用系统开发与开发工具 277 12.1.1 单片机应用系统的构成和设计内容 277 12.1.2 应用系统的设计步骤和原则 278 12.1.3 单片机应用系统的开发工具 279 12.1.4 单片机应用系统的调试 280 12.2 功率扩展与隔离技术 281 12.2.1 功率扩展 281 12.2.2 隔离技术 282 12.3 单片机应用系统的抗干扰技术 283 12.3.1 干扰的来源 283 12.3.2 硬件抗干扰技术 283 12.3.3 软件抗干扰技术 286 12.3.4 “看门狗”技术 287 本章小结 288 附录A ASCII码字符表 289 附录B MCS-51系列单片机指令表 290 附录C 单片机中常用词语英汉对照 295
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0413500