第1章 单片机基本知识概述 1
1.1 单片机简介 1
1.1.1 单片机的分类 2
1.1.2 单片机的特点 4
1.2 单片机的基本概念及技术指标 5
1.2.1 单片机的基本概念 5
1.2.2 技术指标 7
1.3 单片机的应用 9
1.4 单片机的开发过程 9
第2章 MCS-51单片机的结构 11
2.1 MCS-51单片机的内部结构及引脚 11
2.1.1 内部结构 11
2.1.2 引脚定义及功能 13
2.1.3 外接ROM/RAM时的逻辑电路图 15
2.2 内部存储器结构 16
2.2.1 存储器的内部结构及工作原理 16
2.2.2 数据存储器 16
2.2.3 MCS-51的堆栈操作 22
2.2.4 程序存储器 23
2.2.5 I/O端口寄存器 24
2.2.6 复位后的特殊功能寄存器 24
2.3 MCS-51时序电路与CPU时序 25
2.3.1 振荡器和时钟电路 26
2.3.2 CPU时序 26
2.3.3 基本时序单位 30
2.4 MCS-51单片机的工作方式 30
2.4.1 复位方式 30
2.4.2 编程和校验方式 35
2.4.3 节电方式、掉电处理 36
第3章 指令系统 37
3.1 指令系统简介 37
3.1.1 指令系统的概念 37
3.1.2 指令的格式 38
3.1.3 指令系统说明 42
3.2 寻址方式 42
3.2.1 立即寻址 43
3.2.2 直接寻址 44
3.2.3 寄存器寻址 44
3.2.4 寄存器间接寻址 45
3.2.5 变址寻址 46
3.2.6 相对寻址 47
3.2.7 位寻址 48
3.3 指令系统 48
3.3.1 数据传送指令 49
3.3.2 算术运算指令 53
3.3.3 逻辑运算指令 57
3.3.4 控制转移指令 60
3.3.5 位操作类指令 66
3.3.6 小结 70
第4章 汇编语言程序设计 76
4.1 汇编语言程序设计的格式及特点 76
4.1.1 汇编语言源程序的格式 76
4.1.2 汇编语言程序设计的特点 78
4.2 单片机汇编语言程序的基本结构 78
4.2.1 顺序程序 78
4.2.2 分支程序 80
4.2.3 循环程序 87
4.2.4 排序程序 90
4.2.5 查表程序 91
4.2.6 子程序 93
4.3 伪指令 96
4.4 MCS-51程序设计举例 99
4.4.1 多字节算术运算程序 99
4.4.2 数制转换程序 100
4.4.3 延时程序 101
4.5 汇编语言源程序的人工汇编 103
第5章 存储器扩展 106
5.1 MCS-51单片机系统扩展及结构 106
5.1.1 系统扩展结构 106
5.1.2 系统总线及总线结构 106
5.2 单片机存储器扩展与编址技术 108
5.2.1 单片机存储器扩展 108
5.2.2 扩展存储器编址技术 109
5.3 单片机程序存储器扩展 113
5.3.1 访问外部程序存储器时序 113
5.3.2 程序存储器扩展 113
5.3.3 程序存储器扩展举例 116
5.4 单片机数据存储器扩展 117
5.4.1 扩展总线 118
5.4.2 6264扩展8051 8K字节RAM 118
5.5 存储器综合扩展 122
5.5.1 线选法扩展大容量存储器 122
5.5.2 译码法扩展大容量存储器 123
5.6 MCS-51单片机存储器系统的特点与使用 124
5.6.1 MCS-51单片机存储器的特点 124
5.6.2 MCS-51单片机存储器的使用 125
第6章 单片机的中断与定时系统 126
6.1 MCS-5 1的中断系统 126
6.1.1 MCS-51单片机中断结构 127
6.1.2 MCS-51单片机中断源 128
6.1.3 中断使能控制 129
6.1.4 中断优先级控制 130
6.1.5 中断响应 131
6.2 MCS-51定时/计数器 135
6.2.1 定时/计数器的结构及功能 135
6.2.2 定时/计数器的工作方式 138
6.2.3 定时/计数器的应用程序设计 143
6.3 外部中断触发方式选择 150
6.4 MCS-51单片机外部中断源的扩展 150
6.4.1 扩展中断源接口逻辑 151
6.4.2 利用定时器扩充中断源 151
6.4.3 用查询法扩展外部中断源 152
6.4.4 用优先权编码器扩展外部中断源 153
6.5 中断系统应用举例 155
6.5.1 单片机系统单步操作 155
6.5.2 外部中断应用示例 156
第7章 单片机的I/O接口与扩展 158
7.1 I/O口扩展概述 158
7.1.1 I/O口扩展的原因 158
7.1.2 接口电路主要功能 159
7.1.3 MCS-51单片机I/O扩展性能 159
7.1.4 I/O扩展技术 160
7.1.5 单片机I/O传送的方式 161
7.2 简单I/O口扩展 162
7.2.1 I/O口与外设直接连接 162
7.2.2 简单的输入口扩展 163
7.2.3 简单的输出口扩展 163
7.2.4 输入/输出扩展举例 164
7.2.5 线选法扩展I/O口 166
7.3 开关电路及驱动电路接口 167
7.3.1 开关电路接口 167
7.3.2 光电耦合器驱动接口 168
7.4 外部I/O的扩展 170
7.4.1 常用接口芯片 170
7.4.2 I/O地址译码技术 170
7.5 8255A可编程通用并行接口芯片 172
7.5.1 8255A的引脚功能 172
7.5.2 8255A内部结构 173
7.5.3 8255A的工作方式及初始化 174
7.5.4 8255A的应用举例 178
7.6 带有RAM和定时器的可编程并行接口芯片8155 179
7.6.1 8155的引脚功能 179
7.6.2 内部结构 180
7.6.3 工作方式及命令/状态字 181
7.6.4 8155的定时器/计数器 183
7.6.5 8155的初始化和应用举例 184
7.7 键盘接口技术 190
第8章 单片机的串行数据通信 197
8.1 串行口基本概念 197
8.1.1 串行通信的分类 198
8.1.2 串行通信的数据传送方向 200
8.2 串行接口的控制 200
8.2.1 串行接口结构 200
8.2.2 相关寄存器 201
8.3 串行接口的工作方式 203
8.3.1 工作方式0 204
8.3.2 工作方式1 205
8.3.3 工作方式2和工作方式3 206
8.4 设定波特率 207
8.5 串行口编程基础 210
8.6 串行口通信实例 212
8.6.1 串行通信编程实例一 212
8.6.2 串行通信编程实例二 214
8.6.3 串行通信编程实例三 217
8.6.4 串行通信实例 219
第9章 单片机与数/模及模/数转换器接口 221
9.1 MCS-51单片机与D/A转换器的接口与应用 221
9.1.1 D/A转换器概述 221
9.1.2 典型D/A转换器芯片DAC0832 223
9.1.3 单缓冲方式的接口与应用 225
9.1.4 双缓冲方式的接口与应用 229
9.1.5 MCS-51和12位DAC1208的接口 232
9.2 MCS-51单片机与A/D转换器的接口与应用 233
9.2.1 A/D转换器概述 233
9.2.2 典型A/D转换器芯片ADC0809 234
9.2.3 MCS-51单片机与ADC0809的接口 237
9.2.4 A/D转换应用举例 240
9.2.5 MC14433与MCS-51单片机的接口 241
第10章 常用单片机外围接口电路及应用 245
10.1 常用LCD与MCS-51单片机接口设计 245
10.1.1 1602液晶显示实验 245
10.1.2 128×64液晶实验 251
10.2 常用串行总线与MCS-51单片机接口设计 261
10.2.1 红外电路 261
10.2.2 串行EEPROM24C02原理和应用 264
10.2.3 基于单片机的接触式IC卡实验 269
10.2.4 基于单片机的非接触式IC卡实验 272
10.3 其他芯片与MCS-51单片机接口设计 275
10.3.1 时钟芯片DS12887的应用 275
10.3.2 数码管 279
10.3.3 ISD2560录放音系统设计 281
10.3.4 RTL8019AS的以太网接口 284
10.3.5 A/D转换实验 289
10.3.6 D/A转换实验 290
10.4 步进电动机 292
10.4.1 感应子式步进电动机工作原理 292
10.4.2 步进电动机的选择 295
10.4.3 步进电动机应用中的注意事项 296
10.4.4 步进电动机应用实例 297
第11章 MCS-51系列单片机的开发与仿真 305
11.1 MCS-51单片机开发环境μVision3 305
11.1.1 Keil C51概述 305
11.1.2 KeilμVision3的功能窗口介绍 306
11.1.3 KeilμVision3的菜单栏介绍 307
11.1.4 工程文件的建立过程 311
11.1.5 工程的设置及编译 312
11.1.6 代码的优化 315
11.2 利用KeilμVision3的调试器仿真 317
11.3 利用仿真器以及MCS-51学习板进行仿真试验 319
11.3.1 SHX-51A仿真器 319
11.3.2 SHX-51A型开发板 320
附录A 常用MCS-51系列单片机列表 326
附录B Keil编译致命错误信息 328
附录C 语法和语义错误信息 331