预备篇 3
第0章 计算机的基础知识 3
0.1 绪论 3
0.1.1 计算机的新分类 3
0.1.2 嵌入式系统 3
0.1.3 单片机 5
0.2 微型计算机的基本结构和工作原理 10
0.2.1 微机的系统结构 10
0.2.2 微机的基本工作原理 10
0.2.3 微机的主要技术指标 11
0.3 计算机中的数制与码制 11
0.3.1 计算机中的数 11
0.3.2 计算机中数的几个概念 12
0.3.3 计算机中的有符号数的表示 13
0.3.4 进位和溢出 15
0.3.5 BCD码 16
0.3.6 BCD码的运算 17
0.3.7 ASCII码 17
0.4 小结 17
思考题与习题 18
基础篇 21
第1章 MCS-51单片机结构 21
1.1 MCS-51单片机内部结构 21
1.1.1 概述 21
1.1.2 CPU 21
1.2 存储器 22
1.2.1 程序存储器 23
1.2.2 外部数据存储器 25
1.2.3 内部数据存储器 25
1.3 特殊功能寄存器 27
1.4 时钟电路与复位电路 29
1.4.1 时钟电路 29
1.4.2 单片机的时序单位 30
1.4.3 复位电路 30
1.5 引脚功能 31
1.6 小结 32
思考题与习题 33
第2章 MCS-51单片机的指令系统 35
2.1 寻址方式 36
2.1.1 立即寻址 36
2.1.2 直接寻址 36
2.1.3 寄存器寻址 36
2.1.4 寄存器间接寻址 37
2.1.5 变址寻址 38
2.1.6 位寻址 38
2.1.7 相对寻址 38
2.2 数据传送与交换指令 39
2.2.1 传送类指令 39
2.2.2 字节交换指令 41
2.3 算术运算和逻辑运算指令 42
2.3.1 算术运算和逻辑运算指令对标志位的影响 42
2.3.2 以A为目的操作数的算术运算和逻辑运算指令 43
2.3.3 以dir为目的操作数的逻辑运算指令 43
2.3.4 加1、减1指令 44
2.3.5 十进制调整指令 44
2.3.6 专对A的指令 45
2.3.7 乘、除法指令 46
2.3.8 指令综合应用举例 46
2.4 控制转移指令 47
2.4.1 程序调用和返回类指令 47
2.4.2 转移指令 48
2.4.3 空操作指令 52
2.4.4 指令应用举例 52
2.5 位操作指令 53
2.6 小结 55
思考题与习题 55
第3章 MCS-51单片机汇编语言程序设计 58
3.1 概述 58
3.2 伪指令 59
3.3 顺序程序设计 61
3.4 分支程序设计 63
3.5 循环程序设计 66
3.6 位操作程序设计 71
3.7 子程序 72
3.8 小结 74
思考题与习题 74
第4章 并行接口P0~P3和单片机的中断系统 76
4.1 单片机的并行接口P0~P3 76
4.1.1 P0~P3接口的功能和内部结构 76
4.1.2 编程举例 79
4.1.3 用并行口设计LED数码显示器和键盘电路 82
4.1.4 并行接口小结 88
4.2 MCS-51单片机的中断系统 88
4.2.1 8XX51中断系统结构 89
4.2.2 中断响应过程 91
4.2.3 中断的程序设计 93
4.3 小结 96
思考题与习题 97
第5章 单片机的定时/计数器与串行接口 98
5.1 定时/计数器T0和T1 98
5.1.1 定时/计数器T0和T1的结构与工作原理 98
5.1.2 定时/计数器的寄存器 99
5.1.3 定时/计数器的工作方式 101
5.1.4 定时/计数器的应用程序设计 102
5.1.5 门控位的应用 107
5.2 定时/计数器T2 109
5.2.1 定时/计数器T2的结构和外部引脚 109
5.2.2 定时/计数器T2的寄存器 109
5.2.3 定时/计数器T2的工作方式 110
5.2.4 定时/计数器小结 113
5.3 串行接口 114
5.3.1 概述 114
5.3.2 单片机串行接口的结构与工作原理 120
5.3.3 串行接口的控制寄存器 122
5.3.4 串行接口的工作方式 124
5.3.5 串行接口的应用编程 125
5.3.6 利用串行接口方式0扩展I/O接口 132
5.4 小结 134
思考题与习题 134
接口篇 139
第6章 单片机总线与存储器的扩展 139
6.1 单片机系统总线和系统扩展方法 139
6.1.1 单片机系统总线信号 139
6.1.2 系统扩展的方法 139
6.1.3 地址译码器 141
6.2 程序存储器的扩展 143
6.2.1 EPROM的扩展 143
6.2.2 EEPROM的扩展 145
6.2.3 Flash存储器(闪速存储器) 146
6.3 数据存储器的扩展 149
6.3.1 SRAM的扩展 149
6.3.2 同时扩展SRAM和Flash存储器的例子 151
6.4 新型存储器扩展(双口RAM和FIFO) 153
6.4.1 双口RAM简介 153
6.4.2 双口RAM与单片机的接口 154
6.4.3 异步FIFO简介 155
6.4.4 异步FIFO与单片机的接口 156
6.5 小结 157
思考题与习题 157
第7章 单片机系统功能扩展 158
7.1 并行I/O接口的扩展 158
7.1.1 通用锁存器、缓冲器的扩展 158
7.1.2 可编程并行接口芯片的扩展 159
7.2 中断扩展 167
7.3 定时器的扩展 168
7.3.1 8254的结构和引脚 168
7.3.2 8254的工作方式控制字和读回命令字 169
7.3.3 8254的状态字 170
7.3.4 8254的应用举例 170
7.4 小结 172
思考题与习题 173
第8章 单片机典型外围接口技术 174
8.1 A/D、D/A接口技术 174
8.1.1 A/D接口技术 174
8.1.2 D/A接口技术 180
8.2 V/F(电压-频率转换)接口 184
8.2.1 电压-频率转换原理 185
8.2.2 频率电压转换原理 186
8.2.3 V/F转换器应用 187
8.3 人机接口技术 188
8.3.1 键盘接口扩展 188
8.3.2 LED显示器扩展 191
8.3.3 用8279扩展键盘与LED显示器 191
8.3.4 LCD显示器扩展 197
8.4 驱动电路 209
8.5 小结 211
思考题与习题 212
第9章 串行接口技术 213
9.1 RS-485总线扩展 213
9.2 I2C总线扩展接口及应用 215
9.2.1 原理 215
9.2.2 软件I2C总线 217
9.2.3 典型I2C串行存储器的扩展 220
9.2.4 I2C总线接口的串行A/D、D/A扩展 228
9.3 SPI总线扩展接口及应用 232
9.3.1 SPI的原理 232
9.3.2 SPI总线的软件模拟及串并扩展应用 232
9.3.3 10位串行D/A TLC5615的扩展 235
9.3.4 8位串行A/D TLC549的扩展 238
9.4 小结 240
思考题与习题 241
应用篇 245
第10章 单片机的C语言编程——C51 245
10.1 C51程序结构 245
10.2 C51的数据类型 246
10.2.1 C51变量的数据类型 247
10.2.2 关于指针型数据 248
10.3 数据的存储类型和存储模式 249
10.3.1 数据的存储类型 249
10.3.2 存储器模式 249
10.3.3 变量说明举例 250
10.3.4 指针变量说明举例 250
10.4 C51对SFR、可寻址位、存储器和I/O口的定义 251
10.4.1 对特殊功能寄存器SFR的定义 251
10.4.2 对位变量的定义 251
10.4.3 C51对存储器和外接I/O口的绝对地址访问 252
10.5 C51的运算符 252
10.6 函数 254
10.6.1 函数的分类 254
10.6.2 函数的定义 254
10.6.3 函数的调用 254
10.6.4 对被调用函数的说明 255
10.7 C语言编程实例 256
10.7.1 顺序程序的设计 256
10.7.2 循环程序的设计 257
10.7.3 分支程序的设计 258
10.8 单片机资源的C语言编程实例 260
10.8.1 C语言程序的反汇编程序(源代码) 261
10.8.2 并行口及键盘的C语言编程 262
10.8.3 C51中断程序的编制 266
10.8.4 定时/计数器的C语言编程 269
10.8.5 串行通信的C语言编程 270
10.8.6 外扩并行I/O口的C语言编程 271
10.8.7 D/A转换器的C语言编程 273
10.9 汇编语言和C语言的混合编程 273
10.9.1 C语言程序和汇编语言程序参数的传递 274
10.9.2 C语言程序调用汇编语言程序举例 274
10.9.3 C语言和汇编语言混合编程传递的参数多于3个的编程方法 277
10.10 C语言函数库的管理与使用 282
10.10.1 库函数的编写 282
10.10.2 函数库的管理 282
10.10.3 用户库函数的使用 284
10.11 小结 285
思考题与习题 285
第11章 以MCU为核心的嵌入式系统的设计与调试 287
11.1嵌入式系统的开发与开发工具 287
11.1.1 以MCU为核心的嵌入式系统的构成 287
11.1.2 嵌入式应用系统的设计原则 288
11.1.3 嵌入式系统的开发工具 289
11.1.4 嵌入式系统的调试 289
11.2 嵌入式系统的抗干扰技术 291
11.2.1 软件抗干扰 291
11.2.2 硬件抗干扰 292
11.2.3 “看门狗”技术 293
11.3 单片机应用系统举例——电子显示屏 295
11.4 小结 299
思考题与习题 299
第12章 基于Proteus的单片机实验指导 300
12.1 Proteus使用介绍 300
12.1.1 Proteus概述 300
12.1.2 基于Proteus的单片机实验板 302
12.1.3 Proteus中51单片机软件的开发 305
12.1.4 Proteus中51单片机系统的调试与仿真 307
12.2 实验指导 310
12.2.1 实验一 程序设计 310
12.2.2 实验二 并行接口 311
12.2.3 实验三 中断实验 314
12.2.4 实验四 定时/计数器 315
12.2.5 实验五 串行通信实验 318
12.2.6 实验六 串行EEPROM实验(选做) 320
12.2.7 实验七 串行D/A实验(选做) 321
12.2.8 实验八 串行A/D实验(选做) 321
12.3 课程设计选题 322
附录A MCS-51指令集 323
附录B 部分习题答案 328
参考文献 356