第1章 绪论 1
1.1 单片机的基本概念及发展概况 1
1.1.1 单片机的基本概念 1
1.1.2 单片机的发展历史 2
1.1.3 单片机的发展趋势 3
1.2 单片机的特点及应用领域 4
1.2.1 单片机的特点 4
1.2.2 单片机的应用领域 5
1.3 单片机产品 6
1.3.1 常用单片机产品系列及性能简介 6
1.3.2 MCS-51系列单片机分类 8
1.3.3 AT89系列单片机分类 10
1.3.4 其他公司的51系列单片机 11
1.4 习题 11
第2章 单片机的硬件结构 12
2.1 MCS-51系列单片机的主要功能特点和内部结构 12
2.1.1 MCS-51系列单片机的主要功能特点 12
2.1.2 MCS-51系列单片机的内部结构 13
2.2 MCS-51系列单片机的引脚功能与I/O口 14
2.2.1 电源引脚 15
2.2.2 时钟部分 16
2.2.3 控制引脚 17
2.2.4 I/O口 18
2.3 MCS-51系列单片机的存储器结构 22
2.3.1 程序存储器 23
2.3.2 数据存储器 24
2.4 MCS-51系列单片机的CPU时序 29
2.4.1 时钟周期、机器周期和指令周期 29
2.4.2 典型指令的取指和执行时序 29
2.5 MCS-51系列单片机的低功耗运行方式 31
2.5.1 HMOS型单片机的掉电运行方式 31
2.5.2 CHMOS型单片机的掉电运行方式与待机方式 31
2.6 习题 32
第3章 汇编语言 34
3.1 MCS-51系列单片机的指令格式及标识 34
3.2 MCS-51系列单片机的寻址方式 35
3.2.1 寄存器寻址 35
3.2.2 直接寻址 36
3.2.3 立即寻址 36
3.2.4 寄存器间接寻址 36
3.2.5 变址寻址 37
3.2.6 相对寻址 37
3.2.7 位寻址 37
3.3 MCS-51系列单片机的指令系统 38
3.3.1 数据传送指令 38
3.3.2 算术运算指令 40
3.3.3 逻辑运算指令 42
3.3.4 控制转移指令 44
3.3.5 位操作指令 46
3.4 汇编语言程序设计 47
3.4.1 程序设计简介 47
3.4.2 伪指令 49
3.4.3 简单程序设计 50
3.4.4 分支程序设计 51
3.4.5 循环程序设计 56
3.4.6 查表程序设计 61
3.4.7 子程序设计 62
3.5 应用实例:数据排序 65
3.6 习题 67
第4章 C51简介 71
4.1 C51程序设计基础 71
4.1.1 C51基础知识 73
4.1.2 C51数据类型 74
4.1.3 C51常量与变量 76
4.1.4 C51存储模式与绝对地址访问 80
4.1.5 C51常用运算符 83
4.1.6 C51表达式语句与复合语句 86
4.2 C51基本结构和语句 87
4.2.1 C51基本结构 87
4.2.2 if语句 88
4.2.3 switch/case语句 89
4.2.4 while语句 90
4.2.5 do-while语句 90
4.2.6 for语句 91
4.2.7 循环的嵌套 92
4.2.8 break和continue语句 93
4.2.9 return语句 93
4.3 C51构造数据类型 94
4.3.1 数组 94
4.3.2 指针 96
4.3.3 结构 99
4.3.4 联合 102
4.3.5 枚举 104
4.4 C51函数 105
4.4.1 函数的分类和定义 105
4.4.2 函数的参数和函数值 108
4.4.3 函数的调用与声明 110
4.4.4 函数的嵌套与递归 112
4.5 编程举例 114
4.5.1 用C语言实现I/O编程 116
4.5.2 用C语言实现逻辑运算 123
4.5.3 用C语言实现数据转换 125
4.5.4 用C语言实现存取数据空间 126
4.5.5 用C语言实现存取代码空间 128
4.5.6 用C语言实现数据串行化 129
4.6 应用实例:简单矩阵运算 132
4.7 习题 134
第5章 中断系统 136
5.1 中断源、中断标志与中断控制 136
5.1.1 中断源和中断标志 137
5.1.2 中断控制 138
5.2 中断处理 140
5.2.1 中断响应条件 140
5.2.2 中断响应过程 141
5.2.3 中断响应时间 141
5.3 中断程序设计 142
5.3.1 外部中断应用举例 143
5.3.2 外部中断源的扩充 144
5.3.3 中断系统设计中应注意的几个问题 145
5.4 应用实例:故障源监控器的设计 146
5.5 习题 148
第6章 定时/计数器 149
6.1 定时/计数器的结构及工作原理 149
6.1.1 定时/计数器的结构 149
6.1.2 定时/计数器的工作原理 150
6.2 定时/计数器的控制寄存器 150
6.2.1 控制寄存器TCON 150
6.2.2 方式寄存器TMOD 151
6.3 定时/计数器的工作方式 152
6.3.1 工作方式0 152
6.3.2 工作方式1 153
6.3.3 工作方式2 153
6.3.4 工作方式3 153
6.4 定时/计数器的应用举例 154
6.4.1 计数初值的计算 154
6.4.2 定时/计数器的初始化 155
6.4.3 应用举例 155
6.5 应用实例:基于定时/计数器实现的音乐播放器 164
6.6 习题 169
第7章 串行接口 170
7.1 串行通信基础 170
7.1.1 通信方式 170
7.1.2 串行通信方式 170
7.1.3 波特率 171
7.2 MCS-51系列单片机的串行接口 171
7.2.1 串行接口结构 171
7.2.2 串行接口的控制 172
7.2.3 串行接口的4种工作方式 174
7.2.4 波特率设计 175
7.3 串行接口应用举例 177
7.3.1 方式0应用 177
7.3.2 方式1应用 180
7.3.3 方式2和方式3的应用 183
7.4 应用实例:单片机间的多机通信 185
7.5 习题 195
第8章 单片机接口技术基础 196
8.1 单片机系统扩展技术 196
8.1.1 单片机最小系统 196
8.1.2 系统扩展的内容和方法 197
8.1.3 程序存储器的扩展 198
8.1.4 数据存储器的扩展 202
8.1.5 I/O口扩展 202
8.2 常用输入/输出接口 206
8.2.1 单片机与键盘的接口 207
8.2.2 LED数码管显示器 216
8.2.3 LED点阵显示器 223
8.2.4 液晶显示器 229
8.3 数模与模数转换器接口 257
8.3.1 数模转换器DAC0832 258
8.3.2 模数转换器ADC0809 264
8.3.3 12位串行ADC——MAX1274/MAX1275 268
8.3.4 12位串行DAC——MAX5820 272
8.4 应用实例:99.99 s秒表的设计 276
8.5 习题 280
第9章 单片机应用系统设计实例 281
9.1 单片机应用系统的设计方法 281
9.1.1 应用系统设计流程 281
9.1.2 应用系统总体方案的确定 282
9.1.3 应用系统的硬件设计 283
9.1.4 应用系统的软件设计 284
9.1.5 应用系统的开发与调试 285
9.1.6 抗干扰技术 286
9.2 万年历的设计 290
9.2.1 功能分析及总体设计 290
9.2.2 硬件设计 290
9.2.3 软件设计 294
9.3 红外报警器的设计 298
9.3.1 功能分析及总体设计 298
9.3.2 硬件设计 299
9.3.3 软件设计 306
9.4 LED显示屏的设计 306
9.4.1 LED显示屏工作原理 307
9.4.2 小型LED显示屏控制系统 310
9.5 数字温度计的设计 312
9.5.1 数字温度计DS18B20简介 312
9.5.2 功能分析及总体设计 313
9.5.3 硬件设计 314
9.5.4 软件设计 315
9.6 数字电压表的设计 315
9.6.1 功能分析及总体设计 315
9.6.2 硬件设计 316
9.6.3 软件设计 318
9.7 函数信号发生器的设计 319
9.7.1 功能分析及总体设计 319
9.7.2 硬件设计 320
9.7.3 软件设计 321
附录 323
附录A 助记符与英文全称对照表 323
附录B MCS-51汇编指令表 324
附录C Keil μVision2使用说明 328
参考文献 335