第1章 单片机概述 1
1.1 什么叫单片机 1
1.2 单片机的特点 2
1.3 单片机的发展概况 2
1.4 单片机主要制造厂家和机型 3
1.5 8位单片机系列介绍 4
1.5.1 8051内核的单片机 4
1.5.2 Motorola内核的单片机 8
1.5.3 PIC内核的单片机 8
1.5.4 其他公司8位单片机 8
1.6 16位和32位单片机系列介绍 9
1.6.1 16位单片机 9
1.6.2 32位单片机 10
1.7 单片机的发展趋势 11
1.8 单片机的应用领域 13
1.9 单片机技术主要网站介绍 14
本章小结 14
练习与思考题 15
第2章 8051单片机体系结构 16
2.1 8051单片机内部结构 16
2.2 8051单片机芯片引脚功能 18
2.3 8051中央处理器 20
2.3.1 运算器 20
2.3.2 控制器 22
2.3.3 程序执行过程 23
2.4 8051单片机的存储结构 24
2.4.1 8051单片机的存储器结构 24
2.4.2 程序存储器 25
2.4.3 内部数据存储器 25
2.4.4 特殊功能寄存器 28
2.4.5 外部数据存储器 30
2.5 并行输入/输出端口 31
2.5.1 P0口结构 31
2.5.2 P1口结构 33
2.5.3 P2口结构 33
2.5.4 P3口结构 34
2.6 单片机的时序与复位操作 35
2.6.1 时钟电路 35
2.6.2 CPU的时序 36
2.6.3 复位电路 38
2.6.4 复位和复位状态 40
2.7 单片机的省电工作模式 41
本章小结 42
练习与思考题 42
第3章 8051单片机指令系统 44
3.1 指令系统概述 44
3.2 指令格式 44
3.2.1 指令的构成 44
3.2.2 指令格式 45
3.2.3 指令中常用的符号 45
3.3 指令系统的寻址方式 46
3.4 8051单片机指令系统 50
3.4.1 数据传送类指令 50
3.4.2 算术操作类指令 55
3.4.3 逻辑运算与移位指令 61
3.4.4 控制转移类指令 64
3.4.5 位操作指令 69
本章小结 71
练习与思考题 71
第4章 单片机汇编语言程序设计 74
4.1 汇编语言程序设计概述 74
4.1.1 计算机编程语言 74
4.1.2 单片机源程序的汇编 75
4.1.3 伪指令 75
4.1.4 汇编程序分段格式 78
4.2 汇编语言程序设计 79
4.2.1 基本结构 79
4.2.2 汇编语言程序设计步骤 82
4.2.3 程序流程图 82
4.3 汇编语言程序设计实例 83
4.3.1 分支转移程序 83
4.3.2 循环程序 85
4.3.3 子程序 86
4.3.4 算术运算程序 87
4.3.5 逻辑运算程序 89
4.3.6 数制转换程序 90
4.3.7 查表程序 93
4.3.8 关键字查找程序 95
4.3.9 数据极值查找程序 96
4.3.10 数据排序程序 97
本章小结 99
练习与思考题 99
第5章 8051单片机的中断系统 102
5.1 中断的概念 102
5.2 8051单片机中断系统结构 103
5.2.1 中断系统结构 103
5.2.2 中断源 103
5.2.3 中断的控制(IE、IP) 105
5.3 中断响应处理过程 108
5.3.1 中断响应条件 108
5.3.2 外部中断响应时间 108
5.3.3 中断请求的撤销 109
5.3.4 中断返回 109
5.3.5 中断服务程序编程方法 110
5.4 外部中断扩充方法 111
5.4.1 中断和查询结合法 111
5.4.2 矢量中断扩充法 112
5.5 中断系统软件设计 113
5.6 中断系统应用实例 114
本章小结 117
练习与思考题 117
第6章 8051单片机定时器/计数器及其应用 119
6.1 8051单片机定时器/计数器的结构 119
6.1.1 工作方式控制寄存器TMOD 119
6.1.2 定时器/计数器控制寄存器TCON 120
6.2 定时器/计数器的工作方式 120
6.2.1 方式0 120
6.2.2 方式1 121
6.2.3 方式2 121
6.2.4 方式3 122
6.3 定时器/计数器的编程 123
6.3.1 定时器/计数器的初始化 123
6.3.2 定时器/计数器的编程实例 124
6.4 定时器/计数器的应用实例 127
6.4.1 门控位GATE的应用 127
6.4.2 简易实时时钟设计 128
6.4.3 读定时器/计数器 130
6.4.4 用定时器/计数器作外部中断 130
本章小结 131
练习与思考题 131
第7章 8051单片机串行口及其应用 133
7.1 单片机串行口结构 133
7.1.1 串行口的结构 133
7.1.2 串行口控制寄存器SCON 134
7.1.3 特殊功能寄存器PCON 134
7.2 串行口的工作方式 135
7.2.1 方式0 135
7.2.2 方式1 136
7.2.3 方式2和方式3 136
7.3 单片机串行通信波特率 137
7.3.1 波特率的定义 137
7.3.2 波特率的计算 137
7.4 串行口的编程应用 138
7.4.1 串行口做串/并转换 139
7.4.2 串行口双机通信接口 139
7.4.3 串行口多机通信接口 141
本章小结 142
练习与思考题 142
第8章 STC15系列单片机技术应用 144
8.1 STC15系列单片机性能特点 144
8.2 STC15系列单片机体系结构 145
8.3 STC15系列单片机内部存储器 147
8.3.1 STC15系列单片机内部存储器的使用 147
8.3.2 单片机ISP/IAP技术 150
8.4 STC15系列单片机输入/输出口 153
8.5 STC15系列单片机中断系统 154
8.5.1 中断系统结构 155
8.5.2 中断控制寄存器 156
8.5.3 中断系统应用程序设计 158
8.6 STC15系列单片机定时器/计数器 159
8.6.1 定时器/计数器的控制寄存器 159
8.6.2 定时器/计数器的工作方式 160
8.6.3 定时器/计数器的编程应用 160
8.7 STC15系列单片机串行通信 161
8.7.1 STC15系列单片机串行通信口 162
8.7.2 SPI同步串行外围接口 164
8.8 STC15系列单片机片上A/D转换器 169
8.8.1 片上A/D转换器原理 169
8.8.2 片上A/D转换器的使用 171
8.9 STC15系列单片机片上PCA/PWM模块 172
8.9.1 PCA/PWM模块工作原理 172
8.9.2 CCP/PCA模块的工作模式 176
8.9.3 CCP/PCA模块编程使用 179
8.10 STC15系列单片机的时钟系统与节电模式 182
8.10.1 主时钟和系统时钟 183
8.10.2 看门狗工作原理及应用 183
8.10.3 STC15系列单片机节电模式 185
8.11 STC系列单片机ISP编程 187
8.11.1 ISP编程典型电路 187
8.11.2 ISP编程下载软件 188
本章小结 190
练习与思考题 190
第9章 单片机系统的扩展 191
9.1 单片机系统扩展概述 191
9.2 单片机系统总线的构造 192
9.2.1 单片机系统总线 192
9.2.2 单片机系统三总线的构造 193
9.3 单片机系统的三总线接口应用 193
9.3.1 外部并行器件的扩展 193
9.3.2 地址空间分配与编址 194
9.3.3 单片机扩展存储器的接口设计 195
9.4 I/O端口扩展与设计 198
9.4.1 I/O接口概述 198
9.4.2 TTL电路扩展并行I/O口 199
9.5 串行总线的扩展应用 202
9.5.1 I2C总线结构与工作原理 202
9.5.2 I2C总线的时序 204
9.5.3 I2C总线上的数据传输格式 205
9.5.4 I2C总线的信号模拟与编程技术 207
9.6 I2C总线器件的接口应用 209
9.6.1 串行E2PROM存储器接口应用 209
9.6.2 串行日历时钟芯片的接口应用 215
9.7 1/2/3Wire总线器件的接口应用 220
9.7.1 单线制串行总线器件 220
9.7.2 双线制、三线制串行总线器件 226
9.8 SPI总线器件的接口应用 229
9.8.1 ISD4004语音录/放电路 229
9.8.2 ISD4004的工作时序 230
9.8.3 ISD4004接口电路与编程应用 231
本章小结 233
练习与思考题 234
第10章 单片机与键盘、显示器、打印机的接口设计 236
10.1 单片机与键盘的接口 236
10.1.1 键盘的工作原理 236
10.1.2 键盘的接口方式 237
10.1.3 键盘扫描工作方式 243
10.1.4 键盘接口及应用 244
10.2 单片机与显示器接口设计 245
10.2.1 显示器结构与工作原理 246
10.2.2 LED数码显示方式与接口电路设计 248
10.2.3 专用显示驱动芯片接口设计 250
10.3 单片机与键盘/显示器接口设计 255
10.3.1 用串行接口设计键盘/显示电路 255
10.3.2 ZLG7290键盘/显示器接口设计 257
10.4 单片机与液晶显示器的接口设计 263
10.4.1 液晶显示器类型与工作原理 263
10.4.2 字符型液晶显示器接口设计 264
10.4.3 点阵图形液晶显示器接口设计 268
10.5 单片机与微型打印机的接口设计 271
10.5.1 MP-D16微型打印机的接口电路设计 271
10.5.2 MP-D16微型打印机的使用 272
本章小结 274
练习与思考题 274
第11章 单片机与A/D、D/A转换器的接口设计 276
11.1 A/D转换器的接口设计 276
11.1.1 A/D转换器概述 276
11.1.2 单片机与AD574的并行接口设计 279
11.1 3单片机与串行A/D转换器MCP3202接口设计 283
11.1.4 单片机与MC14433接口设计 287
11.2 D/A转换器接口设计 290
11.2.1 D/A转换器概述 290
11.2.2 DAC0832的功能特性 292
11.2.3 DAC0832与单片机并行接口设计 295
11.2.4 单片机与串行D/A转换器AD7543接口设计 298
11.3 单片机与V/F转换器接口设计 301
11.3.1 V/F转换器实现A/D转换的原理 301
11.3.2 V/F转换器的接口方法 302
11.3.3 V/F转换器与单片机的接口设计及应用 303
本章小结 306
练习与思考题 306
第12章 单片机C51程序设计 307
12.1 C51概述 307
12.2 C51数据结构和语法 307
12.2.1 常量与变量 307
12.2.2 整型变量与字符型变量 308
12.2.3 关系运算符和关系表达式 310
12.2.4 逻辑运算符和逻辑表达式 310
12.3 C51流程控制语句 310
12.3.1 if语句 311
12.3.2 switch语句 311
12.3.3 for语句 312
12.3.4 while语句 313
12.3.5 do-while语句 313
12.3.6 其他语句 313
12.4 C51构造数据类型 314
12.4.1 结构体 314
12.4.2 共用体 315
12.4.3 指针 316
12.4.4 typedef类型定义 316
12.5 C51和标准C语言的异同 317
12.5.1 Keil C51数据类型 317
12.5.2 8051的特殊功能寄存器 317
12.5.3 8051的存储类型 317
12.5.4 KeilC51的指针 319
12.5.5 Keil C51的使用 320
12.5.6 C51关键字 321
12.6 C51硬件编程 322
12.6.1 8051的I/O接口编程 322
12.6.2 8051的定时器编程 323
12.6.3 8051的中断服务 324
12.6.4 8051的串行口编程 325
12.7 C51与汇编语言的混合编程 326
12.8 C51程序设计实例 330
本章小结 333
练习与思考题 333
第13章 单片机应用系统设计 334
13.1 单片机应用系统设计的基本原则 334
13.2 单片机应用系统设计及开发过程 334
13.3 单片机应用系统设计的基本结构 336
13.4 单片机应用系统设计实例 337
13.4.1 系统任务设计 337
13.4.2 系统设计方案 338
13.4.3 系统整体电路设计 339
13.4.4 系统软件设计 339
本章小结 345
练习与思考题 345
第14章 Proteus电路设计与仿真技术 346
14.1 Proteus快速入门 346
14.1.1 Proteus工作界面 346
14.1.2 Proteus ISIS软件基本操作 349
14.2 Proteus电路原理图设计 351
14.2.1 元器件选取与放置 351
14.2.2 电路连线设计 351
14.3 Proteus电路仿真 352
14.3.1 单片机源代码生成与编译 352
14.3.2 目标文件装载与仿真 353
14.4 Keil与Proteus的协同仿真 353
本章小结 354
练习与思考题 354
第15章 单片机实验与指导 355
15.1 单片机实验系统设计 355
15.1.1 单片机应用开发板结构 355
15.1.2 单片机应用开发板电路设计 355
15.2 实验1选择排序法编程 358
15.3 实验2多字节数的除法编程 359
15.4 实验3定时器/计数器的使用 362
15.5 实验4外部中断的使用 365
15.6 实验5可控交通灯实现 367
15.7 实验6键盘与数码显示 371
15.8 实验7A/D转换 373
15.9 实验8 D/A转换 376
15.10 实验9 XL12864图形液晶显示器的使用 378
附录A 8051单片机指令表 381
附录B ASCII码与控制字符功能 384
参考文献 386