前言 1
第1章 绪论 1
1.1 单片机的发展 1
1.2 80C51单片机分类 2
1.3 单片机应用领域和发展趋势 3
1.3.1 单片机的应用领域 3
1.3.2 单片机的发展趋势 3
第2章 80C51单片机硬件结构和原理 5
2.1 80C51的基本结构 5
2.1.1 80C51的基本结构框图 5
2.1.2 芯片的内部结构特点 5
2.2 80C51的引脚及其功能 7
2.2.1 电源引脚Vcc和Vss 8
2.2.2 时钟电路引脚XTAL1和XTAL2 8
2.2.3 控制信号引脚ALE.PSEN.EA和RST 8
2.2.4 输入/输出引脚 9
2.3 80C51CPU结构和时序 10
2.3.1 运算器 10
2.3.2 控制器 11
2.3.3 80C51时钟系统 11
2.3.4 CPU时序 12
2.4 存储器结构和地址空间分配 13
2.4.1 程序存储器地址空间分配 13
2.4.2 数据存储器地址空间分配 14
2.5 80C51工作方式 17
2.5.1 复位方式 17
2.5.2 程序执行方式 17
2.5.3 节电工作方式 18
2.5.4 掉电保护方式 19
第3章 80C51指令系统 20
3.1 指令与汇编语言 20
3.1.1 指令与程序设计语言 20
3.1.2 指令格式及系统中使用的符号意义 21
3.2 寻址方式 22
3.2.1 寻址方式 22
3.2.2 寻址空间 24
3.3 指令系统 24
3.3.1 数据传送指令 24
3.3.2 算术运算指令 28
3.3.3 逻辑运算指令 31
3.3.4 程序控制转移指令 32
3.3.5 位操作(Bool类型)指令 36
第4章 80C51单片机的功能资源 38
4.1 并行I/O接口 38
4.1.1 P0口 38
4.1.2 P1口 40
4.1.3 P2口 41
4.1.4 P3口 42
4.2 定时器/计数器 43
4.2.1 概述 43
4.2.2 定时器T0和T1的结构和功能 44
4.2.3 定时器的工作方式及应用 46
4.2.4 定时器/计数器T2 49
4.2.5 定时器/计数器的编程和使用 53
4.3 串行接口 60
4.3.1 串行口结构和工作模式 60
4.3.2 串行口的编程和举例 66
4.4 中断系统 68
4.4.1 中断基本概念 69
4.4.2 中断响应及处理过程 69
4.4.3 中断程序举例 72
第5章 单片机C51程序设计基础 74
5.1 程序设计语言概述 74
5.1.1 汇编语言 74
5.1.2 C51语言 78
5.2 C51标识符和关键字 80
5.2.1 标识符 80
5.2.2 关键字 80
5.3 C51基本数据类型和运算符 82
5.3.1 基本数据类型 82
5.3.2 运算符 84
5.4 数组 89
5.4.1 一维数组 89
5.4.2 多维数组 89
5.4.3 字符数组 90
5.5 指针 91
5.5.1 指针与地址 91
5.5.2 指针变量的定义 92
5.5.3 指针变量引用 93
5.5.4 数组的指针 93
5.5.5 函数的指针 95
5.5.6 指针数组 95
5.6 结构体和联合体 96
5.6.1 结构体概念和定义 96
5.6.2 结构体的引用 98
5.6.3 联合体概念和定义 98
5.6.4 联合体的引用 99
5.6.5 枚举 100
5.7 类型定义和预处理 101
5.7.1 类型定义 101
5.7.2 预处理 102
5.8 语句和程序设计基本结构 105
5.8.1 语句 105
5.8.2 顺序结构 106
5.8.3 选择结构 107
5.8.4 循环结构 109
5.9 函数 112
5.9.1 函数定义 112
5.9.2 函数调用 113
5.9.3 中断服务函数 115
5.9.4 局部变量与全局变量 116
5.9.5 变量的存储种类 116
第6章 典型外围接口设计 119
6.1 键盘与单片机接口设计 119
6.1.1 独立式键盘 120
6.1.2 行列式键盘 121
6.2 显示器接口 126
6.2.1 LED显示器 126
6.2.2 LED显示器接口实例 127
6.2.3 LCD显示器 129
6.2.4 LCD显示器接口实例 134
6.3 显示接口芯片MAX8279 136
6.3.1 8279内部结构及基本工作原理 136
6.3.2 8279引脚功能 138
6.3.3 8279工作方式 139
6.3.4 8279命令字 139
6.3.5 8279状态字 141
6.3.6 8279应用举例 142
6.4 D/A,A/D芯片与单片机接口设计 143
6.4.1 D/A转换接口电路 143
6.4.2 A/D转换接口电路 146
第7章 80C51单片机系统扩展 150
7.1 80C51系统扩展概述 150
7.1.1 80C51最小应用系统 150
7.1.2 片外总线结构 151
7.1.3 片选 152
7.1.4 地址锁存 153
7.1.5 扩展存储器时应考虑的几个问题 154
7.2 外部存储器扩展 155
7.2.1 程序存储器的扩展 155
7.2.2 数据存储器的扩展 156
7.2.3 多片存储器的扩展 156
7.3 并行I/O接口的扩展 158
7.3.1 简单并行I/O接口扩展 158
7.3.2 8255A可编程并行I/O接口扩展 159
7.4 串行接口的扩展 166
7.4.1 8251串行口扩展芯片 166
7.4.2 8251应用实例 170
第8章 80C51单片机应用系统的抗干扰技术 173
8.1 可靠性与抗干扰技术概述 173
8.1.1 干扰窜入单片机系统的主要途径 173
8.1.2 干扰形成的基本要素 174
8.1.3 干扰的耦合方式 174
8.2 硬件抗干扰技术 174
8.2.1 抑制干扰源 174
8.2.2 切断干扰传播路径 175
8.2.3 提高敏感器件的抗干扰性能 175
8.2.4 其他常用抗干扰措施 176
8.3 软件抗干扰技术 176
8.3.1 指令冗余 177
8.3.2 软件“陷阱” 177
8.3.3 软件“看门狗”技术 177
8.3.4 设置程序运行标志,拦截“跑飞”,程序 178
第9章 Protel DXP电路板设计软件 179
9.1 Protel DXP简介 179
9.2 基于单片机的电子应用系统原理图设计 181
9.2.1 创建并设置原理图图纸 181
9.2.2 绘制原理图 182
9.2.3 设置项目选项并编译 184
9.3 PCB电路板图设计 187
9.3.1 创建一个新的PCB文件 187
9.3.2 设计PCB板 188
9.4 设置项目输出 198
9.4.1 生成电路板信息报表 198
9.4.2 生成元器件的清单报表 200
9.4.3 生成元器件的交叉引用报表 202
9.4.4 生成网络状态报表文件 202
9.4.5 PCB图纸打印 203
第10章 KeiIC51单片机开发软件入门 206
10.1 Keil简介 206
10.2 建立项目 206
10.2.1 创建项目 206
10.2.2 编译项目 209
10.2.3 调试项目 210
第11章 基于80C51的计量泵流量控制系统设计 213
11.1 硬件电路设计 213
11.1.1 控制系统硬件电路的基本组成 213
11.1.2 控制系统的时钟电路 215
11.1.3 控制系统的复位电路设计 215
11.1.4 控制系统的键盘显示接口 215
11.1.5 接近开关接口 216
11.1.6 A/D转换接口 216
11.1.7 串行通信接口 217
11.1.8 步进电机接口 218
11.2 控制系统的软件程序设计 218
11.2.1 控制系统软件的总体结构 218
11.2.2 定时器2的中断程序设计 219
11.2.3 数字键程序设计 219
11.2.4 功能键程序设计 220
11.2.5 串行通信程序设计 221
11.2.6 步进电机控制程序设计 222
11.2.7 A/D转换模块程序设计 223
第12章 80C51单片机在电液位置伺服系统上的应用 225
12.1 直驱式电液位置伺服系统简介 225
12.1.1 数据采集卡 225
12.1.2 位移传感器 226
12.1.3 液压动力机构 226
12.1.4 交流伺服系统 226
12.1.5 三相调压器和编码器 226
12.1.6 伺服滤波器设计 227
12.2 硬件控制系统设计 227
12.2.1 模拟信号放大滤波电路 227
12.2.2 单片机同A/D接口电路 227
12.2.3 单片机同D/A接口电路 229
12.2.4 单片机同LED接口电路 231
12.3 软件系统设计 232
12.3.1 预处理程序 232
12.3.2 时间延时子程序 233
12.3.3 定时器中断子程序 233
12.3.4 A/D转换和D/A转换子程序 234
12.3.5 数码管LED显示子程序 235
附录A MCS-51指令表 236
附录B 241
参考文献 256