AVR单片机(C语言)项目开发实践教程
上QQ阅读APP看书,第一时间看更新

二、AVR系列单片机

1.ATMEL公司的单片机产品

ATMEL公司是世界上著名的生产高性能、低功耗、非易失性存储器和各种数字模拟IC芯片的半导体制造公司。在单片微控制器方面,ATMEL公司有基于8051内核、基于AVR内核和基于ARM内核的三大系列单片机产品(确切地讲,最后一款应称为嵌入式微处理器)。ATMEL公司在它的单片机产品中,融入了先进的EEPROM电可擦除和Flash ROM闪速存储器技术,使得该公司的单片机具备了优秀的品质,在结构、性能和功能等方面都有明显的优势。

ATMEL公司把8051内核与其擅长的Flash存储器技术相结合,是国际上最早推出片内集成可重复擦写1000次以上Flash程序存储器、采用低功耗CMOS工艺的8051兼容单片机的生产商之一。市场上家喻户晓的AT89C51、AT89C52、AT89C1051、AT89C2051就是ATMEL公司生产的基于8051内核系列单片机中的典型产品(现在已升级换代为AT89Sxx系列,采用ISP在线编程技术)。该系列单片机一直在我国的单片机市场上占有相当大的份额。

8051结构的单片机采用复杂指令系统(Complex Instruction Set Computer,CISC)体系。由于CISC结构存在指令系统不等长、指令数多、CPU利用效率低、执行速度慢等缺陷,已不能满足和适应设计中高档电子产品和嵌入式系统应用的需要。ATMEL公司发挥其Flash存储器技术的特长,于1997年研发和推出了全新配置采用精简指令集(Reduced Instruction Set CPU,RISC)结构的新型单片机,简称AVR单片机。

精简指令集(RISC)结构是20世纪90年代开发出来的一种综合了半导体集成技术和提高软件性能的新结构,是为了提高CPU运行的速度而设计的芯片体系。它的关键技术在于采用流水线操作(Pipelining)和等长指令体系结构,使一条指令可以在一个单独操作中完成,从而实现在一个时钟周期里完成一条或多条指令。同时RISC体系还采用了通用快速寄存器组的结构,大量使用寄存器之间的操作,简化了 CPU 中处理器、控制器和其他功能单元的设计。因此,RISC的特点就是通过简化CPU的指令功能,使指令的平均执行时间减少,从而提高CPU的性能和速度。在使用相同的晶片技术和相同的运行时钟下,RISC系统的运行速度是CISC的2~4倍。正由于RISC体系所具有的优势,使得它在高端系统得到了广泛的应用。例如,ARM以及大多数32位的处理器都采用RISC体系结构。

ATMEL公司的AVR是8位单片机中第一个真正的RISC结构的单片机。它采用了大型快速存取寄存器组、快速的单周期指令系统以及单级流水线等先进技术,使得AVR单片机具有高达1MIPS/MHz的高速运行处理能力。

AVR采用流水线技术,在前一条指令执行的时候,就取出现行的指令,然后以一个周期执行指令,大大提高了CPU的运行速度。而在其他的CISC以及类似的RISC结构的单片机中,外部振荡器的时钟被分频降低到传统的内部指令执行周期,这种分频最大达12倍(如8051)。

另外一点,传统的基于累加器的结构单片机(如8051)需要大量的程序代码来完成和实现在累加器和存储器之间的数据传送。而在AVR单片机中,由于采用32个通用工作寄存器构成快速存取寄存器组,用32个通用工作寄存器代替了累加器,从而避免了在传统结构中累加器和存储器之间数据传送造成的瓶颈现象,进一步提高了指令的运行效率和速度。

随着电子产品更新换代的周期缩短以及不断向高端发展,为了加快产品进入市场的时间和简化系统的设计、开发、维护和支持,对于以单片机为核心所组成的高端嵌入式系统来说,用高级语言编程已成为一种标准设计方法。AVR单片机采用RISC结构,其目的就是在于能够更好地采用高级语言(如C语言、BASIC语言)来编写嵌入式系统的系统程序,从而能高效地开发出目标代码。

