avr单片机ppt课件

上传人:风*** 文档编号:242769568 上传时间:2024-09-03 格式:PPT 页数:25 大小:525.56KB
返回 下载 相关 举报
avr单片机ppt课件_第1页
第1页 / 共25页
avr单片机ppt课件_第2页
第2页 / 共25页
avr单片机ppt课件_第3页
第3页 / 共25页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,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接口基本结构与输出应用,ATmega16芯片有PORTA、PORTB,1,I/O口的基本结构,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=ABCD)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。,I/O口的基本结构 每组I/O口配备三个8位寄存器,它,2,方向控制寄存器DDRx用于控制I/O口的输入输出方向,即控制I/O口的工作方式为输出方式还是输入方式。,当DDRx=1时,I/O口处于输出工作方式。,当PORTx=1时,I/O引脚呈现高电平,同时可提供输出20mA的电流;而当PORTx=0时,I/O引脚呈现低电平,同时可吸纳20mA电流。,方向控制寄存器DDRx用于控制I/O口的输入输出方向,即控制,3,当DDRx=0时,I/O处于输入工作方式,此时引脚寄存器PINx中的数据就是外部引脚的实际电平,通过读I/O指令可将物理引脚的真实数据读入MCU。此外,当I/O口定义为输入时(DDRx=0),通过PORTx的控制,可使用或不使用内部的上拉电阻。,当DDRx=0时,I/O处于输入工作方式 此时引脚寄,4,表6.1是AVR通用I/O端口的引脚配置情况,表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。当PUD=1时,AVR所有I/O内部上拉电阻都不起作用(全局内部上拉无效);而PUD=0时,各个I/O口内部上拉电阻取决于DDRXn的设置。,表6.1是AVR通用I/O端口的引脚配置情况,5,(1).使用AVR的I/O口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。,(2)当I/O工作在输入方式,要读取外部引脚上的电平时,应读取PINxn的值,而不是PORTxn的值。,(3)当I/O工作在输入方式,要根据实际情况使用或不使用内部的上拉电阻。,(4)一旦将I/O口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚PINxn的值。,(1).使用AVR的I/O口,首先要正确设置其工作,6,I/O端口寄存器,PA口寄存器PORTA、DDRA、PINA各个位的具体定义,I/O端口寄存器 PA口寄存器PORTA、DDRA、PIN,7,正确使用AVR的I/O口要注意:,(1)先正确设置DDRx方向寄存器,再进行I/O口的读写操作。,(2)AVR的I/O口,复位后,的初始状态全部为,输入工作方式,,内部上拉电阻无效。所以,外部引脚呈现三态高阻输入状态。,(3)用户程序需要首先对要使用的I/O口进行初始化设置,根据实际需要设定使用I/O口的工作方式(输出还是输入),当设定为输入方式时,,还要考虑是否使用内部的上拉电阻,。,(4)在硬件电路设计时,如能利用AVR内部I/O口的上拉电阻,可以节省外部的上拉电阻。,C语言中的位操作,正确使用AVR的I/O口要注意:C语言,8,AVR通用I/O端口的主要特点为:,双向可独立位控的I/O口,Push-Pull大电流驱动 (最大40mA),可控制的引脚内部上拉电阻,每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电阻。当I/O口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(uA量级)。,可控的方向寄存器DDRx,AVR通用I/O端口的主要特点为:双向可独立位控的I/O口P,9,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,C语言中的位操作 a | b - 按位或 这个表达式指示,10,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。,PORTC | = (1BIT0) |( 1BIT3,11,通用数字I/O口的设置与编程,1. 通用I/O输出设计要点,应用I/O口输出时,在系统的软硬件设计上应注意的问题有:,输出电平的转换和匹配。,输出电流的驱动能力。,I/O口输出为“1”时,可以提供20mA左右的驱动电流。输出为“0”时,可以吸收20mA左右的灌电流(最大为40mA)。,输出电平转换的延时,。,应用举例: LED发光二极管的控制,设计一个带有一排8个发光二极管的简易彩灯控制系统,通用数字I/O口的设置与编程 1. 通用I/O输出,12,硬件电路设计,当电压U1大于U2约1V以上时,二极管导通发光。当导通电流大于5mA时,人的眼睛就可以明显地观察到二极管的发光,导通电流越大,亮度越高。,AVR的I/O口输出“0”时,可以吸收最大40mA的电流,因此采用控制发光二极管负极的设计比较好。,硬件电路设计 当电压U1大于U2约1V以上时,二极管导通发光,13,#include /包含单片机型号头文件,#include /包含位操作头文件,#include /包含延时头文件,#define LEDPORTB/LED端口,#define Open_LED PORTA|=0x10 /使能LED,void En_Led(void) /使能LED,DDRB=0xff; /设置输出,PORTB=0xff;/输出高电平,Open_LED;/打开LED功能,#include /包含单片机型号,14,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毫秒,void main(void),15,应用举例:继电器控制,控制恒温箱的加热的硬件电路设计,恒温箱的加热源采用500W电炉,电炉的工作电压220v,电流2.3A。选用HG4200继电器,开关负载能力为5A/AC220V,继电器吸合线圈的工作电压5v,功耗0.36W,计算得吸合电流为0.36/5 = 72mA。因此,要能使继电器稳定的吸合,驱动电流应该大于80mA。该电流已经超出AVR本身 I/O口的驱动能力,因此外部需要使用功率驱动元件。,I/O引脚输出“1”时,三极管导通,继电器吸合,电炉开始加热。I/O引脚输出“0”时,三极管截止,继电器释放,加热停止。,应用举例:继电器控制 控制恒温箱的加热的硬件电路设计,16,PORTC,| =(1,PORTC0),PORTC 位置1。继电器吸合,电炉开始加热。,PORTC &,=,(1,PORTC0),PORTC &,=,0x80,PORTC 位置0。继电器释放,加热停止。,PORTC | =(1 PORTC0) PORTC &,17,应用举例:LED数码显示器的应用,应用举例:LED数码显示器的应用,18,avr单片机ppt课件,19,0-D7连接PB0-PB7,段选信号SMGLK11连接PA3,位选信号BITLK11连接PA2,74AC573SJ为锁存器。,0-D7连接PB0-PB7,段选信号SMGLK11连接PA3,20,#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);,#include /包含单片机型号,21,/*/,/* 函数名称: 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);/调用显示,/*,22,/*/,/* 函数名称: 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);,/*,23,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点 模拟集成电路的特点 模拟集成电路的特点,24,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点,模拟集成电路的特点 模拟集成电路的特点 模拟集成电路的特点,25,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


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

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


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