绪论 1
0.1 单片机概述 1
0.1.1 嵌入式系统与单片机 1
0.1.2 单片机的发展趋势 2
0.1.3 单片机的主要产品 3
0.1.4 单片机的应用领域 8
0.2 单片机系统设计与制作的工作过程 9
0.2.1 典型的单片机系统设计与制作工作流程 9
0.2.2 应用系统硬件的设计方法 10
0.2.3 应用系统软件的设计方法 11
0.2.4 应用系统的调试方法 12
第1章 单片机最小系统 14
1.1 AT89S51单片机的结构及工作过程 14
1.1.1 AT89S51单片机的封装及引脚 14
1.1.2 单片机的内部结构及主要功能 16
1.1.3 单片机的工作过程 18
1.2 AT89S51单片机的存储结构 19
1.2.1 程序存储器 19
1.2.2 数据存储器 20
1.3 单片机最小系统的构成 24
1.3.1 时钟电路 24
1.3.2 复位电路 25
1.4 单片机汇编语言基础 25
1.4.1 AT89S51单片机的指令系统简介 27
1.4.2 伪指令ORG和END 28
1.4.3 通用数据传送指令MOV 29
1.4.4 常用程序控制指令——跳转及调用返回指令 31
1.4.5 移位指令 34
1.4.6 位清零与置位指令 35
1.5 单片机的C语言——C51基础 35
1.5.1 C51程序简介 35
1.5.2 C51中的基本数据类型 37
1.5.3 C51的变量定义 39
1.6 单片机I/O口的输出驱动控制 40
1.7 流水灯的设计与制作 43
1.7.1 工作任务 43
1.7.2 流水灯硬件制作 43
1.7.3 流水灯的软件设计 46
1.7.4 流水灯的系统调试 48
1.7.5 改进与提高 58
习题 59
第2章 数码管显示电路及应用 60
2.1 LED数码管简介 60
2.1.1 LED数码管的类型 60
2.1.2 LED数码管的字形码 61
2.2 LED数码管的显示方式 61
2.2.1 静态显示 62
2.2.2 动态显示 62
2.3 汇编语言进阶 63
2.3.1 算术及逻辑运算指令 63
2.3.2 数据交换指令 67
2.3.3 定义数据空间伪指令DB、DW、DS与查表指令MOVC 68
2.4 C51的运算符、表达式及常用语句 71
2.4.1 C51的运算符和表达式 71
2.4.2 C51的常用控制语句——选择语句和循环语句 73
2.5 LED数码管显示程序设计 77
2.5.1 数码管动态显示汇编程序设计 78
2.5.2 数组与数码管动态显示的C51程序设计 79
2.6 点阵与液晶显示器 81
2.6.1 8×8点阵屏 81
2.6.2 LCD1602液晶显示器 85
2.7 秒表的设计与制作 91
2.7.1 工作任务 91
2.7.2 秒表硬件电路的设计与制作 92
2.7.3 秒表的软件设计 93
2.7.4 秒表的系统调试 97
2.7.5 改进与提高 98
习题 98
第3章 键盘电路及应用 100
3.1 键盘及分类 100
3.1.1 按键简介 100
3.1.2 键盘的类型 100
3.1.3 键盘的消抖 101
3.2 键盘汇编程序设计 102
3.2.1 赋值伪指令EQU和DATA 102
3.2.2 位条件转移指令 102
3.2.3 堆栈指令 103
3.2.4 键盘的汇编语言设计实例 104
3.3 键盘的C51程序设计 107
3.3.1 switch/case语句 107
3.3.2 键盘的C51程序设计实例 108
3.4 密码锁的设计与制作 112
3.4.1 工作任务 112
3.4.2 密码锁的硬件制作 112
3.4.3 密码锁的软件设计 114
3.4.4 密码锁的系统调试 126
3.4.5 改进与提高 129
习题 129
第4章 中断与定时/计数器的应用 130
4.1 AT89S51单片机的中断系统 130
4.1.1 中断的基本概念 130
4.1.2 中断源与中断请求标志 131
4.1.3 中断控制 133
4.1.4 中断响应 135
4.1.5 中断程序设计 136
4.2 AT89S51单片机的定时/计数器 140
4.2.1 定时/计数器的结构 140
4.2.2 定时/计数器的控制 140
4.2.3 定时/计数器的工作方式 142
4.2.4 定时/计数器初值的计算 142
4.2.5 定时/计数器的程序设计 143
4.3 音乐播放器的设计与制作 150
4.3.1 工作任务 150
4.3.2 音乐播放器的硬件制作 151
4.3.3 音乐播放器的软件设计 152
4.3.4 音乐播放器的系统调试 156
4.3.5 改进与提高 157
习题 157
第5章 串行通信的应用 159
5.1 串行通信基础 159
5.1.1 串行通信的基本概念 159
5.1.2 串行通信的总线标准 162
5.2 AT89S51单片机的串行口 165
5.2.1 串行口的结构及相关寄存器 165
5.2.2 串行口的工作方式 166
5.3 串行通信的程序设计 171
5.3.1 串行口的初始化编程 171
5.3.2 发送和接收程序设计 172
5.4 双机通信系统的设计与制作 182
5.4.1 工作任务 182
5.4.2 双机通信系统硬件制作 182
5.4.3 双机通信系统软件设计 184
5.4.4 双机通信系统调试 187
5.4.5 改进与提高 188
习题 188
第6章 A-D转换器的应用 190
6.1 A-D转换的基本知识 190
6.1.1 A-D转换的过程 190
6.1.2 A-D转换器的主要技术指标 191
6.2 8位A-D转换器ADC0809 192
6.3 单片机与A-D转换器接口电路 193
6.3.1 单片机的总线结构 193
6.3.2 单片机与A-D转换器的接口 196
6.4 单片机与A-D转换器接口程序设计 197
6.4.1 MOVX指令与A-D转换器接口的汇编语言程序设计 197
6.4.2 指针与A-D转换器接口的C51程序设计 198
6.5 数字电压表的设计与制作 200
6.5.1 工作任务 200
6.5.2 数字电压表的硬件制作 200
6.5.3 数字电压表的软件设计 202
6.5.4 数字电压表的系统调试 208
6.5.5 改进与提高 209
习题 209
第7章 D-A转换器的应用 211
7.1 D-A转换的基本知识 211
7.1.1 D-A转换的工作原理 211
7.1.2 D-A转换器的性能指标 212
7.2 8位D-A转换器DAC0832 212
7.2.1 DAC0832的内部结构及引脚 212
7.2.2 DAC0832的工作方式 213
7.2.3 DAC0832的输出方式 213
7.3 单片机与D-A转换器接口电路及程序设计 214
7.3.1 单缓冲工作方式 214
7.3.2 双缓冲工作方式 215
7.4 低频信号发生器的设计与制作 216
7.4.1 工作任务 216
7.4.2 低频信号发生器的硬件制作 217
7.4.3 低频信号发生器的软件设计 218
7.4.4 低频信号发生器的系统调试 226
7.4.5 改进与提高 228
习题 228
第8章 串行总线扩展技术的应用 230
8.1 I2C总线的应用 230
8.1.1 I2C总线概述 230
8.1.2 AT24CXX系列存储器的使用 231
8.1.3 AT24CXX系列存储器的接口电路与编程 234
8.2 SPI总线的应用 241
8.2.1 SPI总线概述 241
8.2.2 串行A-D转换器TLC549 242
8.2.3 串行D-A转换器TLC5615 248
8.3 单总线的应用 252
8.3.1 单总线简介 252
8.3.2 DS18B20的引脚及硬件连接 253
8.3.3 DS18B20的工作原理及使用方法 254
8.4 数字温度计的设计与制作 259
8.4.1 工作任务 259
8.4.2 数字温度计的硬件制作 259
8.4.3 数字温度计的软件设计 261
8.4.4 数字温度计的系统调试 275
8.4.5 改进与提高 276
习题 276
附录 277
附录A ASCⅡ码表 277
附录B MCS-51系列单片机指令表 278
附录C C51关键字 281
附录D 常用芯片引脚 283
参考文献 285