AVR 单片机采用低功率、非挥发的 CMOS 工艺制造,内部分别集成 Flash、EEPROM 和SRAM 3种不同性能和用途的存储器。除了可以通过使用一般的编程器(并行高压方式)对AVR单片机的Flash程序存储器和EEPROM数据存储器进行编程外,大多数的AVR单片机还具有ISP在线编程的特点以及IAP在应用编程的特点。这些优点为使用AVR单片机开发设计和生产产品提供了极大的方便。在产品的设计生产中,可以“先装配后编程”,从而缩短了研发周期、工艺流程,并且还可以节约购买开发仿真编程器的费用。同样,对于学习和使用AVR单片机的用户来说,也不必购买昂贵的开发仿真硬件设备,只需要具备一套好的AVR开发软件平台,就可以从事AVR单片机系统的学习、设计和开发工作了。

2.AVR单片机的主要特点

AVR单片机吸取了PIC及8051等单片机的优点,同时在内部结构上还做了一些重大改进,其主要的优点如下。

(1)程序存储器为价格低廉、可擦写1万次以上、指令长度单元为16位(字)的FlashROM(即程序存储器宽度为16位,按8位字节计算时应乘以2)。而数据存储器为8位。因此AVR还是属于8位单片机。

(2)采用CMOS技术和RISC架构,实现高速(50ns)、低功耗(μA)、SLEEP(休眠)功能。AVR的一条指令执行速度可达50ns(20MHz),而耗电则为1μA~2.5mA。AVR采用Harvard结构,以及一级流水线的预取指令功能,即对程序的读取和数据的操作使用不同的数据总线,因此,当执行某一指令时,下一指令被预先从程序存储器中取出,这使得指令可以在每一个时钟周期内被执行。

(3)高度保密。可多次烧写的Flash具有多重密码保护锁定(LOCK)功能,因此可低价快速完成产品商品化,且可多次更改程序(产品升级),方便了系统调试,而且不必浪费IC或电路板,大大提高了产品质量及竞争力。

(4)工业级产品。具有大电流10~20mA(输出电流)或40mA(吸电流)的特点,可直接驱动LED、SSR或继电器。有看门狗定时器(WDT)安全保护,可防止程序跑飞,提高产品的抗干扰能力。

(5)超功能精简指令。具有32个通用工作寄存器(相当于8051中的32个累加器),克服了单一累加器数据处理造成的瓶颈现象。片内含有128B~4KB 的 SRAM,可灵活使用指令运算,适合使用功能很强的C语言编程,易学、易写、易移植。

(6)程序写入器件时,可以使用并行方式写入(用编程器写入),也可使用串行在线下载(ISP)、在应用下载(IAP)方法下载写入。也就是说不必将单片机芯片从系统板上拆下拿到万用编程器上烧录,而可直接在电路板上进行程序的修改、烧录等操作,方便产品升级,尤其是对于使用SMD表贴封装器件,更利于产品微型化。

(7)通用数字I/O口的输入输出特性与PIC的HI/LOW输出及三态高阻抗HI-Z输入类同,同时可设定类同与8051结构内部有上拉电阻的输入端功能,便于作为各种应用特性所需(多功能I/O口)。AVR的I/O口是真正的I/O口,能正确反映I/O口的输入/输出的真实情况。

(8)单片机内集成有模拟比较器,可组成廉价的A/D转换器。

(9)像8051一样,有多个固定中断向量入口地址,可快速响应中断;而不是像PIC一样所有中断都在同一向量地址,需要以程序判别后才可响应,这会浪费且失去控制时机的最佳机会。

(10)同 PIC一样,带有可设置的启动复位延时计数器。AVR单片机内部有电源上电启动计数器,当系统RESET复位上电后,利用内部的RC看门狗定时器,可延迟MCU正式开始读取指令执行程序的时间。这种延时启动的特性,可使 MCU 在系统电源、外部电路达到稳定后再正式开始执行程序,提高了系统工作的可靠性,同时也可节省外加的复位延时电路。

(11)具有多种不同方式的休眠省电功能和低功耗的工作方式。

(12)许多AVR单片机具有内部的RC振荡器,提供1MHz/2MHz/4MHz/8MHz的工作时钟,使该类单片机无需外加时钟电路元器件即可工作,非常简单和方便。

