第3章人机交互接口-AVR单片机应用技术项目化教程课件.ppt

上传人:可**** 文档编号:87473771 上传时间:2023-04-16 格式:PPT 页数:78 大小:3.61MB
返回 下载 相关 举报
第3章人机交互接口-AVR单片机应用技术项目化教程课件.ppt_第1页
第1页 / 共78页
第3章人机交互接口-AVR单片机应用技术项目化教程课件.ppt_第2页
第2页 / 共78页
点击查看更多>>
资源描述

《第3章人机交互接口-AVR单片机应用技术项目化教程课件.ppt》由会员分享,可在线阅读,更多相关《第3章人机交互接口-AVR单片机应用技术项目化教程课件.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3 章章 人机交互接口人机交互接口键盘输入设备键盘输入设备一一 显示输出设备显示输出设备二二单片机中断系统单片机中断系统三三 数字密码锁数字密码锁四四人机交互接口人机交互接口键盘和显示器是计算机常见的人机交互输入、输出设备。在实际设计中,单片机通常需要接收外部的数据或状态、控制命令等,键盘是常见的数据、命令、状态输入装置。单片机通过显示器将执行结果或操作过程通过显示器显示出来。常见显示器的类型有LED发光二极管、LED数码管、LCD液晶显示器等。3.1 3.1 键盘输入设备键盘输入设备编码键盘:编码键盘:编码键盘按下时输出固定规律的编码,如BCD码键盘、ASCII码键盘等。非编码键盘:

2、非编码键盘:又分为独立式按键和矩阵式键盘。典型按键如图3-1所示,由开关按钮构成,当按键不按时开关两个触点断开,按下键时触点闭合。将开关接入电路中,通过操作其闭合和断开,产生数字0和1,从而将信息输给计算机。3.1 3.1 键盘输入设备键盘输入设备开关K闭合产生数字0,断开时产生数字1,机械弹性开关动作的瞬间产生一连串的抖动:抖动时间的长短由按键的机械特性决定,约为510 ms。键盘抖动会引起CPU多次判断,从而导致程序的错误操作。3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备1 1独立式键盘独立式键盘独立式键盘是最简单的键盘电路,各键互相独立,每个按键

3、独立的与一根单片机的I/O端口线相连接,如图3-3所示。特点:编程简单,浪费I/O口资源。3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘(1 1)组成结构)组成结构为了减少I/O连线,通常都将键盘排成行列矩阵的形式,因此又称为矩阵键盘,如图3-4所示。图中有4条行线(L0L3),4条列线(R0R3),正好构成一个44的矩阵。所有行列线均接至单片机的I/O口,这些交叉点本身是不联通的,在这些的行线和列线交叉点上放置一个按键,当键盘键按下时行线与行线接通。4条行线、4条列线的矩阵共有16个交叉点,可以放置16个按键,这比使用独立

4、式键盘节约一倍I/O口数。3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘(2 2)工作原理)工作原理以图3-4所示44矩阵键盘为例,图中L0L3(PA0PA3)为列输出线,R0R7(PA4PA7)为行读入线。先列线全部送0,然后读入行线的数据。如果无按键,由于列线接上拉电阻,故读入4个1。如果有按键按下,按键对应的行线与列线交叉点短路,列线输出的0送到行线,行线变成0,此时读入的列线数据不为1111,通过判断列

5、数据是否为1111还是非1111从而首先确定有无键盘按下,其次进一步准确判断是哪一个按键按下。3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘(2 2)工作原理)工作原理逐行逐列扫描判断键盘,具体方法是第1行送数字0,其他行送数字1,即L0-L3送1110到行线,然后读列线,如果R0=0说明是K0按下,如果R1=0,说明K1按下,如果R2=0,说明K2按下,如果R3=0,说明K3按下,通过四次逐一对列线的检测一行的K0K3这四个按键有无按键按下。如果R0-R3均为1,说明按下去的按键不在第1行,行线送出1101继续扫下一行按键

