第1章 微型计算机基础知识 1
1.1 微型计算机和单片机发展概述 1
1.1.1 微型计算机的发展 1
1.1.2 单片机的发展 7
1.2 计算机中的数制及数的转换 10
1.2.1 计算机中的数制 10
1.2.2 数制间的转换 12
1.3 计算机中二进制数的运算 15
1.3.1 二进制数的算术运算 15
1.3.2 二进制数的逻辑运算 16
1.4 计算机中有符号数的表示方法 16
1.4.1 原码、反码和补码 17
1.4.2 补码的加减运算 19
1.5 计算机中的字符编码 21
1.5.1 BCD码 21
1.5.2 ASCII码 23
1.6 微型计算机组成原理 23
1.6.1 微型计算机的基本组成 23
1.6.2 微型计算机的工作原理 28
本章小结 33
思考题和习题 33
第2章 MCS-51单片机的结构 35
2.1 MCS-51单片机的组成和总体结构 35
2.1.1 MCS-51单片机内部结构框图 37
2.1.2 MCS-51单片机引脚功能 38
2.2 中央处理单元(CPU) 41
2.2.1 运算器 41
2.2.2 控制器 43
2.3 存储器 45
2.3.1 程序存储器 46
2.3.2 数据存储器 47
2.3.3 特殊功能寄存器(SFR) 49
2.3.4 位处理器(布尔处理机) 52
2.4 MCS-51单片机的并行I/O接口 52
2.4.1 并行I/O接口电路结构 53
2.4.2 并行I/O接口的特点 55
2.5 MCS-51单片机最小系统 56
2.5.1 单片机最小系统概念 56
2.5.2 单片机最小系统分析 56
2.5.3 AT89系列单片机最小系统 57
2.5.4 单片机最小系统的不足 57
本章小结 58
思考题和习题 58
第3章 MCS-51单片机指令系统 60
3.1 指令格式与寻址方式 60
3.1.1 指令格式 61
3.1.2 寻址方式 61
3.2 数据传送指令 65
3.2.1 内部数据传送指令 66
3.2.2 外部数据传送指令 67
3.2.3 堆栈操作指令 68
3.2.4 数据交换指令 69
3.3 算术运算指令 71
3.3.1 加法指令 72
3.3.2 减法指令 75
3.3.3 乘除法指令 76
3.4 逻辑运算与移位指令 79
3.4.1 逻辑与运算指令 79
3.4.2 逻辑或运算指令 80
3.4.3 逻辑异或运算指令 80
3.4.4 累加器清零和取反指令 81
3.4.5 移位指令 81
3.5 控制转移指令 83
3.5.1 无条件转移指令 84
3.5.2 条件转移指令 85
3.5.3 子程序调用及返回指令 86
3.5.4 空操作指令 88
3.6 位操作指令 89
3.6.1 位赋值指令 89
3.6.2 位传送指令 89
3.6.3 位运算指令 90
本章小结 92
思考题和习题 92
第4章 汇编语言程序设计 94
4.1 汇编语言概述 94
4.1.1 汇编语言与汇编的概念 94
4.1.2 汇编语言源程序的格式 95
4.1.3 伪指令 97
4.1.4 源程序的汇编 98
4.2 汇编语言程序的结构 99
4.2.1 汇编语言程序设计步骤 99
4.2.2 顺序程序结构 100
4.2.3 分支程序结构 101
4.2.4 循环程序结构 103
4.2.5 主程序调用子程序结构 107
4.3 算术运算程序设计 110
4.3.1 加法程序 110
4.3.2 减法程序 112
4.3.3 乘、除法程序 113
4.4 非数值操作程序设计 117
4.4.1 码制转换程序 117
4.4.2 查表程序 119
4.4.3 检索程序 121
本章小结 121
思考题和习题 122
第5章 MCS-51单片机的中断与定时 124
5.1 中断技术概述 124
5.1.1 中断的定义和作用 124
5.1.2 中断源与中断分类 125
5.1.3 中断嵌套 125
5.1.4 中断处理过程 126
5.2 MCS-51单片机的中断系统 127
5.2.1 中断源和中断标志 127
5.2.2 中断请求的控制 128
5.2.3 中断的响应过程 131
5.2.4 中断请求的撤除 133
5.2.5 外部中断应用举例 134
5.2.6 多外部中断源系统设计 137
5.3 MCS-51单片机的定时/计数器 138
5.3.1 定时与计数原理 138
5.3.2 定时/计数器的控制 139
5.3.3 定时/计数器的工作方式 141
5.3.4 定时/计数器应用举例 144
5.3.5 用定时/计数器扩展外部中断 149
本章小结 150
思考题和习题 151
第6章 存储器扩展与并行I/O接口扩展 153
6.1 MCS-51单片机存储器的扩展 153
6.1.1 存储器概述 153
6.1.2 程序存储器及其扩展 155
6.1.3 数据存储器及其扩展 160
6.2 I/O接口技术概述 164
6.2.1 I/O接口的作用 164
6.2.2 I/O接口的编址 165
6.2.3 I/O数据的传送方式 166
6.2.4 I/O接口的类型 167
6.3 MCS-51单片机并行I/O接口的应用与扩展 167
6.3.1 MCS-51单片机I/O接口的直接应用 167
6.3.2 采用8255A扩展并行I/O接口 170
6.3.3 采用8155扩展并行I/O接口 177
本章小结 183
思考题和习题 183
第7章 显示器与键盘接口技术 185
7.1 LED数码管显示接口 185
7.1.1 LED数码管显示原理 185
7.1.2 数码管显示器的显示方式 187
7.2 非编码键盘接口 192
7.2.1 独立式按键接口 193
7.2.2 行列式非编码键盘接口 194
7.3 键盘与显示系统 197
本章小结 201
思考题和习题 202
第8章 模拟量通道接口 203
8.1 模拟量通道接口概述 203
8.1.1 模拟量接口的地位和作用 203
8.1.2 模拟量转换器的性能指标 204
8.2 D/A转换器 205
8.2.1 D/A转换原理 205
8.2.2 D/A转换器DAC0832 207
8.2.3 D/A转换应用举例 211
8.3 A/D转换器 212
8.3.1 逐次逼近式A/D转换原理 212
8.3.2 A/D转换器ADC0809 213
8.3.3 A/D转换应用举例 216
本章小结 217
思考题和习题 217
第9章 MCS-51单片机的串行接口 219
9.1 串行通信基础 219
9.1.1 串行通信规程 219
9.1.2 串行通信的制式 223
9.1.3 串行通信中的调制解调器 224
9.2 MCS-51单片机的串行接口 225
9.2.1 串行接口的结构 226
9.2.2 串行接口的工作方式 229
9.2.3 串行接口的通信波特率 231
9.3 MCS-51串行接口的应用 232
9.3.1 串行接口在方式0下的应用 232
9.3.2 串行接口在其他方式下的应用 235
9.4 单片机的多机通信 239
9.4.1 MCS-51多机通信原理 239
9.4.2 多机通信应用举例 240
本章小结 246
思考题和习题 246
第10章 单片机C语言程序设计 248
10.1 单片机C语言概述 248
10.1.1 C语言的特点及程序结构 248
10.1.2 C语言与MCS-51单片机 249
10.2 C51的数据类型与运算 250
10.2.1 C51的数据类型 250
10.2.2 关于指针型数据 252
10.2.3 C51的运算符 253
10.3 数据的存储类型和存储模式 261
10.3.1 数据的存储类型 261
10.3.2 存储模式 262
10.4 C51程序基本结构与相关语句 263
10.4.1 C51程序基本结构 264
10.4.2 C51相关语句 265
10.5 C51的函数 270
10.6 单片机资源的C51编程实例 272
10.6.1 C51程序的反汇编程序 272
10.6.2 并行口及键盘、显示器接口的C51编程 273
10.6.3 C51中断程序的编制 276
10.6.4 定时/计数器的C51编程 277
10.6.5 串行通信的C51编程 278
10.6.6 A/D和D/A转换器的C51编程 280
10.7 51单片机系统开发常用工具软件KEIL C51 281
本章小结 288
思考题和习题 288
第11章 单片机应用系统设计方法与应用实例 289
11.1 单片机应用系统的研发步骤 289
11.2 单片机应用系统设计方法 291
11.2.1 单片机应用系统的硬件设计 291
11.2.2 单片机应用系统的软件设计 293
11.2.3 单片机应用系统的抗干扰设计 294
11.2.4 仿真与调试 298
11.3 单片机应用系统设计实例 299
11.3.1 公交车车上人数统计器 299
11.3.2 数字电压表 301
11.3.3 水塔水位控制器 304
本章小结 306
思考题和习题 307
附录A 美国标准信息交换代码(ASCII码) 308
附录B MCS-51单片机指令表 310
附录C KEIL C51常用库函数原型 315
附录D 单片机系统设计与仿真软件PROTEUS简介 320
参考文献 329