第1章 基础知识 1
1.1 信息在计算机中的表示 1
1.1.1 数在计算机内的表示 1
1.1.2 字符在计算机内的表示 5
1.2 单片机的概念及其特点 6
1.2.1 单片机的基本概念 6
1.2.2 单片机的主要特点 6
1.3 单片机的发展及其主要品种 7
1.3.1 4位单片机 7
1.3.2 8位单片机 8
1.3.3 16位单片机 8
1.3.4 32位单片机 8
1.4 单片机的应用 8
1.4.1 单机应用 9
1.4.2 多机应用 9
1.4.3 单片机的等级 9
习题 10
第2章 单片机基本原理 11
2.1 MCS-51系列单片机简介 11
2.2 MCS-51系列单片机的结构原理 11
2.2.1 MCS-51系列单片机的基本组成 11
2.2.2 MCS-51系列单片机的内部结构 12
2.2.3 MCS-51系列单片机的中央处理器(CPU) 13
2.2.4 MCS-51系列单片机的存储器结构 14
2.2.5 MCS-51系列单片机的输入/输出接口 20
2.3 MCS-51系列单片机的外部引脚及片外总线 24
2.3.1 外部引脚 24
2.3.2 片外总线结构 27
2.4 MCS-51系列单片机的工作方式 27
2.4.1 复位方式 27
2.4.2 程序执行方式 28
2.4.3 单步执行方式 28
2.4.4 掉电和节电方式 29
2.4.5 编程和校验方式 30
2.5 MCS-51系列单片机的时序 31
2.5.1 机器周期和指令周期 31
2.5.2 单机器周期指令的时序 31
2.5.3 双机器周期指令的时序 32
习题 32
第3章 单片机汇编程序设计 34
3.1 MCS-51系列单片机汇编指令格式及标识 34
3.1.1 指令格式 34
3.1.2 指令中用到的标识符 35
3.2 MCS-51系列单片机的寻址方式 35
3.2.1 常数寻址(立即寻址) 35
3.2.2 寄存器数寻址(寄存器寻址) 36
3.2.3 存储器数寻址 36
3.2.4 位寻址 38
3.2.5 指令寻址 38
3.3 MCS-51系列单片机的指令系统 39
3.3.1 数据传送指令 39
3.3.2 算术运算指令 42
3.3.3 逻辑操作指令 44
3.3.4 控制转移指令 46
3.3.5 位操作指令 51
3.4 MCS-51系列单片机汇编程序常用伪指令 53
3.5 MCS-51系列单片机汇编程序设计 57
3.5.1 运算程序 57
3.5.2 数据的拼拆和转换 60
3.5.3 多分支转移(散转)程序 62
习题 64
第4章 单片机C语言程序设计 67
4.1 C语言与MCS-51单片机 67
4.1.1 C语言的特点及程序结构 67
4.1.2 C语言与MCS-51单片机 69
4.1.3 C51程序结构 69
4.2 C51的数据类型 70
4.3 C51的运算量 73
4.3.1 常量 73
4.3.2 变量 74
4.3.3 存储模式 77
4.3.4 绝对地址的访问 78
4.4 C51的运算符及表达式 80
4.4.1 赋值运算符 80
4.4.2 算术运算符 81
4.4.3 关系运算符 81
4.4.4 逻辑运算符 81
4.4.5 位运算符 82
4.4.6 复合赋值运算符 82
4.4.7 逗号运算符 83
4.4.8 条件运算符 83
4.4.9 指针与地址运算符 83
4.4.10 运算符的优先级与结合性 84
4.5 表达式语句及复合语句 85
4.5.1 表达式语句 85
4.5.2 复合语句 86
4.6 C51的输入/输出 87
4.6.1 格式输出函数printf() 87
4.6.2 格式输入函数scanf() 88
4.7 C51程序的基本结构与相关语句 89
4.7.1 C51的基本结构 89
4.7.2 if语句 91
4.7.3 switch/case语句 92
4.7.4 while语句&. 93
4.7.5 do...while语句 93
4.7.6 for语句 94
4.7.7 循环的嵌套 95
4.7.8 break和continue语句 95
4.7.9 return语句 96
4.8 函数 96
4.8.1 函数的定义 97
4.8.2 函数的调用与声明 99
4.8.3 函数的嵌套与递归 102
4.9 C51构造数据类型 103
4.9.1 数组 103
4.9.2 指针 106
4.9.3 结构 108
4.9.4 联合 111
4.9.5 枚举 113
习题 114
第5章 单片机C语言与汇编语言混合编程 117
5.1 混合编程概述 117
5.1.1 单片机汇编语言的特点 117
5.1.2 单片机C语言的特点 118
5.1.3 单片机混合编程的优点 119
5.1.4 单片机混合编程的基本方式 120
5.2 混合汇编的参数传递与实现 121
5.2.1 混合汇编的参数传递 121
5.2.2 混合汇编的实现 123
习题 126
第6章 MCS-51单片机的内部资源及编程 127
6.1 并行输入/输出接口 127
6.2 定时/计数器接口 127
6.2.1 定时/计数器的主要特性 127
6.2.2 定时/计数器T0、T1结构及工作原理 128
6.2.3 定时/计数器的方式和控制寄存器 129
6.2.4 定时/计数器的工作方式 130
6.2.5 定时/计数器的初始化编程及应用 132
6.3 串行接口 137
6.3.1 通信的基本概念 137
6.3.2 MCS-51单片机串行口的功能与结构 139
6.3.3 串行口的工作方式 142
6.3.4 串行口的编程及应用 143
6.4 中断系统 158
6.4.1 中断的基本概念 158
6.4.2 MCS-51单片机的中断系统 159
6.4.3 MCS-51中断系统的应用 164
习题 166
第7章 MCS-51单片机常用接口 168
7.1 MCS-51单片机的最小系统 168
7.1.1 8051/8751的最小系统 168
7.1.2 8031的最小系统 168
7.2 存储器扩展 169
7.2.1 存储器扩展概述 169
7.2.2 程序存储器扩展 171
7.2.3 数据存储器扩展 174
7.3 输入/输出口扩展 175
7.3.1 简单I/O接口扩展 175
7.3.2 可编程I/O接口扩展(8255A) 176
7.4 MCS-51单片机与键盘的接口 183
7.4.1 键盘的工作原理 183
7.4.2 独立式键盘与单片机的接口 185
7.4.3 矩阵式键盘与单片机的接口 186
7.5 MCS-51单片机与LED显示器接口 192
7.5.1 LED显示器的结构与原理 192
7.5.2 LED数码管显示器的译码方式 193
7.5.3 LED数码管的显示方式 194
7.5.4 LED显示器与单片机的接口 196
7.6 MCS-51单片机与行程开关、晶闸管、继电器的接口 199
7.6.1 行程开关、继电器与MCS-51单片机接口 199
7.6.2 晶闸管与MCS-51单片机接口 199
7.6.3 继电器与MCS-51单片机接口 200
7.6.4 蜂鸣器与单片机接口 201
习题 201
第8章 MCS-51单片机与D/A、A/D转换器的接口 203
8.1 MCS-51单片机与ADC的接口 203
8.1.1 A/D转换器概述 203
8.1.2 ADC0809与MCS-51的接口 204
8.2 MCS-51单片机与DAC的接口 209
8.2.1 D/A转换器概述 209
8.2.2 MCS-51单片机与8位DAC0832的接口 211
习题 216
第9章 MCS-51单片机的其他接口 217
9.1 LCD与MCS-51单片机的接口 217
9.1.1 字符型点阵式液晶显示器 217
9.1.2 LCD显示器与单片机的接口与应用 222
9.2 MCS-51单片机与I2C总线芯片接口 226
9.2.1 I2C总线简介 226
9.2.2 I2C总线EEPROM芯片与单片机的接口 229
9.3 MCS-51单片机与时钟日历芯片的接口 242
9.3.1 并行日历时钟芯片DS12887与单片机的接口 242
9.3.2 串行日历时钟芯片与单片机的接口 251
9.4 MCS-51单片机与数字温度传感器的接口 262
9.4.1 DS18B20简介 262
9.4.2 DS18B20的主要特性 263
9.4.3 DS18B20的外部结构 263
9.4.4 DS18B20的内部结构 263
9.4.5 DS18B20的温度转换过程 266
9.4.6 DS18B20与单片机的接口 267
9.4.7 DS18B20使用中的注意事项 274
9.5 MCS-51单片机与串行A/D、D/A的接口 275
9.5.1 MCS-51单片机与串行A/D芯片MAX1241的接口 275
9.5.2 MCS-51单片机与串行D/A芯片MAX517的接口 279
习题 284
第10章 单片机应用系统设计 286
10.1 单片机应用系统的基本结构 286
10.1.1 单片机应用系统的硬件系统 286
10.1.2 单片机应用系统开发的基本过程 287
10.2 单片机应用系统的硬件系统设计 289
10.2.1 硬件系统设计的原则 289
10.2.2 硬件设计 290
10.3 单片机应用系统的软件设计 291
10.3.1 软件设计的特点 291
10.3.2 资源分配 292
10.3.3 单片机应用系统开发工具 292
习题 293
第11章 单片机应用系统设计实例 294
11.1 单片机电子时钟的设计 294
11.1.1 软时钟的基本原理 294
11.1.2 系统硬件电路的设计 294
11.1.3 系统软件程序的设计 295
11.2 多路数字电压表的设计 302
11.2.1 多路数字电压表的原理及功能 302
11.2.2 系统硬件电路的设计 303
11.2.3 系统软件程序的设计 304
11.3 单片机数字显示温度计 312
11.3.1 单片机数字显示温度计的原理 312
11.3.2 系统硬件电路设计 312
11.3.3 系统软件程序设计 313
习题 322
第12章 Keil C51集成环境的使用 324
12.1 Keil C51简介 324
12.1.1 Keil uVision2 IDE的安装 324
12.1.2 Keil uVision2 IDE界面 324
12.2 Keil uVision2 IDE的使用方法 330
12.2.1 项目文件的建立 330
12.2.2 给项目添加程序文件 331
12.2.3 编译、连接项目,形成目标文件 332
12.2.4 运行调试观察结果 332
12.2.5 多文件的处理 333
12.2.6 仿真环境的设置 334
12.3 Keil C51的调试技巧 337
12.3.1 如何设置和删除断点 337
12.3.2 如何查看和修改寄存器的内容 337
12.3.3 如何观察和修改变量 337
12.3.4 如何观察存储器区域 338
12.3.5 并行口的使用 338
12.3.6 定时/计数器的使用&. 339
12.3.7 串行口的使用 341
12.3.8 外中断的使用 341
习题 342
附录A MCS-51系列单片机指令表 343
附录B C51的库函数 348
附录C 单片机技术及嵌入式系统的网络资源 357
参考文献 358