6、,直到将第4行的扫完为止,这样K0K15 1个按键均被扫描一遍,最坏的情况是扫最坏的情况是扫1616次扫到键盘次扫到键盘K15K15,详细过程见,详细过程见表3-1所示。3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘(2 2)工作原理)工作原理将表中行、列线的编码进行组合就可以是该键盘的编码表,如键盘K6的行列组合编码为0 xbd(列在高4位,行在低4位)。这种编码与键盘的编号不对应,实际使用时不方便,可进一步进行处理将键盘的编码表与键盘编号相对应,K0的编号为0,K15的编号为15,可以进一步对键值做处理。3.1.1 3.

7、1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备2 2行列矩阵键盘行列矩阵键盘(3 3)编程实现)编程实现变量i记录行号(L0-L3),j记录列号(R0-R3)。k0在0行、0列,k3在0行3列,K12在3行0列,k15在3行3列。通过观察可以发现,键值k与i、j满足如下关系:k=i4+jk=i4+jK键值编码:015,对应键盘k0-k15 i行号 j列号3.1.1 3.1.1 非编码键盘非编码键盘 3.1 3.1 键盘输入设备键盘输入设备3 3应用应用3.1.2 3.1.2 编码键盘编码键盘 3.1 3.1 键盘输入设备键盘输入设备编码键盘通常将图3-4所示矩阵电路、键

8、盘扫描电路、去抖动、键值转换电路集成在一个芯片,直接输出键盘编号,以ASCII码、BCD码或其他码输出,使用时不需要编写键盘处理程序,直接读取键值即可。常见的编码键盘芯片如8279、HD7279、MAX7129等。适合用于按键比较多的场合,如8279接32个键盘,HD7279接64个按键。在按键较多的仪器、仪表等设备应用较多。3.1.2 3.1.2 编码键盘编码键盘 3.1 3.1 键盘输入设备键盘输入设备旋转编码开关是编码键盘的一种特殊形式,又叫飞梭开关,其开关手柄可以左右旋转也可以向下摁。通过飞梭开关的左右旋转可以实现无极调节,使用比较方便。这种编码开关还应用与智能菜单操作系统,结合显示器

9、件,通过旋转旋转菜单选项,按下选中确认。其外形如同电位器,有3个引脚(带按钮开关的5个),中间公共端COM,旁边信号输出端A、B。3.1.2 3.1.2 编码键盘编码键盘 3.1 3.1 键盘输入设备键盘输入设备使用时公共端COM接低电平,信号输出端A、B接上拉电阻。旋转编码开关时信号端输出两组正交的脉冲信号,以A为参考,当手柄左选A超前B,右旋时A滞后B,通过检测A 脉冲有无判断开关有无动作,检测A、B信号的超前还是滞后检测开关往左边旋还是往右边旋,检测任意一个脉冲的个数可以统计旋转的次数、位置等,如图3-6所示。3.2 3.2 输出显示设备输出显示设备 显示设备是计算机控制系统的重要组成部

10、分,用来显示运行过程和运算结果。在单片机系统中常用的LED数码管显示器和LCD液晶显示器。数码管显示器简单易用,内部为发光二极管结构,在二极管两端加电压使其导通发光显示数字。此外还有米字型数码、LED点阵显示器等,也都是由发光二极管所组成。液晶显示器的结构和原理稍微复杂,使用中时需要编写时序严格的控制程序。液晶显示器有字符型、点阵型和TFT真彩显示器。3.2.1 3.2.1 数码管数码管 3.2 3.2 输出显示设备输出显示设备1 1数码管原理数码管原理数码管是内部由8个发光二极管构成的“8”字形显示器,可以显示0F的数字或符号,7个二极管显示数字笔画,一个显示小数点,有叫7段数码管,有8段数

