第1章 微机基础知识 1
1.1 计算机中负数的表示和运算 1
1.1.1 机器数 1
1.1.2 机器数的原码、反码和补码 2
1.1.3 补码加减运算 3
1.1.4 原码乘除运算 3
1.2 微机中的常用编码 4
1.2.1 ASCII码 4
1.2.2 非ASCII编码 5
1.2.3 BCD码 5
1.3 微机概述 6
1.3.1 微型计算机的发展 6
1.3.2 微型计算机的基本组成 6
1.3.3 微处理器的基本组成 7
1.3.4 微机系统的工作过程 8
1.3.5 8086微处理器介绍 9
1.4 单片微型计算机概述 11
1.4.1 单片机的发展过程及产品近况 11
1.4.2 单片机的特点及应用领域 13
1.4.3 单片机的供应状态 14
1.4.4 单片机应用系统开发过程 14
1.5 单片机仿真软件与实验板介绍 15
1.5.1 μVision集成开发环境简介 15
1.5.2 创建项目实例 17
1.5.3 Proteus软件介绍 18
1.5.4 单片机兴趣实验板设计与制作简介 25
本章小结 28
思考题及习题 29
第2章 微型计算机的存储器 30
2.1 微型计算机存储器概述 30
2.2 只读存储器 32
2.2.1 只读存储器的结构及分类 32
2.2.2 只读存储器典型产品举例 36
2.3 随机存取存储器 37
2.3.1 静态基本存储电路 39
2.3.2 动态基本存储电路 40
2.3.3 RAM芯片介绍 40
2.4 Flash存储器 42
2.4.1 Flash类型及应用 43
2.4.2 NOR和NAND Flash存储器的使用区别 44
2.4.3 闪存AT29LV040A芯片介绍 44
2.5 存储器的组成与扩展 45
2.5.1 存储器芯片的选择 46
2.5.2 存储器的扩展 46
本章小结 51
思考题及习题 52
第3章 80C51的结构和原理 53
3.1 80C51系列概述 53
3.1.1 MCS-51系列 53
3.1.2 80C51系列 53
3.1.3 80C51的应用模式 53
3.2 80C51典型产品资源配置与引脚 54
3.2.1 80C51典型产品资源配置 54
3.2.2 引脚信号 55
3.3 80C51系列单片机的结构 56
3.3.1 80C51单片机逻辑结构 56
3.3.2 80C51单片机内部结构 57
3.4 80C51内部数据存储器(内部RAM) 58
3.4.1 80C51的内部数据存储器 58
3.4.2 专用寄存器的位寻址 63
3.5 80C51内部程序存储器(内部ROM) 64
3.5.1 片内与片外程序存储器的选择 64
3.5.2 程序存储器的几个特殊单元 65
3.6 80C51单片机输入输出(I/O)口 66
3.6.1 P0口 66
3.6.2 P1口 67
3.6.3 P2口 67
3.6.4 P3口 68
3.7 单片机的工作方式 69
3.7.1 复位及复位电路 69
3.7.2 时钟电路和时序 69
3.7.3 单片机的低功耗方式 71
3.8 单片机执行指令的过程 72
本章小结 73
思考题及习题 74
第4章 80C51的指令系统 75
4.1 指令的基本格式及常用符号 75
4.1.1 指令的字节数 76
4.1.2 指令的执行时间 76
4.1.3 汇编语言的语句结构 76
4.2 80C51的寻址方式 77
4.2.1 立即寻址 77
4.2.2 直接寻址 77
4.2.3 寄存器寻址 78
4.2.4 寄存器间接寻址 79
4.2.5 变址寻址 79
4.2.6 相对寻址 79
4.2.7 位寻址 80
4.3 数据传送类指令 81
4.3.1 一般传送指令 81
4.3.2 特殊传送指令 83
4.4 算术运算类指令 86
4.4.1 不带进位加法指令及BCD码加法调整指令 86
4.4.2 带进位加法指令 88
4.4.3 加1指令 88
4.4.4 带借位减法指令 88
4.4.5 减1指令 89
4.4.6 乘、除法指令 89
4.5 逻辑运算类指令 90
4.5.1 逻辑与指令 90
4.5.2 逻辑或指令 91
4.5.3 逻辑异或指令 91
4.5.4 累加器清零及取反指令 91
4.5.5 移位指令 92
4.6 控制转移类指令 92
4.6.1 无条件转移指令 93
4.6.2 条件转移指令 94
4.6.3 调用及返回指令 96
4.7 布尔变量操作指令 97
4.7.1 位传送指令 98
4.7.2 位置位指令 98
4.7.3 位运算指令 98
4.7.4 位控制转移指令 99
本章小结 99
思考题及习题 100
第5章 80C51的汇编语言程序设计 102
5.1 程序编制的方法和技巧 102
5.1.1 程序编制的步骤 102
5.1.2 程序编制的方法和技巧 103
5.1.3 汇编语言的语句种类及指令格式 103
5.2 源程序的编辑和汇编 106
5.3 汇编语言程序设计和基本程序结构 107
5.3.1 顺序程序设计 107
5.3.2 分支程序 108
5.3.3 循环程序 111
5.3.4 子程序及其调用 112
5.4 常用程序举例 116
5.4.1 算术运算程序 116
5.4.2 代码转换 117
5.4.3 I/O操作 119
5.5 简单I/O设备的并口直接驱动示例 119
本章小结 120
思考题及习题 121
第6章 80C51的中断系统及定时/计数器 122
6.1 中断概述 122
6.2 中断处理过程 123
6.3 80C51的中断系统及其控制 125
6.4 80C51的中断源的扩展 133
6.5 80C51的定时/计数器及其应用 135
本章小结 146
思考题及习题 147
第7章 80C51单片机的串行口及串行总线扩展 148
7.1 串行通信基本知识 148
7.1.1 基本通信方式及特点 148
7.1.2 串行通信的数据传送方式 148
7.1.3 串行通信的分类 149
7.1.4 串行通信的波特率 150
7.2 80C51单片机的串行口 150
7.2.1 MCS-51单片机串行口的结构 150
7.2.2 MCS-51单片机串行口控制 151
7.3 80C51单片机的串行口应用 155
7.4 单片机的串行总线扩展 165
7.4.1 I2C总线接口及其扩展 165
7.4.2 SPI总线接口及其扩展 174
7.4.3 CAN总线 179
7.4.4 USB总线 182
7.4.5 单总线(1-Wire) 186
本章小结 188
习题与思考题 189
第8章 80C51单片机的系统扩展 190
8.1 I/O接口电路概述 190
8.2 I/O传送方式 190
8.2.1 无条件传送方式 190
8.2.2 查询传送方式 191
8.2.3 中断传送方式 192
8.2.4 直接存储器(DMA)存取方式 192
8.3 存储器扩展 193
8.3.1 系统扩展总线及扩展芯片的寻址方式 193
8.3.2 程序存储器扩展 194
8.3.3 数据存储器扩展 201
8.4 80C51单片机简单输入/输出口扩展 203
8.5 81C55接口芯片及其应用 205
8.6 单片机显示、键盘系统 210
8.6.1 LED数码管显示接口 210
8.6.2 LCD液晶显示接口 218
8.6.3 键盘接口 227
8.6.4 8279可编程键盘显示接口芯片简介 233
本章小结 233
思考题及习题 234
第9章 80C51单片机的模拟量接口 236
9.1 并行D/A转换器与单片机的接口 236
9.1.1 D/A转换原理 236
9.1.2 DAC主要性能指标 237
9.1.3 8位D/A转换器DAC0832及与单片机接口 238
9.2 并行A/D转换器与单片机的接口 243
9.2.1 A/D转换的技术指标 243
9.2.2 A/D转换原理 244
9.2.3 8位A/D转换器ADC0809及与单片机接口 245
9.2.4 12位A/D转换器AD1674及与单片机接口 248
9.3 串行A/D、D/A转换器与单片机的接口 252
9.3.1 串行A/D、D/A转换器PCF8591介绍 252
9.3.2 工作原理 254
9.3.3 80C51与PCF8591的接口设计 255
本章小结 256
思考题及习题 257
第10章 80C51单片机的C语言程序设计 258
10.1 单片机C语言概述 258
10.1.1 C51的程序结构 258
10.1.2 C51编译器介绍 258
10.1.3 C51的特点 258
10.2 C51的数据类型 259
10.2.1 C51的数据类型 259
10.2.2 C51数据的存储类型 260
10.2.3 8051单片机特殊功能寄存器的C51定义 261
10.3 C51的运算符和表达式 262
10.3.1 赋值运算符 262
10.3.2 算术运算符 263
10.3.3 关系运算符 263
10.3.4 逻辑运算符 264
10.3.5 位运算符 264
10.3.6 其他运算符 265
10.4 C51流程控制语句 267
10.4.1 条件语句 267
10.4.2 循环语句 268
10.4.3 开关语句 269
10.4.4 break、continue和goto语句 269
10.5 C51的构造数据类型 270
10.5.1 数组 270
10.5.2 指针 271
10.5.3 结构 273
10.5.4 枚举 273
10.6 C51的函数 274
10.6.1 C51函数定义 275
10.6.2 C51函数调用 275
10.6.3 混合编程简介 276
10.6.4 混合编程形式举例 277
10.6.5 C51库函数 279
10.7 C51编程实例 279
10.7.1 中断服务函数编程 279
10.7.2 串行口编程 281
10.7.3 LCD接口编程 283
10.7.4 D/A转换接口编程 286
10.7.5 A/D转换接口编程 288
本章小结 289
思考题及习题 289
第11章 80C51应用系统设计方法 290
11.1 单片机应用设计过程 290
11.1.1 确定系统的功能与性能 290
11.1.2 确定系统基本结构 291
11.1.3 单片机应用系统硬件、软件的设计原则 292
11.1.4 硬件设计 293
11.1.5 软件设计 294
11.1.6 资源分配 294
11.1.7 单片机应用系统的开发 295
11.2 提高系统可靠性的一般方法 297
11.2.1 电源干扰及其抑制 297
11.2.2 地线干扰及其抑制 298
11.2.3 其他提高系统可靠性的方法 298
11.3 设计与制作实例 305
11.3.1 单片机兴趣实验板设计与制作 305
11.3.2 新型单片机接口技术实验系统设计与制作 307
11.3.3 用DS18B20温度传感器进行温度测量 314
11.3.4 Flash存储器扩展设计与制作 317
11.3.5 GSM通信接口扩展设计 325
本章小结 336
思考题及习题 336
第12章 8086CPU及Intel微机系统 337
12.1 80X86微处理器概述 337
12.1.1 微处理器发展简介 337
12.1.2 微处理器的结构 337
12.1.3 8086的存储器分段组织 339
12.1.4 8086的引脚功能 341
12.1.5 8086的两种系统组态 342
12.1.6 8086的总线周期 344
12.1.7 8086的指令系统 344
12.1.8 汇编语言程序设计 346
12.2 基于微处理器的计算机系统构成与扩展 350
12.2.1 微型计算机系统的构成 350
12.2.2 8086系统扩展 351
12.3 总线技术 356
12.3.1 总线概述 356
12.3.2 总线规范及主要性能指标 356
12.3.3 常用的系统总线 357
12.3.4 基于ISA总线的测控系统接口应用 359
12.3.5 基于PCI总线的测控系统应用 364
12.4 微处理器技术的发展 367
12.4.1 Intel微处理器技术的发展 367
12.4.2 嵌入式微处理器技术的发展 369
本章小结 371
思考题及习题 371
附录A 89C51单片机指令按序排列表 372
附录B MCS-51汇编指令-机器码对照表 375
参考文献 377