收藏 分销(赏)

ATmega16单片机端口讲解新演示幻灯片.ppt

上传人:精**** 文档编号:5888839 上传时间:2024-11-22 格式:PPT 页数:58 大小:1.38MB 下载积分:14 金币
下载 相关 举报
ATmega16单片机端口讲解新演示幻灯片.ppt_第1页
第1页 / 共58页
ATmega16单片机端口讲解新演示幻灯片.ppt_第2页
第2页 / 共58页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,2,篇 端口设计,1,目录,2.1,、端口结构介绍,2.2,、端口寄存器讲解,2.3,、端口实例讲解,2,2.1,、端口结构介绍,AVR,系列单片机的,IO,端口结构比基本,51,系列单片机的端口要复杂一些,以,ATmega16,单片机为例,它有,4,组,8,位,IO,端口,分别是,PORTA,、,PORTB,、,PORTC,和,PORTD,。,结构介绍:,3,图,2-1,图,2-2,4,下图,2-3,为,AVR,系列单片机端口结构示意图,每组,IO,口配备三个,8,位特殊功能寄存器,它们分别是方向控制寄存器,DDRx,(,x,代表,A,D,),数据寄存器,PORTx,,和输入引脚寄存器,PINx,。例如端口,A,的特殊功能寄存器为,DDRA,、,PORTA,和,PINA,。,5,图,2-3 AVR,系列单片机端口结构,6,通过这组寄存器,我们可以使每个端口实现双向数字,IO,通道或双向模拟量通道功能。,ATmega16,单片机的大部分端口具有除基本,IO,功能外的第二功能,关于第二功能的使用这里不作介绍。下面说明端口的基本,IO,输入输出和模拟量输入输出的工作过程。,同步数字输出。作为输出时,总线给方向寄存器,D,触发器,F9,写,1,,三态门,F1,打开,总线来的数据经,D,触发器,F10,到达输出端,Pxn,,此时上拉电阻是关断的。,数字输入。作为输入时,总线给方向寄存器,D,触发器,F9,写,0,,三态门,F1,关断,上拉电阻根据需要由,PUD,选择是否导通,在休眠信号,SLEEP,无效时,模拟开关,M1,打开,,MOS,管,T2,截止,从,Pxn,来的输入信号经整形电路,F7,和同步锁存器进入三态门,F4,成为同步输入信号。,7,模拟量输入输出。在模拟量输入输出模式下,通过设置使上拉电阻、三态门,F1,和模拟开关,M1,都处于关断状态,管脚,Pxn,直接连通单片机内部相关模拟量输入输出单元,为单片机内部模拟比较器、,A/D,转换器及,D/A,转换器等功能单元提供与外围连接的通道。,8,2.2,、端口寄存器讲解,位,7:0,:,PA,口的每一位的输入或输出定义。,0:,表示该位为输入方式。,1:,表示该位为输出方式。,位,7:0,:,PA,口输入缓冲器的值。,0:,该位输入为,0,。,1:,该位输入为,1,。,9,位,7:0,:,PA,口输出缓冲器的值。,0:,该位输出为,0,。,1:,该位输出为,1,。,10,2.3,、端口实例讲解,2.3.1,、流水灯设计,2.3.2,、数码管设计,2.3.3,、单一按键设计,2.3.4,、矩阵键盘设计,11,2.3.1,、流水灯设计,1,、发光二级管的知识讲解,2,、设计任务,3,、硬件设计,4,、软件算法设计,12,发光二极管的参数与普通二极管大致相同,我们要掌握,的是它的开启电压和工作电流。电流太大容易烧毁,太,小亮度不够。以磷化钾做成的,LED,为例:,开启电压:,工作电流:,允许最大电流:,1,、发光二级管的知识讲解,发光二极管限流电阻的选取:,13,如图所示:可以求出限流电阻的取值范围。,发光二极管限流电阻的选取:,14,端口设置,引脚状态说明,输入电流,输入,上拉无效,为高阻状态,上拉有效,外部引脚拉低输出电流,灌电流,(,吸收电流,),输出,推挽,0,输出,吸收电流,输出电流,输出,推挽,1,输出,输出电流,ATmega16,端口的输入,/,输出电流:,15,设计任务:,序号,实例要求,例,1,流水灯端口直接闪亮,例,2,流水灯顺时针转,例,3,流水灯逆时针,例,4,按键控制转向,例,5,按键控制流水灯间隔数,1,例,6,按键控制流水灯间隔数,2,16,硬件设计:,图,2-4,硬件设计,17,顺时针设计算法:,18,逆时针设计算法:,19,2.3.2,、数码管设计,1,、数码管基础知识讲解,2,、设计任务,3,、硬件设计,4,、软件设计,20,、数码管的分类,、数码管的判别,、数码管的驱动,、数码管的字型码,1,、数码管基础知识讲解:,21,、,数码管的分类:,按发光二极管单元连接方式分为:,共阳极数码管共阴极数码管,22,共阳数码管,是指将所有发光二极管的阳极接到一起形成,共阳极,(COM),的数码管。,图,2-5,共阳数码管,23,共阴数码管,是指将所有发光二极管的阴极接到一起形成,共阴极,(COM),的数码管。,图,2-6,共阴数码管,24,、数码管的判别:,共阳数码管在判别时应将公共极,COM,接到,+5V,,当某一,字段发光二极管的阴极为低电平时,相应字段就点亮。当,某一字段的阴极为高电平时,相应字段就不亮。,共阴数码管在判别时应将公共极,COM,接到地线,GND,上,,当某一字段发光二极管的阳极为高电平时,相应字段就点,亮。当某一字段的阳极为低电平时,相应字段就不亮。,25,、数码管的驱动:,数码管要正常显示,就要用驱动电路来驱动数码管的,各个段码,从而显示出我们要的数字,因此根据数码管的,驱动方式的不同,可以分为静态和动态两类静态显示驱动。,26,动态显示驱动,静态驱动也称直流驱动。静态驱动是指每个数码管的,每一个段码都由一个单片机的,I/O,端口进行驱动,或者使用,如,BCD,码二,-,十进制译码器译码进行驱动。静态驱动的优点,是编程简单,显示亮度高,缺点是占用,I/O,端口多,如驱动,5,个数码管静态显示则需要,58=40,根,I/O,端口来驱动,实际,应用时必须增加译码驱动器进行驱动,我们常用,74LS164/,74HC595,来驱动数码管。,27,动态显示驱动,动态驱动是将所有数码管的,8,个显示笔划“,a,b,c,d,e,f,g,dp”,的同名端连在一起,另外为每个数码管的公共极,COM,增,加位选通控制电路,位选通由各自独立的,I/O,线控制,当单片,机输出字形码时,所有数码管都接收到相同的字形码,但究竟,是那个数码管会显示出字形,取决于单片机对位选通,COM,端电,路的控制,所以我们只要将需要显示的数码管的选通控制打,开,该位就显示出字形,没有选通的数码管就不会亮。通过分,时轮流控制各个数码管的的,COM,端,就使各个数码管轮流受控,显示,这就是动态驱动。,28,在轮流显示过程中,每位数码管的点亮时间为,1,2ms,,由于人的视觉暂留现象及发光二极管的,余辉,效,应,尽管实际上各位数码管并非同时点亮,但只要扫描,的速度足够快,给人的印象就是一组稳定的显示数据,,不会有闪烁感。,29,、数码管的字型码:,图,2-7,实物图,图,2-8,引脚图,30,数码管的字型码,共阳极:,我们这里只讲静态驱动(,74HC164,驱动)的字型码,31,数码管的字型码,共阴极:,32,74ls164,引脚图和真值表:,2-9,引脚图,2-10,真值表,33,TTL,CMOS,VOH,2.4V,VCC,VOL,0.4V,GND,VIH,2.0V,0.7VCC,VIL,0.8V,0.2VCC,输入电平,输出电平,74LS,TTL,TTL,74HC,CMOS,CMOS,74HCT,TTL,CMOS,TTL与CMOS区别,74系列芯片电平区别,TTL,电平和,CMOS,电平的区别:,34,74ls164,工作时序:,图,2-11,工作时序,35,2,、设计任务:,序号,实例要求,例,1,设计程序,数码管全显示,例,2,设计程序,数码管一位显示,例,3,设计程序,查询按键,0,到,9999,例,4,设计程序,查询按键数码管全部显示,例,5,设计程序,查询按键加减,例,6,设计程序,按键中断查询法实现,36,3,、硬件设计:,图,2-12,硬件设计,37,数码管显示程序:,4,、软件设计,38,2.3.3,、单一按键设计,1,、单一按键原理,2,、设计任务,3,、软件算法设计,39,1,、单一按键原理,通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为,5ms,10ms,。,按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保,CPU,对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且判别到键释放稳定后再作处理。,40,硬件消抖,在键数较少时可用硬件方法消除键抖动。,RS,触发器为常用的硬件去抖,由于需要增加硬件设备,增大了系统的复杂性,所以硬件消抖一般不常用。,软件消抖,如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,,5ms,10ms,的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。,2,、设计任务,按键消抖:,41,图,2-13,按键消抖,42,按键消抖程序:if(!AJ1)_delay_cycles(80000);/延时,10ms,消抖 if(!AJ1)/确认有键按下 while(!AJ1);/等待按键释放,3,、软件算法设计,查询法,43,ATmega16,单片机有21个中断源,在这,21,个中断中,包含,1,个非屏蔽中断(,RESET,),3,个外部中断(,INT0,、,INT1,、,INT2,)和,17,个内部中断。这些中断的优先级按照向量号排列,向量号越小优先级越高。本例用到的中断源为外部中断请求,1,(,INT1,)。,ATmega16,的中断源:,44,ATmega16,的中断寄存器:,位,6,:,SE,:休眠使能控制位。,0,:,CPU,工作在正常模式;,1,:,CPU,工作在休眠模式,由,SM2,、,SM1,、,SM0,决定,休眠方式(请参阅手册)。,位,3-2,:,ISC11-0,:决定,INT1,的中断触发方式:,位,1-0,:,ISC01-0,:决定,INT0,的中断触发方式,同,INT1,。,45,位,7/6/5,:,INTx,:外部中断,x,使能位。,0,:不允许,INTx,中断;,1,:允许,INTx,中断。,位,4-3,:保留。,位,1,:,IVSEL,:中断向量选择位。,0,:中断向量位于,Flash,存储器的起始址;,1,:中断向量转移到,Boot,区的起始地址。,位,0,:,IVCE,:中断向量修改使能位。,0,:不能改变,IVSEL,的值;,1,:能改变,IVSEL,的值。,46,位,7/6/5,:,INTx,:外部中断,x,标志位。,0,:,INTx,中断没有发生;,1,:,INTx,中断发生。,位,4-0,:保留。,当状态寄存器,SREG,的位,I,、通用中断控制寄存器,GICR,中断使能位,INT1,为,1,,并且,INTx,位为,1,时,,MCU,即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入,1,来清零。,47,软件设计,中断法:,/,外部中断,INT1,服务程序,#pragma vector=INT1_vect,_interrupt void INT1_isr(void),SREG_Bit7=0;/,关闭全局中断,flag=1;/,标志位置位,while(!AJ1);/,等待按键释放,SREG_Bit7=1;/,全局中断打开,48,IAR,中断服务程序的编写:,IAR,中定义中断函数的格式是:,#pragma vector=,中断向量,_interrupt void,中断服务程序,(void),中断处理程序,外部中断,1,的服务程序:,#pragma vector=INT1_vect,_interrupt void INT1_Server(void),49,2.3.4,、矩阵键盘设计,1,、矩阵键盘设计原理,2,、设计任务,3,、硬件设计原理图,4,、软件算法设计,50,前面我们已经讲述了单一按键电路,对于单一按键每,个按键必须占用一根,I/O,口线,在按键数量较多时,,I/O,口线浪费较大。为了解决这个问题,采用矩阵键盘。,1,、矩阵键盘设计原理,51,2,、设计任务:,序号,实例要求,例,1,设计程序,数码管显示按键的编号,例,2,设计程序,按键的编号赋予功能,按下相应按键实现相应的功能,52,3,、硬件设计原理图:,图,2-14,硬件设计原理,53,4,、软件算法设计:,软件处理键盘的方式,有编程扫描方式、定时扫描,方式中断扫描方式。,1,、编程扫描工作方式是利用,CPU,在完成其它工作的空,余,调用键盘扫描子程序,来响应键输入要求。,2,、定时扫描工作方式是利用单片机内部定时器产生定,时中断(,10ms,),,CPU,响应中断后对键盘进行扫描、,并在有键按下时转入键功能处理程序。,3,、中断扫描工作方式即当键盘上只要有键闭合,就向,CPU,发出中断请求,,CPU,响应中断,立即中断当前正,在运行的程序,转入执行中断服务程序,判断键盘,上闭合键的键号,并作相应的键功能处理。,54,判断按键按下常用的方法有两种,即扫描法和反转、,法,根据扫描,方式的不同,扫描法又可细分为逐行扫描和逐列扫描。,1,、扫描法是在判定有键按下后逐列(或行)置低电平,,同时读入行(或列)状态,如果行(或列)状态出现,非全,1,状态,这时,0,状态的行、列交点的键就是所按下,的键。,2,、线反转法与扫描法相比,扫描法要逐列(或行)扫描,查询,当被按下的键处于最后一列(或行)时,则要,经过多次扫描才能最后获得此键所处的行列值。而线,反转法无论被按键是处于第一还是最后,均只须经过,两步便能获得此键所在的行列值。,55,矩阵键盘处理程序具体操作流程如下:,1,、判断键盘有无按下,PA.0,、,PA.1,、,PA.2,、,PA.3,输出全为“,0”,,再读入,PB.0,、,PB.1,、,PB.2,、,PB.3,判断是否全 为“,1”,,若全为“,1”,,则无键按下,否,则有键按下。,2,、去键抖动影响,判断有键按下后,采用软件延时一段时间(,10ms15ms,),,再次判断键盘状态,如果仍为有键按下状态,则认为此,键确实按下,否则按照键抖动处理。,56,3,、确定闭合键的键号,PA.0 PA.1 PA.2 PA.3,1 1 1 0,1 1 0 1,1 0 1 1,0 1 1 1,57,4,、每次输出一行为“,0”,,相继读入列线,PB.0,、,PB.1,、,PB.2,、,PB.3,的状态。在依次读入,PB.0,、,PB.1,、,PB.2,、,PB.3,时,若全为“,1”,,表示为“,0”,的这一行上没有,键闭合,否则不全为“,1”,,表示为“,0”,的这一行上,有键闭合,而且闭合键所在的列就是,PB.0PB.3,中为,“,0”,的列。确定了闭合键的位置后,计算出键值,,即产生键码。,5,、等待闭合键释放,再对输入键进行处理。确保键的一,次闭合,,CPU,只作一次处理。,58,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服