标题：AVR单片机
优势特征
单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式  AVR单片机智能仪表和机器人制作等领域，使产品功能、精度和质量大幅度提升，且电路简单，故障率低，可靠性高，成本低廉。单片机种类很多，在简易机器人制作和创新中，为什么选用AVR单片机呢？
一、简便易学，费用低廉
首先，对于非专业人员来说，选择AVR单片机的最主要原因，是进入AVR单片机开发的门槛非常低，只要会操作电脑就可以学习AVR单片机的开发。单片机初学者只需一条ISP下载线，把编辑、调试通过的软件程序直接在线写入AVR单片机，即可以开发AVR单片机系列中的各种封装的器件。AVR单片机因此在业界号称“一线打天下”。
其次，AVR单片机便于升级。AVR程序写入是直接在电路板上进行程序修改、烧录等操作，这样便于产品升级。
再次，AVR单片机费用低廉。学习AVR单片机可使用ISP在线下载编程方式（即把PC机上编译好的程序写到单片机的程序存储器中），不需购买仿真器、编程器、擦抹器和芯片适配器等，即可进行所有AVR单片机的开发应用，这可节省很多开发费用。程序存储器擦写可达10000次以上，不会产生报废品。
二、高速、低耗、保密
首先，AVR单片机是高速嵌入式单片机：
⒈AVR单片机具有预取指令功能，即在执行一条指令时，预先把下一条指令取进来，使得指令可以在一个时钟周期内执行。
⒉多累加器型，数据处理速度快。AVR单片机具有32个通用工作寄存器，相当于有32条立交桥，可以快速通行。
⒊中断响应速度快。AVR单片机有多个固定中断向量入口地址，可快速响应中断。
其次，AVR单片机耗能低。对于典型功耗情况，WDT关闭时为100nA，更适用于电池供电的应用设备。有的器件最低1.8 V即可工作。
再次，AVR单片机保密性能好。它具有不可破解的位加密锁Lock Bit技术，保密位单元深藏于芯片内部，无法用电子显微镜看到。
三、I/O口功能强，具有A/D转换等电路
⒈AVR单片机的I/O口是真正的I/O口，能正确反映I/O口输入/输出的真实情况。工业级产品，具有大电流（灌电流）10～40 mA，可直接驱动可控硅SCR或继电器，节省了外围驱动器件。
⒉AVR单片机内带模拟比较器，I/O口可用作A/D转换，可组成廉价的A/D转换器。ATmega48/8/16等器件具有8路10位A/D。
⒊部分AVR单片机可组成零外设元件单片机系统，使该类单片机无外加元器件即可工作，简单方便，成本又低。
⒋AVR单片机可重设启动复位，以提高单片机工作的可靠性。有看门狗定时器实行安全保护，可防止程序走乱（飞），提高了产品的抗干扰能力。
四、有功能强大的定时器/计数器及通讯接口
定时/计数器T/C有8位和16位，可用作比较器。计数器外部中断和PWM（也可用作D/A）用于控制输出，某些型号的AVR单片机有3～4个PWM，是作电机无级调速的理想器件。
AVR单片机有串行异步通讯UART接口，不占用定时器和SPI同步传输功能，因其具有高速特性，故可以工作在一般标准整数频率下，而波特率可达576K。
五、片内EEPROM
EEPROM 数据存储器。它是作为一个独立的数据空间而存在
的，可以按字节读写。EEPROM 的寿命至少为100,000 次擦除周期。EEPROM 的访问
由地址寄存器、数据寄存器和控制寄存器决定。
通过SPI和JTAG及并行电缆下载EEPROM数据的操作。
型号标识
⒈型号紧跟的字母，表示电压工作范围。带“V”：1.8-5.5V；若缺省，不带“V”：2.7-5.5V。
例：ATmega48-20AU，不带“V”表示工作电压为2.7-5.5V。
⒉后缀的数字部分，表示支持的最高系统时钟。
例：ATmega48-20AU，“20”表示可支持最高为20MHZ的系统时钟。
⒊后缀第一（第二）个字母，表示封装。“P”：DIP封装，“A”：TQFP封装，“M”：MLF封装。
例：ATmega48-20AU，“A”表示TQFP封装。
⒋后缀最后一个字母，表示应用级别。“C”：商业级，“I”：工业级（有铅）、“U”工业级（无铅）。
例：ATmega48-20AU，“U”表示无铅工业级。ATmega48-20AI，“I”表示有铅工业级。
最大特点
与其它8-Bit MCU相比，AVR 8-Bit MCU最大的特点是：
· 哈佛结构，具备1MIPS / MHz的高速运行处理能力；
· 超功能精简指令集（RISC），具有32个通用工作寄存器，克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象；
· 快速的存取寄存器组、单周期指令系统，大大优化了目标代码的大小、执行效率，部分型号FLASH非常大，特别适用于使用高级语言进行开发；
· 作输出时与PIC的HI/LOW相同，可输出40mA（单一输出），作输入时可设置为三态高阻抗输入或带上拉电阻输入，具备10mA-20mA灌电流的能力；
· 片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能，外围电路更加简单，系统更加稳定可靠；
· 大部分AVR片上资源丰富：带E2PROM，PWM，RTC，SPI，UART，TWI，ISP，AD，Analog Comparator，WDT等；
· 大部分AVR除了有ISP功能外，还有IAP功能，方便升级或销毁应用程序。
接口设计
USB接口以其数据传输快、连接简单、易于扩展、支持热插拔等特点已成为外设与PC通信的主要方式之一。随着嵌入式系统的发展，嵌入式微处理器需增加通用的USB接口，以便实现与PC等USB主机系统的通信。针对这样的需求，这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处理器增加USB接口，从而实现与USB主机系统的高速通信。系统硬件设计该系统模块的控制核心是AVR高速单片机ATmega8。AVR单片机是新一代基于哈佛结构的高速RISC微控制器，具有速度快、价格低、可靠性高，I/O口线驱动能力强和片内集成外设资源丰富等特点，其内部集成有可进行ISP下载编程的Flash，EEPROM、熔丝位和锁定位。AVR单片机的ISP下载电缆制作简单、成本低廉，还有免费的下载软件（例如PonyProg）支持。PDIUSBD12是一款高性价比USB接口器件，完全符合USB1.l规范，易于与各种微处理器接口。
系统模块AVR单片机与PDIUSBD12的电路连接如图1所示。
由图1看出，由于AVR单片机具有高速性，可利用I/O端口线以软件方式模拟PDIUSBD12的时序，对其读写。这种方式可根据不同的微处理器速度灵活控制PDIUSBD12的时序和地址，无需译码电路，从而简化硬件设计，降低成本。
由于ATmega8片内集成了UART，SPI，I2C等接口，该接口模块可利用这些接口与其他系统通信，使得该接口模块成为通用的接口转换器。其系统硬件结构框图如图2所示。USB固件程序设计本系统模块的USB固件程序采用符合ANSI C标准的GCC编译器设计，结合分层次的模块化结构，可移植性强，只需稍微修改硬件接口层即可将其移植到别的硬件平台，可重复利用代码。USB固件程序设计是基于状态机和标准的前后台式程序架构。整个同件程序的模块化层次结构如图3所示。首先编写硬件接口层hal.c和PDIUSBD12器件的命令接口层，以供上层模块调用。硬件接口层含有对PDIUSBD12写指令和读写数据的函数，以供上层模块调用。当CPU不同时，只需修改这些函数即可。由于CPU访问PDIUS-BD12与普通存储器一样，只需根据硬件连接关系，在硬件抽象层中编写对PDIUSBD12写指令、写读数据的函数，供上层调用即可。实现PDIUSBD12的命令接口层需调用硬件抽象层函数，供上层模块调用。再设计前后台程序及标准设备请求程序模块。
应用区域
目前，AVR已被广泛用于：
· 空调控制板
· 打印机控制板
· 智能电表
· 智能手电筒
· LED控制屏
· 医疗设备
· GPS
单片机
· 性价比：AVR大部分型号的性价比较高，性价比表现突出的型号有：atmega48、atmega8、atmega16、atmega169P
· 供货方面：通用型号的AVR供货较为稳定，非常规型号的AVR样品及供货仍存在问题。
· 市场占有率：目前，AVR的市场占有率还是不如PIC与51，但，AVR的优点使得AVR的市场占有一直在扩展，AVR的年用量也一直在上涨。
编译器
软件名称
类型
简介
官方网址
AVR Studio
IDE、汇编编译器
ATMEL AVR Studio集成开发环境（IDE），可使用汇编语言进行开发（使用其它语言需第三方软件协助），集软硬件仿真、调试、下载编程于一体。ATMEL官方及市面上通用的AVR开发工具都支持AVRStudio。
www.atmel.com
GCCAVR 
(WinAVR)
C编译器
GCC的编译器优化程度可以说是目前世界上民用软件中做的最好的，另外，它有一个非常大优点是，免费！在国外，使用它的人几乎是最多的。但，相对而言，它的缺点是，使用操作较为麻烦。
sourceforge.net 
ICC AVR
C编译器
（集烧写程序功能）
市面上（大陆）的教科书使用它作为例程的较多，集成代码生成向导，虽然它的各方面性能均不是特别突出，但使用较为方便。虽然ICCAVR软件不是免费的，但，它有Demo版本，在45天内是完全版。
www.imagecraft.com 
CodeVision AVR
C编译器
（集烧写程序功能）
与KeilC51的代码风格最为相似，集成较多常用外围器件的操作函数，集成代码生成向导，有软件模块，不是免费软件，Demo版为限2KB版。
www.hpinfotech.ro 
ATman AVR
C编译器
支持多个模块调试（AVRStudio不支持多个模块调试）。
www.atmanecl.com
IAR AVR
C编译器
IAR实际上在国外比较多人使用，但它的价格较为昂贵，所以，中国大陆内，使用它的开发人员较少，只有习惯用IAR的工程师才会去使用它。
www.iar.com
Devices
Flash Kbytes
EEPROM Kbytes
SRAM Bytes
I/O
F.max (MHz)
Vcc
(V)
pico
Power
16bit Timers
8bit Timers
PWM channels
RTC
SPI
UART
TWI
ISP
10-bit A/D (channels)
Analog Com
parator
WDT
Hardware Multiplier
Ext Int
-errupts
Self Program Memory
ATtiny13　ATtiny13V
1
0.064
64B 
32reg
6
20
1.8-5.5
-
--
1
2
-
-
-
-
√
4
√
√
No
6
√
ATtiny24　ATtiny24V
2
0.128
128
12
20
1.8-5.5
-
1
1
4
-
USI
-
USI
√
8
√
√
--
12
√
ATtiny44　ATtiny44V
4
0.256
256
12
20
1.8-5.5
-
1
1
4
-
USI
-
USI
√
8
√
√
--
12
√
ATtiny84　ATtiny84V
8
0.512
512
12
20
1.8-5.5
-
1
1
4
-
USI
-
USI
√
8
√
√
--
12
√
ATtiny26　ATtiny26L
2
0.125
128
16
16
2.7-5.5
-
--
2
2
-
USI
-
USI
√
11
√
√
--
1
--
ATtiny2313　ATtiny2313V
2
0.128
128
18
20
1.8-5.5
-
1
1
4
-
USI
1
USI
√
--
√
√
--
2
√
ATmega48　ATmega48V
4
0.256
512
23
20
1.8-5.5
-
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega88　ATmega88V
8
0.5
1024
23
20
1.8-5.5
-
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega168　ATmega168V
16
0.5
1024
23
20
1.8-5.5
-
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega8　ATmega8L
8
0.5
1024
23
16
2.7-5.5
-
1
2
3
√
1
1
√
√
8/6(DIP)
√
√
√
2
√
ATmega16　ATmega16L
16
0.5
1024
32
16
2.7-5.5
-
1
2
4
√
1
1
√
√
8
√
√
√
3
√
ATmega32　ATmega32L
32
1
2048
32
16
2.7-5.5
-
1
2
4
√
1
1
√
√
8
√
√
√
3
√
ATmega64　ATmega64L
64
2
4096
53
16
2.7-5.5
-
2
2
8
√
1
2
√
√
8
√
√
√
8
√
ATmega128　ATmega128L
128
4
4096
53
16
2.7-5.5
-
2
2
8
√
1
2
√
√
8
√
√
√
8
√
ATmega1280　ATmega1280V
128
4
8192
86
16
1.8-5.5
-
4
2
16
√
1+USART
4
√
√
16
√
√
√
32
√
ATmega162　ATmega162V
16
0.5
1024
35
16
1.8-5.5
-
2
2
6
√
1
2
--
√
-
√
√
√
3
√
ATmega169　ATmega169V
16
0.5
1024
53
16
1.8-5.5
-
1
2
4
√
1+USI
1
USI
√
8
√
√
√
17
√
ATmega169P　ATmega169PV
16
0.5
1024
54
16
1.8-5.5
√
1
2
4
√
1+USI
1
USI
√
8
√
√
√
17
√
ATmega8515　ATmega8515L
8
0.5
512
35
16
2.7-5.5
-
1
1
3
-
1
1
-
√
-
-
√
√
3
√
ATmega8535　ATmega8535L
8
0.5
512
32
16
2.7-5.5
-
1
2
4
-
1
1
√
√
8
√
√
√
3
√
ATmega48P　ATmega48PV
4
0.256
512
23
20
1.8-5.5
√
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega88P　ATmega88PV
8
0.5
1024
23
20
1.8-5.5
√
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega168P　ATmega168PV
16
0.5
1024
23
20
1.8-5.5
√
1
2
6
√
1+USART
1
√
√
8/6(DIP)
√
√
√
26
√
ATmega164P　ATmega164PV
16
0.5
1024
32
20
1.8-5.5
√
1
2
6
√
1+USART
2
√
√
8
√
√
√
32
√
ATmega324P　ATmega324PV
32
1
2048
32
20
1.8-5.5
√
1
2
6
√
1+USART
2
√
√
8
√
√
√
32
√