第一篇 基础篇 1
第0章 绪论 3
0.1 本书结构及阅读指南 3
0.2 单片机概述 3
0.2.1 8位单片机 3
0.2.2 16位单片机 4
0.2.3 32位单片机 4
0.3 单片机的发展 4
0.5 常见应用系统 5
0.4 单片机应用系统概述 5
0.6 单片机应用系统的使用范围 6
0.7 习题 7
第1章 单片机设计基础 8
1.1 单片机基础知识 8
1.1.1 基本概念 8
1.1.2 单片机数制及其转换 9
1.1.3 二进制运算 10
1.1.4 微型计算机码制和编码 10
1.2.1 单片机系统基本结构 12
1.2 单片机系统组成原理 12
1.2.2 微型计算机的基本原理 13
1.3 单片机编程语言概述 14
1.3.1 汇编语言 14
1.3.2 高级语言 15
1.4 单片机开发环境概述 15
1.4.1 编译环境 15
1.4.3 编程器 16
1.5 习题 16
1.4.2 仿真器 16
第2章 51系列单片机汇编语言的设计 18
2.1 51系列单片机汇编语言概述 18
2.2 51系列单片机指令系统 19
2.2.1 标志位 19
2.2.2 数据传送指令 20
2.2.3 算术操作指令 26
2.2.4 逻辑操作类指令 31
2.2.5 控制转移类指令 33
2.2.6 布尔变量操作类指令 38
2.3 51单片机内部结构及寻址方式 39
2.3.1 单片机内部结构概述 40
2.3.2 寻址方式 41
2.4 伪指令 44
2.5 51单片机汇编程序设计 45
2.5.1 MCS-51汇编语言格式 45
2.5.2 MCS-51程序设计步骤 46
2.5.3 子程序设计 47
2.5.4 结构化程序设计 49
2.5.5 常见程序的编写 52
2.6 MCS-51指令表 55
2.7 常用的26个子程序范例 60
2.8 习题 61
第3章 51系列单片机C程序设计 63
3.1 概述 63
3.2 数据类型、运算符、表达式 65
3.2.1 基本数据类型 66
3.2.2 字符型 67
3.2.3 基本运算符和表达式 69
3.3 C51的数据类型 72
3.4 C语言程序设计 74
3.4.1 分支程序 75
3.4.2 循环语句 81
3.4.3 C语言语句结构小结 87
3.5 数组 87
3.5.1 数组元素的表示方法 89
3.5.2 数组的赋初值 89
3.5.3 二维数组 89
3.5.4 二维数组的初始化 90
3.5.5 字符数组 90
3.6.1 函数的分类 91
3.6 函数 91
3.6.2 函数的定义 92
3.6.3 函数的调用 93
3.6.4 函数值 95
3.6.5 函数的递归调用 95
3.7 变量的作用域 96
3.7.1 局部变量 96
3.7.2 全局变量 97
3.7.3 变量的存储方式 98
3.8.2 内部函数 100
3.8 外部函数和内部函数 100
3.8.1 外部函数 100
3.9 指针 101
3.9.1 指针变量的类型说明 101
3.9.2 指针变量的赋值 101
3.9.3 指针变量的运算 102
3.9.4 数组指针变量的使用 103
3.9.5 指向多维数组的指针 104
3.10 结构体与联合体 105
3.11.1 枚举型 106
3.11 枚举和位运算 106
3.11.2 位运算 107
3.12 自定义符号 108
3.13 预处理 108
3.13.1 宏定义 108
3.13.2 文件的包含 110
3.13.3 条件编译 110
3.14 习题 111
4.1.1 集成开发环境(编译器) 112
4.1 软件开发环境 112
第4章 开发调试环境 112
4.1.2 仿真器 113
4.1.3 编程器 113
4.2 KEIL环境下编程 113
4.3 在线下载 122
4.4 硬件调试系统 123
4.5 习题 126
5.1.2 Atmel公司 127
5.1.1 Intel公司 127
5.1 51系列单片机简介及选型指南 127
第5章 CPU单元设计 127
5.1.3 Philips公司 129
5.1.4 Winbond公司 131
5.1.5 Cypress公司 131
5.2 AT89S51单片机内部结构 132
5.2.1 中央处理器 133
5.2.2 存储器 134
5.2.3 片内并行口 135
5.2.4 其他片内资源 135
5.2.5 管脚介绍 136
5.2.6 工作方式 137
5.3 单片机应用系统结构 137
5.4 AT89S51最小系统设计 137
5.4.1 时钟电路设计 138
5.4.2 复位电路 138
5.5 总线扩展 139
5.6 习题 140
6.1.2 常用的并行I/O扩展芯片 142
6.1.1 并行I/O扩展原理 142
6.1 并行I/O扩展 142
第6章 I/O扩展 142
6.1.3 并行I/O的汇编编程 145
6.1.4 并行I/O的C编程 146
6.2 串行I/O扩展 147
6.2.1 串行I/O扩展原理 147
6.2.2 常用串行I/O芯片 147
6.2.3 串行I/O的汇编编程 148
6.2.4 串行I/O的C编程 149
6.3.3 可控硅接口 150
6.3.2 继电器输出技术 150
6.3 I/O输出技术 150
6.3.1 输出接口隔离技术 150
6.3.4 固态继电器 152
6.3.5 集成功率开关 153
6.4 系统键盘扩展 154
6.4.1 键盘工作原理 154
6.4.2 按键的识别方法 154
6.4.3 键值的编码 156
6.4.4 按键的抗干扰设计 156
6.4.5 矩阵式键盘及其编程 157
6.5 习题 161
第7章 半导体存储器设计 162
7.1 分类、特性及选型 162
7.1.1 只读存储器 162
7.1.2 随机读写存储器 162
7.1.3 常见存储器芯片 163
7.1.4 存储器的选型 163
7.2.2 并行RAM的汇编编程 164
7.2.1 并行RAM扩展硬件设计 164
7.2 并行RAM扩展 164
7.2.3 并行RAM的C语言编程 165
7.3 并行Flash存储器扩展 166
7.3.1 并行Flash扩展硬件设计 167
7.3.2 并行Flash的汇编编程 167
7.3.3 并行Flash的C语言编程 169
7.4 串行Flash扩展 170
7.4.1 串行Flash扩展硬件设计 172
7.4.2 串行Flash的汇编编程 173
7.5 习题 176
第8章 A/D扩展 177
8.1 A/D的原理、分类及特性 177
8.2 并行A/D的扩展 179
8.2.1 8位并行转换器ADC0809的扩展 179
8.2.2 12位并行转换器ADC574的扩展 183
8.3 串行A/D的扩展 186
8.4.1 A/D转换器的主要技术指标 190
8.4.2 常见A/D介绍 190
8.4 A/D的选型及实用技术 190
8.5 习题 191
第9章 D/A扩展 192
9.1 D/A的原理、分类及特性 192
9.2 并行D/A的扩展 193
9.2.1 单缓冲方式 193
9.2.2 双缓冲方式 194
9.2.3 8位并行DAC0830/0831/0832的扩展 195
9.2.4 DAC0830扩展范例 197
9.2.5 12位并行D/A DAC1208的扩展 200
9.2.6 DAC1208与8031单片机的接口设计范例 201
9.3 串行D/A的扩展 202
9.3.1 12位串行DAC7543的扩展原理 202
9.3.2 12位串行DAC7543的扩展范例 204
9.4 D/A的选型及实用技术 205
9.4.1 D/A转换器的主要技术指标 205
9.4.2 常见D/A介绍 205
9.5 习题 208
10.1 串行口的结构 209
10.1.1 串口控制寄存器 209
第10章 串行通信及接口 209
10.1.2 特殊功能寄存器 210
10.1.3 串口工作方式 210
10.2 串行通信的原理 212
10.3 通信协议 213
10.4 单机通信 214
10.4.1 PC与单片机通信 214
10.4.2 单片机与单片机通信 216
10.5 多机通信 217
10.6 通信程序的调试 218
10.7 习题 219
第11章 中断系统和定时器/计数器 220
11.1 单片机的中断系统概述 220
11.2 MCS-51单片机的中断系统及其管理 222
11.2.1 MCS-51单片机的中断系统 222
11.2.2 中断源的管理 222
11.2.3 MCS-51单片机对中断优先级别的处理原则 223
11.2.4 中断优先级 223
11.2.5 各中断源所对应的中断服务程序入口地址(P70) 223
11.2.6 中断系统特殊功能寄存器 224
11.2.7 外部中断方式的选择 225
11.3 中断系统应用举例 226
11.4 定时器/计数器 228
11.4.1 定时器/计数器的内部结构和功能 228
11.4.2 定时器的方式控制寄存器(TMOD) 229
11.4.3 定时器/计数器控制寄存器(TCON) 229
11.4.4 工作方式 230
11.4.5 定时器/计数器的应用实例 231
11.5 习题 233
第二篇 应用提高篇 235
第12章 单片机实用系统外设新技术 237
12.1 PS/2设备接口 237
12.1.1 PS/2的电气特性 237
12.1.2 PS/2协议介绍 238
12.1.3 PS/2设备到主机的通信过程 238
12.1.4 主机到PS/2设备的通信过程 240
12.2 AT-PS/2键盘接口 241
12.2.1 键盘简介 241
12.2.2 AT-PS/2键盘 242
12.3.1 12232液晶模块 249
12.3 LCD液晶显示接口 249
12.3.2 液晶模块的寄存器 252
12.3.3 液晶模块的读/写时序图 257
12.4 PS2键盘与液晶显示实例 259
12.4.1 电路原理图 259
12.4.2 程序设计 259
13.2.1 非接触IC卡读/写器硬件设计 287
13.2 设计实例——非接触IC卡读/写器设计 287
13.1 IC卡读/写器的设计原理 287
第13章 单片机设备驱动新技术 287
13.2.2 非接触IC卡读/写器软件设计 289
13.3 步进电机及驱动器 290
13.3.1 步进电机的分类及原理 290
13.3.2 步进电机驱动器 291
13.4 设计实例——地税局自动盖章系统设计 292
13.4.1 系统功能说明 292
13.4.2 应用系统设计 293
14.1.2 I2C总线的协议 294
14.1.1 I2C总线的原理 294
14.1 I2C总线接口 294
第14章 单片机总线新技术 294
14.2 设计实例——AT24C02与8031的接口及软件模拟 296
14.3 232通信总线 296
14.3.1 232通信总线原理 296
14.3.2 常用232通信总线芯片 299
14.3.3 232通信总线硬件设计 300
14.4 设计实例——虚拟仿真器的功能实现 301
14.5 485、422通信总线 305
14.5.1 485、422通信总线原理 305
14.5.2 常用485、422通信总线芯片 308
14.5.3 485、422通信总线硬件设计 309
14.6 RS-232、RS-422、RS-485的应用范围 310
14.7 CAN总线 311
14.7.1 CAN通信总线原理 311
14.7.2 常用CAN通信总线芯片 316
14.7.3 CAN通信总线硬件设计 316
14.8 USB总线 318
14.8.1 USB通信总线原理 318
14.8.2 USB标准设备请求 319
14.8.4 USB通信总线硬件设计 320
14.8.3 常用USB通信总线芯片 320
第15章 单片机应用系统实用技术 324
15.1 电源设计 324
15.1.1 开关稳压电源 324
15.1.2 线性稳压电源 325
15.2 系统抗干扰措施 326
15.2.1 干扰源的分类 327
15.2.2 硬件抗干扰技术 328
15.2.3 软件抗干扰技术 331
15.2.4 采用WATCHDOG(看门狗)技术 333
15.3 系统的恢复技术 334
15.3.1 系统的复位 334
15.3.2 热启动的过程 334
15.3.3 系统信息的恢复 335
第16章 嵌入式操作系统 336
16.1 多任务嵌入式操作系统简介 336
16.2 RTOS多任务嵌入式操作系统工作原理 338
16.3 RTX51的应用 340
16.4 用RTX51进行编译和连接 341
16.5 RTX51函数 342
16.6 RTOS多任务嵌入式操作系统的应用 343
16.7 嵌入式系统在蓝牙技术中的应用 345
第17章 单片机应用系统设计及应用实例 346
17.1 单片机应用系统的一般结构 346
17.1.1 单机结构 346
17.1.2 多机结构 346
17.2 确定系统的功能与性能 346
17.3 单片机应用系统硬、软件的设计原则 347
17.4 应用软件设计的特点 347
17.5.1 模块化设计的特点及注意事项 348
17.5 系统的积木式设计 348
17.5.2 模块化程序的开发过程 349
17.5.3 硬件设计 349
17.5.4 软件设计 350
17.6 一个录音系统的设计 351
17.7 全国大学生电子设计竞赛试题及解决方案 353
17.8 单片机应用系统新技术及设计范例 354
附录A 光盘说明 356
参考文献 358