11、码管。数码管内部结构不同,分共阳极数码管和共阴极数码管,如图3-7所示。3.2.1 3.2.1 数码管数码管 3.2 3.2 输出显示设备输出显示设备1 1数码管原理数码管原理数码管数码管每个笔画段(简称段)均有固定字母名称,用字母ag表示,用h或dp表示小数点,这些字母也指代图3-7中的二极管的阳极或阴极控制端,给数码管的公共端和段控制端加不同的电平即可组合显示不同数字。显然,共阴极、共阳极数码管的接法和驱动是不同的。3.2.1 3.2.1 数码管数码管 3.2 3.2 输出显示设备输出显示设备1 1数码管原理数码管原理(1 1)共阴极数码管)共阴极数码管共阴极数码管的所有发光二极管的阴极接

12、在一起作为公共端,阳极为段控制端。使用时数码管公共端接地,阳极段加高电平的发光点亮,加低电平的不发光,通过组合显示不同数字。(2 2)共阳极数码管)共阳极数码管共阳极数码管的所有发光二极管的阳极接在一起作为公共端,阴极为段控制端。使用时数码管公共端接VCC,阴极段加电平的发光点亮,加高电平的不发光,通过组合显示不同数字。极数码管显示数字的字型码表见表3-2。3.2.1 3.2.1 数码管数码管 3.2 3.2 输出显示设备输出显示设备3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(1 1)静态数码管显示)静态数码管显示如图3-8所示,静态显

13、示时,每一个数码管公共端(又称位端)接地或接电源,比划段(简称段)接单片机I/O口,单片机根据共阴还是共阳数码管输出字型码给数码管的段端,控制其显示数字按。每个数码管独立显示数字,互不影响,显然,每个数码使用独立的位控制线和段控制I/O口。这种显示方式显示器的亮度较,编程简单使用方便,但是占用单片机较多的I/O口资,因此在显示位数较多时不实用。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(1 1)静态数码管显示)静态数码管显示3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(2 2)动态

14、数码管显示)动态数码管显示当显示位数较多时,通常应采用动态数码管显示方式,如图3-9。动态显示时,数码管轮流工作,任意时刻只有一个数码管显示数字。当轮换的时间足够短时,由于人眼视觉残留效应,所看到的是多个数码管一起显示数字。动态显示的数码管所有段线并接在一起,接单片机的I/O口,每个数码管位端由独立I/O线控制,以便分时选通数码管。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(2 2)动态数码管显示)动态数码管显示图3-9中,显示字符的字形码从D0D7送出,输出到所有数码管a-h段线上,在分时控制cc7其中c0为低电平(共阴),使其中一个

15、数码管显示数字,间隔一段时间后再从D0D7送下一个数字,再使c1为低电平,如此进行下去直到控制数码管L7显示数字,让8个数码管均显示一次数字,只要两两数码管的持续时间短于人眼视觉残留时间,看上去就如8个数码管同时一起工作,同时显示数字。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(2 2)动态数码管显示)动态数码管显示3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(2 2)动态数码管显示)动态数码管显示图3-9中,显示字符的字形码从D0D7送出,输出到所有数码管a-h段线上,在分时控制

16、cc7其中c0为低电平(共阴),使其中一个数码管显示数字,间隔一段时间后再从D0D7送下一个数字,再使c1为低电平,如此进行下去直到控制数码管L7显示数字,让8个数码管均显示一次数字,只要两两数码管的持续时间短于人眼视觉残留时间,看上去就如8个数码管同时一起工作,同时显示数字。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式(2 2)动态数码管显示)动态数码管显示图3-9中,显示字符的字形码从D0D7送出,输出到所有数码管a-h段线上,在分时控制cc7其中c0为低电平(共阴),使其中一个数码管显示数字,间隔一段时间后再从D0D7送下一个数字,

