第1章 微机基础知识 1
1.1 计算机中负数的表示和运算 1
1.1.1 机器数 1
1.1.2 机器数的原码、反码和补码 1
1.1.3 补码加减运算 2
1.1.4 原码乘除运算 3
1.2 微机中的常用编码 3
1.2.1 ASCII码 3
1.2.2 非ASCII编码 4
1.2.3 BCD码 4
1.3 微机概述 5
1.3.1 微型计算机的发展 5
1.3.2 微型计算机的基本组成 5
1.3.3 微处理器的基本组成 6
1.3.4 微机系统的程序存储与控制 6
1.4 单片微型计算机概述 6
1.4.1 单片机的发展过程及产品近况 7
1.4.2 单片机的特点及应用领域 7
1.4.3 单片机的供应状态 8
1.5 单片机应用的开发仿真工具 9
1.5.1 Keil C51μ Vision集成开发环境简介 9
1.5.2 Proteus Design Suite软件介绍 15
本章小结 23
思考题及习题 23
第2章 微型计算机的存储器 24
2.1 微型计算机存储器概述 24
2.2 只读存储器 26
2.2.1 只读存储器的结构及分类 26
2.2.2 只读存储器典型产品举例 29
2.3 随机存储器 30
2.3.1 静态基本存储电路 32
2.3.2 动态基本存储电路 33
2.3.3 RAM芯片介绍 33
2.4 Flash存储器 34
2.4.1 Flash类型及应用 34
2.4.2 NOR和NAND Flash存储器的使用区别 35
2.4.3 闪存AT29LV040A芯片介绍 36
2.5 存储器的组成与扩展 37
2.5.1 存储器芯片的选择 37
2.5.2 存储器的扩展 38
本章小结 41
思考题及习题 42
第3章 80C51的结构和原理 43
3.1 80C51系列概述 43
3.1.1 MCS-51系列 43
3.1.2 80C51系列 43
3.1.3 80C51的应用模式 43
3.2 80C51典型产品资源配置与引脚 44
3.2.1 80C51典型产品资源配置 44
3.2.2 引脚信号 45
3.3 80C51系列单片机的结构 46
3.3.1 80C51单片机逻辑结构 46
3.3.2 80C51单片机内部结构 46
3.4 80C51内部数据存储器(内部RAM) 48
3.4.1 80C51的内部数据存储器 48
3.4.2 专用寄存器的位寻址 53
3.5 80C51内部程序存储器(内部ROM) 53
3.5.1 片内与片外程序存储器的选择 54
3.5.2 程序存储器的几个特殊单元 55
3.6 80C51单片机输入/输出(I/O)口 55
3.6.1 P0口 55
3.6.2 P1口 56
3.6.3 P2口 56
3.6.4 P3口 57
3.7 单片机的工作方式 58
3.7.1 复位及复位电路 58
3.7.2 时钟电路和时序 58
3.7.3 单片机的低功耗方式 60
3.8 单片机执行指令的过程 61
本章小结 62
思考题及习题 62
第4章 80C51的指令系统 64
4.1 指令的基本格式及常用符号 64
4.1.1 指令的字节数 65
4.1.2 指令的执行时间 65
4.1.3 汇编语言的语句结构 65
4.2 80C51的寻址方式 66
4.2.1 立即寻址 66
4.2.2 直接寻址 66
4.2.3 寄存器寻址 67
4.2.4 寄存器间接寻址 67
4.2.5 变址寻址 68
4.2.6 相对寻址 68
4.2.7 位寻址 69
4.3 数据传送类指令 70
4.3.1 一般传送指令 70
4.3.2 特殊传送指令 72
4.4 算术运算类指令 74
4.4.1 不带进位加法指令及BCD码加法调整指令 75
4.4.2 带进位加法指令 77
4.4.3 加1指令 77
4.4.4 带借位减法指令 77
4.4.5 减1指令 78
4.4.6 乘、除法指令 78
4.5 逻辑运算类指令 78
4.5.1 逻辑与指令 79
4.5.2 逻辑或指令 79
4.5.3 逻辑异或指令 80
4.5.4 累加器清零及取反指令 80
4.5.5 移位指令 80
4.6 控制转移类指令 81
4.6.1 无条件转移指令 82
4.6.2 条件转移指令 83
4.6.3 调用及返回指令 84
4.7 布尔变量操作指令 85
4.7.1 位传送指令 86
4.7.2 位置位指令 86
4.7.3 位运算指令 87
4.7.4 位控制转移指令 87
本章小结 88
思考题及习题 88
第5章 80C51的汇编语言程序设计 91
5.1 程序编制的方法和技巧 91
5.1.1 程序编制的步骤 91
5.1.2 程序编制的方法和技巧 92
5.1.3 汇编语言的语句种类及指令格式 92
5.2 源程序的编辑和汇编 94
5.3 汇编语言程序设计和基本程序结构 95
5.3.1 顺序程序设计 95
5.3.2 分支程序 95
5.3.3 循环程序 99
5.3.4 子程序及其调用 100
5.4 常用程序举例 105
5.4.1 算术运算程序 105
5.4.2 代码转换 106
5.4.3 I/O操作 108
5.5 简单I/O设备的并口直接驱动示例 109
本章小结 111
思考题及习题 112
第6章 51单片机的C语言程序设计 113
6.1 单片机C语言概述 113
6.1.1 C51的程序结构 113
6.1.2 C51编译器介绍 113
6.1.3 C51语言和汇编语言的关系 113
6.2 C51的数据类型 114
6.2.1 C51的数据类型 114
6.2.2 C51数据的存储类型 115
6.2.3 8051单片机特殊功能寄存器的C51定义 116
6.3 C51的运算符和表达式 116
6.3.1 赋值运算符 116
6.3.2 算术运算符 117
6.3.3 关系运算符 117
6.3.4 逻辑运算符 118
6.3.5 位运算符 118
6.3.6 其他运算符 118
6.4 C51流程控制语句 121
6.4.1 条件语句 121
6.4.2 循环语句 122
6.4.3 开关语句 123
6.4.4 break、 continue和goto语句 123
6.5 C51的构造数据类型 124
6.5.1 数组 124
6.5.2 指针 125
6.5.3 结构 127
6.5.4 枚举 128
6.6 C51的函数 128
6.6.1 C51函数定义 129
6.6.2 C51函数调用 130
6.6.3 混合编程简介 130
6.6.4 混合编程形式 132
6.6.5 C51库函数 133
6.7 C51中断编程实例 133
6.8 C51实例仿真介绍 134
6.8.1 C51仿真实例 134
6.8.2 混合编程实例 135
本章小结 136
思考题及习题 137
第7章 80C51的中断系统及定时/计数器 138
7.1 中断概述 138
7.2 中断处理过程 139
7.3 80C51的中断系统及其控制 141
7.4 80C51中断源的扩展 147
7.5 80C51的定时/计数器及其应用 148
本章小结 164
思考题及习题 164
第8章 80C51单片机的串行口及串行总线扩展 166
8.1 串行通信基本知识 166
8.1.1 基本通信方式及特点 166
8.1.2 串行通信的数据传送方式 166
8.1.3 串行通信的分类 167
8.1.4 串行通信的波特率、比特率 168
8.2 80C51单片机的串行口 168
8.2.1 MCS-51单片机串行口的结构 168
8.2.2 MCS-51单片机串行口控制 169
8.3 80C51单片机的串行口应用 175
8.4 单片机的串行总线扩展 184
8.4.1 I2C总线接口及其扩展 184
8.4.2 SPI总线接口及其扩展 193
8.4.3 CAN总线 196
8.4.4 USB总线 197
8.4.5 单总线(1-Wire) 198
本章小结 199
习题及思考题 199
第9章 80C51单片机的系统扩展 201
9.1 I/O接口电路概述 201
9.2 I/O传送方式 201
9.2.1 无条件传送方式 201
9.2.2 查询传送方式 202
9.2.3 中断传送方式 202
9.2.4 直接存储器(DMA)存取方式 202
9.3 存储器扩展及时序 202
9.3.1 系统扩展总线及扩展芯片的寻址方式 203
9.3.2 程序存储器扩展 203
9.3.3 数据存储器扩展 206
9.3.4 简单I/O口扩展 208
9.4 可编程I/O扩展接口芯片81C55及其应用 210
9.5 可编程并行接口芯片82C55及其应用 214
9.6 单片机显示、键盘系统 219
9.6.1 LED数码管显示接口 219
9.6.2 LCD液晶显示接口 226
9.6.3 键盘接口 232
本章小结 237
思考题及习题 237
第10章 80C51单片机的模拟量接口 239
10.1 并行D/A转换器与单片机的接口 239
10.1.1 D/A转换原理 239
10.1.2 DAC主要性能指标 240
10.1.3 8位D/A转换器DAC0832及与单片机接口 241
10.1.4 12位D/A转换器DAC 1208及与单片机接口 244
10.2 并行A/D转换器与单片机的接口 246
10.2.1 A/D转换的技术指标 246
10.2.2 A/D转换原理 247
10.2.3 8位A/D转换器ADC0809及与单片机接口 247
10.2.4 12位A/D转换器AD 1674及与单片机接口 251
10.3 串行A/D转换器与单片机的接口 253
10.3.1 串行A/D转换器HX711介绍 254
10.3.2 工作原理 255
10.3.3 80C51和HX711的接口设计 256
本章小结 257
思考题及习题 257
第11章 80C51应用系统设计方法 259
11.1 单片机应用设计过程 259
11.1.1 确定系统的功能与性能 259
11.1.2 确定系统基本结构 259
11.1.3 单片机应用系统硬件、软件的设计原则 260
11.1.4 硬件设计 261
11.1.5 软件设计 262
11.1.6 资源分配 262
11.1.7 单片机应用系统的开发 262
11.2 提高系统可靠性的一般方法 263
11.2.1 电源干扰及其抑制 264
11.2.2 地线干扰及其抑制 264
11.2.3 其他提高系统可靠性的方法 265
11.3 设计与制作实例 270
11.3.1 单片机兴趣实验板设计与制作 270
11.3.2 用DS18B20温度传感器进行温度测量 272
11.3.3 电子密码锁设计 273
本章小结 277
思考题及习题 277
第12章 微处理器及微机系统 278
12.1 微处理器概述 278
12.1.1 微处理器发展简介 278
12.1.2 微处理器的结构 278
12.1.3 8086的内部寄存器结构 279
12.1.4 8086存储空间管理 280
12.1.5 8086的引脚功能 282
12.1.6 8086的两种工作模式 283
12.1.7 8086的总线周期 284
12.1.8 8086的指令系统 285
12.1.9 汇编语言程序设计 287
12.2 微处理器系统构成与扩展 290
12.2.1 微型计算机系统的构成 290
12.2.2 8086系统扩展 291
12.3 总线技术 296
12.3.1 总线概述 296
12.3.2 总线规范及主要性能指标 296
12.3.3 常用的系统总线 296
12.4 计算机发展现状 297
12.4.1 台式计算机及其接口 297
12.4.2 便携式计算机 302
12.4.3 超级计算机 303
本章小结 304
思考题及习题 305
附录A 89C51单片机指令按序排列表 306
附录B MCS-51汇编指令-机器码对照表 309
参考文献 311