第1章 AVR单片机的基础知识 1
1.1 AVR单片机特点与种类 1
1.1.1 AVR单片机的特点 1
1.1.2 封装和引脚功能 3
1.1.3 AVR种类与标识 6
1.1.4 AVR单片机的基本结构 7
1.2 ATmega16/32/128系列单片机 9
1.2.1 ATmega16单片内部结构 9
1.2.2 封装与引脚功能 11
1.2.3 ATmega128系列单片机 13
1.2.4 AVR程序下载 18
1.2.5 ATmega128单片机熔丝位 19
第2章 AVR单片机的系统开发工具 23
2.1 AVR单片机系统的软硬件开发工具 23
2.1.1 AVR单片机系统的硬件开发工具 23
2.1.2 AVR单片机系统的软件开发平台 26
2.1.3 AVR单片机的开发板及下载线 30
2.2 AVR单片机C语言编程基础 33
2.2.1 C语言的构成及特点 34
2.2.2 运算符和表达式 36
2.2.3 C语言的语句及程序结构 38
2.2.4 数组 43
2.2.5 指针变量和指针运算符 44
2.2.6 函数与参数传递 45
2.2.7 编译预处理 48
2.2.8 结构体与链表 52
2.2.9 运算符 54
2.3 CVAVR编译器开发环境 55
2.3.1 开发环境简介 56
2.3.2 开发环境的应用 56
2.3.3 代码生成器 66
2.4 ICCAVR集成开发环境 71
2.4.1 概述 72
2.4.2 ICCAVR的安装与注册 73
2.4.3 ICCAVR的IDE环境 75
2.4.4 ICCAVR的设置与使用 79
2.4.5 ICCAVR的函数库 88
2.4.6 AVR的编程 94
2.5 AVR Studio集成开发环境 101
2.5.1 AVR Studio概述 101
2.5.2 AVR Studio的IDE 108
2.5.3 设置AVR Studio 116
2.5.4 查看和修改状态 122
2.5.5 AVR汇编器 123
2.5.6 AVR下载线 126
第3章 ATmega128单片机的指令系统 131
3.1 AVR单片机指令系统的特点与指令种类 131
3.2 AVR系列单片机的指令格式 132
3.2.1 指令符号 132
3.2.2 函数表达式 136
3.2.3 AVR指令与标志位的关系 137
3.3 AVR单片机的寻址方式 137
3.3.1 程序直接寻址 138
3.3.2 程序间接寻址 138
3.3.3 程序相对寻址 138
3.3.4 程序取常量寻址 139
3.3.5 单寄存器直接寻址 140
3.3.6 双寄存器直接寻址 140
3.3.7 堆栈寄存器间接寻址 140
3.3.8 I/O寄存器直接寻址 141
3.3.9 数据存储器直接寻址 141
3.3.10 数据存储器间接寻址 141
3.3.11 程序存储器数据寻址 142
3.3.12 数据存储器间接寻址 142
3.3.13 程序存储器带后增量的空间取常量寻址 143
3.4 数据传输指令 144
3.4.1 数据传输至寄存器的指令 145
3.4.2 数据传输至SRAM中的指令 152
3.4.3 写程序存储器指令 156
3.4.4 堆栈操作指令 156
3.5 算术和逻辑指令 157
3.5.1 加法指令 158
3.5.2 减法指令 159
3.5.3 乘法指令 161
3.5.4 逻辑与指令 166
3.5.5 逻辑或指令 167
3.5.6 逻辑异或指令 168
3.5.7 取反码指令 169
3.5.8 取补码指令 169
3.6 转移和跳转指令 170
3.6.1 无条件跳转指令 171
3.6.2 调用和返回指令 172
3.6.3 条件跳转指令 174
3.7 位指令和位测试指令 183
3.7.1 位变量修改指令 184
3.7.2 带进位逻辑操作指令 189
3.7.3 位变量传送指令 191
3.8 MCU控制指令 191
3.9 汇编语言的应用 193
3.9.1 汇编语言格式 193
3.9.2 汇编语言应用实例 194
第4章 ATmega128单片机I/O端口的应用 207
4.1 ATmega128单片机的I/O端口 207
4.1.1 ATmega128单片机I/O端口结构与特点 207
4.1.2 各端口说明 211
4.2 I/O寄存器的设置与编程 221
4.2.1 I/O寄存器的操作特点 221
4.2.2 I/O寄存器的C语言程序 221
4.2.3 特殊功能I/O寄存器SFIOR 222
4.2.4 通用I/O口的设置与编程 222
4.3 I/O口控制应用实例 224
4.3.1 I/O口控制LED发光二极管应用实例 224
4.3.2 I/O口控制LED数码管应用实例 228
4.3.3 I/O口控制LED点阵应用实例 232
4.3.4 I/O口键盘扫描电路应用实例 237
4.3.5 I/O口控制1602液晶显示应用实例 241
4.3.6 I/O口控制12864中文液晶显示应用实例 245
第5章 ATmega128单片机定时/计数器的应用 250
5.1 定时/计数器作用与使用注意事项 250
5.1.1 定时器的作用 250
5.1.2 使用定时/计数器时需要注意的问题 250
5.2 预分频器 251
5.2.1 T/C0的预分频器 252
5.2.2 T/C1、T/C2和T/C3的预分频器 252
5.2.3 特殊功能寄存器 252
5.3 8位定时/计数器T/C0 253
5.3.1 8位定时/计数器T/C0的结构 253
5.3.2 T/C0定时/计数器的相关寄存器 256
5.3.3 T/C0定时/计数器的工作模式 259
5.3.4 T/C0定时/计数器的时序图 263
5.4 8位定时/计数器T/C2 264
5.4.1 T/C2定时/计数器的结构 264
5.4.2 定时/计数器T/C2的相关寄存器 266
5.4.3 T/C2定时/计数器的工作模式 267
5.5 16位定时/计数器T/C1和T/C3 268
5.5.1 T/C1和T/C3定时/计数器的结构 269
5.5.2 T/C1和T/C3定时/计数器的相关寄存器 273
5.5.3 T/C1和T/C3定时/计数器的工作模式 281
5.5.4 T/C1和T/C3定时/计数器的时序图 287
5.6 定时/计数器的应用 288
5.6.1 利用定时/计数器实现秒表的应用实例 288
5.6.2 利用定时/计数器实现PWM输出的应用实例 293
第6章 ATmega128单片机模数转换器和模拟比较器的应用 296
6.1 模数转换器 296
6.1.1 模数转换器种类与特点 296
6.1.2 ATmega128单片机模数转换器的结构和特点 298
6.1.3 A/D转换器相关寄存器 306
6.2 模拟比较器 310
6.2.1 模拟比较器概述 310
6.2.2 模拟比较器相关寄存器 310
6.2.3 多路输入 312
6.3 A/D转换器应用实例 312
6.3.1 利用A/D转换器构成简易电压表的应用实例 312
6.3.2 双通道A/D采样应用在液晶显示器上实例 315
6.4 模拟比较器应用实例 323
6.4.1 模拟信号的比较应用实例(一) 323
6.4.2 模拟信号的比较应用实例(二) 324
6.4.3 模拟比较器应用实例(三) 324
第7章 ATmega128单片机中断系统的基本应用 327
7.1 中断系统工作原理 327
7.1.1 中断系统的定义与中断过程 327
7.1.2 控制寄存器 334
7.2 外部中断 335
7.2.1 外部中断触发方式 335
7.2.2 外部中断寄存器 335
7.3 中断程序编写与应用实例 337
7.3.1 使用ICCAVR开发环境编写中断程序 337
7.3.2 外部中断系统应用实例 339
第8章 ATmega128单片机串行接口的应用 342
8.1 同步串行接口SPI 342
8.1.1 同步串行通信 342
8.1.2 ATmega128单片机的同步串行接口SPI 345
8.1.3 ATmega128单片机SPI相关寄存器 348
8.1.4 SPI的编程 350
8.1.5 SPI应用实例 352
8.2 USART接口 355
8.2.1 异步通信基础 355
8.2.2 ATmega128单片机的USART接口 357
8.2.3 访问USART 361
8.2.4 USART相关寄存器 369
8.3 ATmega128单片机USART接口的应用实例 374
8.3.1 串口通信应用实例 374
8.3.2 利用串口控制微型打印机应用实例 378
8.4 两线串行接口TWI 385
8.4.1 串行通信基础知识 385
8.4.2 I2C总线协议 385
8.4.3 ATmega128单片机的TWI接口 388
8.5 ATmega128单片机TWI接口应用实例 403
8.5.1 利用TWI口对存储器进行操作的应用实例 403
8.5.2 I2C总线接口日历时钟芯片应用实例 407
第9章 AVR单片机在电气控制系统中的应用实例 416
9.1 电动机类控制电路的应用实例 416
9.1.1 步进电动机的应用实例 416
9.1.2 舵机的应用实例 419
9.1.3 电动机调速系统设计实例 421
9.2 人机对话控制电路的应用 425
9.2.1 键盘的应用实例 425
9.2.2 触摸屏人机接口的应用实例 432
第10章 各种传感器的应用实例 436
10.1 红外遥控器的解码应用 436
10.1.1 红外线 436
10.1.2 红外遥控系统原理 436
10.1.3 红外遥控器的解码实例 438
10.2 红外测距传感器的应用 442
10.2.1 硬件设计 442
10.2.2 程序设计 443
10.3 超声测距传感器的应用 446
10.3.1 硬件设计 446
10.3.2 程序设计 447
10.4 气体传感器的应用 449
10.4.1 气体传感器模块 449
10.4.2 气体传感器应用实例 450
10.5 加速度传感器的应用 453
10.5.1 型加速度传感器模块 453
10.5.2 加速度传感器应用实例 454
10.6 光照传感器的应用 456
10.6.1 硬件设计 457
10.6.2 程序设计 457
10.7 温度传感器应用实例 459
10.7.1 硬件设计 459
10.7.2 软件设计 459
第11章 AVR单片机的综合应用设计实例 464
11.1 基于ATmega128单片机的轮式机器人设计 464
11.1.1 硬件设计 464
11.1.2 软件设计 466
11.2 基于ATmega128单片机的交通信号机设计 471
11.2.1 硬件设计 471
11.2.2 软件设计 474