第1章 MCS—51单片机的组成及结构 1
1.1 微型计算机与单片机 1
1.1.1 单片机 1
1.1.2 单片机的开发与开发工具 1
1.1.3 MCS—51的应用特性 2
1.2 MCS—51单片机的组成和结构 2
1.2.1 MCS—51单片机的内部结构框图 2
1.2.2 CPU结构 3
1.2.3 存储器 4
1.2.4 I/O及相应的特殊功能寄存器 9
1.2.5 MCS—51引脚 11
1.2.6 MCS—51的时序 12
1.2.7 单片机的低功耗操作方式 14
本章小结 15
习题 16
第2章 MCS—51单片机的指令系统 18
2.1 MCS—51单片机的助记符语言 18
2.2 MCS—51单片机的指令格式及寻址方式 19
2.2.1 指令一般格式 19
2.2.2 寻址方式 19
2.3 数据传送指令 20
2.3.1 通用传送指令:MOV 20
2.3.2 外部数据存储器(或I/O口)与累加器A传送指令——MOVX 22
2.3.3 程序存储器向累加器A传送指令——MOVC 22
2.3.4 数据交换指令 23
2.3.5 栈操作指令 24
2.3.6 位传送指令 24
2.4 控制转移类指令 25
2.4.1 无条件转移指令 25
2.4.2 条件转移指令 26
2.4.3 比较转移指令 27
2.4.4 循环转移指令 27
2.4.5 子程序调用和返回指令 28
2.5 算术运算指令 29
2.6 逻辑运算操作 33
2.7 伪指令 34
2.8 汇编语言程序设计 36
2.8.1 汇编语言源程序设计步骤 36
2.8.2 汇编语言程序的基本结构 37
2.8.3 汇编语言程序举例 40
本章小结 46
习题 47
第3章 MCS—51的内部资源 50
3.1 定时/计数器 50
3.1.1 定时/计数器的结构和工作原理 50
3.1.2 定时/计数器工作模式和状态控制寄存器 50
3.1.3 定时/计数器的工作模式 52
3.1.4 编程举例 54
3.2 串行通信及其接口 56
3.2.1 串行通信的工作方式 56
3.2.2 MCS—51的串行通信接口 58
3.2.3 多处理机通信 63
3.2.4 串行口程序设计举例 63
3.3 中断 66
3.3.1 中断的概念 66
3.3.2 MCS—51单片机的中断系统及其管理 66
3.3.3 单片机响应中断的条件及响应过程 69
3.3.4 外部中断 70
3.3.5 中断编程举例 71
本章小结 74
习题 75
第4章 单片机C51程序设计基础 77
4.1 C51程序的结构 77
4.2 预处理命令 79
4.2.1 宏定义 79
4.2.2 文件包含 81
4.2.3 条件编译 82
4.3 数据类型、运算符与表达式 83
4.3.1 数据类型、常量与符号常量 83
4.3.2 变量及其存储空间 86
4.3.4 Keil51能识别的存储器类型 87
4.3.5 8051特殊功能寄存器及其C51定义 88
4.3.6 C51中对中断服务函数与寄存器组的定义 90
4.3.7 运算符与表达式 91
4.4 函数 95
4.4.1 函数定义的一般形式 95
4.4.2 函数的调用与嵌套 96
4.4.3 数据输入输出函数 98
4.5 C语句与程序设计 100
4.5.1 表达式语句 100
4.5.2 选择语句 100
4.5.3 switch语句 102
4.5.4 循环语句 103
4.5.5 goto语句、break语句和continue语句 106
4.6 指针变量 107
4.6.1 指针变量定义和引用 107
4.6.2 指针变量作为函数参数 108
4.6.3 Keil51的指针类型 109
4.7 数组 110
4.7.1 一维数组的定义和引用 110
4.7.2 二维数组的定义和引用 112
4.7.3 指向数组元素的指针 113
4.7.4 数组名作为函数的参数 114
4.7.5 字符数组与字符串 115
4.8 结构体和共用体 117
4.8.1 定义结构体类型的一般形式 117
4.8.2 定义结构体类型变量 117
4.8.3 结构体变量的初始化 118
4.8.4 结构体变量的引用 119
4.8.5 结构体数组 119
4.8.6 指向结构体类型的数据指针 121
4.8.7 用结构体变量和指向结构体的指针作为函数参数 123
4.8.8 用typedef定义类型 124
4.8.9 共用体 125
4.9 枚举 127
4.10 MCS—51内部资源的C51编程举例 128
4.10.1 定时器/计数器的编程举例 128
4.10.2 串行口程序设计举例 131
4.10.3 中断编程举例 135
本章小结 137
第5章 单片机系统的扩展 138
5.1 基于三总线的系统扩展 138
5.1.1 外部总线的扩展 138
5.1.2 外部程序存储器的扩展 139
5.1.3 外部数据存储器的扩展 140
5.1.4 采用局部译码法产生I/O外设片选信号 141
5.1.5 输入输出接口电路的扩展 142
5.2 系统监控芯片的接口扩展 143
5.3 PC机与MCS—51之间的串行通信 144
5.3.1 RS—232C标准串行接口总线 144
5.3.2 RS—485/422标准串行接口总线 147
5.3.3 基于RS—485串口主从式通信系统 149
5.4 IIC总线标准与接口 151
5.4.1 IIC总线原理 151
5.4.2 IIC总线协议与基本时序 152
5.4.3 时钟芯片PCF8563简介 153
5.4.4 PCF8563基本操作 153
5.4.5 时钟芯片PCF8563与单片机接口 155
5.4.6 PCF8563时钟芯片实时读写程序举例 156
5.5 SPI总线简介 161
5.5.1 SPI总线概述及主要特点 161
5.5.2 12位串行A/D TLC2543介绍 161
5.5.3 TLC2543与单片机的接口设计 163
5.5.4 单片机控制TLC2543进行A/D采样的程序设计 163
5.6 CPLD与单片机接口设计 165
5.6.1 CPLD简介 165
5.6.2 Altera EPM7128简介 166
5.6.3 EPM7128与单片机的接口设计 167
5.6.4 对EPM7128的写入逻辑程序设计 168
5.6.5 对EPM7128的在线编程 169
本章小结 169
第6章 MCS—51的人机对话接口 171
6.1 LED显示器 171
6.1.1 LED显示原理 171
6.1.2 LED显示器与MCS—51的接口实例 172
6.1.3 独立式键盘控制电路及C语言编程 176
6.2 显示与键盘控制器7289A芯片介绍 187
6.2.1 7289A芯片简介 187
6.2.2 7289A与AT89C52接口电路 190
6.2.3 设计实例 191
6.3 液晶显示器与89C52的接口 196
6.3.1 液晶模块LCM12864简介 196
6.3.2 LCM12864液晶模块指令集 197
6.3.3 液晶模块LCM12864与单片机接口 198
6.3.4 C语言程序举例 198
6.4 89C52与微型打印机的并行接口 205
6.4.1 迅普SP系列打印机 206
6.4.2 打印机控制字 207
6.4.3 接口电路 208
6.4.4 编程举例 208
本章小结 210
第7章 输入输出通道与接口 211
7.1 模拟输入量的转换与接口 211
7.1.1 ADC0809的转换原理与89C52的接口 211
7.1.2 现场开关量的输入 214
7.2 模拟输出量通道的接口 215
7.2.1 DAC0832的转换原理与89C52的接口设计 215
7.2.2 开关量输出接口 219
本章小结 219
第8章 单片机应用系统设计 221
8.1 基于单片机测控系统的基本结构 221
8.2 弱信号输入及调理电路 221
8.3 采样保持电路 224
8.3.1 采样保持电路原理 224
8.3.2 典型的采样保持器集成芯片 225
8.4 微型计算机的数据采集系统 226
8.4.1 单通道数据采集的结构形式 226
8.4.2 多通道数据采集的结构形式 227
8.4.3 输入通道与强电之间的隔离 228
8.4.4 量程的自动转换 228
8.5 12位A/D数据采集电路设计 230
8.5.1 芯片简介 230
8.5.2 12位A/D数据采集与单片机的接口 232
本章小结 237
附录1 MCS—51单片机的指令系统 238
附录2 ASCII码字符表 243
附录3 Keil51编译指南 245
附录4 C语言中的关键字 253
附录5 C语言中的运算符及其优先级 254
附录6 常用的库函数 256