AVR单片机概述.ppt

上传人:夺命阿水 文档编号:236164 上传时间:2023-03-10 格式:PPT 页数:45 大小:1.16MB
返回 下载 相关 举报
AVR单片机概述.ppt_第1页
第1页 / 共45页
AVR单片机概述.ppt_第2页
第2页 / 共45页
AVR单片机概述.ppt_第3页
第3页 / 共45页
AVR单片机概述.ppt_第4页
第4页 / 共45页
AVR单片机概述.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《AVR单片机概述.ppt》由会员分享,可在线阅读,更多相关《AVR单片机概述.ppt(45页珍藏版)》请在课桌文档上搜索。

1、AVR单片机概述,本章重点:1.AVR单片机与51单片机的区别 2.AVR单片机的资源 3.如何使用AVR单片机,单片机的类型:,经典单片机 51 单片机性价比高功能强大 AVR 单片机功能最强大的单片 ARM 单片机,AVR单片机与51单片机的区别,1.51是复杂指令集,AVR是精简指令集。2.51速度慢,还要内部分频,AVR速度快。3.51的IO口带负载能力小,AVR输出电流20-40mA,而且灌电流拉电流一样大。4.AVR外围硬件齐全,内部集成I2C、SPI、PWM5.用AVR比较方便。程序量比较大,内存比较大,和同级别的51比,内部带EEP,内部晶振,内部复位,我们入门学什么单片机呢?

2、,AVR已经成为代替51单片机的主流。学AVR单片机优先学习mega16.相对mega8功能强大,相对mega48、mega128价格更为低廉。,AVR单片机分类,1、AT90S 系列:AT90S8515、8535,属于中 档,适合一般系统开发 2、ATmega 系列:Mega8、Mega16,属于高 档,适合各种具有较高要求的系统 注:目前AT90系列产品已很少用,多数使用ATmega系列,1、速度快 2、片上资源丰富3、驱动能力强 4、功耗低5、可选择型号种类多 6、性价比高7、保密性好,AVR单片机特点:,ATMega16的资源及接口,1、16K的Flash,2、Boot代码区,3、51

3、2字节的EEPROM,4、1K的SRAM,5、JTAG接口,仿真和下载,7、3个带PWM的定时器,8、8路10位的AD转换器,9、UART(异步串口),10、SPI(同步串口),11、看门狗,12、TWI(IIC)接口,13、模拟比较器,14、32个通用I/O口,6、支持ISP下载,AVR单片机 型号的识别,ATmage16L-8PI数字16表示单片机内部flash容量为16KB;L表示该单片机为低功耗类型单片机。8表示芯片允许的最大时钟频率为8MHZ。P表示单片机的封装形式,P为双列直插I表示该芯片为工业级。,32位I/O口,ATmega16芯片有PORTA、PORTB、PORTC、PORT

4、D(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。所有这些I/O口都是双(有的为3)功能复用的。,其中第一功能均作为数字通用I/O接口使用,复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。,定时器,2个8位定时器,1个16位定时器。可做时钟分频器,供UART,I2C,SPI使用;可形成三角波,与输出比较器匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM),ATmega16最小系统设计(图1-3)电源:5V和3.3V两种电压。晶振电路:内置RC振荡电路,可产生1

5、MHZ,2MHZ,4MHZ,8MHZ的振荡频率。也可使用外部时钟,如图1-3。复位电路:51单片机采用高电平复位,而AVR采用的是低电平复位。如图1-3A/D转换滤波电路:可在AVCC串上一只10微亨的电感,然后接一只0.1微法的电容到地。ISP下载接口:使用双排2*5插座,与PB5,PB6,PB7连。JTAG仿真接口:使用双排2*5插座,与PC2,PC3,PC4,PC5连。,AVR单片机C语言概述,类型,符号,关键字,数的表示范围,所占位数,整型,字符型,实型,有,无,(signed)int,16,-3276832767,(signed)short,16,-3276832767,(signe

6、d)long,32,-21474836482147483647,16,unsigned int,065535,32,04294967295,unsigned long int,unsigned short int,16,065535,有,float,32,3.4e-383.4e38,有,double,64,1.7e-3081.7e308,有,char,8,-128127,无,unsigned char,8,0255,1、基本数据类型,2、AVR单片机C语言的运算符与C语言基本相同:+-*/(加 减 乘 除)=(位右移 位左移)&|(按位与 按位或)(按位异或 按位取反),2.1、位右移,1:,

