第1章 AVR单片机基础 1
1.1 单片机概述 1
1.1.1 单片机的发展 1
1.1.2 单片机的应用领域 4
1.2 AVR系列单片机简介 4
1.2.1 AVR单片机的主要特点 5
1.2.2 AVR单片机选型指南 6
1.3 ATmega32单片机总体结构 7
1.3.1 片内总体结构 7
1.3.2 外部引脚与封装 9
1.4 ATmega32中央处理器 11
1.4.1 运算逻辑单元 12
1.4.2 特殊寄存器 12
1.4.3 通用寄存器 14
1.5 ATmega32存储器结构 16
1.5.1 可编程的Flash程序存储器 16
1.5.2 SRAM数据存储器 16
1.5.3 EEPROM存储器 17
1.6 外围接口特征 18
1.6.1 I/O端口子系统 18
1.6.2 中断子系统 19
1.6.3 定时子系统 21
1.6.4 串行通信子系统 22
1.6.5 模拟接口子系统 25
1.7 本章小结 26
第2章 AVR单片机的开发工具 27
2.1 开发工具概述 27
2.1.1 硬件开发工具 27
2.1.2 软件开发工具 29
2.2 Protel使用介绍 31
2.2.1 环境简介 31
2.2.2 绘制原理图流程 32
2.3 CVAVR使用介绍 37
2.3.1 环境简介 37
2.3.2 项目开发流程 38
2.3.3 代码生成器 52
2.4 AVR Studio使用介绍 58
2.4.1 环境简介 59
2.4.2 软件模拟仿真 60
2.5 本章小结 66
第3章 AVR单片机系统开发过程 66
3.1 系统开发概述 67
3.2 系统定义 68
3.2.1 系统功能描述 68
3.2.2 可行性论证 69
3.2.3 撰写任务书 69
3.3 总体方案设计 69
3.3.1 方案描述 70
3.3.2 系统划分 70
3.4 系统硬件设计 70
3.4.1 硬件逻辑框图设计 70
3.4.2 器件选型 71
3.4.3 单片机最小系统设计 71
3.4.4 外围电路设计 75
3.4.5 硬件可靠性设计 76
3.5 系统软件设计 78
3.5.1 绘制程序流程图 79
3.5.2 代码优化 80
3.5.3 软件可靠性设计 83
3.6 系统调试 85
3.6.1 硬件调试 85
3.6.2 软件调试 86
3.6.3 系统联调 87
3.7 程序下载 87
3.8 本章小结 89
第4章 AVR单片机片内资源的编程 90
4.1 I/O端口子系统的编程 90
4.1.1 资源概述 90
4.1.2 I/O端口使用注意事项 91
4.1.3 应用举例:跑马灯 92
4.2 中断子系统 94
4.2.1 资源概述 95
4.2.2 中断使用注意事项 98
4.2.3 应用举例:报警器 99
4.3 定时子系统的编程 101
4.3.1 T/C0 101
4.3.2 T/C1 107
4.3.3 T/C2 116
4.4 串行通信子系统的编程 122
4.4.1 USART 122
4.4.2 SPI 128
4.4.3 TWI 135
4.5 模拟接口子系统的编程 141
4.5.1 ADC 141
4.5.2 模拟比较器 149
4.6 本章小结 152
第5章 AVR单片机典型外部电路 153
5.1 按键开关 153
5.1.1 概述 153
5.1.2 应用举例 154
5.2 矩阵式键盘 159
5.2.1 概述 159
5.2.2 应用举例 160
5.3 LED数码管显示 163
5.3.1 概述 163
5.3.2 应用举例 166
5.4 LED点阵显示 176
5.4.1 概述 176
5.4.2 应用举例 177
5.5 LCD显示 179
5.5.1 概述 179
5.5.2 应用举例 180
5.6 本章小结 190
第6章 办公室自动灭火系统 191
6.1 系统概述 191
6.1.1 项目背景 191
6.1.2 系统功能 192
6.2 系统方案设计 192
6.2.1 功能组成框图 192
6.2.2 总体结构 192
6.3 硬件设计 193
6.3.1 火焰检测单元 193
6.3.2 烟雾检测单元 195
6.3.3 步进电机单元 195
6.3.4 电子阀门单元 201
6.3.5 单片机控制单元 203
6.4 软件设计 203
6.4.1 总体框图 203
6.4.2 完整代码 204
6.5 系统测试 217
6.6 进一步的分析 218
6.7 本章小结 219
第7章 手持式电子血压计 220
7.1 系统概述 220
7.1.1 项目背景 220
7.1.2 需求分析 221
7.2 系统方案设计 221
7.2.1 系统结构设计 221
7.2.2 设备选型 222
7.3 硬件设计 223
7.3.1 传感器电路 223
7.3.2 人机接口电路 228
7.3.3 单片机电路 232
7.3.4 电源电路 233
7.4 软件设计 234
7.4.1 软件框图 234
7.4.2 代码详解 237
7.5 系统测试 251
7.6 进一步的分析 252
7.7 本章小结 252
第8章 带触摸屏的遥控机器人 253
8.1 系统概述 253
8.1.1 项目背景 253
8.1.2 需求分析 254
8.2 系统方案设计 255
8.2.1 系统结构设计 255
8.2.2 设备选型 255
8.3 遥控端硬件设计 257
8.3.1 触摸屏电路 257
8.3.2 无线发送电路 258
8.3.3 单片机电路 259
8.4 受控端硬件设计 260
8.4.1 无线接收电路 261
8.4.2 电机驱动电路 261
8.4.3 单片机电路 263
8.5 软件设计 264
8.5.1 触摸屏坐标点捕获 265
8.5.2 速度和方向计算 265
8.5.3 控制信号生成 266
8.5.4 遥控端代码详解 266
8.5.5 受控端代码详解 283
8.6 系统测试 292
8.7 进一步的分析 293
8.8 本章小结 293
第9章 多路无线报警系统 294
9.1 项目概述 294
9.1.1 项目背景 294
9.1.2 需求分析 295
9.2 系统方案设计 295
9.3 硬件设计 297
9.3.1 发射机电路 297
9.3.2 接收机电路 303
9.3.3 电源电路 309
9.4 软件设计 310
9.4.1 软件框图 310
9.4.2 代码详解 313
9.5 进一步的分析 319
9.6 本章小结 320
第10章 MP3播放系统 321
10.1 项目概述 321
10.1.1 项目背景 321
10.1.2 需求分析 322
10.2 系统方案设计 324
10.3 硬件设计 325
10.3.1 MCU和红外接收头电路 326
10.3.2 MP3解码电路 327
10.3.3 音效处理电路 327
10.3.4 耳机放大电路 328
10.3.5 收音机模块电路 330
10.3.6 SD卡接口电路 330
10.3.7 液晶接口电路 330
10.3.8 电源部分电路 331
10.3.9 硬件PCB设计 333
10.4 软件设计 334
10.4.1 系统软件框图 334
10.4.2 LCD模块驱动程序设计 335
10.4.3 红外遥控解码模块驱动程序设计 338
10.4.4 SD卡模块驱动程序设计 341
10.4.5 VS1003驱动模块程序设计 342
10.4.6 CD3314驱动模块程序设计 345
10.4.7 TEA5767驱动模块程序设计 347
10.4.8 FAT文件系统管理模块程序设计 352
10.4.9 音乐播放模块程序设计 363
10.5 进一步的分析 374
10.6 本章小结 375
附录A ATmega32 I/O寄存器汇总 376
附录B ATmega32熔丝位汇总 379
B.1 功能熔丝 379
B.2 与Bootloader有关的熔丝 379
B.3 与系统时钟源选择和上电启动延时时间有关的熔丝 380
B.4 保密熔丝 386
附录C ATmega32汇编指令集 387
C.1 算术和逻辑指令 387
C.2 跳转指令 388
C.3 数据传送指令 390
C.4 位操作和位测试指令 391
C.5 MCU控制指令 392
参考文献 393