第1篇 AVR单片机基础 3
第1章 AVR单片机概述 3
1.1 AVR单片机及其发展 3
1.1.1 AVR单片机简介 3
1.1.2 AVR单片机的特点 4
1.1.3 AVR单片机的分类 5
1.2 ATmega128(L)单片机 5
1.2.1 ATmega128(L)结构和主要特点 5
1.2.2 ATmega128(L)的主要性能 7
1.2.3 ATmega128(L)的封装与引脚 8
1.3 本章小结 12
第2章 ATmega128(L)单片机硬件结构 13
2.1 ATmega128(L)的内核 13
2.2 ATmega128(L)的存储器 14
2.2.1 ATmega128(L)的内部存储器 14
2.2.2 ATmega128(L)的外部存储器 15
2.3 ATmega128(L)的系统时钟及电源管理 15
2.3.1 系统时钟 15
2.3.2 电源管理与休眠模式 18
2.4 ATmega128(L)的复位及中断 19
2.4.1 ATmega128(L)的复位逻辑 19
2.4.2 ATmega128(L)的中断及中断响应 20
2.5 ATmega128(L)的定时器/计数器 22
2.5.1 8位定时器/计数器T/C0 22
2.5.2 8位定时器/计数器T/C2 26
2.5.3 16位定时器/计数器T/C1和T/C3 26
2.6 ATmega128(L)的总线接口 31
2.6.1 同步外设接口SPI 31
2.6.2 通用同步/异步串行接口USART0和USART1 32
2.6.3 两线串行TWI总线接口 35
2.7 本章小结 37
第3章 ATmega128(L)的指令系统 38
3.1 ATmega128(L)的指令系统概述 38
3.2 ATmega128(L)的指令操作数的寻址方式 43
3.3 算术和逻辑运算指令 45
3.3.1 加法指令 45
3.3.2 减法指令 46
3.3.3 取反码和补码指令 48
3.3.4 乘法指令 48
3.3.5 逻辑与指令 50
3.3.6 逻辑或指令 51
3.3.7 逻辑异或指令 52
3.4 比较和转移指令 53
3.4.1 比较指令 53
3.4.2 无条件转移指令 54
3.4.3 条件转移指令 54
3.4.4 子程序调用与返回指令 60
3.5 数据传输指令 61
3.5.1 直接数据传输指令 62
3.5.2 间接数据传输指令 63
3.5.3 与程序存储器有关的数据传输指令 65
3.5.4 I/O口数据传输指令 67
3.5.5 堆栈操作指令 68
3.6 位操作指令 68
3.6.1 带进位的位操作指令 68
3.6.2 位变量传输指令 70
3.6.3 位修改指令 70
3.7 MCU控制指令 74
3.8 ATmega128(L)的汇编语言 75
3.8.1 汇编语言语句格式及伪指令 75
3.8.2 表达式 76
3.9 本章小结 77
第4章 AVR单片机硬件电路设计工具 78
4.1 Protel 99 SE中典型元器件的原理图符号和PCB封装绘制 78
4.1.1 元器件封装的概念 78
4.1.2 电阻的原理图符号和PCB封装 79
4.1.3 电容的原理图符号和PCB封装 80
4.1.4 二极管和三极管的原理图符号和PCB封装 81
4.1.5 典型集成电路的原理图符号和PCB封装 83
4.2 原理图和PCB图的绘制流程 84
4.2.1 绘制原理图 84
4.2.2 绘制PCB图 86
4.3 地线 90
4.3.1 地线的概念及分类 90
4.3.2 PCB设计中地线的处理 91
4.4 本章小结 91
第5章 AVR单片机软件开发环境 92
5.1 软件开发环境 92
5.2 AVR Studio 4.13 SP2开发环境 94
5.2.1 AVR Studio 4.13 SP2开发环境获取与安装 94
5.2.2 AVR Studio 4.13 SP2的菜单 95
5.2.3 使用AVR Studio 4.13 SP2 101
5.3 本章小结 103
第6章 AVR单片机C语言开发 104
6.1 C语言基础知识 104
6.1.1 标识符和关键字 104
6.1.2 基本数据类型、常量和变量 104
6.1.3 常见运算符 106
6.1.4 程序中的语句种类 107
6.2 C语言高级编程 110
6.2.1 数组 110
6.2.2 指针 112
6.2.3 结构、共用体和枚举 115
6.2.4 函数 119
6.2.5 预处理 122
6.3 AVRStudio 4.13 SP2对ANSIC的扩展 125
6.3.1 I/O寄存器和端口操作 125
6.3.2 AVR单片机存储器中数据的访问 126
6.3.3 AVR单片机的中断服务程序 130
6.4 本章小结 132
第2篇 AVR单片机典型模块C语言应用实例 135
第7章 I/O的应用 135
7.1 I/O端口概述 135
7.2 I/O口控制发光二极管 136
7.2.1 实例功能 136
7.2.2 典型器件介绍 136
7.2.3 硬件设计 136
7.2.4 程序设计及详解 137
7.2.5 经验总结 138
7.3 I/O口控制八段数码管 138
7.3.1 实例功能 138
7.3.2 典型器件介绍 138
7.3.3 硬件设计 138
7.3.4 程序设计及详解 139
7.3.5 经验总结 140
7.4 I/O模拟1-Wire总线控制DS18B20 140
7.4.1 实例功能 140
7.4.2 典型器件介绍 140
7.4.3 硬件设计 141
7.4.4 程序设计及详解 142
7.4.5 经验总结 145
7.5 本章小结 145
第8章 定时器/计数器应用 146
8.1 定时器/计数器概述 146
8.2 利用定时器实现方波输出 146
8.2.1 实例功能 146
8.2.2 硬件设计 146
8.2.3 程序设计及其详解 147
8.2.4 经验总结 148
8.3 利用定时器/计数器实现按键的复用 148
8.3.1 实例功能 148
8.3.2 硬件设计 148
8.3.3 程序设计及详解 149
8.3.4 经验总结 150
8.4 本章小结 150
第9章 中断的应用 151
9.1 中断概述 151
9.2 利用定时器中断报警 151
9.2.1 实例功能 151
9.2.2 典型器件介绍 151
9.2.3 硬件设计 152
9.2.4 程序设计及详解 152
9.2.5 经验总结 153
9.3 利用中断实现对按键的响应 153
9.3.1 实例功能 153
9.3.2 典型器件介绍 153
9.3.3 硬件设计 154
9.3.4 程序设计及详解 154
9.3.5 经验总结 155
9.4 本章小结 155
第10章 串行口的应用 156
10.1 串行通信概述 156
10.2 RS-232总线接口 157
10.2.1 实例功能 157
10.2.2 典型器件介绍 157
10.2.3 硬件设计 158
10.2.4 程序设计及详解 159
10.2.5 经验总结 160
10.3 RS-485总线接口 160
10.3.1 实例功能 160
10.3.2 典型器件介绍 160
10.3.3 硬件设计 161
10.3.4 程序设计及详解 162
10.3.5 经验总结 164
10.4 单片机之间的通信 164
10.4.1 实例功能 164
10.4.2 典型器件介绍 164
10.4.3 硬件设计 164
10.4.4 程序设计及详解 164
10.4.5 经验总结 167
10.5 本章小结 167
第11章 程序存储器扩展 168
11.1 程序存储器概述 168
11.2 扩展EPROM 169
11.2.1 实例功能 169
11.2.2 典型器件介绍 170
11.2.3 硬件设计 171
11.2.4 程序设计及详解 171
11.2.5 经验总结 172
11.3 扩展E2PROM 173
11.3.1 实例功能 173
11.3.2 典型器件介绍 173
11.3.3 硬件设计 175
11.3.4 程序设计及详解 175
11.3.5 经验总结 177
11.4 扩展Flash存储器 177
11.4.1 实例功能 177
11.4.2 典型器件介绍 177
11.4.3 硬件设计 179
11.4.4 程序设计及详解 179
11.4.5 经验总结 181
11.5 本章小结 181
第12章 数据存储器扩展 182
12.1 数据存储器概述 182
12.2 扩展SRAM 182
12.2.1 实例功能 182
12.2.2 典型器件介绍 183
12.2.3 硬件设计 184
12.2.4 程序设计及详解 185
12.2.5 经验总结 186
12.3 扩展NVSRAM 186
12.3.1 实例功能 186
12.3.2 典型器件介绍 187
12.3.3 硬件设计 188
12.3.4 程序设计及详解 189
12.3.5 经验总结 190
12.4 本章小结 190
第3篇 AVR单片机接口典型应用 193
第13章 键盘接口 193
13.1 键盘概述 193
13.2 外接4个键盘 193
13.2.1 实例功能 193
13.2.2 硬件设计 193
13.2.3 程序设计及详解 194
13.2.4 经验总结 195
13.3 与4×4键盘的接口设计 195
13.3.1 实例功能 196
13.3.2 硬件设计 196
13.3.3 程序设计及详解 196
13.3.4 经验总结 202
13.4 本章小结 202
第14章 LCD接口 203
14.1 LCD概述 203
14.2 外接字符点阵LCD 205
14.2.1 实例功能 205
14.2.2 典型器件介绍 205
14.2.3 硬件设计 207
14.2.4 程序设计及详解 208
14.2.5 经验总结 211
14.3 外接图像点阵LCD 211
14.3.1 实例功能 211
14.3.2 典型器件介绍 211
14.3.3 硬件设计 216
14.3.4 程序设计及详解 216
14.3.5 经验总结 219
14.4 本章小结 219
第15章 打印机接口 220
15.1 微型打印机概述 220
15.2 外接串行打印机 221
15.2.1 实例功能 221
15.2.2 典型器件介绍 221
15.2.3 硬件设计 223
15.2.4 程序设计及详解 224
15.2.5 经验总结 225
15.3 外接并行打印机 225
15.3.1 实例功能 225
15.3.2 典型器件介绍 225
15.3.3 硬件设计 226
15.3.4 程序设计及详解 227
15.3.5 经验总结 228
15.4 本章小结 228
第16章 A/D接口 229
16.1 A/D转换器概述 229
16.2 外接逐次比较型A/D 231
16.2.1 实例功能 231
16.2.2 典型器件介绍 231
16.2.3 硬件设计 233
16.3.4 程序设计及详解 233
16.2.5 经验总结 235
16.3 外接半闪烁型高速A/D 235
16.3.1 实例功能 235
16.3.2 典型器件介绍 236
16.3.3 硬件设计 239
16.3.4 程序设计及详解 239
16.3.5 经验总结 242
16.4 外接∑-△型A/D 242
16.4.1 实例功能 242
16.4.2 典型器件介绍 242
16.4.3 硬件设计 246
16.4.4 程序设计及详解 246
16.4.5 经验总结 249
16.5 本章小结 249
第17章 D/A接口实例 250
17.1 D/A转换器概述 250
17.2 外接倒T型D/A 251
17.2.1 实例功能 251
17.2.2 典型器件介绍 251
17.2.3 硬件设计 254
17.2.4 程序设计及详解 255
17.2.5 经验总结 256
17.3 外接权电流型D/A 256
17.3.1 实例功能 256
17.3.2 典型器件介绍 257
17.3.3 硬件设计 259
17.3.4 程序设计及详解 259
17.3.5 经验总结 261
17.4 本章小结 262
第18章 可编程器件接口 263
18.1 可编程器件概述 263
18.2 可编程并行接口芯片接口 263
18.2.1 实例功能 263
18.2.2 典型器件介绍 264
18.2.3 硬件设计 266
18.2.4 程序设计及详解 267
18.2.5 经验总结 269
18.3 可编程中断控制器接口 270
18.3.1 实例功能 270
18.3.2 典型器件介绍 270
18.3.3 硬件设计 273
18.3.4 程序设计及详解 273
18.3.5 经验总结 276
18.4 可编程计数器/定时器接口 276
18.4.1 实例功能 276
18.4.2 典型器件介绍 276
18.4.3 硬件设计 278
18.4.4 程序设计及详解 279
18.4.5 经验总结 281
18.5 本章小结 281
第19章 I2C总线接口 282
19.1 I2C总线接口概述 282
19.2 与AT24C64接口 283
19.2.1 实例功能 283
19.2.2 典型器件介绍 283
19.2.3 硬件设计 286
19.2.4 程序设计及详解 286
19.2.5 经验总结 288
19.3 与温湿度传感器SHT75接口 289
19.3.1 实例功能 289
19.3.2 典型器件介绍 289
19.3.3 硬件设计 292
19.3.4 程序设计及详解 292
19.3.5 经验总结 297
19.4 本章小结 297
第20章 SPI总线接口 298
20.1 SPI总线接口概述 298
20.2 SPI接口的Flash的访问 299
20.2.1 实例功能 299
20.2.2 典型器件介绍 299
20.2.3 硬件设计 301
20.2.4 程序设计及详解 301
20.2.5 经验总结 307
20.3 利用SPI总线实现单片机之间的通信 307
20.3.1 实例功能 307
20.3.2 典型器件介绍 307
20.3.3 硬件设计 307
20.3.4 程序设计及详解 308
20.3.5 经验总结 309
20.4 本章小结 309
第21章 CAN总线接口 310
21.1 CAN总线接口概述 310
21.2 利用SIA1000实现数据传输 311
21.2.1 实例功能 311
21.2.2 典型器件介绍 311
21.2.3 硬件设计 315
21.2.4 程序设计及详解 316
21.2.5 经验总结 320
21.3 利用CAN总线实现单片机间的通信 320
21.3.1 实例功能 320
21.3.2 典型器件介绍 320
21.3.3 硬件设计 320
21.3.4 程序设计及详解 320
21.3.5 经验总结 325
21.4 本章小结 325
第4篇 综合系统实例 329
第22章 MP3播放器设计 329
22.1 硬件电路设计 329
22.1.1 实例背景 329
22.1.2 硬件设计流程 330
22.1.3 典型器件选型及介绍 330
22.1.4 硬件电路 333
22.2 软件设计 337
22.2.1 软件设计流程 337
22.2.2 软件模块分析 337
22.2.3 程序设计及详解 337
22.3 经验总结 341
22.4 本章小结 342
第23章 小型打印机系统 343
23.1 硬件电路设计 343
23.1.1 实例背景 343
23.1.2 硬件设计流程 344
23.1.3 典型器件选型及介绍 347
23.1.4 硬件电路 347
23.2 软件设计 350
23.2.1 软件设计流程 350
23.2.2 软件模块分析 351
23.2.3 程序设计及详解 351
23.3 经验总结 354
23.4 本章小结 355
第24章 智能充电器 356
24.1 硬件电路设计 356
24.1.1 实例背景 356
24.1.2 硬件设计流程 357
24.1.3 典型器件选型及介绍 357
24.1.4 硬件电路 360
24.2 软件设计 362
24.2.1 软件设计流程 362
24.2.2 软件模块分析 363
24.2.3 程序设计及详解 363
24.3 经验总结 368
24.4 本章小结 368
第25章 直流电机的控制 369
25.1 硬件电路设计 369
25.1.1 实例背景 369
25.1.2 硬件设计流程 369
25.1.3 典型器件选型及介绍 370
25.1.4 硬件电路 373
25.2 软件设计 376
25.2.1 软件设计流程 376
25.2.2 软件模块分析 377
25.2.3 程序设计及详解 377
25.3 经验总结 383
25.4 本章小结 383
第26章 温湿度传感器 384
26.1 硬件电路设计 384
26.1.1 实例背景 384
26.1.2 硬件设计流程 385
26.1.3 典型器件选型及介绍 385
26.1.4 硬件电路 387
26.2 软件设计 390
26.2.1 软件设计流程 390
26.2.2 软件模块分析 390
26.2.3 程序设计及详解 390
26.3 经验总结 399
26.4 本章小结 399
第27章 手持无线遥控器 400
27.1 硬件电路设计 400
27.1.1 实例背景 400
27.1.2 硬件设计流程 401
27.1.3 典型器件选型及介绍 402
27.1.4 硬件电路 405
27.2 软件设计 408
27.2.1 软件设计流程 408
27.2.2 软件模块分析 408
27.2.3 程序设计及详解 408
27.3 经验总结 418
27.4 本章小结 418