17、再使c1为低电平,如此进行下去直到控制数码管L7显示数字,让8个数码管均显示一次数字,只要两两数码管的持续时间短于人眼视觉残留时间,看上去就如8个数码管同时一起工作,同时显示数字。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式【例3-1】使用动态显示法在数码管中显示4位数字,PD0、PD1、PD2分别按键开关S0、S1、S2。按S0使数码管数字加88,按S1使其减39,按S2将数字清,数字显示范围08000。使用共阴极数码管。解:在Proteus中绘制原理图如图3-10所示。编程思路为先将09的共阴极字型码定义成一个数组LED,再定义变量n

18、um,对num进行BCD码转换,分离出千位、百位、十位、个位,分别存于4个变量,再将这四个变量分别去LED数字查找该数的字型段码,送段I/O口,动态将4位数字显示出来。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备2 2驱动方式驱动方式【例3-1】读取键盘,判断键值,如果是S0令num+88,并判断其范围使之不超出8000,如果是S1令num-39,并判断其范围,使之不小于0,如果是S2令num=0,编程思路如图3-10所示。3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显示设备输出显示设备3.2.3.2.1 1 数码管数码管 3.2 3.2 输出显

19、示设备输出显示设备3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备LCD(Liquid Crystal Display)液晶显示器将液晶置于两片导电玻璃之间,靠两个电极间电场的驱动,引起液晶分子扭曲向列的电场效应,以控制光源透射或遮蔽功能,在电源关开之间产生明暗而将影像显示出来,若加上彩色滤光片,则可显示彩色影像。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备在两片玻璃基板上装有配向膜,所以液晶会沿着沟槽配向,由于玻璃基板配向膜沟槽偏离90度,所以液晶分子成为扭转型,当玻璃基板没有加入电场时,

20、光线透过偏光板跟着液晶做90度扭转,通过下方偏光板,液晶面板显示白色;当玻璃基板加入电场时,液晶分子产生配列变化,光线通过液晶分子空隙维持原方向,被下方偏光板遮蔽,光线被吸收无法透出,液晶面板显示黑色(如下图右)。液晶显示器便是根据此电压有无,使面板达到显示效果。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备根据LCD液晶显示器结构不同,有段式LCD和点阵LCD。段式LCD与数码管类似,显示简单的数字及符号。点阵型LCD通过像素点阵的形式显示内容,而根据显示内容不同又字符型LCD、图文LCD、TFT真彩显示器。这三种LCD液晶显示器在实际中均

21、有应用。由于液晶做显示时需要有复杂的驱动电平,实际使用的液晶显示器均是将液晶显示器与驱动芯片做在一体的模组。液晶模组由驱动芯片驱动LCD面板显示内容,具有可编程特性,使用时通过接口对其进行初始化配置以后将显示的内容输入到驱动芯片,即可在LCD面板显示出来。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备1 1 字符型液晶字符型液晶 1602(A/B/C)是常见的字符型液晶显示器。目前市场上生产该型号LCD显示器的厂家比较多,技术成熟。1602显示器能显示2行ASCII字符,每行显示16个,模组面板见图3-11。该模组内部采用了HD44780以及

22、兼容LCD驱动芯片,使用Bonding封装技术,将芯片与PCB板做成一体,能有效降低整个模组功耗,提高其工作稳定性。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(1 1)LCDLCD模组引脚功能模组引脚功能3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(1 1)LCDLCD模组引脚功能模组引脚功能VSSVSS:电源地,接地。VDDVDD:正电源,4.55.5V。V0V0:调整该脚电压可以调整LCD显示对比度。RSRS:命令/数据控制引脚。当该引脚为高电平时,写入LCD的为显示数据;当该引脚

23、为低电平时,写入LCD的为控制命令,读出的为LCD的状态。R/WR/W:读写控制信号。当该引脚为高电平时,读LCD的数据和状态,当该引脚为低电平时,将数据或命令写入LCD。D0D0D7D7:LCD的数据总线。BLABLA:背光电源正极,通常接正电源。BLKBLK:背光电源负极。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(2 2)LCDLCD模组命令模组命令市场上常见的1602 LCD液晶显示模组,大多采用HD44780驱动芯片或其兼容芯片。这些兼容芯片对外的指令大多相同。因此,同一个1602的驱动程序,可以驱动不同厂家的液晶显示器,前提是

