第1章 单片机基础知识 1
1.1 单片微型计算机 1
1.1.1 单片机最小系统 1
1.1.2 单片机的基本知识 2
1.1.3 单片机的发展概况 4
1.1.4 单片机主要品种简介 7
1.1.5 单片机的应用 9
1.2 计算机的数制 9
1.2.1 数制 10
1.2.2 数制转换 10
1.2.3 二进制编码 16
1.2.4 计算机中数的表示 17
思考与练习 18
第2章 MCS-51单片机结构 19
2.1 MCS-51单片机基本结构原理 19
2.1.1 Keil C51仿真软件简介 20
2.1.2 MCS-51单片机组成 21
2.1.3 MCS-51单片机内部结构框图及引脚功能 22
2.1.4 时钟电路与复位电路 24
2.1.5 中央处理器 28
2.1.6 8051单片机I/O结构 31
2.2 MCS-5 1单片机存储器 35
2.2.1 程序存储器 36
2.2.2 数据存储器 37
2.2.3 MCS-51单片机片内数据存储器的配置 37
2.2.4 单片机特殊功能寄存器 40
2.2.5 特殊功能寄存器的位寻址 41
2.3 单片机并口控制系统 42
2.4 实践训练 43
任务1:数据存储器的读、写 43
任务2:彩灯控制 45
思考与练习 47
第3章 MCS-51指令系统 49
3.1 指令格式 49
3.1.1 单字节指令 49
3.1.2 双字节指令 50
3.1.3 三字节指令 50
3.2 寻址方式 51
3.2.1 直接寻址 52
3.2.2 立即数寻址 52
3.2.3 寄存器寻址 53
3.2.4 寄存器间接寻址 53
3.2.5 变址寻址 53
3.2.6 位寻址 54
3.2.7 相对寻址 54
3.3 指令类型 55
3.3.1 指令分类 55
3.3.2 数据传送类指令 56
3.3.3 算术运算类指令 61
3.3.4 逻辑操作类指令 67
3.3.5 位操作类指令 71
3.3.6 控制转移类指令 73
3.4 伪指令 78
3.5 实践训练 81
任务1:指令的熟悉及使用 81
任务2:指令的分析及应用 83
思考与练习 86
第4章 MCS-51程序设计 88
4.1 三种基本程序结构 88
4.1.1 顺序程序 88
4.1.2 分支程序 90
4.1.3 循环程序 92
4.2 子程序和参数传递方法 95
4.2.1 工作寄存器或累加器传递参数 96
4.2.2 用指针寄存器来传递参数 96
4.2.3 用堆栈来传递参数 96
4.2.4 程序段参数传递 99
4.3 查表程序设计 100
4.4 散转程序设计 101
4.4.1 用转移指令表实现散转 101
4.4.2 用转移地址表实现散转 103
4.5 实践训练 104
任务1:20个数的从小到大排序 104
任务2:数码管显示程序设计 106
思考与练习 107
第5章 单片机中断系统 109
5.1 中断概述 109
5.1.1 中断的概念 109
5.1.2 中断的特点 110
5.2 中断系统的结构与控制 111
5.2.1 中断系统的结构 111
5.2.2 中断系统控制 111
5.3 中断处理过程 114
5.3.1 中断系统的功能 114
5.3.2 中断处理 115
5.4 外部中断源的扩展 119
5.4.1 用定时器作外部中断源 119
5.4.2 中断和查询相结合 119
5.5 中断应用举例 120
5.6 实践训练 127
任务:工业顺序控制 127
思考与练习 129
第6章 定时器/计数器 131
6.1 定时器/计数器的基本概念 131
6.2 定时器/计数器的基本结构和工作原理 133
6.2.1 定时器/计数器的结构 133
6.2.2 定时器/计数器的工作原理 133
6.3 定时器/计数器的控制字 134
6.3.1 定时器/计数器的方式寄存器TMOD 134
6.3.2 控制寄存器TCON 135
6.4 定时器/计数器的4种工作方式及应用 135
6.4.1 工作方式0 135
6.4.2 工作方式1 136
6.4.3 工作方式2 136
6.4.4 工作方式3 137
6.5 定时器/计数器的初始化 138
6.5.1 定时器/计数器的初始化步骤 138
6.5.2 定时器/计数器的定时/计数范围和预置数的计算方法 138
6.6 定时器/计数器的应用举例 141
6.6.1 定时器的应用 141
6.6.2 计数器的应用 143
6.7 实践训练 144
任务:广告灯光左右移动 144
思考与练习 148
第7章 单片机串行接口 150
7.1 串行接口通信概述 150
7.1.1 串行通信基础及基本概念 150
7.1.2 MCS-51单片机串行口结构 152
7.1.3 串行接口的工作方式 154
7.1.4 MCS-51串行口的波特率 157
7.2 常用的串行通信总线 158
7.2.1 RS-232C总线 159
7.2.2 RS-449、RS-422A、RS-423A标准接口 161
7.2.3 20mA电流环路串行接口 162
7.3 MCS-51单片机之间的通信 163
7.3.1 MCS-51 单片机双机通信技术 163
7.3.2 MCS-51单片机多机通信 167
7.4 实践训练 170
任务:单片机与PC通信 170
思考与练习 173
第8章 Keil C51编译器的使用 175
8.1 Keil C51使用的一个实例 175
8.2 Keil C51的使用方法 176
8.2.1 KeilμVision2 IDE运行环境 176
8.2.2 项目文件的建立 178
8.2.3 项目添加程序的方法 180
8.2.4 编译、连接和形成目标文件 182
8.2.5 运行、调试 183
8.2.6 多文件的处理 183
8.2.7 仿真环境的设置 185
8.3 KeilC51的调试技巧 188
8.3.1 设置和删除断点 188
8.3.2 查看和修改寄存器的内容 188
8.3.3 观察和修改变量 188
8.3.4 观察存储器区域 189
8.3.5 并行口的使用 189
8.4 实践训练 190
任务:在Keil C51环境下单片机资源的应用 190
思考与练习 191
第9章 C51程序设计及应用 192
9.1 C51程序设计基础知识 192
9.1.1 C51特点 192
9.1.2 C51编程的例子 193
9.1.3 C51的标识符和保留字 195
9.1.4 C51的数据类型 195
9.1.5 C51的常量 198
9.1.6 变量 199
9.1.7 C51的常用运算符 203
9.1.8 C51的输入与输出 208
9.1.9 C51的基本语句 211
9.2 C51的函数与数组 217
9.2.1 函数的定义 218
9.2.2 函数的调用与声明 220
9.2.3 数组 222
9.3 实践训练 225
任务1:MCS-51 I/O字节操作应用 225
任务2:MCS-51I/O位操作应用 226
任务3:MCS-51定时器应用 227
任务4:MCS-51外部中断应用 228
任务5:MCS-51 串行口中断应用 229
任务6:MCS-51访问外部数据存储器的应用 230
思考与练习 231
第10章 MCS-51系统扩展及接口技术 233
10.1 单片机系统扩展概述 233
10.1.1 单片机应用系统扩展要求 233
10.1.2 单片机常用扩展芯片 233
10.2 存储器扩展 234
10.2.1 存储器扩展概述 234
10.2.2 程序存储器扩展 235
10.2.3 数据存储器的扩展 239
10.3 I/O口扩展设计 242
10.3.1 8255可编程并行接口芯片 242
10.3.2 8155可编程并行接口芯片 248
10.4 显示器接口扩展技术 254
10.5 键盘接口设计 256
10.5.1 键盘工作原理 257
10.5.2 键盘接口设计 257
10.6 模/数和数/模转换电路 261
10.6.1 D/A转换器与8031的接口设计 261
10.6.2 A/D转换器与8031的接口设计 264
10.7 实践训练 267
任务1:存储器扩展设计 267
任务2:输入/输出口扩展设计 270
任务3:A/D和D/A转换器电路接口设计 272
思考与练习 275
第11章 单片机应用系统设计 277
11.1 单片机应用系统的基本结构 277
11.1.1 单片机应用系统的结构 277
11.1.2 单片机应用系统设计的基本过程 278
11.2 单片机应用系统的硬件设计 280
11.2.1 硬件系统设计原则 280
11.2.2 硬件设计 281
11.3 单片机应用系统的软件设计 283
11.3.1 软件设计的特点 283
11.3.2 资源分配 284
11.3.3 单片机应用系统开发工具 285
11.4 单片机应用系统设计项目实践 285
项目1:单片机自动门锁设计 285
项目2:红外遥控系统设计 299
思考与练习 309
附录1 μVision2菜单项命令、工具栏图标、默认快捷键及描述 310
附录2 C51常用库函数 315
附录3 C51中的关键字 319
参考文献 321