第1章 微型计算机与单片机基础知识 1
1.1 微型计算机与单片机的感性认识 1
1.2 计算机硬件的基本组成 1
1.3 微型计算机的硬件构成 2
1.3.1 微型计算机的硬件结构 2
1.3.2 微处理器(CPU) 2
1.3.3 存储器 4
1.3.4 输入/输出(I/O) 4
1.3.5 总线(BUS) 5
1.4 计算机中信息的表示 5
1.4.1 计算机中无符号整数的表示 5
1.4.2 计算机中有符号数的表示 6
1.4.3 十进制数的表示 8
1.4.4 计算机中字符的表示 9
1.5 单片机概述 10
1.5.1 单片机的典型硬件结构 10
1.5.2 单片机与微型计算机的比较 10
1.5.3 主要的单片机产品 11
1.5.4 单片机的应用领域 14
1.5.5 单片机的发展过程与趋势 15
习题 16
第2章 单片机的结构及工作原理 18
2.1 MCS-51系列单片机的内部结构 18
2.1.1 MCS-51单片机的基本组成 18
2.1.2 中央处理器(CPU) 19
2.1.3 存储器 20
2.1.4 I/O端口 21
2.2 8051单片机的存储器组织 24
2.2.1 存储器组织 24
2.2.2 程序存储器 25
2.2.3 数据存储器 27
2.3 51系列单片机的引脚及功能 31
2.3.1 51单片机的引脚分类 31
2.3.2 三总线结构 33
2.4 时钟电路与CPU时序 33
2.4.1 振荡器和时钟电路 33
2.4.2 CPU时序 33
2.5 单片机的工作方式 36
2.5.1 复位方式 36
2.5.2 程序执行方式 36
2.5.3 单步执行方式 37
2.5.4 掉电和节电方式 38
2.5.5 编程和校验方式 38
2.6 51系列单片机最小系统 39
习题 40
第3章 51单片机指令系统及汇编程序设计 41
3.1 指令系统概述 41
3.1.1 51单片机汇编指令格式 41
3.1.2 51单片机汇编指令常用符号 42
3.2 51单片机的寻址方式 42
3.2.1 立即寻址 42
3.2.2 寄存器寻址 43
3.2.3 直接寻址 43
3.2.4 寄存器间接寻址 43
3.2.5 变址寻址 44
3.2.6 指令寻址 45
3.2.7 位寻址 45
3.3 51单片机的指令系统 45
3.3.1 数据传送类指令 46
3.3.2 算术运算类指令 49
3.3.3 逻辑操作类指令 52
3.3.4 控制转移类指令 54
3.3.5 位操作类指令 57
3.4 51单片机汇编程序设计概述 59
3.4.1 51单片机汇编程序设计过程 60
3.4.2 51单片机汇编程序常用伪指令 60
3.5 51单片机常用汇编程序设计 63
3.5.1 数据传送程序 63
3.5.2 运算程序 64
3.5.3 代码转换程序 66
3.5.4 分支程序 67
3.5.5 延时程序 69
习题 69
第4章 51单片机C程序设计 71
4.1 C语言与51单片机 71
4.1.1 C语言的特点 71
4.1.2 C语言程序的结构 72
4.1.3 C51与标准C语言 73
4.2 C51的数据类型 73
4.2.1 char字符型 74
4.2.2 int整型 74
4.2.3 long长整型 74
4.2.4 float浮点型 75
4.2.5 指针型 75
4.2.6 特殊功能寄存器型 75
4.2.7 位类型 76
4.3 C51的变量与存储类型 76
4.3.1 C51的普通变量及定义 76
4.3.2 特殊功能寄存器变量 79
4.3.3 位变量 79
4.3.4 指针变量 80
4.4 绝对地址的访问 81
4.4.1 使用C51运行库中预定义宏 81
4.4.2 通过指针访问 82
4.4.3 使用C51扩展关键字at 83
4.5 C51中的函数 83
4.5.1 C51函数的参数传递 84
4.5.2 C51函数的返回值 84
4.5.3 C51函数的存储模式 85
4.5.4 C51的中断函数 85
4.5.5 C51函数的寄存器组 86
4.5.6 C51的重入函数 87
习题 87
第5章 51单片机中断系统 89
5.1 中断的基本概念 89
5.1.1 中断的概念 89
5.1.2 中断源及中断请求 90
5.1.3 中断优先权控制 90
5.1.4 中断允许与中断屏蔽 90
5.1.5 中断响应与中断返回 90
5.2 51单片机的中断系统 90
5.2.1 51单片机的中断系统总体结构 90
5.2.2 51单片机的中断源 90
5.2.3 两级中断允许控制 92
5.2.4 两级优先级控制 92
5.2.5 中断响应 94
5.3 51单片机中断系统的编程与应用 94
5.3.1 51单片机中断系统的编程 94
5.3.2 51单片机中断系统的应用 95
习题 99
第6章 51单片机定时/计数器 100
6.1 定时/计数器的结构及原理 100
6.1.1 主要特性 100
6.1.2 结构及工作原理 100
6.2 定时/计数器的方式和控制寄存器 101
6.2.1 方式寄存器TMOD 101
6.2.2 控制寄存器TCON 102
6.3 定时/计数器的工作方式 103
6.3.1 方式0——13位定时/计数器方式 103
6.3.2 方式1——16位定时/计数器方式 103
6.3.3 方式2——8位自动重置定时/计数器方式 104
6.3.4 方式3——两个8位定时/计数器方式 104
6.4 定时/计数器的初始化编程及应用 105
6.4.1 定时/计数器的初始化编程 105
6.4.2 定时/计数器的应用 105
习题 110
第7章 51单片机串行接口 111
7.1 通信的基本概念 111
7.1.1 并行通信和串行通信 111
7.1.2 串行通信的基本过程 112
7.1.3 串行通信的通信方式 113
7.1.4 波特率 114
7.2 51单片机串行口的功能与结构 114
7.2.1 串行口的功能 114
7.2.2 串行口的结构 114
7.2.3 串行口控制寄存器SCON 115
7.2.4 电源控制寄存器PCON 116
7.3 串行口的工作方式 117
7.3.1 方式0——同步移位寄存器方式 117
7.3.2 方式1——8位异步通信方式 117
7.3.3 方式2和方式3——9位异步通信方式 118
7.4 串行口的应用 118
7.4.1 利用方式0扩展并行I/O接口 118
7.4.2 利用方式1实现点对点的双机通信 122
习题 125
第8章 51系统扩展及接口技术 126
8.1 51单片机系统扩展概述 126
8.1.1 51单片机系统扩展方法 126
8.1.2 单片机常用扩展芯片 127
8.2 存储器扩展 130
8.2.1 程序存储器扩展 130
8.2.2 数据存储器的扩展 131
8.3 I/O口扩展设计 132
8.3.1 简单I/O口扩展 133
8.3.2 8255可编程并行接口芯片 134
8.4 显示器接口扩展技术 140
8.4.1 LED显示器及其接口 140
8.4.2 LCD显示器及其接口 147
8.5 键盘接口设计 153
8.5.1 键盘工作原理 153
8.5.2 键盘接口设计 156
8.6 D/A、A/D转换器与51单片机的接口 163
8.6.1 DAC0832与51单片机的接口 163
8.6.2 ADC0809与8051的接口 169
习题 175
第9章 单片机应用系统设计及举例 177
9.1 单片机应用系统开发过程 177
9.1.1 单片机应用系统开发的基本过程 177
9.1.2 单片机应用系统的硬件系统设计 178
9.1.3 单片机应用系统的软件设计 180
9.1.4 单片机应用系统开发工具 182
9.2 单片机电子时钟的设计 182
9.2.1 功能要求 182
9.2.2 总体方案设计 182
9.2.3 主要器件介绍 183
9.2.4 硬件电路设计 188
9.2.5 软件程序设计 189
9.3 单片机数显温度计的设计 203
9.3.1 功能要求 203
9.3.2 总体方案设计 203
9.3.3 主要器件介绍 204
9.34 硬件电路设计 208
9.3.5 系统软件程序设计 209
习题 219
第10章 Keil C51集成环境的使用 220
10.1 Keil C51简介 220
10.1.1 KeilμVision4IDE的安装 220
10.1.2 Keil μVision4IDE界面 220
10.2 KeilμVision4IDE的使用方法 225
10.2.1 建立项目文件 226
10.2.2 给项目添加程序文件 227
10.2.3 编译、连接项目,形成目标文件 229
10.2.4 运行调试观察结果 230
10.2.5 仿真环境的设置 230
习题 233
第11章 Proteus软件的使用 234
11.1 Proteus概述 234
11.1.1 Proteus的启动 234
11.1.2 Proteus的界面 235
11.2 Proteus的基本操作 237
11.2.1 新建电路,选择元件 237
11.2.2 放置元件,调整元件 239
11.2.3 连接导线 240
11.2.4 给单片机加载程序 243
11.2.5 运行仿真查看结果 243
习题 244
附录A 51系列单片机指令表 245
附录B C51的库函数 249