24、引脚定义一样。HD44780的控制指令共11条,见表3-4。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(2 2)LCDLCD模组命令模组命令3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(2 2)LCDLCD模组命令模组命令清屏指令(清屏指令(01H01H)当给LCD送01H时候,LCD显示面板所有内容被清除,内部数据指针清零。当送02H时,只使数据指针清零,而LCD面板内容不变。置输入模式置输入模式设置光标、画面移动模式。I/D=1,数据读、写操作后,AC自动增1;I/D=0,数据读、

25、写操作后,AC自动减1。S=1,数据读、写操作后,画面平移;S=0,数据读、写操作后,画面不平移。显示开关控制显示开关控制设置显示、光标及闪烁的开、关状态。其中:D表示显示开关:D1为开,D0为关;C表示光标开关:C=1,为开,C=0为关;B表示闪烁开关:B=1,为开,B=0为关。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(2 2)LCDLCD模组命令模组命令光标、画面位移。光标、画面位移。设置光标、画面移动,不影响DDRAM。其中:S/C1,画面平移一个字符位;S/C0,光标平移一个字符位。R/L1,右移;R/L=0,左移。功能设置。功

26、能设置。设置LCD工作模式。DL=1,8位微处理器接口,DL=0,4位微处理器接口;N=1,两行显示模式,N=0,一行显示模式;F=1,5*10点阵字符,F=0,5*7点阵字符。CGRAMCGRAM地址设置。地址设置。设置CGRAM的地址。A5A0=03FH。DDRAMDDRAM地址设置。地址设置。设置DDRAM的地址。N=0,一行显示,A6A004FH;N=1,两行显示,首行A6A000H2FH,次行A6A0=40H67H。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(2 2)LCDLCD模组命令模组命令读读BFBF及及ACAC的值的值

27、。功能:读忙值和地址计数器AC的值。其中:BF=1时忙,BF=0时准备好。此时AC值意义为最近一次地址(CGRAM或DDRAM)定义。图7-201602 LCD与单片机接口写数据。功能:根据最近设置的地址性质,数据写入DDRAM或CGRAM。读数据读数据 。功能:根据最近设置的地址性质,从DDRAM或CGRAM读出数据。3.2.3.2.2 LCD2 LCD液晶显示器液晶显示器 3.2 3.2 输出显示设备输出显示设备(3 3)16021602使用使用【1】初始化】初始化1602,编程完成操作。,编程完成操作。【2】在第一行显示】在第一行显示a【3】在第一行显示字符串】在第一行显示字符串“Hel

28、lo!”(0,0),),在第在第2行显示行显示“I love AVR”(1,0)。)。3.3.3 3.1 1 中断概述中断概述 3.3.3 3 中断系统中断系统 中断是计算机传输数据、处理实时事件的一种常用方式。在计算机中,有如下几种常见的数据传输方式。1 1数据传输方式数据传输方式 (1 1)无条件传输)无条件传输无条件数据传输指数据到计算机之间是无条件的,任何时候都可以传输。(2 2)查询方式)查询方式 计算机不断查询外部条件,只有外部条件满足以后才进行数据传输,执行相应操作。如前面的键盘的读取可以看作查询方式。(3 3)中断方式)中断方式 中断方式是“破坏”主程序的一种数据传输方式,它会

29、迫使计算机暂时终止正在执行的操作,转而去执行另外的操作,当将该操作做完以后再重新返回到先前被终止的程序,继续执行。3.3.3 3.1 1 中断概述中断概述 3.3.3 3 中断系统中断系统 中断是计算机传输数据、处理实时事件的一种常用方式。在计算机中,有如下几种常见的数据传输方式。主程序中断服务程序中断请求中断响应保护现场恢复现场中断返回继续主程序3.3.3 3.1 1 中断概述中断概述 3.3.3 3 中断系统中断系统1 1数据传输方式数据传输方式 (4 4)DMADMA方式方式DMADMA(Direct Memory AccessDirect Memory Access)存储器直接访问无需

