avr io接口基本结构与输出应用(参考)

上传人:第*** 文档编号:49348844 上传时间:2018-07-27 格式:PPT 页数:24 大小:475KB
返回 下载 相关 举报
avr io接口基本结构与输出应用(参考)_第1页
第1页 / 共24页
avr io接口基本结构与输出应用(参考)_第2页
第2页 / 共24页
avr io接口基本结构与输出应用(参考)_第3页
第3页 / 共24页
avr io接口基本结构与输出应用(参考)_第4页
第4页 / 共24页
avr io接口基本结构与输出应用(参考)_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《avr io接口基本结构与输出应用(参考)》由会员分享,可在线阅读,更多相关《avr io接口基本结构与输出应用(参考)(24页珍藏版)》请在金锄头文库上搜索。

1、 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口

2、的工作方式和表现特征由这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.

3、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口的工作方式由输出设置成输入方式后,

4、必 须等待一个时钟周期后才能正确的读到外部引脚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口的上拉电阻,可 以节省外部的

5、上拉电阻。C语言中的位操作 AVR通用I/O端口的主要特点为:双向可独立位控的I/O口Push-Pull大电流驱动 (最大40mA) 可控制的引脚内部上拉电阻每一位引脚内部都有独立的,可通过编程设置的,设定为上拉 有效或无效的内部上拉电阻。当I/O口被用于输入状态,且内 部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成 电流源输出电流(uA量级)。可控的方向寄存器DDRxC语言中的位操作 a | b - 按位或 这个表达式指示中 a 被表达式中的b 按位进行或运算 这惯用于打 开某些位 尤其常用|=的形式 例如 PORTA |= 0x80; / 打开位 7 (最高位) a / 翻转位 7

6、 a - 按位取反 在表达式中这个运算执行一个取反 当用按位与运算关闭某些位 时 与这个运算组合使用尤其有用 如 PORTA / 关闭位 7 PORTC | = (1/包含单片机型号头文件 #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

7、 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口的驱动能力,因此外部需

8、要使用功率驱动元件。 I/O引脚输出“1”时, 三极管导通,继电器 吸合,电炉开始加热 。I/O引脚输出“0”时 ,三极管截止,继电 器释放,加热停止。 PORTC | =(1/包含单片机型号头文件 #include /包含“位“操作头文件 #include /包含延时头文件 #include /包含通用函数及宏定义头文件 /*/ /* 函数名称: Display_All_SMG() */ /* 功 能: 显示8位数据信息 */ /* 参 数: *pdata-显示缓冲数组地址指针 */ void Display_All_SMG(unsigned char *pdata) unsigned ch

9、ar i; 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);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号