第1章 单片机基础知识 1
1.1 单片机的应用与发展 1
1.1.1 单片机的简单应用 1
1.1.2 单片机的发展历史 3
1.2 单片机的分类 6
1.3 AT89C52单片机简介 7
1.3.1 AT89C52单片机的引脚功能 8
1.3.2 AT89C52单片机的内部结构 9
1.3.3 AT89C52单片机的I/O接口部分和特殊功能部分 16
1.4 AT89C52单片机的时钟与复位电路 17
1.4.1 复位操作和复位电路 17
1.4.2 振荡电路和时钟 19
1.4.3 AT89C52单片机的机器周期 20
1.5 AT89C52单片机的低功耗工作方式 21
1.6 常用的名词术语和二进制编码 23
1.7 指令程序和指令执行 27
本章小结 27
思考题与习题 28
第2章 指令系统及汇编语言程序设计 29
2.1 寻址方式 29
2.2 指令系统 34
2.2.1 数据传送指令 34
2.2.2 算术运算指令 37
2.2.3 逻辑运算指令 39
2.2.4 位(布尔)操作类指令 41
2.2.5 控制转移类指令 42
2.3 汇编语言指令格式及汇编语言程序设计基础 46
2.3.1 汇编语言执行指令格式 46
2.3.2 汇编伪指令 47
2 单片机原理与应用实例仿真(第4版)
2.3.3 汇编语言的特点 49
2.3.4 汇编语言程序设计的步骤 49
本章小结 49
思考题与习题 49
第3章 单片机的C语言程序设计 51
3.1 C51的程序结构 51
3.2 数据类型、存储类型及存储模式 53
3.2.1 数据类型 53
3.2.2 常量和变量 54
3.2.3 C51的存储类型及存储模式 55
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的构造数据类型 68
3.4.1 数 组 68
3.4.2 结 构 69
3.4.3 联 合 70
3.4.4 枚 举 71
3.4.5 指 针 71
3.5 C51实例分析及混合编程 74
3.5.1 C51实例分析 74
3.5.2 混合编程 75
3.6 Keil C51简介 78
3.6.1 项目文件的建立、设置与目标文件的获得 78
3.6.2 程序的调试 81
本章小结 85
思考题与习题 85
第4章 单片机的I/O口及Proteus简介 87
4.1 P0~P3端口的结构与功能 87
4.1.1 P0端口的结构与功能 87
4.1.2 P1端口的结构与功能 88
4.1.3 P2端口的结构与功能 89
4.1.4 P3端口的结构与功能 90
4.2 Proteus简介 91
4.2.1 Proteus ISIS的工作界面 92
4.2.2 Proteus ISIS的基本操作 92
4.2.3 Proteus ISIS的原理图绘制和仿真 96
4.2.4 Proteus与Keil C相结合的设计和仿真 98
4.3 I/O口应用实例与仿真 105
4.3.1 LED与数码管简介 105
4.3.2 LED点阵显示屏 107
4.3.3 简易键盘的设计 109
4.3.4 I/O口的实例仿真 111
本章小结 125
思考题与习题 125
第5章 单片机的中断系统与实例仿真 126
5.1 中断系统结构 126
5.1.1 中断概述 126
5.1.2 中断系统结构与中断控制 127
5.2 中断的实现过程 132
5.2.1 中断采样 133
5.2.2 中断查询 133
5.2.3 中断响应 133
5.2.4 中断服务 135
5.2.5 中断返回 136
5.2.6 中断请求的撤销 137
5.3 中断系统实例与仿真 138
本章小结 148
思考题与习题 149
第6章 定时/计数器原理及实例仿真 150
6.1 定时/计数器0和1结构和工作原理 150
6.1.1 定时/计数器0和1 150
6.1.2 与定时/计数器0和定时/计数器1相关的特殊功能寄存器
151
6.1.3 定时/计数器0和定时/计数器1的工作模式 153
6.2 定时/计数器2(T/C2)的结构和工作原理 155
4 单片机原理与应用实例仿真(第4版)
6.2.1 与定时/计数器2相关的特殊功能寄存器 155
6.2.2 定时/计数器2的工作模式 156
6.3 仿真实例 160
6.3.1 定时器工作方式实例 160
6.3.2 计数器工作方式实例 166
6.3.3 捕捉模式实例 168
6.3.4 定时/计数器复杂应用实例 174
6.4 看门狗定时器 178
6.4.1 看门狗简介 178
6.4.2 看门狗的工作原理 179
6.4.3 看门狗的使用 179
6.4.4 高级看门狗 180
本章小结 180
思考题与习题 181
第7章 单片机的串行通信与实例仿真 182
7.1 串行通信概述 182
7.2 串行接口结构与工作原理 184
7.2.1 AT89C52单片机的串行接口结构 184
7.2.2 AT89C52单片机的串行通信过程 185
7.3 串行接口的控制寄存器与工作方式 185
7.3.1 串行接口的控制寄存器 185
7.3.2 串行口的工作方式 188
7.3.3 波特率的确定 191
7.3.4 定时/计数器T2产生波特率 192
7.4 串行接口的实例与仿真 193
7.5 单片机多机通信 200
7.6 单片机与PC机串行口通信 207
7.6.1 RS232C接口 207
7.6.2 RS485接口 212
7.6.3 Proteus实现的PC机与单片机的串行通信仿真 216
7.6.4 单片机与计算机的串行通信技术 221
本章小结 232
思考题与习题 232
第8章 单片机扩展技术与实例仿真 234
8.1 存储器的扩展实例与仿真 234
8.1.1 数据存储器的扩展 234
8.1.2 程序存储器的扩展 239
8.2 I/O接口的扩展实例与仿真 243
8.2.1 可编程接口芯片8255A 243
8.2.2 8255A的应用及仿真 249
8.3 D/A、A/D接口应用实例与仿真 252
8.3.1 D/A转换器 252
8.3.2 A/D转换器 260
本章小结 267
习题与思考题 267
第9章 单片机高级应用实例 269
9.1 Mifare射频卡读/写器的设计 269
9.1.1 Mifare卡的内部结构 270
9.1.2 Mifare卡读/写器主要模块的设计 272
9.1.3 Mifare卡操作流程 277
9.1.4 FM1702SL密钥的设计与冲突检测措施 278
9.1.5 Mifare卡读/写软件设计 280
9.2 基于nRF905的无线传输系统设计 287
9.2.1 nRF905简介 288
9.2.2 nRF905电路原理图 292
9.2.3 nRF905固件程序设计 294
本章小结 301
思考题与习题 301
第10章 程序烧录与样机开发 302
10.1 项目开发流程 302
10.1.1 项目开发概述 302
10.1.2 需求分析 302
10.1.3 系统总体设计 305
10.2 硬件电路设计与焊接 306
10.2.1 准备工作 306
10.2.2 小系统硬件电路焊接 308
6 单片机原理与应用实例仿真(第4版)
10.2.3 电路板焊接效果检查 309
10.3 软件开发 310
10.3.1 软件开发过程 311
10.3.2 构建软件项目 312
10.3.3 μVision5软件调试 316
10.4 程序存储器编程 321
10.4.1 程序存储器编程方法 321
10.4.2 在线编程原理 322
10.4.3 STC系列单片机的程序下载 324
10.5 综合调试 326
10.6 综合实例———掉电不丢失日历时钟 327
10.6.1 系统功能要求 327
10.6.2 功能分析及主要元器件确定 327
10.6.3 主要元器件性能介绍 328
10.6.4 硬件设计 334
10.6.5 软件设计 335
本章小结 337
思考题与习题 337
附录A 主要单片机生产商网址及相关信息网址 338
附录B 常用数码对应关系表 339
附录C Proteus VSM 元件库和常用元器件说明 340
附录D C语言的关键字 343
附录E C51的库函数 345
附录F MCS 51指令表 356
参考文献 360
实例目录
例2.1 寄存器寻址方式 31
例2.2 直接寻址方式 31
例2.3 直接寻址和立即寻址对比 32
例2.4 寄存器间接寻址方式 32
例2.5 变址寻址方式 33
例2.6 相对寻址方式 33
例2.7 位寻址方式 34
例2.8 共阴极数码管对应的显示代码程序 36
例2.9 标号和字节伪指令DB的使用 47
例2.10 伪指令DS、DB、DW 的使用 48
例3.1 将外部数据存储器2000H~20FFH的内容清零 52
例3.2 求两个数的和 63
例3.3 设计一个程序来实现以下功能:使用拨动开关模拟从P3.0口输入一个脉
冲,控制P1口按十六进制加一方式变化。这里选用AT89C52单片机
74
例3.4 编写一个流水灯程序,其中延时程序用汇编语言编写 77
例4.1 闪烁灯的Proteus仿真及C语言程序设计 111
例4.2 模拟开关灯的Proteus仿真及C语言程序设计 113
例4.3 广告灯(利用查表方式)的Proteus仿真及程序设计 115
例4.4 I/O 并行口直接驱动数码管显示的Proteus仿真及C语言程序设计
119
例4.5 动态数码管显示的Proteus仿真及C语言程序设计 121
例5.1 外部中断0的Proteus仿真及C语言程序设计 138
例5.2 外部中断在不同触发方式下的Proteus仿真及C语言程序设计 140
例5.3 流水灯Proteus仿真及C语言程序设计 142
例5.4 两位计数数码管的Proteus仿真及C语言程序设计 144
例5.5 74LS148外部中断扩展的Proteus仿真及C语言程序设计 147
例6.1 将例4.1中的软件延时方式改为使用定时器来延时,其他内容不变
161
例6.2 利用定时器产生脉冲的Proteus仿真及C语言程序设计 163
例6.3 简易车辆里程表的Proteus仿真及C语言程序设计 166
8 单片机原理与应用实例仿真(第4版)
例6.4 利用定时器2测量脉冲宽度的Proteus仿真及C语言程序设计 168
例6.5 音乐播放的Proteus仿真及C语言程序设计 175
例7.1 串入并出芯片74164的Proteus仿真及C语言程序设计 193
例7.2 串行口自检的Proteus仿真及C语言程序设计 195
例7.3 单片机与单片机之间的串行通信Proteus仿真及C语言程序设计 196
例7.4 多机通信的Proteus仿真与C语言程序设计 201
例7.5 单片机与PC机串行通信的Proteus仿真及C语言程序设计 209
例7.6 RS485串行通信的Proteus仿真及C语言程序设计 214
例7.7 串行通信的Proteus仿真及C语言程序设计 218
例7.8 Visual Basic 6.0上位机程序控制DS1302时钟的Proteus仿真 223
例8.1 AT89C52用一片6264芯片扩展8 KB数据存储器并在Proteus中仿真
236
例8.2 AT89C52用一片2764芯片扩展8 KB程序存储器 241
例8.3 AT89C52通过8255A 并行扩展,模拟交通灯控制并在Proteus中仿真
249
例8.4 利用DAC0832转换器输出三角波的Proteus仿真电路和C语言程序设计
257
例8.5 ADC0808电压模数转换Proteus仿真电路和C语言程序设计 264