第1章 概述 1
1.1 计算机的发展 1
1.2 单片机的发展概况 2
1.2.1 单片机的发展历史 3
1.2.2 单片机的发展趋势 4
1.3 单片机的特点及应用 5
1.3.1 单片机的组成及特点 5
1.3.2 单片机的分类 6
1.3.3 单片机的应用 6
第2章 计算机基础知识 8
2.1 数制与编码 8
2.1.1 数制 8
2.1.2 计算机中有符号数的表示及运算 9
2.1.3 二进制编码 11
2.2 计算机的基本组成电路 12
2.2.1 常用逻辑电路 12
2.2.2 触发器 13
2.2.3 寄存器 14
2.3 存储器 17
2.3.1 名词介绍 17
2.3.2 存储器的分类 18
2.3.3 存储器的寻址原理 20
思考与练习 21
第3章 单片机结构及原理 22
3.1 单片机结构 22
3.1.1 单片机组成及结构 22
3.1.2 引脚定义及功能 24
3.2 单片机的工作原理 26
3.2.1 指令与程序概述 27
3.2.2 CPU 的工作原理 27
3.2.3 单片机执行程序过程 28
3.3 存储器 30
3.3.1 程序存储器 30
3.3.2 数据存储器 31
3.3.3 专用寄存器 SFR 32
3.4 输入/输出端口结构 37
3.4.1 P0口 37
3.4.2 P1口 38
3.4.3 P2口 39
3.4.4 P3口 39
3.4.5 端口负载能力和接口要求 40
3.5 CPU 时序及时钟电路 41
3.5.1 CPU 时序及有关概念 41
3.5.2 80C51的指令时序 42
3.5.3 振荡器和时钟电路 43
3.6 复位和复位电路 44
3.6.1 内部复位信号的产生 44
3.6.2 复位状态 45
3.6.3 外部复位电路设计 45
3.7 89系列单片机的低功耗方式 46
3.7.1 电源控制寄存器 PCON 46
3.7.2 待机方式 47
3.7.3 掉电方式 47
思考与练习 48
第4章 指令系统 49
4.1 指令系统简介 49
4.2 寻址方式 50
4.2.1 符号注释 50
4.2.2 寻址方式 51
4.3 数据传送类指令 56
4.3.1 内部 RAM 数据传送指令 56
4.3.2 外部数据传送指令 57
4.3.3 查表指令 58
4.3.4 栈操作指令 59
4.3.5 交换指令 60
4.3.6 传送指令举例 61
4.4 算术运算类指令 61
4.4.1 加法指令 62
4.4.2 带进位加法指令 62
4.4.3 带借位减法指令 63
4.4.4 乘法指令 63
4.4.5 除法指令 64
4.4.6 加1指令 64
4.4.7 减1指令 64
4.4.8 十进制调整指令 64
4.4.9 算术运算指令举例 66
4.5 逻辑操作类指令 66
4.5.1 逻辑与指令 67
4.5.2 逻辑或指令 67
4.5.3 逻辑异或指令 67
4.5.4 循环移位指令 68
4.5.5 取反指令 68
4.5.6 清0指令 68
4.5.7 逻辑运算指令举例 69
4.6 控制转移类指令 69
4.6.1 无条件转移指令 69
4.6.2 条件转移指令 70
4.6.3 间接转移指令 71
4.6.4 调用子程序及返回指令 71
4.6.5 空操作指令 72
4.6.6 程序控制类指令举例 72
4.7 位操作类指令 73
4.7.1 位数据传送指令 73
4.7.2 位修正指令 74
4.7.3 位逻辑运算指令 74
4.7.4 判位转移指令 74
4.7.5 位操作类指令举例 75
思考与练习 76
第5章 汇编语言程序设计 80
5.1 概述 80
5.1.1 程序设计语言 80
5.1.2 汇编语言的规范 81
5.1.3 汇编语言程序设计步骤 84
5.2 顺序与循环程序设计 84
5.2.1 顺序程序设计 84
5.2.2 循环程序设计 86
5.3 分支程序设计 89
5.3.1 分支程序设计综述 89
5.3.2 无条件/条件转移程序 89
5.3.3 散转程序设计 90
5.4 查表程序设计 93
5.4.1 查表程序综述 94
5.4.2 规则变量的查表程序设计 94
5.4.3 非规则变量的查表程序设计 96
5.5 子程序设计 97
5.5.1 子程序结构与设计注意事项 97
5.5.2 子程序的调用与返回 98
5.5.3 子程序嵌套 98
5.5.4 子程序设计 99
5.6 综合编程举例 101
5.6.1 代码转换类程序 101
5.6.2 运算类程序 102
5.6.3 常用 I/O 端口程序 107
思考与练习 109
第6章 定时/计数器 111
6.1 定时/计数器概述 111
6.1.1 定时/计数器的结构 111
6.1.2 定时/计数器的原理 112
6.2 定时/计数器的控制方法 112
6.2.1 定时/计数器方式寄存器 TMOD 112
6.2.2 定时/计数器控制寄存器 TCON 113
6.2.3 定时/计数器的初始化 114
6.3 定时/计数器 T0、T1的工作方式 114
6.3.1 方式0 115
6.3.2 方式1 115
6.3.3 方式2 115
6.3.4 方式3 116
6.4 定时器 T0、T1应用举例 117
6.4.1 方式0、方式1的应用 117
6.4.2 方式2的应用 119
6.4.3 门控位的应用 120
6.5 定时/计数器 T2 121
6.5.1 T2的控制寄存器 T2CON 122
6.5.2 T2的方式控制寄存器 T2MOD 122
6.5.3 T2的工作方式 123
6.5.4 应用例题 125
6.6 定时器 T3——WDT 监视定时器 126
思考与练习 126
第7章 串行接口 128
7.1 串行通信概述 128
7.1.1 同步通信和异步通信方式 128
7.1.2 串行通信的数据传送速率 129
7.1.3 串行通信的制式 129
7.1.4 信号的调制与解调 130
7.1.5 通信协议 130
7.2 80C51串行口简介 130
7.2.1 串行口结构与工作原理 130
7.2.2 80C51的帧格式 131
7.2.3 串行口控制寄存器 SCON 131
7.3 波特率设计 132
7.3.1 方式0和方式2的波特率 133
7.3.2 方式1和方式3的波特率 133
7.4 串行通信工作方式 134
7.4.1 方式0 134
7.4.2 方式1 135
7.4.3 方式2 135
7.4.4 方式3 136
7.4.5 多机通信 136
7.5 串行口应用举例 137
7.5.1 用串行口扩展 I/O 口 137
7.5.2 用串行口进行异步通信 139
思考与练习 143
第8章 中断系统 144
8.1 概述 144
8.1.1 中断的概念 144
8.1.2 引进中断技术的优点 144
8.1.3 中断源 145
8.1.4 中断系统的功能 145
8.2 中断系统 146
8.2.1 中断源及中断入口 147
8.2.2 中断请求标志 148
8.2.3 中断允许控制 149
8.2.4 中断优先级设定 150
8.3 中断处理过程 151
8.3.1 中断响应 151
8.3.2 中断处理 152
8.3.3 中断返回 152
8.3.4 中断请求的撤除 153
8.3.5 中断响应时间 154
8.4 扩充外中断源 154
8.4.1 利用定时器扩展外中断源法 154
8.4.2 中断和查询结合法 155
8.5 中断系统的应用 156
思考与练习 168
第9章 单片机系统扩展 169
9.1 系统扩展概述 169
9.1.1 单片机的外部扩展总线 169
9.1.2 系统扩展常用芯片 170
9.1.3 系统扩展的寻址方法 173
9.2 存储器的扩展 174
9.2.1 程序存储器扩展概述 175
9.2.2 数据存储器扩展概述 175
9.2.3 存储器扩展举例 176
9.2.4 超大容量存储器的扩展 177
9.3 并行 I/O 接口的扩展 178
9.3.1 简单的 I/O 扩展 178
9.3.2 可编程 I/O 接口电路的扩展 179
9.4 串行总线扩展 189
9.4.1 I2C 总线 190
9.4.2 SPI 串行总线 191
9.5 串行 EEPROM 应用实例 193
9.5.1 AT24CXX 系列 EEPROM 简介 194
9.5.2 存储器结构及引脚功能说明 194
9.5.3 传输时序 195
9.5.4 芯片及存储单元寻址 196
9.5.5 写操作过程 197
9.5.6 读操作过程 198
9.5.7 EEPROM 的接口实例 200
思考与练习 205
第10章 接口技术 206
10.1 键盘接口 206
10.1.1 键盘工作原理 206
10.1.2 独立式按键 207
10.1.3 行列式键盘 209
10.2 显示器接口 213
10.2.1 LED 显示器的结构与原理 213
10.2.2 LED 静态显示接口 215
10.2.3 LED 动态显示接口 216
10.2.4 液晶显示器 LCD 的应用技术 219
10.3 单片机应用系统中的键盘、显示接口电路 224
10.3.1 并行口扩展的键盘、显示接口电路 224
10.3.2 串行口扩展的键盘、显示接口电路 225
10.4 可编程键盘、显示器接口——Intel 8279 228
10.4.1 8279电路工作原理 228
10.4.2 管脚与引线功能 230
10.4.3 8279的工作方式 231
10.4.4 命令格式与命令字 232
10.4.5 状态格式与状态字 236
10.4.6 8279的数据输入/输出 236
10.4.7 8279的内部译码与外部译码 236
10.4.8 8279与80C51、键盘/显示器的接口及编程方法 237
10.5 数/模转换接口 238
10.5.1 DAC 电路原理 239
10.5.2 D/A 转换器的主要技术指标 240
10.5.3 典型 D/A 转换器及接口 240
10.6 模/数转换接口 244
10.6.1 模/数转换的主要技术指标 245
10.6.2 逐次逼近式 A/D 转换器 246
10.6.3 双积分 ADC 电路 253
10.7 打印机接口 261
10.7.1 TPμP-40A 主要技术性能及接口要求 261
10.7.2 字符代码及打印命令 262
10.7.3 TPμP-40A/16A 与单片机接口 264
10.7.4 打印程序实例 264
思考与练习 265
第11章 单片机应用系统的设计与开发 267
11.1 应用系统研制过程 267
11.1.1 总体设计 267
11.1.2 硬件设计 268
11.1.3 软件设计 271
11.2 开发工具和开发方法 274
11.2.1 单片机仿真开发系统的功能 275
11.2.2 单片机应用系统的调试 278
11.3 单片机管理的水位控制系统 280
11.3.1 题目分析 280
11.3.2 硬件设计 280
11.3.3 软件设计 281
11.4 压力数据采集监测系统 282
11.4.1 题目分析 282
11.4.2 硬件设计电路 282
11.4.3 软件设计 283
11.5 单片机用于步进电机的控制 288
11.5.1 步进电机的工作原理 288
11.5.2 步进电机的控制方法 288
11.5.3 步进电机应用举例 289
11.6 图形点阵液晶显示器与单片机的接口与应用 293
11.6.1 LM-12232图形点阵液晶显示器简介 294
11.6.2 SED1520功能介绍 295
11.6.3 图形点阵液晶显示模块与单片机的接口 297
11.6.4 图形点阵液晶显示模块与单片机接口的软件 298
11.7 数字温度传感器与单片机的接口及编程 307
11.7.1 DS1820简介 308
11.7.2 DS1820的引脚名称及作用 308
11.7.3 DS1820的操作命令 308
11.7.4 DS1820的工作时序 310
11.7.5 温度测量结果的换算 311
11.7.6 DS1820与单片机的硬件接口及编程 311
11.8 PC 机与单片机间的串行通信设计 314
11.8.1 RS-232C 标准接口 315
11.8.2 单片机与 PC 机之间的电平转换芯片 315
11.8.3 PC 机与单片机串行通信应用实例 316
11.8.4 采用 RS-422A 标准的通信系统 324
11.9 日历/时钟与单片机的接口与应用 326
11.9.1 时钟/日历芯片 DS12887及其应用 326
11.9.2 串行实时时钟芯片 DS1302及应用 334
11.10 语音芯片与单片机的接口与应用 341
11.10.1 ISD 系列语音产品简介 341
11.10.2 引脚功能 342
11.10.3 寻址方法 343
11.10.4 操作模式及应用 344
11.10.5 ISD 器件应用举例 345
11.10.6 ISD1420T 语音开发录放实验板 348
11.11 复位监测芯片 X5043/45及其应用 349
11.11.1 X5043/45简介 349
11.11.2 引脚介绍 349
11.11.3 操作指令 350
11.11.4 操作时序 351
11.11.5 应用实例 352
思考与练习 357
附录1 80C51指令表 358
附录2 89系列单片机部分产品选型指南 362
附录3 常用芯片引脚图 364
附录4 二进制逻辑单元图形符号对照表 366
参考文献 367