
本书以MCS-51单片机为背景机,从应用角度出发,系统介绍单片机的组成原理、各功能模块的使用方法及扩展方法。全书共分10章,内容包括单片机的种类、功能及用途;MCS-51单片机的指令系统及汇编语言程序设计方法;C语言编程在单片机编程中的使用方法;单片机内部各种功能部件的工作原理及使用方法;单片机扩展和接口技术,包括存储器扩展、I/O接口扩展、人机交互接口扩展、模拟通道扩展及流行器件的接口技术;单片机系统的开发方法及模拟仿真实验的方法;一个典型的课程设计实例。本书提供教学资源,读者可登录华信教育资源网www.hxedu.com.cn免费下载。本书既可作为高等院校相关专业单片机原理、微机原理课程的教材或参考书,也可作为广大电气、电子、自动化、计算机等行业的研发类岗位求职人员的自学教材,还可作为工程技术人员的参考资料。
前 言 随着电子技术的迅猛发展,单片机技术已渗透到航天、国防、工业、农业、日常生活等各个领域,成为当今世界科技现代化不可缺少的重要技术。用单片机研制各种智能化测量控制仪表,周期短、成本低,在仪器仪表与机电一体化产品的设计中具有明显的优势。MCS-51单片机以其特有的简单、易学、易用、应用技术成熟、结构典型,成为初学单片机的首选机型。 本书以理论与实践相结合为主线,能够使读者轻松快捷地掌握单片机基础知识,并使读者具有初步开发、设计单片机产品的能力。本书讲解风格通俗易懂、条理清晰、实例丰富,即使您是一位单片机的门外汉,相信您看了本书以后,也能运用单片机的知识来解决一些实际问题,将知识转化为生产力。 本书特点如下。 (1)工程性强。 全书以“学以致用”为指导思想,重在实践,将工程与开发相统一。另外,本书通过介绍大量的应用实例,使读者具有初步开发、设计单片机产品的能力。 (2)通俗易懂。 本书避免介绍单片机内部的一些细节问题,而是从实际应用出发,从设计单片机应用系统的角度出发,介绍在应用过程中需要掌握的知识和技能。因此,本书内容较简练,而且由浅入深,非常适合初学者学习使用。一般院校或个人都可有条件完成本书部分章节安排的实验,并可以进行“任务驱动式”的教学或自学。 (3)C语言与汇编语言相结合。 本书介绍了两种编程语言,即汇编语言和C51语言。 汇编语言:任何一个硬件电路都可用汇编语言描述,具有直观性。要想对硬件有深入的理解,汇编语言的学习必不可少。 C语言:可读性好,用户只要掌握一两个编程实例,即使不了解硬件资源分配情况,也可以据此进行实例的仿效。对于开发较大的项目,使用C语言是必然的。 教师可依据学生的具体情况对本书的内容进行取舍。 (4)便于教学和自学。 章后附有习题,便于教学,也便于自学者自测。本书还介绍了如何使用仿真软件进行实验,便于学生课后或自学者自行做实验练习,加深理解。 本书第10章介绍的课程设计有全套的软/硬件资料和相应的实验板,如有需要,可与作者联系,作者可根据实际情况修改实验板。另外,本书程序涉及的函数及变量均使用正体。本书部分电路图为仿真软件自动生成的,未进行标准化处理。 由于作者水平有限,书中不足之处在所难免,敬请读者批评指正。
目 录 第1章 初识单片机 1 1.1 什么是单片机 1 1.2 单片机的历史 2 1.3 单片机的特点和应用 2 1.3.1 单片机的应用特点 2 1.3.2 单片机的应用领域 3 1.4 单片机应用系统的组成 4 1.5 典型单片机性能概述 5 1.6 各类嵌入式处理器简介 10 1.6.1 嵌入式微控制器(单片机) 10 1.6.2 嵌入式数字信号处理器 10 1.6.3 嵌入式微处理器 11 1.6.4 嵌入式片上系统 12 1.7 计算机中的数制与编码 12 1.7.1 无符号数的表示及运算 12 1.7.2 带符号数的表示及运算 16 1.7.3 二进制数编码 20 1.7.4 计算机中数的定点表示和浮点表示 21 习题 22 第2章 单片机的基本结构 23 2.1 单片机的结构概述 23 2.2 中央处理器 24 2.2.1 运算器 24 2.2.2 控制器 25 2.2.3 专用寄存器 27 2.2.4 振荡器 29 2.3 单片机的引脚功能 30 2.3.1 电源及时钟引脚 31 2.3.2 控制引脚 31 2.3.3 并行I/O接口 32 2.4 存储器 35 2.4.1 程序存储空间 36 2.4.2 数据存储空间 36 2.5 MCS-51单片机的工作方式 40 2.5.1 复位方式 40 2.5.2 程序执行方式 41 2.5.3 低功耗方式 41 习题 41 第3章 单片机的指令系统 43 3.1 汇编指令的格式 43 3.2 寻址方式 44 3.3 指令系统 47 3.3.1 数据传送类指令 48 3.3.2 算术运算类指令 52 3.3.3 逻辑操作类指令 57 3.3.4 控制转移类指令 59 3.3.5 位操作类指令 64 习题 65 第4章 汇编语言程序设计 67 4.1 汇编语言程序的格式 67 4.2 伪指令 68 4.3 汇编语言程序的基本结构 71 4.3.1 顺序结构 71 4.3.2 分支结构 71 4.3.3 循环结构 73 4.4 系统编程的步骤、方法和技巧 78 4.4.1 拟定系统的工作流程图 79 4.4.2 子功能模块程序或子程序的分解与分析 79 4.4.3 子功能模块程序或子程序的设计与调试 80 4.4.4 系统程序的连接与调试 81 4.5 实验 81 习题 84 第5章 单片机的C语言程序设计 85 5.1 C51语言概述 85 5.1.1 C51语言与汇编语言的比较 85 5.1.2 C51语言与标准C语言的比较 86 5.1.3 使用C51语言编制程序的步骤 86 5.2 C51语言对标准C语言的扩展 87 5.2.1 数据类型 87 5.2.2 存储类型及存储区 89 5.2.3 特殊功能寄存器 91 5.2.4 位变量的定义 93 5.2.5 存储模式 94 5.2.6 函数的使用 94 5.2.7 C51语言的指针 97 5.2.8 访问绝对地址 98 5.3 C51和汇编语言的混合编程 100 5.3.1 命名规则 100 5.3.2 参数传递规则 100 5.3.3 在C51语言中直接插入汇编语言指令 101 5.4 使用C51语言编程的技巧 102 5.5 实验 104 习题 108 第6章 单片机的功能部件 109 6.1 中断系统 109 6.1.1 中断概述 109 6.1.2 单片机的中断系统 110 6.1.3 中断控制 112 6.1.4 中断响应过程 113 6.1.5 中断系统应用实例 115 6.1.6 中断程序举例 117 6.2 定时/计数器 118 6.2.1 定时/计数器概述 118 6.2.2 定时/计数器的结构 119 6.2.3 定时/计数器的工作方式寄存器 120 6.2.4 定时/计数器的控制寄存器 121 6.2.5 定时/计数器的工作方式 121 6.2.6 定时/计数器应用举例 123 6.3 串行接口 125 6.3.1 数据通信概述 125 6.3.2 单片机的串行接口 131 6.3.3 控制串行接口的寄存器 131 6.3.4 串行接口的4种工作方式 133 6.3.5 多机系统通信 137 6.3.6 波特率计算 137 6.3.7 单片机与PC通信技术 138 6.4 实验 141 习题 142 第7章 单片机的系统扩展 144 7.1 单片机最小系统 144 7.1.1 8051/8751单片机最小系统 144 7.1.2 8031单片机最小系统 144 7.1.3 最小系统的工作时序 145 7.2 并行扩展概述 146 7.2.1 总线 146 7.2.2 扩展总线的实现 147 7.3 程序存储器扩展 149 7.3.1 常用程序存储器和地址锁存器简介 149 7.3.2 典型EPROM扩展电路 150 7.4 数据存储器扩展 152 7.4.1 数据存储器的读/写控制与时序 152 7.4.2 常用SRAM芯片简介 154 7.4.3 典型SRAM芯片扩展电路 154 7.5 I/O接口扩展 157 7.5.1 用锁存器扩展输出接口 157 7.5.2 用三态门扩展输入接口 158 7.6 可编程并行I/O接口扩展 160 7.6.1 可编程并行I/O接口芯片8255A 160 7.6.2 可编程多功能接口芯片8155 166 习题 173 第8章 单片机的接口技术 175 8.1 单片机与键盘的接口 175 8.1.1 键盘的工作原理 175 8.1.2 独立式键盘与单片机的接口 176 8.1.3 矩阵式键盘与单片机的接口 178 8.2 单片机与LED显示器的接口 182 8.2.1 LED显示器 182 8.2.2 LED显示器接口技术 183 8.3 单片机与字符型LCD的接口 187 8.3.1 液晶显示概述 187 8.3.2 1602字符型LCD简介 188 8.4 单片机与ADC的接口 197 8.4.1 ADC概述 197 8.4.2 ADC0809芯片 198 8.4.3 ADC0809芯片与单片机的接口设计 201 8.5 单片机与DAC的接口 205 8.5.1 DAC的主要特点与技术指标 205 8.5.2 DAC0832芯片 206 8.5.3 DAC0832芯片与单片机的接口设计 207 8.5.4 DAC0832芯片的应用 209 8.6 单片机与I2C总线芯片的接口 210 8.6.1 I2C总线的功能和特点 210 8.6.2 I2C总线的构成及工作原理 210 8.6.3 I2C总线的工作方式 211 8.6.4 具有I2C总线接口的E2PROM 212 8.7 单片机与DS18B20芯片的接口 224 8.7.1 DSl8B20芯片的特点 224 8.7.2 DS18B20芯片封装形式及引脚功能 224 8.7.3 DS18B20芯片的内部结构 224 8.7.4 DS18B20芯片的测温原理 226 8.7.5 DS18B20芯片的ROM指令 227 8.7.6 DS18B20芯片的工作时序 228 8.7.7 DS18B20芯片与单片机的典型接口设计 229 习题 232 第9章 单片机应用系统的开发 233 9.1 开发系统 233 9.1.1 开发系统的功能 233 9.1.2 开发系统的分类 233 9.1 Keil μVision2概述 234 9.2 Keil μVision2的界面组成 235 9.3 Keil μVision2的设置 235 9.4 Keil μVision2集成开发系统的使用 241 9.4.1 单片机的仿真过程 241 9.4.2 程序的调试过程 241 9.4.3 生成HEX文件 247 9.5 Proteus电路设计快速入门 247 9.6 Proteus与Keil联调 257 第10章 课程设计—温度反馈控制系统 259 附录A ASCII表 263 附录B MCS-51单片机指令表 264 附录C C51库函数 268 参考文献 273