第1章 单片机基础知识 1
1.1 微型机概述 1
1.1.1 微处理器和微型计算机 1
1.1.2 微型计算机系统 2
1.1.3 计算机中的数据表示 3
1.1.4 计算机中非数值数据信息的表示 6
1.2 单片机的基本概念及基本结构 9
1.2.1 什么是单片机 9
1.2.2 单片机的基本结构 10
1.2.3 单片机的标号信息及封装形式 12
1.2.4 单片机的优点 13
1.2.5 单片机应用系统 14
1.3 单片机系统的组成及单片机的发展和应用 15
1.3.1 单片机系统的组成 15
1.3.2 单片机的产生与发展过程 16
1.3.3 单片机技术的发展方向 18
1.3.4 单片机的应用领域 21
1.4 单片机的分类 23
1.4.1 4位单片机 23
1.4.2 8位单片机 24
1.4.3 16位单片机 25
1.4.4 32位单片机 25
1.4.5 模糊单片机 26
1.5 典型单片机产品的基本特性 26
1.5.1 Intel公司的MCS-51系列单片机 26
1.5.2 Atmel公司的AT89系列单片机 28
1.6 学习51系列单片机的原因 32
1.7 单片机系统的开发过程 33
1.8 如何学习好单片机 33
思考与练习 34
第2章 51单片机的硬件结构 36
2.1 51单片机引脚定义及功能 36
2.1.1 输入/输出类引脚(并行I/O端口) 37
2.1.2 控制信号类引脚 40
2.1.3 单片机I/O端口的负载能力 41
2.2 51单片机的内部组成 41
2.3 51单片机的CPU结构 42
2.4 单片机最小系统 44
2.4.1 单片机时钟信号电路 44
2.4.2 单片机复位电路 46
2.4.3 单片机最小系统电路 47
2.5 单片机存储结构及寄存器 48
2.5.1 AT89S51单片机存储器的分类及配置 48
2.5.2 单片机的数据存储器 49
2.5.3 单片机的专用功能寄存器 52
2.5.4 程序存储器 55
2.6 单片机的工作过程 56
2.7 组装与焊接单片机最小系统(实训一) 57
2.8 单片机的编程 60
思考与练习 61
第3章 C51程序设计 62
3.1 C51程序结构 63
3.1.1 C51程序结构概述 63
3.1.2 C51对标准ANSI C的扩展 64
3.2 C51的数据类型 64
3.3 存储器类型及存储区 65
3.4 C51对特殊功能寄存器的定义 68
3.5 Keil C51指针与函数 70
3.6 绝对地址访问 71
3.7 宏定义与C51中常用的头文件 71
3.8 C语言的数制与常用运算符 75
3.9 C51的流程控制语句 77
3.10 单片机的I/O口编程语句介绍 79
3.11 简单控制单片机引脚输出(实训二) 80
3.12 使用C语言高级语句控制引脚输出(实训三) 84
3.13 Keil μVision2集成开发编程环境使用 85
3.14 Keil C51编译器使用及程序下载(实训四) 90
思考与练习 93
第4章 单片机的中断系统 94
4.1 什么是中断 94
4.2 51单片机的中断源 95
4.3 51单片机中断相关控制寄存器 95
4.4 C语言中断程序的写法 98
4.5 有外部中断功能的按键系统(实训五) 101
4.6 单片机中断编程进阶 101
思考与练习 103
第5章 单片机的定时器/计数器 104
5.1 定时器/计数器结构及功能 104
5.2 定时器/计数器相关的控制寄存器 106
5.3 定时器/计数器的工作模式 107
5.4 C语言对定时器/计数器的编程 110
5.5 定时器/计数器T0作跑马灯(实训六) 116
5.6 定时器/计数器的计数方式编程 117
5.7 定时器/计数器的应用进阶 119
5.8 使用定时器中断对红外线遥控器解码(实训七) 119
5.9 52系列单片机的T2定时器应用 124
5.9.1 T2定时器的结构与寄存器 124
5.9.2 T2定时器的编程 125
思考与练习 128
第6章 51单片机串行接口 129
6.1 串行通信基础知识 129
6.1.1 异步通信 130
6.1.2 同步通信 131
6.1.3 串行通信的传输方向 131
6.1.4 传输速率 131
6.2 串行口及其有关的寄存器 132
6.2.1 串行数据缓冲寄存器 132
6.2.2 串行口控制寄存器 132
6.2.3 电源控制寄存器 133
6.3 串行接口的工作方式 133
6.4 通信波特率的设定 136
6.5 串行通信的编程 137
6.6 串口方式0编程实例(实训八) 138
6.7 串口方式1编程实例(实训九) 139
6.7.1 实训题目1 139
6.7.2 实训题目2 140
6.8 工程中串行通信的几种接口标准 141
6.8.1 RS-232C接口 142
6.8.2 RS-422A接口 143
6.8.3 RS-485接口 144
6.8.4 传输距离与传输率的关系 144
6.9 单片机与计算机的RS-232C口通信(实训十) 145
6.9.1 计算机的串行通信接口RS-232C 145
6.9.2 单片机与计算机通信的电路 145
6.9.3 VB对计算机串口的编程 146
思考与练习 147
第7章 单片机接口技术 148
7.1 键盘接口技术 148
7.1.1 键盘工作原理 148
7.1.2 独立式按键 151
7.1.3 矩阵式键盘 153
7.2 单片机引脚信号的读出(实训十一) 157
7.3 显示接口技术 163
7.3.1 LED数码管接口技术 163
7.3.2 LED大屏幕显示器 167
7.4 LED数码管显示技术(实训十二) 171
7.5 液晶显示器接口技术 178
7.5.1 LCD显示器的分类 178
7.5.2 典型液晶显示模块介绍 178
7.5.3 AT89S51单片机与LCD的接口及软件编程 183
7.6 键盘与显示器的综合使用 185
7.6.1 利用串行口实现的键盘/显示器接口 185
7.6.2 利用8255和8155扩展实现的键盘/显示器接口 186
7.7 根据液晶的时序图进行编程(实训十三) 188
7.8 根据说明书对12864汉字液晶进行编程 196
7.8.1 12864汉字液晶的说明书 196
7.8.2 根据说明书对12864汉字液晶进行编程 201
思考与练习 204
第8章 A/D、D/A转换器的接口技术 205
8.1 A/D转换器的接口技术 205
8.1.1 A/D转换器接口技术概述 205
8.1.2 ADC0809与AT89S51的接口及应用 208
8.2 D/A转换器的接口技术 211
8.2.1 D/A转换器接口技术概述 211
8.2.2 DAC0832的接口及应用 213
8.3 使用ADC0832接收模拟量数据(实训十四) 218
8.4 使用TLV5618输出模拟量数据(实训十五) 221
思考与练习 224
第9章 单片机与外部设备的总线技术 226
9.1 I2C总线接口 226
9.2 单片机读写AT24C0X的程序(实训十六) 229
9.3 SPI接口 233
9.4 Microwire接口 236
9.5 单片机读写E2PROM芯片93C66(实训十七) 239
9.6 1-Wire接口 241
9.7 DS18B20的编程(实训十八) 244
9.8 USB接口 246
9.8.1 USB-to-RS-232转换芯片CP2102和PL-2303 246
9.8.2 单片机系统的USB接口设计实例 248
思考与练习 249
第10章 单片机应用系统设计技术 250
10.1 单片机应用系统设计的基本原则 250
10.2 单片机应用系统设计的一般过程 251
10.2.1 确定任务 252
10.2.2 总体设计 252
10.2.3 硬件设计 253
10.2.4 软件设计 256
10.2.5 单片机应用系统的调试 258
10.2.6 程序固化 260
10.3 模块化软件设计 260
10.3.1 模块化结构的基本组成 260
10.3.2 各模块数据缓冲区的建立 261
10.3.3 模块化程序设计方法 262
10.3.4 系统监控程序设计 262
10.4 单片机开发系统 264
10.4.1 单片机开发系统的类型和组成 265
10.4.2 单片机开发系统的功能 265
10.5 单片机应用系统设计举例 268
10.5.1 单片机系统与传感器 269
10.5.2 光电隔离技术 270
10.5.3 单片机驱动低压电器 271
10.5.4 单片机的看门狗电路 273
10.5.5 单片机的低功耗工作方式 274
10.5.6 单片机控制系统设计实例 276
10.6 单片机应用系统的抗干扰技术 282
10.6.1 干扰及其危害 282
10.6.2 硬件抗干扰措施 283
10.6.3 软件抗干扰措施 287
思考与练习 289
第11章 单片机汇编指令系统及编程 291
11.1 单片机汇编指令系统概述 291
11.2 汇编语言的伪指令 292
11.3 51单片机的寻址方式 295
11.4 常用指令系统及应用举例 299
11.4.1 指令的符号说明 300
11.4.2 数据传送类指令 300
11.4.3 算术运算类指令 308
11.4.4 逻辑运算类指令 314
11.4.5 位操作类指令 318
11.4.6 控制转移类指令 321
11.5 汇编语言程序设计举例 327
11.5.1 计算机程序设计语言概述 327
11.5.2 汇编语言程序设计的步骤 328
11.5.3 汇编语言程序设计 329
11.6 在C语言代码中加入汇编指令 336
11.6.1 在C语言代码中加入汇编指令的方法 336
11.6.2 C语言函数的参数与汇编寄存器的对应关系 336
11.6.3 编译时提示asm/endasm出错的解决方法 337
11.6.4 编译时出现“?C_START”等相关警告的处理 337
思考与练习 338
附录A 单片机的软件模拟仿真调试 341
参考文献 346