第1章 绪论 1
1.1 单片机基础知识 1
1.1.1 什么是单片机 1
1.1.2 单片机主流系列 1
1.1.3 单片机芯片技术的发展趋势 2
1.2 单片机的应用 3
1.2.1 单片机的应用 3
1.2.2 单片机应用系统的分类 4
1.3 MCS 51系列单片机 5
1.3.1 MCS—51系列单片机分类 5
1.3.2 MCS—51单片机的结构特点 6
习题 6
第2章 单片机的组成与工作原理 7
2.1 MCS—51单片机的内部结构及信号引脚 7
2.1.1 8051单片机结构 7
2.1.2 信号引脚 8
2.1.3 CPU结构 10
2.1.4 存储器 11
2.1.5 I/O口及相应的特殊功能寄存器 19
2.2 时钟电路与CPU时序 23
2.2.1 时钟电路 23
2.2.2 CPU时序 23
2.3 MCS—51单片机的复位 25
2.4 CHMOS型单片机的节电方式 26
2.4.1 空闲方式 27
2.4.2 掉电方式 28
习题 28
第3章 MCS—51指令系统 29
3.1 指令的格式及标识 29
3.1.1 汇编指令 29
3.1.2 指令中的符号标识 30
3.1.3 关于注释 31
3.2 寻址方式 31
3.2.1 寄存器寻址 32
3.2.2 直接寻址 32
3.2.3 寄存器间接寻址 33
3.2.4 立即寻址 33
3.2.5 变址寻址 33
3.2.6 相对寻址 34
3.2.7 位寻址 34
3.2.8 MCS—51寻址方式小结 35
3.3 指令类型 35
3.4 数据传送指令 36
3.4.1 内部数据传送指令 36
3.4.2 累加器A与外部数据存储器传送指令 40
3.4.3 查表指令 41
3.5 算术操作指令 42
3.5.1 加法指令 43
3.5.2 减法指令 45
3.5.3 乘法指令 46
3.5.4 除法指令 47
3.6 逻辑操作及移位类指令 47
3.6.1 两个操作数的逻辑操作指令 47
3.6.2 累加器A的逻辑操作指令 49
3.7 控制转移指令 50
3.7.1 无条件转移指令 50
3.7.2 条件转移指令 52
3.7.3 子程序调用和返回指令 55
3.8 位操作类指令 57
3.8.1 位传送指令 57
3.8.2 位修改指令 57
3.8.3 位逻辑运算操作指令 58
3.9 访问I/O口指令的使用说明 59
习题 59
第4章 MCS—51汇编语言程序设计 62
4.1 程序设计语言概述 62
4.1.1 机器语言 62
4.1.2 汇编语言 62
4.1.3 高级语言 63
4.2 汇编语言程序设计的特点及伪指令 63
4.2.1 汇编语言程序设计的特点 63
4.2.2 伪指令 63
4.3 单片机汇编语言程序设计 66
4.3.1 程序设计的步骤 66
4.3.2 结构化程序设计 67
4.3.3 子程序设计 72
4.4 单片机汇编语言程序设计举例 76
4.4.1 算术运算程序 76
4.4.2 数制转换程序 78
4.4.3 查表程序 80
4.4.4 数据排序程序 83
4.4.5 散转和序 85
4.4.6 软件定时程序 87
4.4.7 其他程序 88
习题 89
第5章 MCS—51定时器/计数器及其应用 91
5.1 定时器的结构及工作原理 91
5.2 定时器的工作方式寄存器和控制寄存器 93
5.2.1 工作方式寄存器TMOD 93
5.2.2 控制寄存器TCON 93
5.3 定时器的工作方式 94
5.3.1 方式0 94
5.3.2 方式1 95
5.3.3 方式2 96
5.3.4 方式3 96
5.4 定时器的编程和应用举例 97
5.4.1 编程说明 97
5.4.2 应用举例 98
习题 100
第6章 MCS—51中断系统 102
6.1 概述 102
6.1.1 中断的概念 102
6.1.2 中断的好处 102
6.1.3 常用的中断源 103
6.1.4 中断的功能 103
6.2 MCS—51中断系统 104
6.2.1 MCS—51中断源 104
6.2.2 中断控制 106
6.2.3 中断响应与中断处理 108
6.3 中断程序设计及举例 110
6.3.1 中断初始化程序 110
6.3.2 中断服务程序 110
6.3.3 中断应用举例 111
6.4 外部中断源的扩展 113
6.4.1 用定时器T0、T1作为外部中断扩展 113
6.4.2 用中断与查询相结合的方法扩展外部中断 114
习题 115
第7章 MCS—51串行通信及其应用 116
7.1 概述 116
7.1.1 串行通信的字符格式 116
7.1.2 串行通信的数据通路形式 118
7.1.3 串行通信的传送速率 118
7.2 通用的异步接收器/发送器UART 119
7.3 MCS—51的串通信接口 121
7.3.1 串行口的控制寄存器 121
7 3 2 串行接口的工作方式 122
7.3.3 波特率设计 125
7.3.4 主从式多机通信的原理 127
7.4 串行通信应用举例 128
7.4.1 移位寄存器方式(串行口方式0)应用实例 128
7.4.2 双机、多机通信应用 130
习题 141
第8章 存储器扩展技术 142
8.1 系统扩展概述 142
8.2 程序存储器ROM的扩展 143
8.2.1 常用程序存储器的介绍 144
8.2.2 MCS—51程序存储器的扩展 147
8.3 数据存储器RAM的扩展 152
8.3.1 常用的静态数据存储器(SRAM)介绍 152
8.3.2 MCS—51数据存储器的扩展 153
8.3.3 E2PROM作为外部数据存储器 156
习题 156
第9章 并行和串行口扩展技术 158
9.1 并行I/O口的扩展 158
9.1.1 8255通用可编程并行接口电路 158
9.1.2 8155可编程并行I/ORAM接口 164
9.1.3 用数据总线和中规模集成电路扩展I/O接口 169
9.2 串行口的扩展技术 172
9.2.1 可编程通信接口8251 172
9.2.2 8251A的应用举例 178
9.3 I2C总线的串行扩展技术 180
9.3.1 串行总线和串行接口概述 180
9.3.2 I2C总线特性 182
9.3.3 I2C总线虚拟技术 183
习题 191
第10章 键盘和显示接口 192
10.1 键盘设计 192
10.1.1 键盘的基本工作原理 192
10.1.2 键的识别 193
10.1.3 抖动和重键问题的解决 197
10.1.4 键盘工作方式 197
10.2 七段码LED显示器及其接口 202
10.2.1 七段码LED显示器的结构 202
10.2.2 七段码LED显示器的工作方式和显程序 203
10.3 LCD液晶显示器及其接口 211
10.3.1 LCD液晶显示器的结构 211
10.3.2 LCD液晶显示器的驱动方式和工作原理 211
10.3.3 μPD7225可编程LCD驱动器及其应用 213
习题 218
第11章 定时器和A/D、 D/A扩展技术 219
11.1 定时器/计数器的扩展 219
11.1.1 8253可编程定时器/计数器介绍 219
11.1.2 8253的接口和应用举例 224
11.2 D/A、A/D的扩展 226
11.2.1 D/A转换器接口 226
11.2.2 A/D转换器接口 236
习题 246
第12章 单片机应用系统的设计 248
12.1 单片机应用系统的开发过程 248
12.1.1 技术方案论证 248
12.1.2 硬件系统的设计 249
12.1.3 应用软件的设计 250
12.1.4 硬件、软件系统的调试 250
12.1.5 EPROM的固化 250
12.2 单片机硬件系统的设计 251
12.2.1 元件的选取 251
12.2.2 硬件电路的设计原则 251
12.2.3 单片机资源的分配 252
12.2.4 印制电路板的设计 253
12.2.5 硬件可靠性的设计 253
12.3 单片机软件系统的设计 254
12.3.1 任务的确定 254
12.3.2 软件结构的设计 254
12.4 单片机应用系统的调试 255
12.4.1 硬件的调试方法 255
12.4.2 软件的调试 256
12.4.3 系统联调 258
12.4.4 现场调试 258
12.5 单片机的开发工具及选择 258
12.5.1 仿真器的种类简介 258
12.5.2 仿真器的选择 259
12.5.3 其他工具的选择 260
12.6 单片机系统抗干扰技术 260
12.6.1 硬件抗干扰措施 261
12.6.2 软件抗干扰措施 262
附录A MCS—51指令表 264
附录B ASCII码表 269
参考文献 270