1.1 单片机的发展概况 1
第1章 单片机概述 1
1.2 单片机的应用范围 2
1.3 单片机的分类 2
1.4 MCS-51单片机的简介 3
1.5 计算机中的数制和编码 5
1.5.1 数制 5
1.5.2 带符号的二进制数 7
1.5.4 ASCII码 8
1.5.3 二-十进制编码——BCD码 8
习题 9
第2章 MCS-51单片机原理 10
2.1 MCS-51单片机系统的结构 10
2.2 MCS-51单片机的内部组成和结构 10
2.2.1 MCS-51单片机的内部组成 10
2.2.2 MCS-51单片机内部结构 11
2.3.1 AT89C51单片机的主要功能特性 14
2.3 AT89C51单片机 14
2.3.2 AT89C51单片机的引脚功能 15
2.4 MCS-51单片机的存储器 17
2.4.1 单片机的存储空间 17
2.4.2 半导体存储器 18
2.4.3 程序存储器 19
2.4.4 数据存储器 21
2.5 并行I/O口 23
2.5.1 P0口 24
2.5.2 P1口 24
2.5.3 P2口 24
2.5.4 P3口 24
2.6 特殊功能寄存器 25
2.7 位处理器 29
2.8 时钟电路与复位电路 30
2.8.1 单片机的时钟电路与CPU时序 30
2.8.2 单片机的复位电路 31
2.9 单片机的低功耗方式 32
2.10 AT89C2051单片机 33
2.10.1 AT89C2051单片机的主要特性 33
2.10.2 AT89C2051单片机的引脚及功能 34
2.10.3 存储器组织 36
2.10.4 AT89C2051单片机的低功耗运行模式 36
2.11 单片机认知与实践 36
2.11.1 单片机控制一盏灯亮 36
2.11.2 单片机控制一盏灯闪烁 37
2.11.3 单片机控制八盏灯闪烁 38
2.11.4 八个按键控制八盏灯 39
2.12 小制作 40
2.12.1 单片机控制一盏灯闪烁 40
2.12.2 单片机控制八盏灯闪烁 41
2.13 小知识:89系列单片机的型号编码 42
习题 43
3.1.1 指令分类 45
概述 45
第3章 MCS-51单片机指令系统 45
3.1 MCS-51单片机指令系统 45
3.1.2 指令格式 46
3.1.3 寻址方式及常用符号注释 46
3.1.4 单片机执行指令的过程 49
3.2 数据传送指令 49
3.2.1 内部数据传送指令 49
3.2.2 外部RAM数据传送指令 52
3.2.3 程序存储器数据传送指令 53
3.2.4 堆栈操作指令组 55
3.2.5 数据交换指令组 56
3.2.6 数据传送类指令应用实例分析 57
3.2.7 数据传送类指令编程与实践 58
3.3 算术运算类指令 64
3.3.1 不带进位位的加法指令 64
3.3.2 带进位位的加法指令 65
3.3.3 加1指令 66
3.3.4 十进制调整指令 67
3.3.5 带借位减法指令 68
3.3.6 减1指令 68
3.3.7 乘法指令 69
3.3.8 除法指令 69
3.3.9 算术运算类指令应用实例分析 69
3.3.10 算术运算类指令编程与实践 70
3.4.1 逻辑与指令 73
3.4 逻辑运算类指令 73
3.4.2 逻辑或指令 74
3.4.3 逻辑异或指令 75
3.4.4 累加器清零和取反指令 76
3.4.5 移位指令 77
3.4.6 空操作指令 77
3.4.7 逻辑运算类指令应用实例分析 77
3.4.8 逻辑运算类指令编程与实践 78
3.5.1 无条件转移类指令 82
3.5 控制转移类指令 82
3.5.2 条件转移指令 84
3.5.3 子程序调用与返回指令 89
3.5.4 控制转移类指令应用实例分析 90
3.5.5 控制转移类指令编程与实践 91
3.6 位操作类指令 94
3.6.1 位赋值指令 94
3.6.2 位传送指令 95
3.6.3 位逻辑指令 95
3.6.4 位操作类指令应用实例分析 95
3.6.5 位操作类指令编程与实践 96
3.7 小制作 100
3.7.1 蜂鸣器的使用 100
3.7.2 霓虹灯 101
习题 104
4.2 伪指令 111
4.1 单片机使用的程序设计语言 111
第4章 汇编语言程序设计 111
4.3 汇编语言程序设计方法 113
4.3.1 程序设计步骤 113
4.3.2 程序的基本结构 113
4.3.3 子程序 122
4.4 程序设计的实例分析 126
4.4.1 寻找最大数 126
4.4.2 排序程序 127
4.4.3 查表程序 130
4.5 程序设计的实践 131
4.5.1 顺序结构的程序设计实践 131
4.5.2 分支结构的程序设计实践 132
4.5.3 循环结构的程序设计实践 134
4.5.4 查表程序设计实践 137
4.5.5 子程序设计实践 138
4.6.1 七段数码管显示器的使用 140
4.6 小制作 140
4.5.6 实用程序设计实践 140
4.6.2 按钮的使用 143
习题 145
第5章 定时器/计数器 148
5.1 定时器/计数器概述 148
5.2 定时器/计数器结构与功能 148
5.3 定时器/计数器的控制 150
5.4 定时器/计数器的工作方式 151
5.6.1 定时器/计数器的初始化步骤 154
5.6.2 定时器/计数器初值的计算 154
5.5 定时器/计数器的规划 154
5.6 定时器/计数器的初始化 154
5.7 定时器/计数器的实例分析 157
5.7.1 广告灯左移右移 157
5.7.2 计数器实例分析 158
5.8 定时器/计数器的实践 161
5.8.1 定时器控制输出方波 161
5.8.2 广告灯的左移右移 162
5.8.3 计数器 163
习题 164
第6章 中断系统 166
6.1 中断概述 166
6.2 MCS-51中断系统的结构 166
6.3 中断控制 168
6.4 中断响应过程 171
6.5 中断服务程序设计 173
6.6 中断系统的实例分析 175
6.6.1 定时中断实例 175
6.6.2 计数中断实例 180
6.6.3 中断嵌套实例 181
6.6.4 外部中断源的扩展 183
6.7 中断系统实践 184
6.7.1 定时中断实践 184
6.7.2 工业顺序控制实践 185
6.7.3 计数中断实践 187
6.7.4 中断嵌套实践 189
习题 191
第7章 串行通信接口 193
7.1 串行通信概述 193
7.1.1 串行通信中的几个概念 193
7.1.2 串行通信时必须解决的技术问题 195
7.2 MCS-51单片机串行接口 196
7.2.1 串行口的结构 196
7.2.3 串行口的控制 197
7.2.2 串行口数据的发送与接收 197
7.3 串行接口工作方式 199
7.4 波特率的设置 200
7.5 串行总线标准及接口 201
7.5.1 RS-232C接口 202
7.5.2 RS-485接口 204
7.6 串行接口芯片 206
7.7.1 单片机串行口扩展并行输出口 207
7.7 串行接口实例分析 207
7.7.2 单片机串行口扩展并行输入口 208
7.7.3 单机通信 210
7.7.4 双机通信 212
7.7.5 多机通信 218
7.8 串行接口实践 222
7.8.1 单片机串行口扩展并行输出口 222
7.8.2 单片机串行口扩展并行输入口 223
7.8.3 单机通信 225
7.8.4 双机通信 226
7.8.5 单片机与PC机间的串行通信 227
7.8.6 多机通信 229
习题 229
第8章 MCS-51单片机系统的扩展 232
8.1 系统扩展概述 232
8.1.1 系统扩展的总线结构 233
8.1.2 并行扩展方式的编址技术 237
8.2.1 程序存储器的扩展 241
8.2 存储器的扩展 241
8.2.2 数据存储器的并行扩展 246
8.2.3 数据存储器的串行扩展 249
8.2.4 存储器扩展的实例分析 265
8.2.5 存储器扩展的实践 266
8.3 并行I/O口的扩展 270
8.3.1 并行I/O口扩展概述 270
8.3.2 简单、无条件I/O口的扩展 271
8.3.3 8255可编程并行I/O口的扩展 273
8.3.4 8155/8156可编程并行I/O口的扩展 278
8.3.5 并行I/O口扩展的实例分析 284
8.3.6 并行I/O口扩展的实践 288
习题 292
第9章 接口技术 293
9.1 显示器接口 293
9.1.1 LED显示器接口 293
9.1.2 LCD显示器接口 296
9.1.3 显示器接口的实例分析 308
9.1.4 显示器接口的实践 315
9.2 键盘接口 323
9.2.1 键盘输入应解决的问题 323
9.2.2 独立式按键接口 325
9.2.3 矩阵式键盘接口 325
9.2.4 拨码盘接口 327
9.2.5 键盘接口的实例分析 328
9.2.6 键盘接口的实践 331
9.3 D/A转换器接口 333
9.3.1 D/A转换器主要技术指标与选择要点 333
9.3.2 D/A转换器芯片DAC0832 335
9.3.3 单缓冲方式的接口设计 336
9.3.4 双缓冲同步方式的接口设计 337
9.3.5 D/A转换器接口的实例分析 338
9.3.6 D/A转换器接口的实践 339
9.4.1 A/D转换器主要技术指标与选择要点 341
9.4 A/D转换器接口 341
9.4.2 A/D转换器芯片ADC0809 344
9.4.3 单片机与ADC0809的接口设计 346
9.4.4 A/D转换器接口的实例分析 348
9.4.5 A/D转换器接口的实践 349
习题 350
第10章 单片机应用系统的开发 352
10.1 单片机应用系统的设计 352
10.1.1 应用系统的规划与设计 352
10.1.2 应用系统硬件的设计 354
10.1.3 应用系统软件的设计 354
10.1.4 应用系统的抗干扰设计 355
10.2 单片机应用系统的开发 356
10.2.1 应用系统的开发步骤 356
10.2.2 开发手段的选择 357
10.2.3 应用系统的调试 357
10.3 应用系统的开发过程 358
10.2.4 应用系统的开发过程 358
10.4 应用系统的开发实践 366
10.4.1 应用系统开发实例的制作 366
10.4.2 学生自选题的设计制作 367
第11章 MCS-51单片机开发系统 368
11.1 单片机开发系统概述 368
11.1.1 单片机开发系统的分类 368
11.1.2 单片机开发系统和目标系统的连接 368
11.2 DVCC-5286JH单片机实验系统简介 369
11.2.1 DVCC-5286JH单片机实验系统组成及其硬件资源 369
11.2.2 DVCC-5286JH单片机实验系统安装与启动 372
11.2.3 操作概要 374
11.3 Keil 51集成开发环境简介 382
11.3.1 Keil μVision2软件的整体结构 382
11.3.2 Keil μVision2软件的安装 382
11.3.3 Keil μVision2的主要功能 383
11.3.4 Keil μVision2应用基础 384
11.3.5 项目的创建和调试范例 388
11.4 Proteus简介 394
11.4.1 Proteus的安装 395
11.4.2 Proteus的主要功能 395
11.4.3 模拟仿真ISIS界面的简介 395
11.4.4 Proteus设计项目的创建 396
11.4.5 Proteus原理图的设计 396
11.4.6 Proteus的模拟调试 401
11.4.7 Proteus的实践 405
11.5 Keil μVision2与Proteus的连接 411
11.6 Lab TOOL-48编程器简介 413
11.6.1 Lab TOOL-48编程器的安装 413
11.6.2 Lab TOOL-48编程器的简单操作 413
附录一 ASCII(美国标准信息交换码)表 418
附录二 5×10点阵字符表 419
附录三 5×7点阵字符表 420
参考文献 421