第1章 单片机概述与AT89S51单片机结构 1
1.1 单片机概述 1
1.1.1 嵌入式系统与单片机 1
1.1.2 单片机的发展概况 2
1.1.3 单片机的应用领域 3
1.2 AT89S51单片机结构 4
1.2.1 AT89S51单片机内部结构及引脚功能 4
1.2.2 AT89S51单片机的存储器结构 7
1.2.3 AT89S51单片机的并行端口结构 12
1.2.4 看门狗定时器 15
1.3 时钟电路及复位电路 15
1.3.1 时钟电路与时序 15
1.3.2 复位电路 17
1.4 AT89S51单片机的工作方式 18
1.4.1 低功耗工作方式 18
1.4.2 ISP编程工作方式 19
1.5 实训1 单片机复位、晶振、ALE信号的观测 19
1.5.1 实训目的 19
1.5.2 实训内容 20
习题与思考1 20
第2章 单片机开发系统 23
2.1 Keil软件使用 23
2.1.1 μVision3概述 23
2.1.2 Keil工程项目的建立 26
2.1.3 工程的详细设置 27
2.1.4 Keil软件调试 30
2.2 Proteus软件使用 36
2.2.1 Proteus概述 37
2.2.2 Proteus 7 Professional界面简介 40
2.2.3 Proteus原理图绘制 44
2.2.4 Proteus软件的调试 49
2.2.5 Proteus与KeilμVision3的联调 52
2.3 单片机系统开发过程 53
2.4 任务1 简单流水灯控制 54
2.5 实训2 简单流水灯制作 56
2.5.1 实训目的 56
2.5.2 实训内容 56
习题与思考2 56
第3章 AT89S51系列单片机的指令系统与程序设计 57
3.1 指令概述 57
3.1.1 指令格式 57
3.1.2 常用符号 58
3.2 寻址方式 58
3.3 AT89S51单片机的指令系统 61
3.3.1 数据传送类指令 61
3.3.2 算术运算类指令 64
3.3.3 逻辑运算及移位类指令 68
3.3.4 控制转移类指令 70
3.3.5 位操作指令 74
3.4 程序设计 75
3.4.1 伪指令 75
3.4.2 程序设计 77
3.4.3 程序结构 78
3.5 软件调试仿真器Keil μVision应用 82
3.5.1 设计延时子程序并用Keil进行仿真调试和延时测量 82
3.5.2 设计查表程序并仿真调试 84
3.6 任务2 BCD码相加 86
3.7 任务3 延时控制彩灯闪烁 88
3.8 实训3 用Keil软件调试实用汇编程序 89
3.8.1 实训目的 89
3.8.2 实训内容 90
习题与思考3 90
第4章 AT89S51中断系统与定时器/计数器 95
4.1 中断系统 95
4.1.1 中断基本概念 95
4.1.2 中断系统结构 96
4.1.3 与中断控制有关的寄存器 98
4.1.4 中断响应过程 100
4.2 中断应用 103
4.2.1 中断应用步骤 103
4.2.2 中断应用举例 103
4.3 任务4 中断系统应用 104
4.4 任务5 中断优先控制 106
4.5 定时器/计数器 109
4.5.1 定时器/计数器概述 110
4.5.2 定时器/计数器的控制 110
4.5.3 定时器/计数器的工作方式 112
4.5.4 定时器/计数器的编程和应用 113
4.6 任务6 60s倒计时装置 116
4.7 实训4 中断系统和定时器/计数器的综合应用 119
4.7.1 实训目的 119
4.7.2 实训内容 119
习题与思考4 119
第5章 AT89S51人机交互通道的接口技术 122
5.1 单片机与LED数码管的接口技术 122
5.1.1 LED结构 122
5.1.2 LED数码显示器应用 124
5.2 单片机与字符型LCD显示器的接口技术 126
5.2.1 LCD基础知识 127
5.2.2 接口电路设计 129
5.3 单片机与键盘的接口技术 131
5.3.1 键盘基础知识 132
5.3.2 键盘的接口及程序设计 135
5.4 任务7 按键显示 137
5.5 实训5 单片机与矩阵式键盘的接口技术 139
5.5.1 实训目的 139
5.5.2 实训内容 139
习题与思考5 139
第6章 AT89S51单片机的存储器及I/O口扩展技术 141
6.1 最小应用系统 141
6.2 存储器扩展 141
6.2.1 AT89S51单片机的系统总线 142
6.2.2 典型的E2PROM接口电路 143
6.2.3 典型的扩展片外数据存储器接口电路 144
6.3 串行E2PROM扩展单片机存储器 145
6.3.1 I2C总线基础知识 146
6.3.2 芯片介绍 146
6.4 AT89S51单片机扩展I/O接口的设计 148
6.4.1 8255A芯片的介绍 148
6.4.2 8255A的应用 150
6.5 任务8 AT24C02扩展存储器 151
6.6 实训6 用SRAM6264扩展单片机RAM技术 156
6.6.1 实训目的 156
6.6.2 实训内容 157
习题与思考6 157
第7章 AT89S51单片机I/O通道接口技术 158
7.1 A/D转换器及接口技术 158
7.1.1 A/D转换器的概述 158
7.1.2 典型A/D转换器芯片ADC0809 159
7.2 D/A转换器及接口技术 164
7.2.1 D/A转换器的主要技术指标 164
7.2.2 典型D/A转换器芯片DAC0832 165
7.2.3 DAC0832的应用 166
7.3 任务9 数字电压表设计 167
7.4 任务10 波形发生器 172
7.5 实训7 AT89S51单片机与ADC0809(0808)接口技术 175
7.5.1 实训目的 175
7.5.2 实训内容 175
习题与思考7 175
第8章 AT89S51单片机串行通信接口技术 176
8.1 串行口的结构 176
8.1.1 串行口控制寄存器SCON 176
8.1.2 电源控制寄存器PCON 177
8.1.3 数据缓冲寄存器SBUF 178
8.2 串行口的工作方式 178
8.3 波特率的设定 179
8.4 单片机的串行通信接口技术 180
8.4.1 标准串行通信接口 180
8.4.2 串口转换为并口输出 182
8.4.3 多机串行通信接口 183
8.5 任务11 双机通信 186
8.6 实训8 单片机之间的通信接口技术 190
8.6.1 实训目的 190
8.6.2 实训内容 190
习题与思考8 190
第9章 单片机应用系统设计 192
9.1 常用的控制部件 192
9.1.1 DS1302芯片 192
9.1.2 DS18B20芯片 194
9.1.3 步进电机的控制 197
9.2 单片机应用系统的设计过程 199
9.2.1 应用系统开发流程 199
9.2.2 应用系统可靠性设计 201
9.3 任务12 步进电机控制 202
9.4 任务13 数字温度计设计 204
9.5 任务14 电子时钟设计 213
9.6 实训9 数字温度计的制作 221
9.6.1 实训目的 221
9.6.2 实训内容 222
习题与思考9 222
第10章 单片机C语言应用设计 223
10.1 C语言与AT89S51单片机 223
10.2 C语言入门知识 224
10.2.1 “文件包含”处理 224
10.2.2 符号P1_0表示P1.0引脚 227
10.2.3 主函数main 227
10.2.4 C语言特点 228
10.2.5 C51函数的一般格式 228
10.3 C51的数据类型及其在51单片机的存储方式 229
10.3.1 C51的数据类型 229
10.3.2 C51数据在AT89S51中的存储方式 230
10.4 C51的数据存储类型与AT89S51的存储结构 231
10.5 AT89S51并行I/0接口C51定义 232
10.6 C51的构造数据类型 232
10.6.1 数组 232
10.6.2 指针 234
10.7 单片机内部资源的编程 237
10.7.1 中断编程 237
10.7.2 定时器/计数器编程 238
10.7.3 串行口使用C语言编程 239
10.8 任务15 秒表设计 242
10.9 实训10 秒表的制作 245
10.9.1 实训目的 245
10.9.2 实训内容 246
习题与思考10 246
附录A AT89S51的特殊功能 247
附录B Proteus常用元器件 252
附录C 美国标准信息交换代码(ASCII码) 255
附录D AT89S系列单片机指令表 256
参考文献 261