AVR单片机ppt教程课件5

上传人:一*** 文档编号:243050390 上传时间:2024-09-14 格式:PPT 页数:24 大小:473KB
返回 下载 相关 举报
AVR单片机ppt教程课件5_第1页
第1页 / 共24页
AVR单片机ppt教程课件5_第2页
第2页 / 共24页
AVR单片机ppt教程课件5_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,ATmega16,芯片有,PORTA,、,PORTB,、,PORTC,、,PORTD,(简称,PA,、,PB,、,PC,、,PD,),4,组,8,位,共,32,路通用,I/O,接口,分别对应于芯片上,32,根,I/O,引脚。所有这些,I/O,口都是,双(有的为,3,)功能复用的,。,模拟集成电路的特点,模拟集成电路的特点,其中,第一功能均,作为数字通用,I/O,接口使用,,复用功能,则分别用于中断、时钟,/,计数器、,USRAT,、,I2C,和,SPI,串行通信、模拟比较、捕捉等应用。,通用,I/O,接口基本结构与输出应用,I/O,口的基本结构,每组,I/O,口配备三个,8,位寄存器,它们分别是方向控制寄存器,DDRx,,数据寄存器,PORTx,,和输入引脚寄存器,PINx,(,x=ABCD,)。,I/O,口的工作方式和表现特征由这,3,个,I/O,口寄存器控制。,方向控制寄存器,DDRx,用于控制,I/O,口的输入输出方向,即控制,I/O,口的工作方式为输出方式还是输入方式。,当,DDRx,=1,时,,I/O,口处于输出工作方式。,当,PORTx,=1,时,,I/O,引脚呈现高电平,同时可提供输出,20mA,的电流;而当,PORTx,=0,时,,I/O,引脚呈现低电平,同时可吸纳,20mA,电流。,当,DDRx,=0,时,,I/O,处于输入工作方式,此时引脚寄存器,PINx,中的数据就是外部引脚的实际电平,通过读,I/O,指令可将物理引脚的真实数据读入,MCU,。此外,当,I/O,口定义为输入时(,DDRx,=0,),通过,PORTx,的控制,可使用或不使用内部的上拉电阻。,表,6.1,是,AVR,通用,I/O,端口的引脚配置情况,表中的,PUD,为寄存器,SFIOR,中的一位,它的作用相当,AVR,全部,I/O,口内部上拉电阻的总开关。当,PUD=1,时,,AVR,所有,I/O,内部上拉电阻都不起作用(全局内部上拉无效);而,PUD=0,时,各个,I/O,口内部上拉电阻取决于,DDRXn,的设置。,(1).,使用,AVR,的,I/O,口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。,(2),当,I/O,工作在输入方式,要读取外部引脚上的电平时,应读取,PINxn,的值,而不是,PORTxn,的值。,(3),当,I/O,工作在输入方式,要根据实际情况使用或不使用内部的上拉电阻。,(4),一旦将,I/O,口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚,PINxn,的值。,I/O,端口寄存器,PA,口寄存器,PORTA,、,DDRA,、,PINA,各个位的具体定义,正确使用,AVR,的,I/O,口要注意:,(1),先正确设置,DDRx,方向寄存器,再进行,I/O,口的读写操作。,(2)AVR,的,I/O,口,复位后,的初始状态全部为,输入工作方式,,内部上拉电阻无效。所以,外部引脚呈现三态高阻输入状态。,(3),用户程序需要首先对要使用的,I/O,口进行初始化设置,根据实际需要设定使用,I/O,口的工作方式(输出还是输入),当设定为输入方式时,,还要考虑是否使用内部的上拉电阻,。,(4),在硬件电路设计时,如能利用,AVR,内部,I/O,口的上拉电阻,可以节省外部的上拉电阻。,C,语言中的位操作,AVR,通用,I/O,端口的主要特点为:,双向可独立位控的,I/O,口,Push-Pull,大电流驱动,(,最大,40mA),可控制的引脚内部上拉电阻,每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电阻。当,I/O,口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(,uA,量级)。,可控的方向寄存器,DDRx,C,语言中的位操作,a | b -,按位或,这个表达式指示中,a,被表达式中的,b,按位进行或运算 这惯用于打开某些位 尤其常用,|=,的形式 例如,PORTA |= 0x80; /,打开位,7 (,最高位,),a & b -,按位与,这个运算在检查某些位是否置,1,时有用 例如,If (PORTA & 0x81) = 0) /,检查位,7,和位,0,注意圆括号需要括在,&,运算符的周围 因为它和,= =,相比运算优先级较低 这是,C,程序中很多错误的原因之一,a b -,按位异或,这个运算对一个位取反有用 例如 在下面的例子中 位,7,是被翻转的,PORTA = 0x80; /,翻转位,7,a -,按位取反,在表达式中这个运算执行一个取反 当用按位与运算关闭某些位时 与这个运算组合使用尤其有用 如,PORTA /,关闭位,7,PORTC,| =,(,1BIT0) |,(,1BIT3);,1(BIT0),表示逻辑,1,左移到,PORTC,的,0,位,结果为,0b00000001;,1(BIT3),表示逻辑,1,左移,PORTC,的,3,位,结果为,0b00001000,。,0b00000001,在同,0b00001000,相或,,结果为,0b00001001,。,PORTD=BIT(PD7),PORTD,口的第,7,位取反,/,,取反,PD0,引脚,,TCCR0|=(1CS01)|(1CS00);,TCCR0,功能寄存器的,CS01,、,CS00,位置,1,。,通用数字,I/O,口的设置与编程,1.,通用,I/O,输出设计要点,应用,I/O,口输出时,在系统的软硬件设计上应注意的问题有:,输出电平的转换和匹配。,输出电流的驱动能力。,I/O,口输出为“,1”,时,可以提供,20mA,左右的驱动电流。输出为“,0”,时,可以吸收,20mA,左右的灌电流(最大为,40mA,)。,输出电平转换的延时,。,应用举例,: LED,发光二极管的控制,设计一个带有一排,8,个发光二极管的简易彩灯控制系统,硬件电路设计,当电压,U1,大于,U2,约,1V,以上时,二极管导通发光。当导通电流大于,5mA,时,人的眼睛就可以明显地观察到二极管的发光,导通电流越大,亮度越高。,AVR,的,I/O,口输出“,0”,时,可以吸收最大,40mA,的电流,因此采用控制发光二极管负极的设计比较好。,#include /,包含单片机型号头文件,#include /,包含,位,操作头文件,#include /,包含延时头文件,#define LEDPORTB/LED,端口,#define,Open_LED,PORTA|=0x10 /,使能,LED,void,En_Led(void,) /,使能,LED,DDRB=0xff; /,设置输出,PORTB=0xff;/,输出高电平,Open_LED,;/,打开,LED,功能,void,main(void,),unsigned char i;,En_Led,();/,使能,LED,while(1),for(i,=0;i1;i-),LED=0xff; /LED,全部熄灭,LED /,点亮相应位,LED,delay_nms(200);/,延时大约,100,毫秒,应用举例,:,继电器控制,控制恒温箱的加热的硬件电路设计,恒温箱的加热源采用,500W,电炉,电炉的工作电压,220v,,电流,2.3A,。选用,HG4200,继电器,开关负载能力为,5A/AC220V,,继电器吸合线圈的工作电压,5v,,功耗,0.36W,,计算得吸合电流为,0.36/5 = 72mA,。因此,要能使继电器稳定的吸合,驱动电流应该大于,80mA,。该电流已经超出,AVR,本身,I/O,口的驱动能力,因此外部需要使用功率驱动元件。,I/O,引脚输出“,1”,时,三极管导通,继电器吸合,电炉开始加热。,I/O,引脚输出“,0”,时,三极管截止,继电器释放,加热停止。,PORTC,| =(1,PORTC0,),PORTC,位置,1,。继电器吸合,电炉开始加热。,PORTC &,=,(1,PORTC0,),PORTC &,=,0x80,PORTC,位置,0,。继电器释放,加热停止。,应用举例,:LED,数码显示器的应用,0-D7,连接,PB0-PB7,,段选信号,SMGLK11,连接,PA3,,位选信号,BITLK11,连接,PA2,,,74AC573SJ,为锁存器。,#include /,包含单片机型号头文件,#include /,包含,位,操作头文件,#include /,包含延时头文件,#include /,包含通用函数及宏定义头文件,/*/,/*,函数名称,:,Display_All_SMG,() */,/*,功 能,:,显示,8,位数据信息 *,/,/*,参 数,: *,pdata,-,显示缓冲数组地址指针 *,/,void,Display_All_SMG(unsigned,char *,pdata,),unsigned char i;,for(i,=0;i8;i+) /,循环,8,次,每次显示一位,Display_One_SMG(i,pdatai,);,/*/,/*,函数名称,:,Display_Cycle_SMG,() */,/*,功 能,:,循环显示,8,位数据信息 *,/,/*,参 数,: *,pdata,-,显示缓冲数组地址指针 *,/,/*,返回值,:,无 *,/,void,Display_Cycle_SMG(unsigned,char *,pdata,),unsigned,int,i,j,;,for(i,=0;i1;j-)/,扫描,8,个数码管,Display_One_SMG(j-2,pdata(i/50+9-j)%16);/,调用显示,/*/,/*,函数名称,: main() */,/*,功 能,:,数码管滚动显示数字 *,/,/*,参 数,:,无 *,/,/*,返回值,:,无 *,/,/*/,void,main(void,),unsigned char SMG_Display16=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;/,显示缓存,CPU_Init,(); /,初始化,CPU,while(1)/,无限循环,滚动显示数字,Display_Cycle_SMG(SMG_Display,);,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!