7、0XA1,0X50,2.2、位左移,1:,0XA1,0X42,2.3、按位与,&,0XA1,0X51,0X01,|,0XA1&0X51=0X01,按位与常用以下用途,清零某一个端口,其他位保持不变:PORTA&=0X7F取某一位状态:if(PORTA&0X80)=0)程序语句保留某位状态,其余位均清零:PORTA|=0X80,2.4、按位或,|,0XA1,0X51,0XF1,|,0XA1|0X51=0XF1,或运算常用来置1某一端口,其他位不变PORTA|=0X80异或运算符使特定位取反,其他位不变PORTA=0X80;,2.5 AVR单片机常用位操作指令,BIT(x)定义为 1(x)BIT(

8、0)=0 0 0 0 0 0 0 1 BIT(3)=0 0 0 0 1 0 0 0BIT(3)=1 1 1 1 0 1 1 1,PORTD|=BIT(7)PORTD|=(17)PORTD口的第7位置1PORTD=BIT(7)PORTD口的第7位取反,TCCR0|=(1CS01)|(1CS00);TCCR0功能寄存器的CS01、CS00位置1。,PORTA|=(10)|(13);,10表示00000001 13表示00001000(10)|(13)表示00001001 这里表示将PORTA的第0,3位置1 与PORTA|=(1PA0)|(1PA3)一致,5、中断处理函数#pargma inter

9、rupt_handlerAVR有20个中断源和1个复位中断,向量号为1-21,关键字volatile,在变量前面加入volatile这个关键字后,变量的值就不能改变了Void main(void)Volatile int i;Int j;i=1;/不能被优化i=1i=2;/不能被优化i=1i=3;/不能被优化i=1j=1;/被优化j=2;/被优化j=3;/j=3,C语言体系结构是函数结构,#include#include/Declare your global variables herevoid main(void).void function(void).,预编译命令:文件包含指令,函数头

10、,函数体,主函数main():C程序总是从main()函数开始执行。而不论其在程序中的位置如何。当主函数执行完毕时,亦即程序执行完毕。,定义了一些与I/0接口有关的特定变量,他们对应单片机内部的特殊功能寄存器,用大写字母书写。,流水灯程序,#include#define uint unsigned int#define uchar unsigned charvoid delay_ms(uint xms)/延时函数int i,j;for(i=0;ixms;i+)for(j=0;j1140;j+);void port_init(void)/端口初始化函数DDRA=0XFF;PORTA=0XFF;,

11、流水灯程序,void main(void)uchar temp;uchar i;port_init();while(1)for(i=0;i8;i+)PORTA=0XFF;temp=1i;/1向左移i位PORTA=PORTA,端口初始化函数(PORTA输出高电平)void port_init(void)DDRA=0XFF;PORTA=0XFF;每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=ABCD)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。方向控制寄存器DDRx用于控制I/O口的输入输出方向,1为输出,0为输

12、入,如DDRA=0X0F当PORTx=1时,I/O引脚呈现高电平,同时可提供输出20mA的电流;而当PORTx=0时,I/O引脚呈现低电平。,AVR单片机开发软件的使用,ICC AVR的安装与使用编译生成*.hex文件后可写入proteus的AVR单片机中进行仿真。用ICC AVR初始化程序的方法,ISP下载器的安装与使用,ISP下载软件的使用熔丝位的设置(时钟源的设置)CKSEL3:0=0000 从外部输入时钟信号(有源晶振)CKSEL3:0=0001-0100 已校准的内部RC振荡0001 1.0MHZ 0010 2.0MHZ0011 4.0MHZ 0100 8.0MHZCKSEL3:0=

13、101x 0.4-0.9MHZ外部晶振CKSEL3:0=110 x 0.9-3.0MHZ外部晶振CKSEL3:0=111x 3.0-8.0MHZ外部晶振,AVR 单片机I/O接口实例解析,51单片机与AVR单片机I/O口结构比较,51单片机特点(1)输出结构类似OC门,输出低电平驱动能力强,输出高电平驱动能力弱。(2)P1-P3有内部上拉电阻,高电平输出电流能力很弱(3)作输入时,因为OC门有“线与”特性,必须先把I/O接口设置为高电平,所以,当I/O口外接按键时,按键多为共地接法。(4)作输出时,输出低电平可推动LED灯,输出高电平不能推动LED灯,只能外接缓冲电路 才能进行驱动。(5)P0

14、口作为普通I/O使用时需外接上拉电阻。,ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。所有这些I/O口都是双(有的为3)功能复用的。,通用I/O接口基本结构与输出应用,其中第一功能均作为数字通用I/O接口使用,复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。,AVR单片机I/O口的功能,真正双向I/O口,驱动能力强,具有真正的读-修改-写功能,所有端口都有与电压无关的上拉电阻,并由保护二极管与Vcc和地相连。(1)实验时,尽量不

