第1章 MCS-51系列单片机的起源和发展 1
1.1 MCS-51系列单片机的起源 2
1.1.1 单片机的诞生 2
1.1.2 单片机的历史 2
1.1.3 MCS-51单片机的历史 3
1.1.4 MCS-51系列单片机的特点 4
1.2 MCS-51系列单片机的发展现况 5
1.2.1 概述 5
1.2.2 最新51系列单片机介绍 6
1.3 小结 12
第2章 开发一个51系列单片机项目需要的资源 14
2.1 基础知识的学习 15
2.1.1 单片机基础知识 15
2.1.2 汇编语言 15
2.1.3 C语言 16
2.1.4 模拟电路和数字电路 16
2.2 硬件资源 17
2.2.1 单片机试验电路板 17
2.2.2 仿真器 17
2.2.3 仿真器的选择和安装 19
2.2.4 编程器(烧录器) 20
2.3 软件开发环境 21
2.3.1 软件编辑环境 21
2.3.2 KEIL软件的安装 21
2.3.3 KEIL软件的使用方法 22
2.4 单片机型号的选择 22
2.5 51单片机下载线的制作 23
2.5.1 硬件调试 24
2.5.2 使用方法 24
2.6 MON51仿真器的制作 25
2.6.1 原理图 25
2.6.2 Mon51硬件调试 26
2.6.3 软件调试 27
2.7 小结 27
第3章 单片机项目的开发流程和需要遵守的规范 28
3.1 单片机项目开发流程介绍 29
3.2 原理图设计规范 30
3.3 PCB图设计规范 31
3.4 汇编语言设计规范 32
3.5 C51语言设计规范 34
3.6 小结 38
第4章 51单片机的基本结构 39
4.1 单片机的基本结构 40
4.1.1 中央处理器(CPU) 41
4.1.2 存储器 43
4.1.3 定时器/计数器 45
4.1.4 中断控制系统 45
4.1.5 串行口、并行口 46
4.1.6 总线(BUS) 46
4.1.7 时钟电路 47
4.2 二进制、十进制、十六进制 47
4.3 哈佛结构与冯诺伊曼结构 48
4.3.1 哈佛结构 48
4.3.2 冯诺伊曼结构 49
4.4 单片机的指令系统 50
4.4.1 指令系统 50
4.4.2 寻址方式 51
4.4.3 程序的执行过程 52
4.5 复杂指令集与精简指令集 52
4.5.1 基本概念 52
4.5.2 复杂指令集与精简指令集的特点 52
4.6 小结 53
第5章 51系列单片机指令系统 54
5.1 指令和指令格式 55
5.2 寻址模式 56
5.2.1 直接寻址 56
5.2.2 寄存器寻址 57
5.2.3 寄存器间接寻址 57
5.2.4 立即寻址 57
5.2.5 变址寻址 58
5.2.6 位寻址 58
5.2.7 相对寻址 58
5.3 数据传送指令 58
5.4 算术运算指令 60
5.5 逻辑运算及移位指令 63
5.6 控制转移指令 64
5.7 布尔变量操作指令 66
5.8 小结 67
第6章 汇编语言编程 68
6.1 什么是宏汇编器(Macro Assembler) 69
6.2 汇编语言的开发环境 69
6.3 汇编语言的汇编过程 70
6.3.1 源文件(.ASM) 70
6.3.2 目标代码文件(.HEX) 70
6.3.3 列表输出文件(.LST) 70
6.3.4 汇编处理过程 71
6.3.5 常见的编译错误 72
6.4 51单片机汇编语言指令与伪指令 72
6.4.1 常用单位与术语 72
6.4.2 常量与数值运算 72
6.4.3 汇编语言指令 74
6.4.4 汇编语言伪指令 74
6.5 用汇编语言设计程序的步骤 79
6.5.1 汇编语言程序设计的步骤 79
6.5.2 编制程序流程图 79
6.6 程序设计结构 80
6.6.1 主程序和子程序 80
6.6.2 顺序程序设计 81
6.6.3 分支结构程序设计 82
6.6.4 循环结构程序设计 83
6.6.5 查表程序设计 86
6.6.6 子程序设计 88
6.7 程序设计举例 90
6.7.1 多字节算术运算程序 90
6.7.2 数制转换程序 91
6.7.3 多分支程序 93
6.8 小结 95
第7章 单片机C51语言编程 96
7.1 单片机C51语言概述 97
7.1.1 单片机C51语言的起源和发展 97
7.1.2 C51语言编程的优点 97
7.2 C51关键字和标识符 98
7.3 C51语言的数据类型 99
7.3.1 基本数据类型 99
7.3.2 构造型数据类型 101
7.4 常量、变量和指针 105
7.4.1 常量 105
7.4.2 变量 106
7.4.3 指针 108
7.4.4 存储类型和存储模式 109
7.5 C51的基本运算 112
7.5.1 C51的赋值运算 112
7.5.2 C51的算术运算 113
7.5.3 关系运算符 114
7.5.4 逻辑运算符 115
7.5.5 位运算符 116
7.6 函数 116
C51的库函数 121
7.7 程序结构 122
7.7.1 顺序控制结构 123
7.7.2 选择控制语句 123
7.7.3 循环语句 124
7.7.4 C51语言编程实例 127
7.8 C51语言与汇编语言混合编程 128
7.8.1 在C51语言函数中嵌入汇编语言 128
7.8.2 在C51项目中加入汇编语言文件 129
7.9 一个简单的C语言项目的实施 131
7.10 小结 135
第8章 一些简单的实例 136
8.1 建立一个单片机小系统 137
8.1.1 原理图设计 137
8.1.2 制作电路 139
8.1.3 调试 140
8.2 利用单片机的I/O口控制LED 140
8.2.1 原理图设计 140
8.2.2 制作电路 141
8.2.3 设计程序 141
8.2.4 仿真和调试 143
8.3 利用定时器控制LED闪烁 143
8.3.1 原理图设计 143
8.3.2 制作电路 143
8.3.3 设计程序 143
8.3.4 仿真和调试 145
8.4 控制蜂鸣器发声 145
8.4.1 工作原理 145
8.4.2 原理图设计 146
8.4.3 制作电路 146
8.4.4 程序设计 146
8.4.5 仿真调试 148
8.5 用一个按键控制LED闪烁 148
8.5.1 工作原理 148
8.5.2 原理图设计 148
8.5.3 制作电路 149
8.5.4 程序设计 149
8.5.5 仿真调试 152
8.6 制作LED数码管显示 152
8.6.1 LED数码管结构 152
8.6.2 工作原理 153
8.6.3 原理图设计 153
8.6.4 制作电路 154
8.6.5 程序设计 155
8.6.6 仿真调试 157
8.7 设计一个键盘 158
8.7.1 键盘工作原理 158
8.7.2 原理图设计 159
8.7.3 制作电路 161
8.7.4 程序设计 161
8.7.5 仿真调试 164
8.8 看门狗电路的设计 165
8.8.1 工作原理 165
8.8.2 原理图设计 166
8.8.3 制作电路 168
8.8.4 程序设计 168
8.8.5 仿真调试 171
8.9 小结 172
第9章 51单片机电源系统的设计 173
9.1 开关稳压电源和线性稳压电源的基本知识 174
9.2 线性稳压电源工作原理 174
9.2.1 串联反馈型稳压电源的工作过程 174
9.2.2 稳压电路的保护环节 175
9.3 开关稳压电源工作原理 176
9.3.1 开关电源的起源和发展趋势 176
9.3.2 开关电源的分类 177
9.3.3 开关电源的工作原理 178
9.3.4 开关电源的选用 185
9.4 常用电源转换芯片介绍 186
9.4.1 三端集成稳压器 186
9.4.2 低压差线性稳压器(LDO)的原理与应用 188
9.4.3 常用DC/DC开关稳压电源芯片的选择 191
9.5 设计一个简单的线性电源单片机供电系统 193
常用的三端集成稳压电源 193
9.6 DC/DC开关电源单片机供电系统的设计 194
9.6.1 工作原理 194
9.6.2 基本应用设计 195
9.7 用MC34063设计开关电源 198
9.7.1 MC34063性能简介 198
9.7.2 MC34063降压变换器电路 199
9.7.3 MC34063升压变换器电路 199
9.7.4 MC34063大电流降压变换器电路 200
9.7.5 MC34063大电流升压变换器电路 200
9.7.6 MC34063反向变换电路 201
9.8 小结 201
第10章 51单片机通信接口实例 202
10.1 单片机常用总线简述 203
10.1.1 芯片级总线 203
10.1.2 设备级总线 204
10.2 单片机系统数据的并行传送方式与串行传送方式 207
10.3 单片机系统和计算机之间实现串行通信 207
10.3.1 RS232串行通信工作原理 207
10.3.2 MCS-51系列单片机的串行口和控制寄存器 209
10.3.3 原理图设计 210
10.3.4 制作电路 212
10.3.5 程序设计 213
10.3.6 仿真调试 216
10.4 实现与其他器件间的I2C通信 216
10.4.1 I2C协议 216
10.4.2 原理图设计 220
10.4.3 制作电路 221
10.4.4 程序设计 221
10.4.5 仿真调试 228
10.5 添加一个实时时钟 229
10.5.1 工作原理 229
10.5.2 原理图设计 231
10.5.3 制作电路 232
10.5.4 程序设计 233
10.6 液晶显示模块接口实例 238
10.6.1 液晶显示模块简介 238
10.6.2 原理图设计 243
10.6.3 制作电路 243
10.6.4 程序设计 243
10.6.5 仿真调试 251
10.7 小结 251
第11章 51系列单片机的系统扩展 252
11.1 单片机系统扩展原理 253
11.1.1 为什么扩展系统 253
11.1.2 单片机系统扩展原理 253
11.1.3 程序存储器芯片的选择 257
11.1.4 数据存储器芯片的选择 259
11.1.5 扩展系统I/O接口 260
11.2 存储器系统扩展系统实例 260
11.2.1 扩展系统程序存储器 260
11.2.2 用SRAM扩展数据存储器举例 262
11.2.3 同时扩展数据存储器和程序存储器 264
11.2.4 并行接口Flash存储器扩展实例 265
11.2.5 串行接口Flash存储器扩展实例 274
11.3 系统扩展I/O口实例 278
11.3.1 利用译码器扩展I/O口 278
11.3.2 利用并口扩展芯片8255扩展I/O口 280
11.3.3 8155扩展并行I/O接口 282
11.3.4 利用串并位移寄存器芯片扩展I/O口 286
11.3.5 利用I2C接口扩展I/O口 289
11.4 小结 291
第12章 信号转换接口 292
12.1 单片机与A/D转换接口 293
12.1.1 A/D转换原理 293
12.1.2 A/D转换器的主要技术指标 294
12.1.3 A/D转换器的分类 295
12.1.4 A/D转换器的选择原则 298
12.2 A/D转换设计实例 299
12.2.1 ADC0809介绍 299
12.2.2 原理图设计 300
12.2.3 制作电路 301
12.2.4 程序设计 301
12.2.5 仿真调试 306
12.3 D/A转换原理 306
12.3.1 D/A转换原理 306
12.3.2 D/A转换器的主要技术指标 307
12.3.3 D/A转换器的分类 308
12.3.4 D/A转换器的选择 309
12.4 D/A转换设计实例 310
12.4.1 DAC0832芯片介绍 310
12.4.2 原理图设计 311
12.4.3 制作电路 312
12.4.4 程序设计 312
12.4.5 仿真调试 314
12.5 实现PWM控制 314
12.5.1 PWM原理 314
12.5.2 PWM的实现和应用 314
12.5.3 程序设计 315
12.6 小结 317
第13章 单片机综合实例 318
13.1 用DS18B20实现的温控加热模块 319
13.1.1 DS18B20性能简介 319
13.1.2 DS18B20时序及工作过程 322
13.1.3 原理图设计 324
13.1.4 程序设计 326
13.1.5 仿真调试 332
13.2 直流电动机控制 333
13.2.1 C8051F300简介 333
13.2.2 原理图设计 334
13.2.3 程序设计 335
13.2.4 仿真调试 340
13.3 数据采集仪设计实例 340
13.3.1 C8051F020介绍 340
13.3.2 CP2102简介 342
13.3.3 原理图设计 343
13.3.4 程序设计 345
13.4 小结 365
附录A 80C51单片机指令速查表 366
附录B ASIIC码表 370