基于Proteus的AVR单片机C语言程序设计与仿真
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 AVR单片机系统的设计与开发环境

自从1946年美国宾夕法尼亚大学研制了世界上第一台数字电子计算机ENIAC(Electronic Numerical Integrator And Computer)以来,计算机的发展经历了四个时代。在短短的几十年中,已发展出大规模/超大规模集成电路的计算机,其运算速度每秒钟可达上万亿次以上。近年来,计算机正朝着巨型化、智能化、网络化、微型化的方向发展。

微型化的发展也就是微型计算机的发展。在微型计算机中,单片微型计算机(简称单片机)是其重要的成员。单片机的发展也非常迅速,它依靠一定的硬件基础,根据特定环境,能完成一定的需求。因其结构比较简单、工作任务针对性较强,使得在国民经济的各个领域中都能看见它的踪迹。

自从1974年美国仙童(Fairchild)公司运用计算机技术生产了世界上第一块单片机(F8)以来,在短短的几十年中,作为微型计算机中的一个重要分支,单片机的应用面极广,发展速度也很惊人。

1.1 ATMEL单片机简介

ATMEL公司创建于1984年,总部位于美国的圣何塞,是世界上著名的生产高性能、低功耗、非易失性存储器和各种数字模拟IC芯片的半导体制造公司。

ATMEL公司的单片机是目前世界上一种独具特色而性能卓越的单片机,它在计算机外部设备、通信设备、自动化工业控制、宇航设备、仪器仪表和各种消费类产品中都有着广泛的应用前景。该公司的单片机主要有基于8051内核、AVR内核和ARM内核的三大系列产品。ATMEL公司最令人注目的是它的EEPROM电可擦除技术、闪速Flash存储器技术、高可靠性的生产技术。在COMS器件生产领域中,ATMEL的先进设计水平、优秀的生产工艺及封闭技术一直处于世界的领先地位。ATMEL公司在其单片机产品中融入了先进的EEPROM电可擦除和Flash ROM存储器技术,使其单片机产品具备了优秀的品质,在结构、性能的功能等方面都具有明显的优势。

1.AT89系列单片机简介

ATMEL公司拥有广泛的基于8051内核的微控制器,这些微处理器统称AT89系列。ATMEL公司将8051内核与其先进的Flash存储器技术相结合,是国际上最早推出片内集成可重复擦写1000次以上的Flash ROM,以及采用低功耗CMOS工艺的8051兼容单片机的生产商之一。

1)AT89系列单片机的特点

(1)片内包含Flash存储器:AT89系列单片机的片内包含Flash存储器,使用户在系统开发过程中可以很容易地修改程序,从而大大缩短了系统的开发周期。同时,在系统工作过程中可以有效地保存一些数据信息,即使系统突然断电,保存在系统中的信息也不会丢失。

(2)与8051单片机兼容:AT89系列单片机的引脚定义与8051单片机的引脚定义完全相同,因此用户可以直接在AT89系列中选择合适的型号及封装形式的单片机来代替所使用的8051单片机。

(3)静态时钟方式:AT89系列单片机采用静态时钟方式,可以节省电能,从而使得在许多便携式的产品中都可以使用该系列的单片机。

(4)可重复擦写程序:早期的单片机一般为一次性用户可编程(即OPT),若用户将错误的程序烧录到单片机后,该单片机就会变成废品,或者当用户更改系统功能时,必须将修改好的程序烧录到另一块单片机中,这样会给用户带来不便。

AT89系列单片机由于片内采用了Flash存储器,所以允许用户多次将程序烧录在同一块单片机芯片中。这样,即使用户将错误程序烧录到单片机中也不用担心了,用户可以重新编程,直到正确为止,不存在废品。若系统升级或更改系统功能时,用户可以反复进行系统试验,且每次均可以将编写好的程序重新烧录到单片机中,从而可保证用户的系统设计达到最优。

2)AT89系列单片机的命名规则 AT89系列单片机目前有多种型号,分别为AT89C1051,AT89C2051,AT89C4051,AT89C51,AT89LV51,AT89C52,AT89LV52,AT89S8252, AT89C55,AT89LV55,AT89S51,AT89LS51,AT89S52,AT89LS52,AT89S53,AT89LS53等。

尽管AT89系列单片机型号较多,但是这些单片机的命名均遵循一定的规律。AT89系列单片机的型号命名由三部分组成,即前缀、型号和后缀。现以AT89CXXXXXXXX为例讲述其命名方法。

(1)前缀:“AT”为前缀,表示该器件是ATMEL公司的产品。

