第1章 认识51单片机 1
1.1 单片机基本概念 1
1.2 51系列单片机介绍 2
1.2.1 51单片机的特点和分类 2
1.2.2 MCS-51系列单片机 4
1.2.3 Atmel的51系列单片机 4
1.2.4 STC-51单片机 4
1.2.5 51单片机产品标号与引脚信息 5
1.2.6 单片机的应用 6
1.3 51单片机应用系统开发流程与开发工具 7
1.3.1 51单片机应用系统的开发流程 7
1.3.2 Keil C51开发工具简介 8
1.3.3 Proteus软件使用简介 8
1.3.4 单片机开发仿真器 9
1.3.5 编程器 9
本章小结 10
习题一 10
第2章 51系列单片机基本结构 11
2.1 51单片机的内部结构 11
2.1.1 中央处理器(CPU) 12
2.1.2 存储器 13
2.2 51系列单片机的端口及引脚介绍 19
2.3 51单片机最小系统 23
2.3.1 51单片机最小系统设计 23
2.3.2 51单片机复位电路 24
2.3.3 时钟电路 26
2.4 51单片机的CPU时序 26
本章小结 27
习题二 28
实验一 51单片机最小系统电路设计 30
实验二 51存储器数据存储实验 31
第3章 51单片机汇编语言程序设计 33
3.1 51单片机指令系统简介 33
3.1.1 51单片机汇编指令格式 34
3.1.2 51单片机的指令符号 35
3.1.3 51单片机汇编语言的语句格式 35
3.1.4 51单片机汇编语言的操作码的中英文含义 36
3.2 51单片机指令的寻址方式 38
3.2.1 立即寻址 38
3.2.2 直接寻址 38
3.2.3 寄存器寻址 39
3.2.4 寄存器间接寻址 39
3.2.5 变址寻址 40
3.2.6 相对寻址 40
3.2.7 位寻址 41
3.3 数据传送类指令 42
3.3.1 内部RAM间的数据传送 42
3.3.2 ACC与外部数据存储器(或扩展的I/O口)传递数据 43
3.3.3 程序存储器数据传送类指令 44
3.3.4 堆栈操作 45
3.3.5 数据交换指令 46
3.4 算术运算类指令 47
3.4.1 加法指令 47
3.4.2 减法指令 47
3.4.3 加1减1指令 48
3.4.4 十进制调整指令 49
3.4.5 乘法和除法指令 50
3.5 逻辑运算类指令 50
3.6 循环移位类指令 52
3.7 控制转移类指令 53
3.7.1 无条件转移指令 53
3.7.2 条件转移指令 55
3.7.3 数值比较不相等转移指令 55
3.7.4 循环转移指令 55
3.7.5 子程序调用及返回指令 56
3.8 位操作类指令 58
3.8.1 位数据传送指令 58
3.8.2 置位和清零指令 58
3.8.3 位逻辑运算指令 58
3.9 51单片机汇编语言程序设计 59
3.9.1 汇编语言概述 59
3.9.2 汇编语言指令 59
3.9.3 顺序程序设计 62
3.9.4 分支程序设计 63
3.9.5 循环程序设计 64
3.9.6 查表程序设计 65
本章小结 66
习题三 66
实验三 无符号数加法运算案例分析实验 68
实验四 逻辑运算案例分析实验 70
第4章 单片机C51程序设计 72
4.1 单片机C51语言的基本结构 72
4.2 C51语言数据 75
4.2.1 C51数据类型 75
4.2.2 标识符和关键字 80
4.2.3 常量和变量 82
4.3 C51运算符和表达式 85
4.4 C51语句 89
4.4.1 简单语句与复合语句 89
4.4.2 分支控制语句 89
4.4.3 循环控制语句 92
4.4.4 转移语句 93
4.5 C51函数与预处理命令 94
4.5.1 函数的说明与定义 94
4.5.2 函数的调用 96
4.5.3 内部函数与外部函数 97
4.5.4 C51语言的预处理命令 98
本章小结 99
习题四 100
第5章 51单片机系统的显示和按键接口 102
5.1 LED与51单片机接口设计 102
5.2 LED数码显示原理及应用实现 105
5.2.1 LED数码管显示原理 105
5.2.2 单片机控制的数码管静态显示设计 107
5.2.3 单片机控制的数码管动态显示设计 109
5.2.4 单片机控制的字符型LCD液晶显示及接口设计 111
5.2.5 单片机与LED点阵屏的接口设计 119
5.3 51单片机系统的按键接口 121
5.3.1 常用按键 121
5.3.2 51单片机独立式按键设计 124
5.3.3 51单片机矩阵键盘设计 127
本章小结 131
习题五 132
实验五 51单片机控制的跑马灯实验 133
实验六 51单片机控制的数码管动态显示实验 134
实验七 51单片机控制的简易计算器实验 136
第6章 51单片机的中断应用 138
6.1 中断系统概述 138
6.1.1 中断的相关概念 138
6.1.2 CPU与外设之间的数据传送方式 138
6.1.3 中断的种类 139
6.2 51系列单片机的中断系统 140
6.2.1 51单片机中断类型 140
6.2.2 中断控制寄存器 141
6.2.3 中断向量地址与中断控制 143
6.2.4 中断处理过程 144
6.3 中断服务程序设计 147
6.3.1 中断初始化 147
6.3.2 中断子程序 147
6.3.3 运用中断法设计信号灯 148
本章小结 151
习题六 151
实验八 51单片机控制的交通灯控制系统设计实验 152
第7章 51单片机定时/计数器应用 157
7.1 定时/计数器的结构及工作原理 157
7.1.1 定时/计数器的组成 157
7.1.2 定时/计数器的控制寄存器与工作方式 158
7.1.3 定时/计数器的工作方式 159
7.2 定时/计数器的应用 162
7.2.1 51单片机控制的蜂鸣器设计 163
7.2.2 运用51单片机的定时中断方式控制8个LED闪烁 166
7.2.3 运用51单片机的定时/计数器设计简易频率发生器 169
本章小结 172
习题七 172
实验九 简易秒表设计 173
第8章 51单片机串行通信 176
8.1 串行通信基础 176
8.1.1 波特率 176
8.1.2 串行通信的方式 177
8.1.3 RS-232C电平与TTL电平的转换 178
8.2 认识51单片机串行口 181
8.2.1 51单片机串行口结构 181
8.2.2 51单片机串行口工作方式 183
8.2.3 波特率的设置 186
8.3 51单片机串行口设计 188
8.3.1 用51单片机的串行口扩展控制流水灯设计 188
8.3.2 51单片机串行口的并行转串行设计 190
8.3.3 51单片机与单片机之间的双机通信设计 192
8.3.4 51单片机与PC之间的通信设计 196
本章小结 198
习题八 198
实验十 51单片机双机通信实验 199
第9章 51单片机系统的存储器扩展 200
9.1 51单片机的总线结构 200
9.2 51单片机系统扩展结构与编址技术 201
9.3 51单片机系统的存储器并行扩展 203
9.3.1 存储器简介 203
9.3.2 51单片机系统存储器并行扩展设计 205
9.3.3 51单片机的Flash存储器扩展设计 207
9.3.4 I2C总线和串行E2PROM芯片AT24C02介绍 210
9.4 E2PROM芯片AT24C02与51单片机的通信设计 216
本章小结 220
习题九 220
第10章 A/D与D/A转换接口设计 221
10.1 A/D转换基本知识 221
10.2 ADC0809模数转换器 222
10.3 基于ADC0809的简易数字电压表设计 225
10.4 D/A转换的基本知识 229
10.5 集成D/A转换器——DAC0832 231
10.6 51单片机控制简单波形发生器设计 234
10.7 I2C总线A/D与D/A转换器PCF8591 235
10.7.1 PCF8591芯片介绍 235
10.7.2 PCF8591的I2C总线连接与通信 236
10.7.3 PCF8591的A/D和D/A转换器程序设计 237
本章小结 242
习题十 242
第11章 51单片机综合实验开发板设计 243
11.1 单片机应用系统开发过程 243
11.1.1 总体设计 243
11.1.2 硬件设计 244
11.1.3 资源分配 244
11.2 单片机开发工具及选择 245
11.2.1 仿真器 245
11.2.2 其他工具 245
11.3 系统可靠性设计 246
11.4 51单片机综合实验系统设计 247
11.4.1 电源电路 247
11.4.2 51单片机最小系统 248
11.4.3 数码管动态显示接口电路 249
11.4.4 液晶接口电路 251
11.4.5 矩阵键盘电路 253
11.4.6 与PC串行通信电路 255
11.4.7 LED控制电路 257
11.4.8 I2C总线器件电路 259
11.4.9 继电器、蜂鸣器和电机控制电路 260
11.4.10 温度控制电路 264
11.4.11 红外遥控系统 268
11.4.12 实时时钟电路 271
附录A 51系列单片机指令表 272
附录B KeilμVision集成开发环境 275
附录C 基于51单片机仿真的Proteus软件使用简介 283
部分习题参考答案 290
参考文献 292