本教材围绕应用型本科院校培养高技能型人才、加强技术应用能力培养为目的,突出了工程实践和应用性,强化了实践能力的培养。在内容的组织上,以应用为导向,完成任务为目的,应用基础知识依托国内宏晶公司生产的STC89C52单片机展开介绍,再利用仿真软件Proteus和C51编译软件keil C进行双结合(软硬件结合,知识点和技能点结合),从而实现了理论与实践内容相互融会贯通的教学方法。
本书内容丰富,基础理论讲解详细,设计实例贴合实际应用,由浅入深,通俗易懂,非常适合于相关专业的学生对于单片机技术的掌握和学习。
前 言
随着计算机技术的飞速发展和普及,单片机以其体积小、功能强大、应用灵活和性能价格比高等优点,在工业控制、智能仪表、数据采集系统和各种家用电器等领域得到了广泛的应用。本书选用STC89C52单片机,它以MCS-51为内核。采用该单片机主要的原因是该单片机具有在线系统可编程功能(ISP),无需专用编程器,可通过串口直接下载用户程序,便于开发,因此受到初学者特别是学生的青睐。同时,由于该单片机可有效减少系统开发时间,因此广泛被产品开发人员所选用。
本教材围绕应用型本科院校培养高技能型人才、加强技术应用能力培养为目的,以知识目标、技能目标为主线,突出了针对性和应用性,强化了实践能力的培养。在内容的组织上,以工程应用为导向,完成任务为目的,介绍了STC89C52单片机的基本知识,软硬件结合,知识点和技能点结合,既实现了知识的全面性和连贯性,又做到了理论与实践内容的融会贯通。
本教材将当前流行的电路仿真软件Proteus和程序编译软件Keil μVision4引入到单片机课堂教学和实践教学中,并使之与现行教学大纲和实验大纲基本內容紧密融合。通过单片机仿真实验,在近似真实的应用环境下培养学生的单片机专业技能,不再受实验场地、器材和实验学时的限制,解决了以往基于电路实验箱教学中验证性实验偏多导致学生难以得到足够的动手机会和教学实践效果不理想等问题。这种虚拟仿真平台便于学习者灵活、大胆地进行单片机电路设计、软件开发和系统调试的训练,能够极大程度地激发学生的学习兴趣,提高其学习效果,让单片机学习上手容易,给学习者带来学习单片机的乐趣。
全书共分为11章:第1章介绍计算机基础知识、单片机概述。第2章介绍单片机应用系统开发简介,包括仿真软件Proteus和C51编译软件Keil μVision4 的应用及样例;第3章详细介绍STC89C52单片机硬件结构体系;第4章单片机程序设计详细介绍51单片机的指令系统,汇编语言程序设计,C51程序设计;第5章介绍了STC89C52单片机中断系统及应用;第6章介绍STC89C52单片机定时/计数器,特别是增加了51系统中没有介绍的T2定时器的应用;第7章STC89C52单片机串行通信,介绍了STC89C52单片机串行口的内部结构、串行口的4种工作方式、串行口多机通信的工作原理及双机串行通信的软件编程;第8章STC89C52单片机存储器的扩展介绍外部扩展数据存储器和程序存储器地址空间分配的方法和具体设计;第9章STC89C52单片机I/O扩展与设计,介绍TTL端口扩展、LCD显示屏应用扩展,A/D、D/A转换,I2C总线应用等内容;第10章STC单片机应用系统设计实例介绍了两个完整的工程应用实例;第11章实验应用,包含9个实验内容。整个教学内容以Proteus仿真案例贯穿全书,电路仿真图和程序真实可靠。各章后有相应的各类习题供训练之用。
本书除署名编者外,还特别感谢武汉大学王思贤教授的指导和关心,王教授主要审核制定教学大纲,把握教学内容,对教学实施、学时分配、重难点处理等问题给出指导意见。感谢胡劲老师在前期教材资料文档收集、实验教学文档修改整理等方面做出的工作。同时,编者还参考和引用了参考文献中有关作者的部分资料,在此一并向他们表示衷心的感谢。
由于编者水平有限,时间比较仓促,书中难免有疏漏和不妥之处,恳请读者通过出版社进行联系我们,并提出提出宝贵的批评意见和建议。
二〇一八年五月二十二日
目 录
第1章 计算机基础知识 1
1.1 绪论 1
1.1.1 微型计算机的发展史 1
1.1.2 微型计算机的特点 2
1.1.3 微型计算机的应用领域 3
1.2 微型计算机的组成 4
1.2.1 微处理器 4
1.2.2 微型计算机 5
1.2.3 微型计算机系统 5
1.3 微型计算机的工作过程和主要性能指标 5
1.3.1 微型计算机的工作过程 5
1.3.2 微型计算机的主要性能指标 6
1.4 微机系统中采用的先进技术 7
1.4.1 流水线技术 7
1.4.2 高速缓冲存储器 7
1.4.3 CISC和RISC 7
1.4.4 多核心技术 8
1.5 微型计算机中数的表示 8
1.5.1 数制及相互转换 8
1.5.2 符号数的表示及运算 12
1.5.3 计算机中常用术语和编码 15
1.6 单片机概述 18
1.6.1 单片机的发展历史及趋势 19
1.6.2 单片机的特点及应用 21
1.7 MCS-51系列与STC系列单片机 23
1.7.1 MCS-51系列单片机 23
1.7.2 STC系列单片机 24
1.8 其他常见系列单片机 24
1.8.1 AT89系列单片机 24
1.8.2 AVR系列单片机 26
1.8.3 PIC系列单片机 27
1.10 本章小结 28
习题 28
第2章 单片机应用系统开发简介 29
2.1 集成开发环境Keil μViSion 4简介 29
2.1.1 Keil μVision4运行环境介绍 29
2.1.2 Keil μVision4集成开发环境的STC单片机开发流程 31
2.2 集成开发工具Proteus 7 Professional 简介 34
2.2.1 Proteus基本用法 35
2.2.2 实例分析 36
2.3 Keil μVision4与Proteus 7 Professional的联调 39
2.4 Proteus ISIS模块应用举例 40
2.4.1 ISIS原理图仿真模块应用举例 40
2.4.2 ARES模块应用举例 44
2.5本章小结 47
习题 48
第3章 STC89C52单片机硬件结构 49
3.1 STC89C52单片机的內部功能结构及特点 49
3.2 STC89C52单片机的外部引脚及功能 51
3.3 STC89C52单片机存储器结构 54
3.3.1 STC89C52单片机程序存储器 54
3.3.2 STC89C52单片机数据存储器 55
3.3.3 STC89C52单片机特殊功能寄存器 57
3.4 STC89C52单片机I/O口 61
3.4.1 P0端口 62
3.4.2 P1/P2/P3/P4端口 62
3.5 STC89C52单片机的时钟与复位 63
3.5.1 传统51单片机时序 63
3.5.2 STC89C52单片机时钟电路 65
3.5.3 STC89C52单片机的复位电路 66
3.5.4 STC89C52单片机的复位状态 67
3.6 STC89C52单片机的省电工作模式 68
3.7 本章小结 68
习题 68
第4章 单片机程序设计 70
4.1 STC系列单片机指令系统基本概念 70
4.1.1 指令书写格式 70
4.1.2 指令编码格式 71
4.1.3 指令系统中常用的符号 72
4.1.4 指令系统的寻址方式 73
4.2 STC系列单片机指令分类详解 76
4.2.1 数据传送类指令 76
4.2.2 算术运算类指令 80
4.2.3 逻辑操作类指令 84
4.2.4 控制转移类指令 85
4.2.5 位操作类 88
4.3 STC系列单片机汇编语言程序设计 93
4.3.1 汇编语言程序设计基础 93
4.3.2 汇编语言程序结构与设计示例 97
4.4 STC单片机C语言程序设计 106
4.4.1 Keil C51简介 106
4.4.2 KeiI C51语言基础知识 108
4.4.3 C51程序设计举例 116
4.5 简单接口程序应用 123
4.5.1 基本输入/输出单元与编程 123
4.5.2 LED数码管原理与编程 129
4.5.3 I/O端口的进阶应用 132
4.6本章小结 137
习题 137
第5章 STC89C52单片机中断系统 139
5.1 中断的概念 139
5.2 STC89C52单片机中断系统 139
5.2.1 中断系统结构 139
5.2.2 中断源 140
5.2.3 中断请求标志 141
5.2.4 中断控制寄存器 143
5.3 中断响应 146
5.3.1 中断响应条件 146
5.3.2 外部中断响应时间 147
5.3.3 中断请求的撤销 147
5.4 中断程序的设计 148
5.4.1 中断程序的设计过程 148
5.4.2 C51中断函数 151
5.5 本章小结 155
习题 156
第6章 STC89C52单片机定时/计数器 157
6.1 STC89C52单片机定时/计数器的组成 157
6.2 定时/计数器0和1 157
6.2.1 与T0/T1相关的寄存器 158
6.2.2 定时/计数器0/1的4种工作方式 159
6.2.3 定时/计数器0/1的应用 161
6.3 定时/计数器2 172
6.3.1 与定时器/计数器2相关的寄存器 172
6.3.2 定时/计数器2的3种工作方式 174
6.3.3 定时/计数器2的应用 178
6.4 本章小结 182
习题 182
第7章 STC89C52单片机串行通信 184
7.1 串行通信概述 184
7.1.1 数据通信 184
7.1.2 异步通信和同步通信 185
7.1.3 波特率 186
7.2 串行口的结构 187
7.2.1 内部硬件结构 187
7.2.2 串行口特殊功能寄存器 187
7.3 串行口的4种工作方式 190
7.3.1 串行口方式0 190
7.3.2 串行口方式1 193
7.3.3 串行口方式2和方式3 195
7.4 波特率的设定与计算 196
7.5 STC89C52单片机之间的通信 199
7.5.1 串行通信接口 199
7.5.2 双机串行通信编程 202
7.5.3 多机通信 204
7.6 PC与单片机间的通信 210
7.6.1 PC与单片机的点对点通信设计 210
7.6.2 PC与多个单片机的串行通信接口设计 211
7.7 本章小结 212
习题 212
第8章 STC89C52单片机存储器的扩展 214
8.1 系统扩展结构 214
8.2 地址锁存与地址空间分配 215
8.2.1 地址锁存 215
8.2.2 地址空间分配 217
8.3程序存储器的扩展 220
8.3.1 外扩程序存储器的操作时序 220
8.3.2 程序存储器的扩展方法 222
8.4数据存储器的扩展 225
8.4.1 外扩数据存储器的读写操作时序 226
8.4.2 数据存储器扩展方法 227
8.5 EPROM和RAM的综合扩展 230
8.6 本章小结 233
习题 234
第9章 STC89C52单片机I/O扩展与设计 235
9.1 I/O接口概述 235
9.2 TTL电路扩展并行接口 237
9.2.1 TTL简单并行输出接口的扩展 237
9.2.2 简单并行输入接口的扩展 239
9.3 STC单片机与LCD显示器的接口 241
9.3.1 LCD显示器简介 241
9.3.2 STC单片机与1602液晶显示器的接口及软件编程 246
9.3.3 STC单片机与12864液晶显示的接口及软件编程 248
9.4 STC89C52与A/D转换器的接口 250
9.4.1 A/D转换器简介 250
9.4.2 STC89C52与并型8位A/D转换器ADC0809的接口 252
9.4.3 STC89C52与并型12位A/D转换器AD1674的接口 256
9.5 STC89C52与D/A转换器的接口 260
9.5.1 D/A转换器简介 260
9.5.2 STC89C52与8位D/A转换器DAC0832的接口设计 262
9.6 串行扩展总线接口 266
9.6.1 单总线串行扩展 267
9.6.2 SPI总线串行扩展 281
9.6.3 I2C总线串行扩展 287
9.6.4 STC89C52单片机的I2C总线扩展的设计 291
9.5 本章小结 296
习题 296
第10章 STC单片机应用系统设计实例 298
10.1 STC89C52单片机最小系统简介 298
10.2 基于STC89C52单片机的智能交通灯设计 300
10.2.1 系统需求分析 300
10.2.2 系统设计方案 300
10.2.3 系统硬件设计 301
10.2.4 系统软件设计 301
10.3 基本STC89C52单片机的万年历设计 303
10.3.1 系统需求分析 303
10.3.2 系统设计方案 303
10.3.3 系统硬件设计 304
10.3.4 系统软件设计 304
10.4 本章小结 317
习题 317
第11章 实验指导 318
11.1 实验1 计数显示器 318
11.2 实验2 指示灯/开关控制器 327
11.3 实验3 指示灯循环控制 332
11.4 实验4 指示灯/数码管的中断控制 339
11.5 实验5 电子秒表显示器 345
11.6 实验6 双机通信及PCB设计 349
11.7 实验7 直流数字电压表设计 362
11.8 实验8 步进电机控制设计 369
11.9 实验9 综合实验多位数字显示及硬件程序下载 372
参考文献 375
附录A Proteus中的常用元器件 376