15、要把引脚直接接GND/VCC,以防电流过大。(2)作输入时要注意以下几点:a 使能上拉电阻,悬空会容易受干扰 b 中断或定时器的触发信号可选(低电平,上升沿,下降沿)c 作为A/D转换器或模拟比较器输入时,不要使能上拉电阻,(3)作输出时,有很强 的驱动能力,可直接驱动LED灯或继电器。(4)复位时,内部上拉电阻将被禁用。(5)休眠时,若为输出,依然维持状态不变;若为输入,一般无效。,AVR单片机I/O口的功能,I/O口的基本结构,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=ABCD)。I/O口的工作方式和表现特征由这3

16、个I/O口寄存器控制。,方向控制寄存器DDRx用于控制I/O口的输入输出方向,即控制I/O口的工作方式为输出方式还是输入方式。,当DDRx=1时,I/O口处于输出工作方式,为0则输入。,输入引脚PINx为只读寄存器,若对其写操作会导致数据寄存器相应位取反。,当DDRxn=0时,该端口作为输入端,若PORTxn=1,带上拉电阻输入;若PORTxn=0,不带上拉电阻输入,具体的输入什么数据看PINxn。如:DDRB=0X00;PORTB=0XFF;i=PINB;当DDRxn=1,该端口作为输出端,若PORTxn=1,输出高电平;若PORTxn=0,输出低电平。如:DDRB=0X0F;PORTB=0

17、XF0;设置B口的高4位为上拉输入,低4位输出为低。,表6.1是AVR通用I/O端口的引脚配置情况,表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。当PUD=1时,AVR所有I/O内部上拉电阻都不起作用(全局内部上拉无效);而PUD=0时,各个I/O口内部上拉电阻取决于PORTXn的设置。,注意事项:(1)使用AVR的I/O口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。(2)当I/O工作在输入方式,要读取外部引脚上的电平时,应读取PINxn的值,而不是PORTxn的值。(3)当I/O工作在输入方式,要根据实际情况使用或不使用内部的上

18、拉电阻。(4)一旦将I/O口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚PINxn的值。,2.I/O口配置实例,a、PA口输出0X55,DDRA=0 xFF;PORTA=0 x55,b、PA口配置为不带上拉输入,DDRA=0 x00;PORTA=0 x00;i=PINA;,DDRA=0 x00;PORTA=0 xFF;i=PINA;,c、PA口配置为带上拉输入,练一练,d、PA4口配置为输出高电平,DDRA|=(1PA4);(这里PA4=4)PORTA|=(14);,e、PA3口配置为输出低电平,DDRA|=(13);PORTA,f、PA7口配置为带上拉电阻输

19、入,DDRA,正确使用AVR的I/O口要注意:(1)先正确设置DDRx方向寄存器,再进行I/O口的读写操作。(2)AVR的I/O口复位后的初始状态全部为输入工作方式,内部上拉电阻无效。所以,外部引脚呈现高阻输入状态(悬空)。(3)用户程序需要首先对要使用的I/O口进行初始化设置,根据实际需要设定使用I/O口的工作方式(输出还是输入),当设定为输入方式时,还要考虑是否使用内部的上拉电阻。(4)在硬件电路设计时,如能利用AVR内部I/O口的上拉电阻,可以节省外部的上拉电阻。,AVR通用I/O端口的主要特点为:,双向可独立位控的I/O口,Push-Pull大电流驱动(最大40mA),可控制的引脚内部

20、上拉电阻,每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电阻。当I/O口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(uA量级)。,可控的方向寄存器DDRx,通用数字I/O口的设置与编程,通用I/O输出设计要点,应用I/O口输出时,在系统的软硬件设计上应注意的问题有:,输出电平的转换和匹配。,输出电流的驱动能力。,I/O口输出为“1”时,可以提供20mA左右的驱动电流。输出为“0”时,可以吸收20mA左右的灌电流(最大为40mA)。,输出电平转换的延时(从输出转换为输入)。,应用举例:如图6-3所示,#include#define uchar unsigned char#define uint unsigned int/*以下是延时函数*/void Delay_ms(uint xms)int i,j;for(i=0;ixms;i+)for(j=0;j1140;j+);/*以下是主函数*/void main(void)char counter=0;DDRA=0 xff;/定义端口PA为输出DDRD=0 x00;/定义端口PD为输入PORTA=0 xff;/端口A输出高电平PORTD=0 xff;/定义端口PD带上拉电阻的输入,while(1)if(PIND,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号