第1章 单片机基础知识 1
1.1 单片机的发展与应用 1
1.1.1 单片机的发展历史 1
1.1.2 单片机的应用 5
1.2 单片机的分类 6
1.3 AT89系列单片机的基本特性 7
1.3.1 标准型AT89系列单片机的基本特征 7
1.3.2 高档型AT89系列单片机的基本特性 9
1.3.3 低档型AT89系列单片机的基本特征 11
1.3.4 AT89系列单片机型号的编码说明及封装形式 11
1.3.5 部分Atmel单片机的升级替代及推荐产品 13
1.4 AT89C52单片机的内部结构 13
1.4.1 AT89C52单片机的CPU 14
1.4.2 AT89C52单片机的存储器 16
1.4.3 AT89C52单片机的I/O接口部分和特殊功能部分 19
1.5 AT89C52单片机的时钟与复位电路 19
1.5.1 复位操作和复位电路 19
1.5.2 振荡电路和时钟 21
1.6 AT89C52单片机的低功耗工作方式 22
本章小结 24
思考题与习题 25
第2章 指令系统及汇编语言程序设计 26
2.1 寻址方式 26
2.2 指令系统 30
2.2.1 数据传送指令 30
2.2.2 算术运算指令 33
2.2.3 逻辑运算指令 35
2.2.4 位(布尔)操作类指令 36
2.2.5 控制转移类指令 38
2.3 汇编语言指令格式 42
2.3.1 汇编语言执行指令格式 42
2.3.2 汇编伪指令 43
2.4 汇编语言程序设计概述 45
2.4.1 汇编语言的特点 45
2.4.2 汇编语言程序设计的步骤 45
2.4.3 汇编语言程序的基本结构 46
本章小结 50
思考题与习题 50
第3章 单片机的C语言程序设计 52
3.1 C51的程序结构 52
3.2 数据类型、存储类型及存储模式 54
3.2.1 数据类型 54
3.2.2 常量和变量 55
3.2.3 C51的存储类型及存储模式 56
3.2.4 特殊功能寄存器、并行接口及位变量的定义 58
3.3 运算符、函数及程序流程控制 61
3.3.1 C51的运算符 61
3.3.2 C51的函数 62
3.3.3 C51的流程控制语句 65
3.4 C51的构造数据类型 67
3.4.1 数组 67
3.4.2 结构 69
3.4.3 联合 70
3.4.4 枚举 70
3.4.5 指针 71
3.5 C51实例分析及混合编程 73
3.5.1 C51实例分析 73
3.5.2 混合编程 74
3.6 Keil C51简介 77
3.6.1 项目文件的建立、设置与目标文件的获得 77
3.6.2 程序的调试 80
本章小结 85
思考题与习题 85
第4章 单片机的I/O口与Proteus简介 86
4.1 P0~P3端口的结构与功能 86
4.1.1 P0端口的结构与功能 86
4.1.2 P1端口的结构与功能 87
4.1.3 P2端口的结构与功能 88
4.1.4 P3端口的结构与功能 88
4.2 Proteus简介 90
4.2.1 Proteus ISIS的工作界面 90
4.2.2 Proteus ISIS的基本操作 90
4.2.3 Proteus ISIS的原理图绘制和仿真 94
4.2.4 Proteus与Keil C相结合的设计和仿真 96
4.3 I/O口应用实例与仿真 103
4.3.1 LED与数码管简介 103
4.3.2 I/O口的实例仿真 105
本章小结 120
思考题与习题 121
第5章 单片机的中断系统与实例仿真 122
5.1 中断系统结构 122
5.1.1 中断概述 122
5.1.2 中断系统结构与中断控制 123
5.2 中断响应过程 127
5.2.1 中断采样 128
5.2.2 中断查询 128
5.2.3 中断响应 128
5.2.4 中断服务 129
5.2.5 中断请求的撤销 130
5.2.6 中断返回 130
5.2.7 中断服务程序 131
5.2.8 扩展外部中断的应用 132
5.2.9 使用中断函数注意的问题 133
5.3 中断系统实例与仿真 133
本章小结 141
思考题与习题 141
第6章 定时器/计数器原理与实例仿真 143
6.1 定时器/计数器模块的基本用途 143
6.2 定时器/计数器0和1的结构与工作原理 143
6.2.1 定时器/计数器0和1 143
6.2.2 与定时器/计数器0和定时器/计数器1相关的特殊功能寄存器 144
6.2.3 定时器/计数器0和定时器/计数器1的工作模式 146
6.3 定时器/计数器2(T/C2)的结构和工作原理 147
6.3.1 与定时器/计数器2相关的特殊功能寄存器 148
6.3.2 定时器/计数器2的工作模式 149
6.4 仿真实例 152
6.4.1 定时器工作方式实例 152
6.4.2 计数器工作方式实例 157
6.4.3 捕捉模式实例 161
6.4.4 定时器/计数器复杂应用实例 167
6.5 看门狗定时器 181
6.5.1 看门狗简介 181
6.5.2 看门狗的工作原理 181
6.5.3 看门狗的使用 182
本章小结 182
思考题与习题 183
第7章 单片机串行通信与实例仿真 184
7.1 串行通信概述 184
7.2 串行接口结构与工作原理 186
7.2.1 AT89C52单片机的串行接口结构 186
7.2.2 AT89C52单片机的串行通信过程 186
7.3 串行接口的控制寄存器与工作方式 187
7.3.1 串行接口的控制寄存器 187
7.3.2 串行接口的工作方式 189
7.3.3 波特率的确定 192
7.3.4 定时器/计数器T2产生波特率 193
7.4 串行接口的实例与仿真 194
7.5 单片机多机通信 200
7.6 AT89C52单片机和PC机串口通信 207
7.7 RS-485总线实例与仿真 211
本章小结 214
思考题与习题 214
第8章 单片机扩展与实例仿真 216
8.1 存储器的扩展实例与仿真 216
8.1.1 数据存储器的扩展 216
8.1.2 程序存储器的扩展 220
8.1.3 数据存储器和程序存储器同时扩展 223
8.2 I/O接口的扩展实例与仿真 227
8.2.1 可编程并行接口芯片8255A 227
8.2.2 8255A的应用及仿真 232
8.3 I2C与SPI总线实例与仿真 236
8.3.1 I2C总线、实例与仿真 236
8.3.2 SPI总线实例与仿真 247
本章小结 251
习题与思考题 252
第9章 单片机接口技术与实例仿真 254
9.1 显示器接口应用实例与仿真 254
9.1.1 发光二极管(LED)及数码管 254
9.1.2 LED点阵显示屏 258
9.1.3 液晶显示器(LCD) 266
9.2 键盘接口应用实例与仿真 275
9.2.1 独立式键盘与单片机的接口 275
9.2.2 行列式键盘与单片机的接口 276
9.3 A/D、D/A接口应用实例与仿真 281
9.3.1 A/D转换器 281
9.3.2 D/A转换器 287
本章小结 294
思考题与习题 294
第10章 单片机高级应用实例 296
10.1 CAN总线节点的设计 296
10.1.1 CAN总线概述 296
10.1.2 CAN总线分层协议 297
10.1.3 报文传输 297
10.1.4 CAN节点硬件设计 299
10.1.5 CAN节点软件设计 304
10.2 Mifare射频卡读写器的设计 311
10.2.1 Mifare卡的内部结构 312
10.2.2 Mifare卡读写器主要模块的设计 313
10.2.3 Mifare卡操作流程 317
10.2.4 FM1702SL密钥的设计与冲突检测措施 319
10.2.5 Mifare卡读写软件设计 321
10.3 基于GPRS的远程监测系统的设计 329
10.3.1 GPRS技术简介 329
10.3.2 GPRS组网和协议转换流程 331
10.3.3 GPRS DTU简介 333
10.3.4 LQ8110 GPRS DTU应用 334
本章小结 340
思考题与习题 340
第11章 程序烧录与样机开发 341
11.1 项目开发概述 341
11.2 需求分析 341
11.3 硬件电路设计与焊接 343
11.3.1 准备工作 343
11.3.2 最小系统硬件电路焊接 346
11.3.3 电路板焊接效果检查 347
11.4 软件开发 348
11.4.1 软件开发过程 348
11.4.2 μVision3软件调试 348
11.5 程序下载 352
11.5.1 并行模式编程Flash原理 353
11.5.2 串行模式编程Flash原理 355
11.5.3 应用专业编程器的程序下载 357
11.5.4 简易编程器的程序下载 360
11.6 ISP编程器制作 362
11.6.1 自制ISP编程器的原理 362
11.6.2 应用AVR单片机ATMEGA8的制作方案 362
11.6.3 应用CH341A/CH341H的制作方案 364
11.7 综合调试 365
11.8 综合实例—掉电不丢失日历时钟 366
11.8.1 系统功能要求 366
11.8.2 功能分析及主要元器件确定 366
11.8.3 主要元器件性能介绍 367
11.8.4 硬件设计 372
11.8.5 软件设计及下载 374
本章小结 375
思考题与习题 375
附录A 主要单片机生产商网址及相关信息网址 376
附录B 常用数码对应关系 377
附录C Proteus VSM元件库和常用元器件说明 378
附录D C语言的关键字 381
附录E C51的库函数 383
E.1 一般I/O函数STDIO.H 383
E.2 绝对地址访问ABSACC.H 387
E.3 内部函数INTRINS.H 388
E.4 数学函数MATH.H 389
E.5 字符函数CTYPE.H 391
E.6 字符串函数STRING.H 392
E.7 访问SFR和SFR_bit地址REGXXX.H 393
附录F MCS-51指令表 394
附录G 光盘内容说明 398
参考文献 401