1.3 AVR单片机简介

1.3.1 ATMEL公司的单片机简介

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

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

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

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(Static Random Access Memory,静态随机存取存储器)三种不同性能和用途的存储器。除了可以通过使用一般的编程器(并行高压方式)对AVR单片机的Flash程序存储器和EEPROM数据存储器进行编程外,大多数的AVR单片机还具有ISP(在线可编程)的特点以及IAP(在应用编程)的特点。这些优点为使用AVR单片机开发设计和生产产品提供了极大的方便。在产品的设计生产中,可以“先装配后编程”,从而缩短了研发周期、工艺流程,并且还可以节约购买开发仿真编程器的费用。同样,对于学习和使用AVR单片机的用户来说,也不必购买昂贵的开发仿真硬件设备,只需要具备一套好的AVR开发软件平台,就可以从事AVR单片机系统的学习、设计和开发工作了。

1.3.2 AVR单片机的主要特点

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

1)程序存储器为价格低廉、可擦写1万次以上、指令长度单元为16位(字)的Flash ROM(即程序存储器宽度为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个累加器),克服了单一累加器数据处理造成的瓶颈现象。片内含有128~4KB SRAM,可灵活使用指令运算,适合使用功能很强的C语言编程,易学、易写、易移植。

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

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)MEGA 8515及MEGA 128等芯片具有可并行扩展的外部接口,扩展能力达64KB。

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

17)有多通道的10位A/D接口及实时时钟(RTC)。许多AVR芯片内部集成了8路10位A/D接口,如MEGA 8、MEGA 16、MEGA 8535等。AVR单片机还在片内集成了可擦写10万次的EEPROM数据存储器,等于又增加了一个芯片,可用于保存系统的设定参数、固定表格和掉电后的数据保存,既方便了使用,减小了系统的空间,又大大提高了系统的保密性。

1.3.3 AVR单片机最小系统

学过MCS-51系列单片机的读者应该知道,要使单片机工作则必须保证单片机自身最小系统电路的完整。以大家熟知的MCS-51系列单片机为例,它的硬件最小系统包括:电源、晶振、复位电路,有了这些硬件电路支持,单片机才有可能正常运行,甚至MCS-51系列单片机要使用P0口时还要外接上拉电阻。相比之下,AVR系列单片机比MCS-51则要简单得多,因为AVR系列单片机有完善的内部模块电路及熔丝。AVR系列单片机内部都有复位电路、RC振荡电路,因此在一般使用中最小系统基本不用外围电路,只要给它供电就能独立工作。AVR单片机内部RC振荡器可以给系统提供时钟信号,且这个振荡频率可以通过修改熔丝位来改变频率高低,一般AVR系列单片机在出厂时把熔丝位统一设成内部1MHz的RC振荡。由此可知,在实验中AVR单片机的硬件最小系统基本不用再加其他硬件电路。