第1章 单片机概述 1
1.1 概述 1
1.1.1 单片机的分类 1
1.1.2 单片机的发展趋势 2
1.1.3 单片机产品的应用 2
1.2 单片机设计语言的发展 3
1.3 MCS-51系列单片机的内部基本结构 5
1.4 MCS-51系列单片机的外部引脚说明 5
1.5 本章小结 7
第2章 单片机组成及存储器扩展 8
2.1 MCS-51系列单片机的硬件结构 8
2.2 MCS-51系列单片机的并行端口结构和操作 9
2.2.1 P0端口及其操作 10
2.2.2 P1端口及其操作 10
2.2.3 P2端口及其操作 11
2.2.4 P3端口及其操作 12
2.3 MCS-51系列单片机的存储器配置 13
2.3.1 程序存储器配置 13
2.3.2 数据存储器配置 14
2.3.3 特殊功能寄存器 16
2.4 存储器EPROM和RAM的综合扩展 20
2.4.1 程序存储器的扩展 21
2.4.2 数据存储器的扩展 24
2.5 MCS-51系列单片机的时钟电路与时序 26
2.5.1 时钟电路 26
2.5.2 单片机时序 27
2.6 MCS-51系列单片机的复位 29
2.6.1 复位的概念 29
2.6.2 单片机的复位电路 29
2.7 本章小结 30
第3章 MCS-51汇编语言指令系统及程序设计 31
3.1 概述 31
3.1.1 汇编语言指令格式与伪指令 31
3.1.2 指令的分类 33
3.1.3 指令中的常用符号 33
3.2 MCS-51系列单片机的寻址方式 34
3.2.1 立即寻址 34
3.2.2 直接寻址 35
3.2.3 寄存器寻址 35
3.2.4 寄存器间接寻址 35
3.2.5 变址寻址 35
3.2.6 相对寻址 36
3.2.7 位寻址 36
3.3 MCS-51系列单片机的指令系统 37
3.3.1 数据传送指令 37
3.3.2 算术运算指令 39
3.3.3 逻辑运算和移位指令 41
3.3.4 控制转移指令 42
3.3.5 位操作指令 45
3.4 汇编语言及程序设计 46
3.4.1 汇编语言程序设计的步骤 47
3.4.2 顺序程序设计 47
3.4.3 分支程序设计 49
3.4.4 循环程序设计 50
3.4.5 查表程序设计 55
3.4.6 子程序设计 57
3.5 程序设计举例 59
3.5.1 多字节算术运算程序 59
3.5.2 数制转换程序 60
3.5.3 散转程序 62
3.6 汇编语言的开发环境 64
3.6.1 单片机开发系统 64
3.6.2 汇编语言的编辑与汇编 65
3.6.3 汇编语言的调试 65
3.7 本章小结 66
第4章 单片机中断及定时/计数器 67
4.1 中断系统概述 67
4.1.1 中断的概念 67
4.1.2 中断的作用 67
4.2 MCS-51系列单片机中断系统的结构 67
4.3 中断源和中断控制寄存器 68
4.3.1 中断源 68
4.3.2 中断控制寄存器 69
4.4 MCS-51系列单片机的中断处理过程 71
4.4.1 中断请求 71
4.4.2 中断响应 71
4.4.3 执行中断服务程序 72
4.4.4 中断返回 72
4.4.5 中断响应等待时间 73
4.4.6 中断请求的撤除 73
4.4.7 中断优先控制和中断嵌套 73
4.4.8 中断系统的应用 73
4.5 MCS-51系列单片机的定时/计数器 74
4.5.1 定时/计数器概述 74
4.5.2 定时/计数器的控制寄存器 74
4.6 定时/计数器的工作方式 76
4.7 定时/计数器的应用 79
4.8 本章小结 83
第5章 单片机串行通信接口技术 84
5.1 串行通信基础 84
5.1.1 异步通信和同步通信 84
5.1.2 串行通信的数据传送方式 85
5.2 MCS-51系列单片机的串口结构 86
5.2.1 缓冲器SBUF 86
5.2.2 寄存器SCON 87
5.2.3 寄存器PCON 88
5.3 单片机串口工作方式 88
5.4 单片机间的点对点通信 90
5.4.1 硬件设计 90
5.4.2 系统软件设计 91
5.5 I2C总线通信 97
5.5.1 I2C总线的工作原理 97
5.5.2 I2C总线协议及其单片机实现 98
5.6 串行通信接口(SPI) 102
5.6.1 SPI的信号组成 103
5.6.2 SPI数据传输过程 104
5.6.3 DS1302时钟日历芯片 104
5.7 本章小结 108
第6章 单片机I/0接口技术 109
6.1 MCS-51系列单片机对非编码键盘的接口 109
6.1.1 键盘接口需要解决的问题 109
6.1.2 独立式按键 110
6.1.3 矩阵式按键 111
6.2 LED数码管接口 112
6.2.1 LED数码管的译码 113
6.2.2 LED数码管的显示方式 113
6.3 MCS.51系列单片机与液晶显示器的接口 117
6.3.1 指令格式与指令功能 118
6.3.2 LCD与单片机的接口与应用 120
6.4 MCS-51系列单片机与A-D、D-A电路的接口 123
6.4.1 D-A转换电路原理 123
6.4.2 DAC0832芯片的外部与内部特性 124
6.4.3 DAC0832的应用 125
6.4.4 A-D转换接口 125
6.4.5 ADC0809的内部结构与外部特性 126
6.4.6 MCS-51系列单片机配置ADC0809的硬件接口 127
6.5 MCS-51系列单片机与8155并行扩展接口 129
6.5.1 引脚说明 129
6.5.2 工作方式 131
6.5.3 定时/计数器 131
6.5.4 电路原理框图 132
6.5.5 软件编写 133
6.6 本章小结 133
第7章 单片机的C语言概述 134
7.1 C语言的特点 134
7.2 Cx51程序结构及开发过程 134
7.3 Cx51数据与运算 135
7.3.1 Cx51数据的存储类型与MCS-51存储结构 136
7.3.2 MCS-51特殊功能寄存器(SFR)的Cx51定义 137
7.3.3 MCS-51并行接口及Cx51定义 138
7.3.4 80C51位变量及Cx51定义 138
7.4 Cx51运算符、表达式及其规则 139
7.4.1 算术运算符 139
7.4.2 关系运算符及其表达式 139
7.4.3 逻辑运算符及其表达式 139
7.4.4 位运算及其表达式 139
7.4.5 自增减运算符、复合运算符及其表达式 139
7.4.6 复合的赋值运算符 139
7.5 C51程序基本结构 140
7.5.1 顺序结构 140
7.5.2 选择结构 140
7.5.3 循环结构 140
7.6 Cx51构造数据类型 142
7.6.1 数组和数组单元的基本概念 142
7.6.2 指针的基本概念 143
7.6.3 结构体 143
7.7 Cx51函数 144
7.7.1 函数的分类 144
7.7.2 函数的定义 145
7.7.3 函数的参数和函数值 145
7.7.4 函数的返回值及其类型 145
7.7.5 函数的调用 145
7.8 Keil软件简介 146
7.9 Keil软件的安装 146
7.10 Keil软件开发流程 151
7.10.1 创建项目文件 151
7.10.2 建立源代码文件 153
7.11 项目设置 156
7.12 软件调试工具 158
7.12.1 常用调试命令 159
7.12.2 在线汇编 161
7.12.3 断点设置 161
7.12.4 实例调试 162
7.13 软件调试窗口 163
7.14 Keil C51调试实例 168
7.15 本章小结 172
第8章 基于MCS-51系列单片机的应用实例 173
8.1 基于MCS-51系列单片机和DS1302芯片的电子实时时钟设计 173
8.1.1 硬件设计 173
8.1.2 程序框图设计 177
8.1.3 程序设计 178
8.2 基于MCS-51系列单片机和ADC的快速测温系统 199
8.2.1 硬件电路设计 199
8.2.2 程序框图设计 203
8.2.3 程序设计 203
8.3 基于MCS-51系列单片机的直流电动机控制 208
8.3.1 直流电动机的工作原理 208
8.3.2 PWM控制的基本原理 209
8.3.3 单片机控制直流电动机PWM驱动电路 210
8.4 基于MCS-51系列单片机的红外遥控开关系统设计 214
8.4.1 系统总体方案设计 215
8.4.2 系统软件设计 216
8.5 本章小结 224
参考文献 225