第1章 概述 1
1.1 单片机的基本概念 1
1.1.1 单片机的发展历程 1
1.1.2 单片机技术的多学科交叉特点 2
1.1.3 单片机的功能结构特征 2
1.2 单片机的发展 4
1.2.1 单片机的发展概况 5
1.2.2 单片机技术的发展 6
1.3 单片机的特点及应用 8
1.3.1 单片机的特点 8
1.3.2 单片机的应用 9
1.4 单片机的类型与常用单片机系列 9
1.4.1 单片机的类型 9
1.4.2 目前流行的51内核的8位单片机 11
习题一 15
第2章 51系列单片机的硬件结构 16
2.1 51系列单片机简介 16
2.1.1 MCS-51系列单片机 16
2.1.2 8051派生产品 16
2.2 51单片机的内部结构与引脚信号 17
2.2.1 51单片机的基本组成 17
2.2.2 51单片机的引脚信号 17
2.3 微处理器 20
2.3.1 运算部件 20
2.3.2 控制部件及振荡器 21
2.3.3 指令操作时序 23
2.4 存储器 26
2.4.1 程序存储器 26
2.4.2 数据存储器 28
2.5 并行输入/输出接口 32
2.5.1 P0口 32
2 5 2 P1口 33
2.5.3 P2口 34
2.5.4 P3口 34
2.6 定时器/计数器 35
2.6.1 定时器/计数器C/T0、C/T1的功能结构 35
2.6.2 定时器/计数器C/T0、C/T1的4种工作方式 37
2.7 串行输入/输出口 39
2.7.1 串行通信的基本概念 39
2.7.2 51单片机的串行口 42
2.8 51单片机的中断系统 47
2.8.1 中断的基本概念 47
2.8.2 51单片机中断源 47
2.8.3 中断控制 49
2.8.4 中断响应的条件、过程与时间 51
2.9 复位状态及复位电路 52
2.9.1 复位状态 52
2.9.2 复位电路 53
2.10 51单片机的低功耗方式 53
2.10.1 方式设定 54
2.10.2 空闲(等待、待机)工作方式 54
2.10.3 掉电(停机)工作方式 55
习题二 55
第3章 51单片机指令系统和汇编语言程序示例 57
3.1 51单片机指令系统概述 57
3.1.1 指令与指令系统的概念 57
3.1.2 51单片机指令系统及其指令格式 58
3.2 寻址方式 58
3.2.1 立即寻址 59
3.2.2 寄存器寻址 59
3.2.3 寄存器间接寻址 59
3.2.4 直接寻址 60
3.2.5 变址寻址 60
3.2.6 相对寻址 60
3.2.7 位寻址 61
3.3 数据传送类指令 61
3.3.1 访问片内数据存储器的一般数据传送指令 61
3.3.2 访问片内数据存储器的特殊传送指令 63
3.3.3 访问片外数据存储器的数据传送指令 64
3.3.4 访问程序存储器的数据传送指令 65
3.4 算术运算指令 66
3.4.1 加、减运算指令 66
3.4.2 十进制调整指令 67
3.4.3 乘、除法指令 68
3.5 逻辑运算及移位指令 69
3.6 控制转移类指令 71
3.6.1 无条件转移指令 71
3.6.2 条件转移指令 73
3.7 子程序调用与返回指令 75
3.7.1 子程序调用指令 75
3.7.2 返回指令 76
3.7.3 空操作指令 76
3.8 位操作类指令 76
3.9 汇编程序格式与伪指令 78
3.10 汇编程序设计示例 81
3.10.1 算术与逻辑处理程序 81
3.10.2 数制转换程序 85
3.10.3 多分支转移(散转)程序 86
3.10.4 定时器/计数器应用程序 88
3.10.5 外部中断应用程序 90
3.10.6 串行口应用程序 91
习题三 96
第4章 51单片机系统功能扩展 100
4.1 系统扩展概述 100
4.1.1 最小应用系统 100
4.1.2 单片机系统扩展的内容与方法 101
4.2 常用扩展器件简介 101
4.2.1 锁存器74LS373 102
4.2.2 74LS244和74LS245芯片 103
4.2.3 3-8译码器74LS138 104
4.3 存储器的扩展 105
4.3.1 存储器扩展概述 105
4.3.2 程序存储器的扩展 107
4.3.3 数据存储器的扩展 110
4.3.4 兼有片外程序存储器和片外数据存储器的扩展举例 112
4.4 并行I/O扩展 113
4.4.1 I/O口扩展概述 113
4.4.2 8255A可编程并行I/O口扩展 114
4.4.3 8155可编程并行I/O口扩展 121
4.4.4 用TTL芯片扩展简单的I/O接口 126
4.4.5 用串行口扩展并行I/O口 129
习题四 131
第5章 单片机串行口功能扩展 133
5.1 串行口功能扩展概述 133
5.2 51系列单片机与异步串行通信总线接口 133
5.2.1 RS-232接口 133
5.2.2 51单片机与PC机间的通信接口 138
5.2.3 RS-449/RS-422/RS-423/RS-485标准接口 148
5.3 51系列单片机与同步串行总线接口 150
5.3.1 I2C总线 151
5.3.2 SPI总线接口 160
5.3.3 单总线技术 162
习题五 168
第6章 51单片机的接口与应用 170
6.1 按键、键盘及其接口 170
6.1.1 键输入过程与软件结构 170
6.1.2 键盘接口和键输入软件中应解决的几个问题 171
6.1.3 独立式按键 172
6.1.4 行列式键盘 173
6.2 LED显示器及其接口 177
6.2.1 LED显示器结构与原理 177
6.2.2 LED显示器的显示方式 178
6.2.3 LED显示器接口 179
6.2.4 键盘、显示器组合接口 182
6.3 LCD显示器及其接口 185
6.3.1 液晶显示器简介 185
6.3.2 字符型液晶显示模块LCM的组成原理 185
6.3.3 LCM的命令字 188
6.3.4 字符型LCM的接口及应用举例 191
6.4 A/D转换器接口 197
6.4.1 A/D转换器概述 197
6.4.2 A/D转换器ADC0809单片机的接口 198
6.4.3 单片机与A/D转换器AD574的接口 201
6.4.4 串行A/D转换器与单片机的接口 204
6.5 D/A转换器接口 207
6.5.1 D/A转换器概述 207
6.5.2 8位D/A转换器与单片机的接口 209
6.5.3 高于8位D/A转换器与单片机的接口 215
6.5.4 串行D/A转换器与单片机的接口 217
6.6 行程开关、晶闸管、继电器与单片机的接口 220
6.6.1 光电耦合器件 220
6.6.2 行程开关、继电器触点与单片机的接口 221
6.6.3 晶闸管元件与单片机接口 221
6.6.4 继电器与单片机接口 222
习题六 223
第7章 单片机应用系统设计与开发 225
7.1 单片机应用系统结构与应用系统的设计内容 225
7.1.1 单片机应用系统的一般硬件组成 225
7.1.2 单片机应用系统的设计内容 228
7.2 单片机应用系统开发过程 228
7.2.1 系统需求与方案调研 230
7.2.2 可行性分析 230
7.2.3 系统方案设计 230
7.2.4 系统详细设计与制作 231
7.2.5 系统调试与修改 231
7.2.6 生成正式系统(或产品) 231
7.3 单片机应用系统的一般设计方法 231
7.3.1 确定系统的功能与性能 231
7.3.2 确定系统基本结构 232
7.3.3 单片机应用系统硬、软件的设计原则 233
7.3.4 硬件设计 234
7.3.5 软件设计 235
7.3.6 资源分配 236
7.4 单片机应用系统的调试 237
7.4.1 硬件调试 237
7.4.2 软件调试 239
7.4.3 系统联调 240
7.4.4 现场调试 240
7.5 51单片机应用系统设计与调试实例 241
习题七 244
第8章 单片机C语言应用程序设计 245
8.1 C语言与51单片机 245
8.1.1 51单片机C语言编程简介 245
8.1.2 Keil C51开发工具 246
8.1.3 Keil C51对标准C语言的扩展 247
8.2 C51数据类型及其在51单片机中的存储方式 247
8.2.1 Keil C51中的基本数据类型 247
8.2.2 C51数据在51单片机中的存储方式 248
8.3 C51数据的存储类型与51单片机存储结构 250
8.3.1 存储类型 250
8.3.2 存储模式 252
8.4 51单片机特殊功能寄存器的C51定义 253
8.5 51单片机并行接口的C51定义 254
8.6 位变量的C51定义 254
8.6.1 位变量的C51定义 255
8.6.2 对位变量定义的限制 255
8.7 C51的指针 256
8.7.1 通用指针与指定存储器的指针 256
8.7.2 指针转换 257
8.8 与使用51单片机内部资源有关的头文件 258
8.9 51单片机内部资源应用的C语言编程 260
8.9.1 中断应用的C语言编程 260
8.9.2 定时器/计数器应用的C语言编程 262
8.9.3 串行口使用的C语言编程 264
8.10 51单片机片外扩展的C语言编程 267
8.10.1 8255与单片机接口C语言程序 267
8.10.2 51单片机数据采集的C语言编程 268
8.10.3 51单片机输出控制的C语言编程 272
8.11 频率、周期测量的C语言编程 278
8.11.1 测量频率 278
8.11.2 测量周期 280
8.12 51单片机间通信的C语言编程 281
8.12.1 点对点的串行异步通信 281
8.12.2 多机通信 285
8.13 键盘和数码显示人机交互的C语言编程 293
8.13.1 行列式键盘与51单片机接口的C51编程 293
8.13.2 七段数码管显示与51单片机接口的C51编程 294
8.13.3 字符型液晶显示模块(LCM)与51单片机的接口 296
习题八 300
附录A ASCII码表 302
附录B 51单片机指令表 303
附录C 利用μVision4开发应用程序指导 310
C.1 μVision4简介 310
C.2 在μVision4中创建应用 310
C.3 项目参数配置 313
C.4 单片机外部设备仿真 314