30、经过CPU控制,主机直接访问目的机存储器,而无需目的主机的CPU参数,是一种快速的数据传输方式。无条件传输和查询方式实时性不强。中断的发生具有随机性,通过中断,计算机能及时、有效的“掌握”外部事件动态,是一种可靠的、实时性好的数据传输和处理方法。3.3.3 3.1 1 中断概述中断概述 3.3.3 3 中断系统中断系统2 2中断的特点中断的特点 引发中断的原因称为“中断源”。当中断源请求中断时,CPU暂时停止(中断)当前操作,转而执行中断源的处理程序即中断服务程序,并在执行完服务程序后自动返回原程序执行的过程,中断存在以下特点:(1)通过中断方式提高计算机处理的实时性。(2)实现计算机分时操作

31、,提高了CPU的效率。(3)进行故障紧急处理。(5)通过中断方式可以实现人机交互。(4)可以实现待机状态的唤醒。可以使用中断方式使计算机恢复到正常工作方式。3.3.3 3.1 1 中断概述中断概述 3.3.3 3 中断系统中断系统3 3中断分类中断分类根据中断源不同,不同计算机中中断类型不同,有如下中断方式:(1)内部中断。中断源在计算机内部。(2)外部中断。中断源在计算机外部。(3)可屏蔽中断。可以通过软件指令打开(使能)和关闭(屏蔽)中断。(4)非可屏蔽中断。无法由软件控制的中断,任何时候都有效。当一个可屏蔽的中断源向CPU申请中断时必须通过先由软件指令使能它,否则CPU不会响应。而非可屏

32、蔽中断由于无法通过软件控制,只有其发生均立即被执行。3.3.3 3.2 ATmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统 ATmega16单片机共有21个中断源,其中1个RESET非可屏蔽中断(不能软件关断)、3个外部中断(INT0、INT1、INT2)和17个内部中断,它们的具体意义和使用方法将在相应的章节有详细介绍。1 1中断源、中断矢量与中断优先级中断源、中断矢量与中断优先级 系统RESET复位中断是一个特殊的中断源,是AVR中唯一不可屏蔽的中断。当ATmega16由于各种原因被复位后,程序将跳到复位向量处(缺省为0000H)执行程序。3.3.3 3.2

33、 ATmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统 每一个中断源均有其对应中断服务程序的入口地址,称为中断向量地址。当中断发生以后CPU终止当前操作,转而跳转到中断源对应的中断向量地址处执行中断服务程序。ICCAVR中为入口地址了号,以方便编程,编号为1-21(有些编译器从0-20编号),21个中断矢量地址按其中断号顺序放置于中断矢量表的起始位置(默认为0000H),如表3-8所述,表3-8详细介绍了中断号、中断源、中断入口地址及其中断的作用等。3.3.3 3.2 ATmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统3.3.3 3

34、.2 ATmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统3.3.3 3.2 ATmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统 当多个中断源同时向CPU请求中断时便有中断优先级的问题存在。AVR不支持软件重定义中断源的优先级,其为每个中断源定义了固定优先级别,是不可更改的。表3-x的第列数值代表中断源的优先级别,数字越小中断优先级别越高,反正越小。显然RESET为最高优先级,SPM_RYD优先级最低。CPU在中断程序中会自动关毕全局中断使能,其他中断无法响应。可在中断程序中打开全局中断,以实现中断的软件嵌套。3.3.3 3.2 A