(2)型号:型号可用“89CXXXX”,“89LVXXXX”,“89SXXXX”或“89LSXXXX”等表示。在型号中“9”表示内部包含Flash存储器;“C”表示CMOS产品;“LV”表示低电压产品;“S”表示具有ISP在线编程技术的产品;“LS”表示具有ISP在线编程技术的低电压产品。在“XXXX”中,第一个“5”表示内核为8051,该“5”后面的数字可认为是该产品存储器容量的大小(“1”表示片内RAM为128B(B表示字节),片内ROM为4KB Flash;“2”表示片内RAM为256B,片内ROM为8KB Flash;“3”表示片内RAM为256B,片内ROM为12KB Flash;“5”表示片内RAM为256B,片内ROM为20KB Flash)。例如,AT89S51的片内RAM为128B,片内ROM为4KB Flash;AT89S8252的片内RAM为256B,片内ROM为8KB Flash。

(3)后缀:由“XXXX”四个参数组成,每个参数表示的意义不同。型号与后缀部分用“-”隔开。

后缀中的第一个参数“X”表示速度:X=12,表示速度为12MHz;X=16,表示速度为16MHz;X=20,表示速度为20MHz;X=24,表示速度为24MHz。

后缀中的第二个参数“X”表示封装形式:X=D,表示陶瓷封装;X=Q,表示PQFP(Plastic Quad Flat Package的缩写,即塑料方块平面封装)封装;X=J,表示PLCC(Plastic Leaded Chip Carrier的缩写,即塑封J引线芯片封装)封装;X=A,表示TQFP(Thin Quad Flat Package的缩写,即薄型四方扁平封装)封装;X=P,表示DIP(Dual In-line Package的缩写,即双直列直插式封装)封装;X=W,表示裸芯片;X=S,表示SOIC(Small Outline Integrated Circuit Package的缩写,即小外形集成电路封装)封装。

后缀中的第三个参数“X”表示温度范围:X=C,表示商业用产品,温度范围为0~+70℃;X=I,表示工业用产品,温度范围为-40~+85℃;X=A,表示汽车用产品,温度范围为-40~+125℃;X=M,表示军用产品,温度范围为-55~+150℃;

后缀中的第四个参数“X”用于说明产品的处理情况:X为空,表示处理工艺是标准工艺;X=/883,表示处理工艺采用的是MIL-STD-883标准。

2.AVR单片机简介

基于8051内核的微控制器采用了复杂指令系统CISC(Complex Instruction Set Computing)体系。CISC结构的单片机是传统的冯·诺依曼(Von-Neumann)结构,这种结构又称普林斯顿(Princeton)体系结构。其片内程序空间和数据空间合在一起,取指令和操作数都是通过同一簇总线分时进行的,当高速运算时,取指令和操作数不能同时进行,还将会造成传输通道上的瓶颈现象。

1997年,ATMEL公司挪威设计中心的A先生和V先生出于市场需求的考虑,推出了增强型内置Flash的8位精简指令集微处理器(RISC,Reduced Instruction Set CPU),命名为AVR。

RISC结构的AVR单片机是新型的哈佛(Harvard)结构,采用了双总线结构。AVR单片机的快速存取寄存器文件由32个通用寄存器组成。传统的基于累加器的结构需要大量的程序代码,以实现累加器的存储器之间的数据传送。在AVR单片机中,32个寄存器全部直接与运算逻辑单元(ALU)相连,每个通用工作寄存器都代替了累加器。这样,使微处理器在前一条指令执行时,就取出现行的指令,从而可以避免传统CISC单片机的累加器和存储器之间传送数据时的瓶颈现象,提高了系统性能。

1)AVR单片机的特点

(1)片内含高质量的Flash程序存储器,并具有高保密性。AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新;片内含有长寿命的EEPROM,可长期保存关键数据,避免断电丢失;片内大容量的RAM不仅能满足一般场合的使用,同时也更有效地支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部RAM。

Flash程序存储器具有保密锁死(Lock)功能,并且深藏于芯片内部,可以通过自编程(Self Programming)方式远程下载被加密的更新代码。

(2)具有真正的I/O端口,能正确反映I/O端口的输入/输出真实情况。AVR单片机通用数字I/O端口的输入/输出特性与PIC单片机的HI/LOW输出及三态高阻抗HI-Z输入相似,同时可设定类似于8051单片机内部有上拉电阻的输入端功能。AVR的I/O端口资源灵活、功能强大,可以单独设定为输入/输出、也可以设定(初始)高阻输入,具有驱动能力强(可省去功率驱动器件)等特性。

