第1章 微型计算机系统概述 1
1.1 微处理器、微型计算机和微型计算机系统 1
1.1.1 微处理器 1
1.1.2 微型计算机 2
1.1.3 微型计算机系统 3
1.2 微型计算机的发展与分类 3
1.2.1 嵌入式系统 4
1.2.2 嵌入式系统与普通PC系统 4
1.2.3 嵌入式系统与MCS—51系统 5
1.3 存储器 6
1.3.1 半导体存储器的分类 6
1.3.2 只读存储器(ROM) 7
1.3.3 静态RAM和动态RAM 7
1.3.4 Flash闪存 7
1.4 微型计算机和外设之间的数据传送 8
1.4.1 接口电路的作用 8
1.4.2 CPU和外设之间的数据传送方式——三总线方式 8
1.4.3 CPU和外设之间的数据传送方式——串行方式 10
1.4.4 RS—232C标准串行通信接口 12
1.5 定时/计数器 14
1.6 MCS—51系列单片机应用特性 14
1.7 MCS—51系列单片机开发和开发工具 15
第2章 MCS—51单片机 17
2.1 MCS—51单片机的内部结构框图 17
2.2 CPU结构 18
2.3 存储器 19
2.4 I/O及相应的特殊功能寄存器 24
2.5 MCS—51引脚 26
2.6 MCS—51的时序 28
2.7 单片机的低功耗操作方式 30
本章小结 31
习题 32
第3章 单片机的指令系统 33
3.1 MCS—51单片机的助记符语言 33
3.2 MCS—51单片机的指令格式及寻址方式 34
3.2.1 指令一般格式 34
3.2.2 寻址方式 34
3.3 数据传送指令 36
3.3.1 通用传送指令:MOV 36
3.3.2 外部数据存储器(或I/O 口)与累加器A传送指令——MOVX 38
3.3.3 程序存储器向累加器A传送指令——MOVC 39
3.3.4 数据交换指令 40
3.3.5 栈操作指令 40
3.3.6 位传送指令 41
3.4 控制转移类指令 41
3.4.1 无条件转移指令 41
3.4.2 条件转移指令 43
3.4.3 比较转移指令 44
3.4.4 循环转移指令 44
3.4.5 子程序调用和返回指令 45
3.5 算术运算指令 46
3.6 逻辑运算操作 49
3.7 伪指令 51
3.8 汇编语言程序设计 53
3.8.1 汇编语言源程序设计步骤 53
3.8.2 汇编语言程序的基本结构 54
3.8.3 汇编语言程序举例 56
本章小结 62
习题 63
第4章 MCS—51的内部资源 66
4.1 定时/计数器 66
4.1.1 定时/计数器的结构和工作原理 66
4.1.2 定时/计数器工作模式和控制寄存器 66
4.1.3 定时/计数器的工作模式 68
4.1.4 编程举例 70
4.2 串行通信及其接口 72
4.2.1 通用异步接收/发送UART 72
4.2.2 MCS—51的串行通信接口 73
4.2.3 多处理机通信 78
4.2.4 串行口程序设计举例 78
4.3 中断 81
4.3.1 中断的概念 81
4.3.2 MCS—51单片机的中断系统及其管理 81
4.3.3 单片机响应中断的条件及响应过程 84
4.3.4 外部中断 85
4.3.5 中断编程举例 86
本章小结 89
习题 90
第5章 单片机C51程序设计基础 92
5.1 C51程序的结构 92
5.2 预处理命令 94
5.2.1 宏定义 94
5.2.2 文件包含 96
5.2.3 条件编译 97
5.3 数据类型、运算符与表达式 98
5.3.1 数据类型、常量与符号常量 98
5.3.2 变量及其存储空间 101
5.3.3 Keil51能识别的存储器类型 102
5.3.4 8051特殊功能寄存器及其C51定义 103
5.3.5 C51中对中断服务函数与寄存器组的定义 105
5.3.6 运算符与表达式 106
5.4 函数 110
5.4.1 函数定义的一般形式 110
5.4.2 函数的调用与嵌套 111
5.4.3 数据输入输出函数 113
5.5 C语句与程序设计 115
5.5.1 表达式语句 115
5.5.2 选择语句 115
5.5.3 switch语句 117
5.5.4 循环语句 118
5.5.5 goto语句、break语句和continue语句 121
5.6 指针变量 122
5.6.1 指针变量定义和引用 122
5.6.2 指针变量作为函数参数 123
5.6.3 Keil51的指针类型 124
5.7 数组 125
5.7.1 一维数组的定义和引用 125
5.7.2 二维数组的定义和引用 127
5.7.3 指向数组元素的指针 128
5.7.4 数组名作为函数的参数 129
5.7.5 字符数组与字符串 130
5.8 结构体和共用体 132
5.8.1 定义结构体类型的一般形式 132
5.8.2 定义结构体类型变量 132
5.8.3 结构体变量的初始化 133
5.8.4 结构体变量的引用 134
5.8.5 结构体数组 134
5.8.6 指向结构体类型的数据指针 136
5.8.7 用结构体变量和指向结构体的指针作为函数参数 138
5.8.8 用typedef定义类型 139
5.8.9 共用体 140
5.9 枚举 142
5.10 MCS—51内部资源的C51编程举例 143
5.10.1 定时/计数器的编程举例 143
5.10.2 串行口程序设计举例 146
5.10.3 中断编程举例 150
本章小结 152
第6章 单片机系统的扩展 153
6.1 基于三总线的系统扩展 153
6.1.1 外部总线的扩展 153
6.1.2 外部程序存储器的扩展 154
6.1.3 外部数据存储器的扩展 155
6.1.4 采用局部译码法产生I/O外设片选信号 156
6.1.5 输入输出接口电路的扩展 157
6.2 系统监控芯片的接口扩展 158
6.3 PC机与MCS—51之间的串行通信 158
本章小结 162
第7章 单片机基本接口与应用 163
7.1 LED显示器与键盘 163
7.1.1 LED显示原理 163
7.1.2 LED显示器与MCS—51的接口实例 164
7.1.3 独立式键盘控制电路 165
7.1.4 键盘与显示编程举例 166
7.2 显示与键盘控制器7289A芯片介绍 169
7.2.1 7289A芯片简介 169
7.2.2 7289A与AT89C52接口电路 172
7.2.3 C语言程序举例 173
7.3 液晶显示器与89C52的接口 177
7.3.1 液晶模块LCM12864简介 177
7.3.2 LCM12864液晶模块指令集 178
7.3.3 液晶模块LCM12864与单片机接口 179
7.3.4 C语言程序举例 180
7.4 模拟输入量的转换与接口 187
7.4.1 ADC0809的引脚说明 187
7.4.2 ADC0809与单片机的接口电路 188
7.4.3 A/D转换(0809)编程 189
7.5 模拟输出量通道的接口 190
7.5.1 DAC0832的转换原理与引脚 190
7.5.2 DAC0832与MCS—51单片机接口 191
7.5.3 D/A转换器(DAC0832)程序举例 192
7.6 开关量的输入/输出接口 195
7.6.1 开关量的输入接口 195
7.6.2 开关量输出接口 195
本章小结 196
第8章 单片机应用系统设计 197
8.1 基于单片机测控系统的基本结构 197
8.2 弱信号输入及调理电路 197
8.3 采样保持电路 200
8.3.1 采样保持电路原理 200
8.3.2 典型的采样保持器集成芯片 201
8.4 微型计算机的数据采集系统 202
8.4.1 单通道数据采集的结构形式 202
8.4.2 多通道数据采集的结构形式 203
8.4.3 输入通道与强电之间的隔离 204
8.4.4 量程的自动转换 204
8.5 12位A/D数据采集电路设计 206
8.5.1 芯片简介 206
8.5.2 12位A/D数据采集与单片机的接口 208
本章小结 213
附录1 MCS—51单片机的指令系统 214
附录2 ASCII码字符表 219
附录3 Keil51编译指南 221
附录4 C语言中的关键字 229
附录5 C语言中的运算符及其优先级 230
附录6 常用的库函数 232
参考文献 234