35、Tmega16 2 ATmega16 中断中断 3.3.3 3 中断系统中断系统2 2中断标志及中断响应中断标志及中断响应当有中断产生时,CPU的中断系统会自动给出相应标志,将寄存器的相关位置为“1”,以便向CPU提起中断请求。若中断条件满足CPU立即响应该中断请求,并将中断标志位清除并转到中断源对应的中断矢量地址处执行中断服务程序。也可以在中断服务程序向标志寄存器写“1”手动清除中断标志位。若中断条件不满足,如全局中断禁止、中断源被禁止时CPU不会立即响应该中断,则该中断标志将会一直保持,直到中断条件允许并得到响应之止。极个别的中断不设中断标志,只要中断条件满足(外部输入低电平)便会一直向M

36、CU发出中断申请,而并不产生中断标志。3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统ATmega16共有INT0、INT1和INT2三个外部中断源,分别由芯片外部引脚PD2、PD3、PB2连到中断系统,接收外部器件的中断请求。通过这三个引脚的电平或状态变化作为中断触发信号,其中INT0和INT1共有4种中断触发方式,INT2只有2种触发方式,如表3-9。3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统1 1同步中断触发同步中断触发CPU在I/O同步时钟控制下每周期采样INT0和

37、INT1的引脚上的上升沿或下降沿变化,由于需要I/O同步时钟,属于同步边沿触发中断。显然若CPU的主时钟停止工作便无法采样INT0、INT1的边沿中断。2 2异步中断触发异步中断触发CPU对INT2引脚上的上升沿或下降沿变化或INT0/INT1的低电平状态的采样无需I/O时钟信号驱动,而通过额外的异步时钟来检测这些信号,属于异步中断触发。这类触发类型的中断经常作为外部唤醒源。3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统3 3中断寄存器中断寄存器在ATmega16中,除了寄存器SREGSREG中的全局中断允许标志位I外,与外部中断有关

38、的寄存器有4个,共有11个标志位。其作用为保存外部中断中断标志的标志位、控制中断允许的使能位、定义外部中断的触发类型方式选择位。3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统(1 1)中断控制寄存器)中断控制寄存器MCUCRMCUCRMCUCR寄存器的低4位为INT0(ISC01、ISC00)和INT1(ISC11、ISC10)中断触发类型控制位,中断触发方式见下表3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统(2 2)控制和状态寄存器)控制和状态寄存器MCUCSRMCUCS

39、R ISC2:为0时INT2下降沿产生一个异步中断请求,为1时上升沿产生一个中断请求。3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统GICR的高3位为INT0、INT1和INT2的中断允许控制位,只有SREG寄存器中的全局中断I位为“1”,以及GICR寄存器中相应的中断允许位被置为“1”时,外部引脚INTx有中断请求CPU方才响应之。(3 3)通用中断控制寄存器)通用中断控制寄存器GICRGICR3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统GICR的高3位为INT0、INT

40、1和INT2的中断允许控制位,只有SREG寄存器中的全局中断I位为“1”,以及GICR寄存器中相应的中断允许位被置为“1”时,外部引脚INTx有中断请求CPU方才响应。(3 3)通用中断控制寄存器)通用中断控制寄存器GICRGICR3.3.3 3.3 ATmega163 ATmega16外部中断外部中断 3.3.3 3 中断系统中断系统当INTx引脚上的有中断请求会将INTFx位置为1。如果此时SREG寄存器中I=1,以及GICR寄存器中的INTn被置为“1”,MCU将响应中断请求同时硬件自动将INTFn标志位清零。也可以写“1”到INTFn使用指令将标志清零。当INT0(INT1)设置为低电

41、平触发方式时,标志位INTF0(INTF1)始终为“0”,这并不意味着不产生中断请求,而是低电平触发方式是不带中断标志类型的中断触发。在低电平触发方式时,中断请求将一直保持到引脚上的低电平消失为止。(4 4)通用中断标志寄存器)通用中断标志寄存器GIFR GIFR 3.3.3 3.4 4 函数的中断函数的中断 3.3.3 3 中断系统中断系统1 1函数的中断函数的中断 中断是C语言函数的一个重要属性。定义函数的中断属性之后,函数便成为中断源的中断函数,当中断源产生中断后该中断函数被自动执行。中断函数具有以下特点:(1)中断函数为无参函数,不能使用形式参数传递数据、消息。(2)中断函数没有返回类