(3)高速度、低功耗,具有SLEEP(省电休眠)功能。AVR单片机一条指令的执行速度可达50ns(20MHz),而耗电则在1μA~2.5mA之间。由于它采用新型的哈佛(Harvard)结构,具有一级流水线的预取指令功能,即对程序的读取和数据的操作使用不同的数据总线,所以当执行某一指令时,下一指令会被预先从程序存储器中取出,使得指令可以在每一个时钟周期内被执行。AVR单片机具有多种省电休眠模式,且可宽电压运行(2.7~5.5V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。AVR单片机具有6种休眠功能,能够从低功耗模式迅速唤醒。

(4)具有多种独立的时钟分频器。AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的单片机具有多达10位的预分频器,可通过软件设定分频系数以提供多种挡次的定时时间。AVR单片机中的定时器/计数器(单)可双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变的方波,该设计方法(即脉宽调制输出PWM)令人耳目一新。

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

(6)具有超功能精简指令。AVR单片机具有32个通用工作寄存器,相当于8051单片机中的32个累加器,克服了由单一累加器数据处理造成的瓶颈现象;片内含有128B~8KB个SRAM,可灵活使用指令运算,适合用C语言进行程序开发,易学、易写、易移植,并且具有很高的代码效率。

(7)通信方便、快捷、可靠,支持多机通信。其增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验帧错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便了程序的编写,更便于组成分布式网络和实现多机通信系统的复杂应用。其串口功能大大超过MCS-51/96单片机的串口功能,加上AVR单片机能高速运行,中断服务时间短,因此可实现高波特率通信。

具有面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发的全部4种组合的多机通信。SPI支持主/从机的4种组合的多机通信。

(8)增强了嵌入式系统的可靠性。AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,从而增强了嵌入式系统的可靠性。

AVR单片机技术集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具有输入捕获和比较匹配输出等多样化功能的定时器/计数器、具有替换功能的I/O端口……)于一身,充分体现了单片机技术从“片自为战”向“片上系统SoC”过渡的发展方向。

2)AVR单片机的分类及性能 AVR单片机系列齐全,适用于各种不同场合。它主要有低档的Tiny系列、中档的AT90系列和高档的ATmega系列的产品。

(1)低档的Tiny系列:低档的Tiny系列AVR单片机是专门为需要小型微控制的简单应用优化设计的,具有很高的性价比,主要有8个引脚的Tiny11/12/13/15/45/85、14个引脚的Tiny24/44/84、20个引脚的Tiny26/261/461/861/2313等。

(2)中档的AT90系列:中档的AT90系列AVR单片机主要有20个引脚的AT90S1200/2313/2323/2343、28个引脚的AT90S4433、40个引脚的AT90S4414/4434/8515/8535等。

(3)高档的ATmega系列:高档的ATmega系列AVR单片机主要有28个引脚的ATmega8/48/88/168、40个引脚的ATmega16/32/162/644/8535、64个引脚的ATmega128/165/325/64/645/1281/2561、100个引脚的ATmega3250/6450/640/1280/2560等。

AVR单片机从8引脚到100引脚,还有各种不同封装供用户选择,表1-1~表1-3列出了目前主流AVR单片机的各系列的性能参数。

表1-1 Tiny系列AVR单片机的性能

表1-2 ATmega系列AVR单片机的性能

表1-3 其他系列AVR单片机的性能

自2002年以来,ATMEL公司对AVR单片机产品线进行了调整,逐步停止了性能重叠的中档低功耗AVR单片机中AT90系列的单片机的生产。目前,AT90系列某些型号的单片机已经被性能更加优越的Tiny系列或ATmega系列相应的AVR单片机替代(如表1-4所示),因此在实际开发中建议不要再使用该系统。

表1-4 替代的AVR单片机

3)AVR单片机的命名规则下面以ATmega48V-10A为例,讲述AVR单片机型号的命名规则。ATmega48V-10A型号标识说明如下。

(1)“V”代表低/宽电压版本。对于新出的AVR(如ATmega48/88/168,Tiny13/2313等)产品来说,带“V”表示工作电压为1.8~5.5V;不带“V”表示工作电压为2.7~5.5V。对于一些较老型号的AVR的单片机而言,用“L”来表示电压。“L”是“Low”的缩写,带“L”表示它可以支持低电压,其支持的电压范围为2.7~5.5V;不带“L”的则表示其支持电压范围为4.5~5.5V。

(2)后缀的数字部分代表单片机可以支持的最高系统时钟,如ATmega48V-10A指的是可以支持到10MHz的系统时钟。ATmega64-16AU及ATmega64-16AI指的是可以支持到16MHz的系统时钟。

(3)后缀的第一个字母代表单片机的封装形式,其中“P”表示DIP封装;“A”表示TQFP封装;“S”表示SOIC封装;“M”表示MLF封装。例如,ATmega48V-10A为TQFP封装。

(4)后缀的第二个字母代表单片机的应用级别,其中“C”表示商业级;“I”表示工业级;“A”表示汽车级;“E”表示扩展级(温度范围为-40~105℃);“U”表示工业级,符合ROHS。例如,ATmega64L-8AC带“C”表示它为商业级,ATmega64L-8AI带“I”表示它为工业级。需要说明的是,由于现欧美要求使用无铅IC,所以ATMEL未来将只推出带“U”的AVR MCU,它将取代原来带“I”的型号,如ATmge8L-8AU将取代原来的ATmega64L-8AI。