第1章 单片机概述 1
1.1 单片机的定义 1
1.2 单片机的发展及应用 1
1.2.1 单片机的发展历史及趋势 1
1.2.2 单片机的主流产品 2
1.2.3 单片机的应用领域 3
1.3 单片机系统的组成 3
1.3.1 硬件部分 4
1.3.2 软件部分 4
1.4 计算机中数的表示及运算 4
1.4.1 常用数制及转换 4
1.4.2 机器数及其编码 5
1.5 单片机的开发 7
习题 8
第2章 MCS-51系列单片机的结构和原理 9
2.1 MCS-51单片机的基本结构 9
2.1.1 MCS-51单片机的基本组成 9
2.1.2 MCS-51单片机内部结构 10
2.1.3 输入/输出(I/O)端口结构 11
2.2 MCS-51单片机的引脚及片外总线结构 14
2.2.1 MCS-51单片机芯片引脚介绍 14
2.2.2 MCS-51单片机的片外总线结构 15
2.3 MCS-51单片机的存储器配置 16
2.3.1 片内数据存储器 16
2.3.2 片外数据存储器 19
2.3.3 程序存储器 19
2.4 CPU的时序及辅助电路 20
2.4.1 单片机的时钟电路 20
2.4.2 振荡周期、时钟周期、机器周期和指令周期 21
2.4.3 单片机复位电路及复位状态 22
习题 24
第3章 MCS-51汇编指令与编程技术 25
3.1 MCS-51指令系统的分类、格式及一般说明 25
3.1.1 指令分类 25
3.1.2 MCS-51系列指令格式 26
3.1.3 指令描述符号介绍 26
3.2 寻址方式 27
3.3 按功能分类指令介绍 30
3.3.1 数据传送类指令 30
3.2.2 算术运算指令 34
3.3.3 逻辑运算与循环类指令 36
3.3.4 程序转移类指令 38
3.3.5 调用子程序及返回指令 40
3.3.6 位操作指令 41
3.4 汇编语言程序设计 43
3.4.1 汇编语言的构成 43
3.4.2 汇编语言编程举例 45
3.4.3 有关问题的讨论 52
习题 53
第4章 定时器和中断 56
4.1 定时器/计数器概述 56
4.1.1 定时方法概述 56
4.1.2 定时器/计数器的结构和工作原理 56
4.1.3 定时器/计数器工作方式控制寄存器TMOD 58
4.1.4 定时器/计数器控制寄存器TCON 58
4.1.5 定时器/计数器的初始化 59
4.2 定时器/计数器的4种工作方式 61
4.2.1 方式0 61
4.2.2 方式1 62
4.2.3 方式2 62
4.2.4 方式3 63
4.3 定时器/计数器的应用举例 64
4.3.1 方式0、方式1的应用 64
4.3.2 方式2的应用 65
4.3.3 门控位的应用 65
4.3.4 综合举例 66
4.4 MCS-51单片机中断系统 67
4.4.1 中断有关的概念 67
4.4.2 8051中断标志及控制寄存器 68
4.4.3 中断响应的条件及响应过程 69
4.4.4 中断程序设计思想 71
习题 75
第5章 单片机串行通信 77
5.1 串行通信概述 77
5.1.1 串行通信基本原理 77
5.1.2 RS-232C总线标准 80
5.1.3 串行接口电路 81
5.2 MCS-51单片机的串行口及控制寄存器 82
5.2.1 串口寄存器结构 82
5.2.2 串行通信控制寄存器 83
5.3 MCS-51单片机串行通信工作方式 84
5.3.1 串行工作方式0 84
5.3.2 串行工作方式1 86
5.3.3 串行工作方式2 87
5.3.4 串行工作方式3 88
5.3.5 常用的波特率及计算器初值 88
5.4 串行口通信实例 89
5.4.1 主从机间的通信 89
5.4.2 多机通信接口 91
习题 98
第6章 MCS-51单片机的扩展 99
6.1 MCS-51单片机系统的扩展 99
6.1.1 AT89S52最小应用系统 99
6.1.2 MCS-51单片机的片外总线结构 99
6.1.3 MCS-51单片机的系统扩展能力 100
6.1.4 存储器扩展 101
6.2 简单I/O口扩展 105
6.2.1 简单的并行输入、输出口扩展电路 105
6.2.2 用串行口扩展I/O口 106
6.3 可编程I/O口扩展 107
6.3.1 8155的结构和技术性能 107
6.3.2 8155的RAM和I/O地址编码 108
6.3.3 8155的工作方式与基本操作 109
6.3.4 MCS-51单片机与8155的接口与操作 111
6.4 人机界面接口 112
6.4.1 键盘及其接口 112
6.4.2 显示器件 117
6.4.3 8×8点阵LED原理及应用 120
6.4.4 LCD显示器 123
6.4.5 键盘和显示器接口示例 134
习题 136
第7章 A/D和D/A转换器 137
7.1 D/A转换器 137
7.1.1 D/A转换器的原理 137
7.1.2 D/A转换器的性能指标 138
7.1.3 典型的D/A转换器芯片DAC0832 139
7.2 MCS-51单片机和D/A转换器的接口 141
7.2.1 DAC0832的应用 141
7.2.2 MC5-51单片机和8位DAC的接口 142
7.2.3 MCS-51单片机和12位DAC的接口 148
7.3 A/D转换器 150
7.3.1 逐次逼近式A/D转换器的工作原理 150
7.3.2 A/D转换器的性能指标 151
7.3.3 典型的A/D转换芯片ADC0809 152
7.4 MCS-51单片机和A/D转换器的接口 153
7.5 标度变换(工程量变换)——现场物理量的显示 155
7.5.1 线性参数标度变换 156
7.5.2 非线性参数标度变换 156
习题 159
第8章 Keil C51开发环境快速入门 160
8.1 Keil C51 7.06安装步骤 160
8.2 Keil项目文件的创建、编译、运行 160
8.3 生成HEX文件和最小化实验系统 164
8.3.1 生成HEX文件 164
8.3.2 AT89S51最小化实验系统 166
8.3.3 AT89S51最小化实验系统应用举例 167
8.3.4 AT89S51最小化实验系统可以完成的实验 168
习题 169
第9章 C51编译器的常用语法介绍 170
9.1 关键字 170
9.2 数据与数据类型 172
9.3 C51编译器中变量定义的格式 173
9.4 C语言源程序中直接对8051的特殊功能寄存器的定义 174
9.5 C语言源程序中直接对8051的SFR中可位寻址单元的位的定义 174
9.6 C51编译器对8051中可位寻址区(0x20~0x2f)的访问 175
9.7 关键字bit与sbit区别 175
9.8 8051单片机的I/O口访问 176
9.9 C51编译器提供的3种访问绝对地址的方法 176
9.9.1 绝对宏 176
9.9.2 at关键字 176
9.9.3 宏定义 177
9.10 函数的递规调用与再入函数 177
9.11 中断服务函数与寄存器组定义 178
9.12 C51编程举例 180
习题 184
第10章 单片机应用系统的开发 186
10.1 单片机应用系统开发简介 186
10.1.1 总体设计 187
10.1.2 硬件电路设计 187
10.1.3 软件设计 189
10.2 功能模块设计 191
10.3 可靠性设计:抗干扰设计和容错设计 194
10.4 开发实例:电子时钟 196
10.4.1 电子时钟设计要求 196
10.4.2 电子时钟电路原理图 196
10.4.3 ISP下载线的制作和使用 198
10.4.4 程序清单 199
习题 204
附录1 编程器的使用方法简介 205
附录2 MCS-51指令表 206
附录3 ASCⅡ表 210
附录4 南京伟福WAVE6000开发环境快速入门 212
参考文献 218