(13)有多个带预分频器的8位和16位功能强大的计数器/定时器(C/T),除了实现普通的定时和计数功能外,还具有输入捕获、产生PWM输出等更多的功能。

(14)性能优良的串行同/异步通信USART口,不占用定时器。可实现高速同/异步通信。

(15)ATmega8515及ATmega128等芯片具有可并行扩展的外部接口,扩展能力达64KB。

(16)工作电压范围为2.7~6.0V,具有系统电源低电压检测功能,电源抗干扰性能强。

(17)有多通道的10位A/D及实时时钟RTC。许多AVR芯片内部集成了8路10位A/D接口,如ATmega8、ATmega16等。

(18)AVR单片机还在片内集成了可擦写10万次的EEPROM数据存储器,等于又增加了一个芯片,可用于保存系统的设定参数、固定表格和掉电后的数据的保存。即方便了使用,减小了系统的空间,又大大提高了系统的保密性。

3.ATmega16单片机

本书将以性能适中的ATmega16为主线,介绍和讲述AVR单片机的组成,以及如何应用在嵌入式系统中。在正式的产品开发与设计时,设计者可根据系统的实际需要选择合适型号的AVR单片机。

ATmega16芯片具备了AVR系列单片机的主要特点和功能,不仅适合应用于产品设计,同时也方便初学者入门,其主要特点如下。

(1)采用先进RISC结构的AVR内核。

① 131条机器指令,且大多数指令的执行时间为单个系统时钟周期。

② 32个8位通用工作寄存器。

③ 工作在16MHz时具有16MIPS的性能。

④ 配备只需要2个时钟周期的硬件乘法器。

(2)片内含有较大容量的非易失性的程序和数据存储器。

① 16KB在线可编程(ISP)Flash程序存储器(擦除次数>1万次),采用Boot Load技术支持IAP功能。

② 1KB的片内SRAM数据存储器,可实现3级锁定的程序加密。

③ 512B片内在线可编程EEPROM数据存储器(寿命>10万次)。

(3)片内含JTAG接口。

① 支持符合JTAG标准的边界扫描功能,用于芯片检测。

② 支持扩展的片内在线调试功能。

③ 可通过JTAG口对片内的Flash、EEPROM、配置熔丝位和锁定加密位实施下载编程。

(4)外围接口。

① 2个带有分别独立、可设置预分频器的8位定时器/计数器。

② 1个带有可设置预分频器,具有比较、捕捉功能的16位定时器/计数器。

③ 片内含独立振荡器的实时时钟RTC。

④ 4路PWM通道。

⑤ 8路10位ADC。

⑥ 面向字节的两线接口TWI(兼容I2C硬件接口)。

⑦ 1个可编程的增强型全双工的、支持同步/异步通信的串行接口USART。

⑧ 1个可工作于主机/从机模式的SPI串行接口(支持ISP程序下载)。

⑨ 片内模拟比较器。

⑩ 内含可编程的、具有独立片内振荡器的看门狗定时器WDT。

(5)其他的特点。

① 片内含上电复位电路以及可编程的掉电检测复位电路BOD。

② 片内含有内部1MHz/2MHz/4MHz/8MHz晶振,经过标定的、可校正的RC振荡器,可作为系统时钟使用。

③ 多达21个各种类型的内外部中断源。

④ 有6种休眠模式支持省电方式工作。

(6)宽电压、高速度、低功耗。

① 工作电压范围:ATmega16L 2.7~5.5V,ATmega16 4.5~5.5V。

② 运行速度:ATmega16L 0~8MHz,ATmega16 0~16MHz。

③ 低功耗:ATmega16L工作在1MHz、3V、25℃时的典型功耗为:正常工作模式1.1mA,空闲工作模式0.35mA,掉电工作模式<1μA。

(7)芯片引脚和封装形式。

ATmega16共有32个可编程的I/O口(脚),芯片封装形式有40引脚的PDIP、44引脚的TQFP和44引脚的MLF封装(贴片形式),如图1-2~图1-5所示。具体引脚说明将在后续项目任务中详细叙述。

图1-2 PDIP-40封装

图1-3 TQFP/MLF-44封装

图1-4 PDIP-40封装管脚图

图1-5 TQFP/MLF-44封装管脚图