第1章 单片机概述 1
1.1 单片机的概念 1
1.1.1 单片机的定义 1
1.1.2 单片机的诞生 1
1.1.3 单片机的应用领域 2
1.1.4 单片机与嵌入式系统 2
1.2 单片机发展史及发展趋势 2
1.3 MCS-51系列单片机及其兼容产品 3
1.3.1 MCS-51系列单片机分类 4
1.3.2 MCS-51系列单片机的兼容产品 5
1.4 计算机基础知识 6
1.4.1 数制 6
1.4.2 数制转换 7
1.4.3 编码 8
1.4.4 计算机中数的表示 9
本章小结 10
习题与思考题 10
第2章 MCS-51单片机硬件结构 12
2.1 MCS-51系列单片机的基本结构 12
2.1.1 MCS-51系列单片机的总体基本结构 12
2.1.2 MCS-51系列单片机主要功能部件 12
2.1.3 8051单片机内部结构及引脚 13
2.1.4 外部总线构成 15
2.2 MCS-51单片机的中央处理器 16
2.2.1 CPU的组成 16
2.2.2 指令执行的基本步骤 16
2.2.3 时钟电路及时钟时序单位 17
2.3 MCS-51单片机的内部存储器 20
2.3.1 存储器结构及地址分配 20
2.3.2 内部程序存储器 21
2.3.3 内部数据存储器 22
2.3.4 堆栈 26
2.4 MCS-51单片机的工作方式 27
2.4.1 执行指令程序方式 27
2.4.2 掉电保护方式 28
2.4.3 低功耗方式 28
本章小结 30
习题与思考题 30
第3章 MCS-51单片机指令系统 33
3.1 MCS-51单片机指令概述 33
3.1.1 MCS-51单片机汇编语言指令格式 33
3.1.2 布尔处理机 33
3.1.3 指令中的常用符号 34
3.2 MCS-51单片机的寻址方式 34
3.2.1 立即寻址 35
3.2.2 直接寻址 35
3.2.3 寄存器寻址 36
3.2.4 寄存器间接寻址 36
3.2.5 基址加变址寻址 37
3.2.6 相对寻址 38
3.2.7 位寻址 39
3.3 MCS-51单片机的指令系统 40
3.3.1 数据传送指令 40
3.3.2 算术运算指令 45
3.3.3 逻辑运算和移位指令 48
3.3.4 控制转移指令 51
3.3.5 位操作指令 56
本章小结 58
习题与思考题 59
第4章 汇编语言程序设计 65
4.1 程序设计基础 65
4.1.1 汇编语言源程序设计的步骤 66
4.1.2 汇编语言的语句格式 67
4.1.3 汇编语言的伪指令 68
4.1.4 MCS-51单片机汇编语言源程序格式及上机过程 73
4.2 单片机汇编语言程序的控制结构 74
4.2.1 顺序结构程序设计 74
4.2.2 分支结构程序设计 75
4.2.3 循环结构程序设计 76
4.2.4 子程序设计 81
4.3 MCS-51单片机汇编语言程序设计举例 83
4.3.1 数据传送程序设计 83
4.3.2 算术运算程序设计 84
4.3.3 数制转换程序设计 87
4.3.4 查表程序设计 90
4.3.5 数据检索程序设计 92
本章小结 94
习题与思考题 95
第5章 C51应用基础 97
5.1 Keil C51简介 97
5.2 C51程序设计概述 97
5.2.1 C51语言的特点 97
5.2.2 C51程序与标准C程序的区别 98
5.2.3 C51的标识符与关键字 98
5.2.4 C51语言程序的书写格式 99
5.3 C51数据类型 99
5.3.1 C51的数据类型 99
5.3.2 数据类型转换 102
5.4 C51的运算量 103
5.4.1 常量 103
5.4.2 变量 104
5.4.3 存储模式 105
5.5 C51的运算符和表达式 106
5.5.1 C51运算符简介 106
5.5.2 算术运算符和算术表达式 107
5.5.3 关系运算符与关系表达式 107
5.5.4 逻辑运算符与逻辑表达式 108
5.5.5 位运算符 108
5.5.6 赋值运算符和赋值表达式 111
5.5.7 复合赋值运算符和复合赋值表达式 111
5.5.8 逗号运算符和逗号表达式 111
5.5.9 条件运算符和条件表达式 112
5.5.10 指针和地址运算符 112
5.5.11 sizeof运算符 112
5.6 C51的基本语句 114
5.6.1 表达式语句和空语句 114
5.6.2 复合语句 115
5.6.3 条件语句 115
5.6.4 开关语句 117
5.6.5 循环结构 119
5.7 C51的指针 121
5.7.1 C51指针变量 122
5.7.2 指针的运算 124
5.7.3 通过指针宏访问存储器 124
5.8 C51的函数 126
5.8.1 C51函数分类 126
5.8.2 C51函数的定义 127
5.8.3 C51中断函数的定义 128
5.8.4 C51的部分头文件和库函数 129
5.9 C51程序设计应用举例 132
5.9.1 8051单片机I/O口操作 132
5.9.2 再入函数的定义 133
5.9.3 排序和查找 133
5.9.4 码制转换 136
本章小结 138
习题与思考题 139
第6章 MCS-51单片机的硬件资源及其应用 141
6.1 并行I/O端口 141
6.1.1 端口功能 141
6.1.2 端口原理及操作 142
6.1.3 并行口应用举例 146
6.2 MCS-51的中断系统 147
6.2.1 MCS-51中断系统的组成及中断源 148
6.2.2 MCS-51的中断控制 149
6.2.3 MCS-51的中断响应过程 152
6.2.4 MCS-51的中断程序设计 155
6.3 MCS-51单片机的定时/计数器 158
6.3.1 定时/计数器的功能概述 158
6.3.2 定时/计数器的结构、控制及工作方式 159
6.3.3 定时/计数器的编程及应用 165
6.4 MCS-51单片机的串行接口及其串行通信 168
6.4.1 串行通信的基本概念 169
6.4.2 MCS-51单片机的串行口及控制寄存器 170
6.4.3 MCS-51单片机的串行通信工作方式 172
6.4.4 串行口应用举例 175
本章小结 183
习题与思考题 183
第7章 MCS-51单片机系统扩展及其应用 187
7.1 存储器的扩展 187
7.1.1 扩展技术的原理和方法 187
7.1.2 常用半导体存储器芯片 190
7.1.3 程序存储器扩展 193
7.1.4 数据存储器扩展设计 195
7.1.5 单片机扩展外部存储器空间地址分配 195
7.1.6 多片存储器扩展设计 198
7.2 I/O接口的扩展 200
7.2.1 简单I/O接口扩展 200
7.2.2 用串行口扩展并行I/O接口 202
7.2.3 可编程I/O接口扩展 203
7.3 D/A、A/D转换及其接口扩展 208
7.3.1 A/D转换芯片ADC0809简介 208
7.3.2 ADC0809与MCS-51型单片机的接口 210
7.4 MCS-51型单片机与D/A转换接口 212
7.4.1 D/A转换芯片ADC0832简介 213
7.4.2 DAC0832与MCS-51单片机的接口 215
7.5 MCS-51单片机键盘接口 218
7.5.1 独立式键盘 218
7.5.2 矩阵式键盘 221
7.6 MCS-51单片机显示器接口 226
7.6.1 LED显示器的结构与原理 226
7.6.2 LED显示器的显示方式 227
7.6.3 LED显示接口典型应用电路 229
本章小结 232
习题与思考题 233
第8章 串行总线扩展技术 234
8.1 串行总线扩展概述 234
8.1.1 串行扩展的种类 234
8.1.2 串行扩展的特点 234
8.2 I2C串行扩展总线 235
8.3 SPI串行扩展接口 237
8.3.1 SPI总线的结构原理 237
8.3.2 SPI总线的软件模拟 238
8.3.3 SPI串行扩展应用实例 239
8.4 串行单总线(1-Wire)技术 241
8.4.1 单总线的工作原理 241
8.4.2 单总线应用实例——数字温度测量与控制 242
本章小结 248
习题与思考题 248
第9章 MCS-51单片机应用系统设计 249
9.1 MCS-51单片机应用系统的结构 249
9.2 MCS-51单片机应用系统设计 250
9.2.1 总体方案设计 250
9.2.2 硬件设计 251
9.2.3 软件设计 251
9.2.4 可靠性设计 253
9.3 单片机应用系统的调试、测试 256
9.3.1 硬件调试 256
9.3.2 软件调试 257
9.3.3 系统联合调试 258
9.3.4 现场调试及性能测试 258
9.4 单片机应用系统举例 259
9.4.1 单片机在控制系统中的应用 259
9.4.2 单片机在里程、速度计量中的应用 261
9.4.3 数字电子时钟系统设计实例 265
9.4.4 单片机遥控系统的应用设计 273
本章小结 296
习题与思考题 297
第10章 实验与课程设计 298
10.1 DVCC-ZHC2/DVCC-52196JH/JH+单片机仿真实验系统使用简介 298
10.1.1 实验系统的启动 298
10.1.2 实验系统键盘简介 299
10.1.3 DVCC实验系统的工作方式 300
10.1.4 实验过程中实验结果的查看 301
10.1.5 实验的一般步骤 301
10.2 Keil μVision开发环境简介 302
10.2.1 Keil μVision简介 302
10.2.2 Keil μVision3集成开发环境 302
10.2.3 使用Keil C51进行单片机程序设计实验的一般步骤 303
10.3 基础性实验 306
实验一 清零实验 306
实验二 拆字实验 308
实验三 数据排序实验 309
实验四 多分支实验 312
实验五 单片机I/O口实验(P3和P1口应用) 314
实验六 并行I/O口8255扩展实验 316
实验七 A/D转换ADC0809应用 320
实验八 D/A转换DAC0832应用 323
实验九 串并转换实验 326
实验十 音乐发声器(电子音响)实验 328
实验十一 继电器控制实验 331
10.4 设计性实验 333
实验一 P1口实验 333
实验二 独立式按键实验 335
实验三 7段LED数码管实验 337
实验四 8051内部定时器实验 339
实验五 4×4矩阵式键盘实验 342
10.5 课程设计 346
10.5.1 设计目的 346
10.5.2 内容及时间安排 346
10.5.3 基本要求 347
10.5.4 考核及评分标准 347
10.5.5 设计报告内容及要求 347
10.5.6 课程设计实例 347
10.5.7 课程设计参考题目及要求 356
附录A ASCII码表 359
附录B MCS-51系列单片机指令表 360
附录C 常用数字集成电路引脚图 364
参考文献 368