42、型,不能使用return进行数据或消息的传递。(3)中断函数无需声明、调用,按编译器规定格式定义好与中断源的关系以后便可以自动执行。不同编译器定义函数中断属性方法不同,在ICCAVR编译器中,定义函数的中断属性如下:3.3.3 3.4 4 函数的中断函数的中断 3.3.3 3 中断系统中断系统1 1函数的中断函数的中断#pragma interrupt_handler int0_isr:2#pragma interrupt_handler int0_isr:2 void int0_isr(void)void int0_isr(void)/在此处编写中断函数语句在此处编写中断函数语句#pragm

43、a为编译开关,控制编译器编译方式,interrupt_handler为函数属性关键字,置于函数名前面。函数名为int0_isr,可自定义,符合一般函数名的命名规则即可。函数名后面的:2为表中的向量号2,通过该数字将int0_isr函数与INT0相联系,当INT0产生中断时自动执行int0_isr函数。3.3.3 3.4 4 函数的中断函数的中断 3.3.3 3 中断系统中断系统2 2中断函数值传递中断函数值传递中断函数无法通过参数传递数值或信息,也不能返回任何结果。在使用中若想中断函数与其他函数之间传递数据或消息,可以通过全局变量、全局数组来实现。3.3.3 3.5 5 中断编程步骤中断编程步

44、骤3.3.3 3 中断系统中断系统(1 1)确定中断源(内部中断,外部中断)确定中断源(内部中断,外部中断)(2 2)如是)如是INTINT中断还得设定外部中断触发方式中断还得设定外部中断触发方式 MCUCRINT0,INT1MCUCRINT0,INT1;MCUCSRINT2 MCUCSRINT2;(3 3)开放可屏蔽中断源(打开中断开关)开放可屏蔽中断源(打开中断开关)SREG.7SREG.7中断总开关;中断总开关;GICR GICR 中断源开关中断源开关(4 4)编写中断事件函数)编写中断事件函数#pragma interrupt_handler int0_isr:2 INT0(5 5)处

45、理中断函数的参数传递)处理中断函数的参数传递 全局变量全局变量3.3.3 3.5 5 中断编程步骤中断编程步骤3.3.3 3 中断系统中断系统开始开始设置中断触发方式设置中断触发方式(INTx有效)有效)开总中断开总中断开中断开中断等待中断等待中断中断处理函数中断处理函数进入进入返回返回3.3.3 3.6 6 练习与应用练习与应用3.3.3 3 中断系统中断系统1、在PA0接有一个发光二极管LED,在外部中断接有一个开关,按要求编程完成如下操作:(1)INT0接开关,设置为下降沿触发,当中断产生时LED亮;(2)INT0接开关,设置为上升沿触发,当中断产生时LED亮;(3)INT1接开关,设置

46、为上升沿和下降沿都产生中断;当开关闭合时LED亮,当开关断开时LED灭;(脉冲触发)(4)INT1接开关,设置为低电平触发方式,当开关闭合时LED亮。3.3.3 3.6 6 练习与应用练习与应用3.3.3 3 中断系统中断系统2、INT0接有开关,CPU接4个数码管。每次INT0产生中断时数码管中的数字自加50,加到1000清零。分析:此种方法与前种方法有何优点?3.3.3 3.6 6 练习与应用练习与应用3.3.3 3 中断系统中断系统3、INT1接入一输入脉冲,设置其频率为1000hz,I/O口接4个数码管。设置INT1为脉冲中断(上升沿和下降沿都产生一次中断),在上升沿中断时让变量i加1计数,在下降沿时让变量i停止计数,在主函数中对变量i进行BCD转换,并显示在4位数码管中。思考:(1)数码管显示数字和脉冲之间有什么关系?(2 2)如何测定一个未知脉冲的频率、周期、占空比?)如何测定一个未知脉冲的频率、周期、占空比?

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