您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第4章 MCS-51单片机输入口及其应用
源于科技点石成金源点教育专业IC、嵌入式教育机构单片机原理与应用邓耀辉源点教育第四章MCS51输入口及其应用源于科技点石成金源点教育专业IC、嵌入式教育机构第4章MCS-51单片机输入口及其应用4.1输入设备的分类4.2键盘去抖方法4.3独立式键盘4.4行列式键盘4.5键盘扫描程序源于科技点石成金源点教育专业IC、嵌入式教育机构学习要点在设计键盘接口时,解决以下几个问题:1。开关状态的可靠输入—可设计硬件去抖动电路或设计去抖动软件。2。键盘状态的监测方法—中断方式还是查询方式。3。键盘编码方法。4。键盘控制程序的编制。源于科技点石成金源点教育专业IC、嵌入式教育机构4.1输入设备的分类1。按钮开关2。单刀开关3。BCD指拨开关源于科技点石成金源点教育专业IC、嵌入式教育机构4.2键盘去抖方法键盘防抖(消抖)概念通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。源于科技点石成金源点教育专业IC、嵌入式教育机构键盘去抖方法按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。1。硬件消抖2。软件消抖源于科技点石成金源点教育专业IC、嵌入式教育机构硬件消抖在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。源于科技点石成金源点教育专业IC、嵌入式教育机构硬件消抖状态表:初始:A=01=0;B=15=16=02=0;3=1按键:A=11=1;B=05=06=12=1;3=0抖动:A=11=1;B=15=14=0(3=0)6=12=1;3=0源于科技点石成金源点教育专业IC、嵌入式教育机构软件消抖如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。源于科技点石成金源点教育专业IC、嵌入式教育机构4.3独立式键盘1.独立式按键结构独立式按键是指直接用I/O口线构成的单个按键电路。每根I/O口线上按键的工作状态不会影响其他I/O口线的工作状态。独立式按键电路如图4-1所示。2.独立式按键的软件结构包括按键查询、键功能程序转移。FP0~FP7为功能程序入口地址标号,PROM0~PROM7分别为每个按键的功能程序。图4-2为使用扩展I/O的独立式按键电路,按键数量可多可少。源于科技点石成金源点教育专业IC、嵌入式教育机构独立式按键电路图4-1独立式按键电路8031INT0+5VI/O8031(a)(b)查询方式I/O中断方式+5VINT1源于科技点石成金源点教育专业IC、嵌入式教育机构8255扩展I/O的独立式键盘8031P2.7ALEP0WRRD74LS3730AA1D~7D0CSPAPA568255RESETGNDPA0PA1PA2PA3PA4PA7WRRD+5V+5V1K10μF7123456088图4-2使用8255扩展I/O的独立式键盘源于科技点石成金源点教育专业IC、嵌入式教育机构4.4行列式键盘1.键盘工作原理行列式键盘电路原理如图4-3所示。按键设置在行列式交点上,行列线分别连接到按键开关的两端。当行线通过上拉电阻接+5伏时,被钳位在高电平状态。键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的。键盘中哪一个键按下可由列线逐列置低电平后,检查行输入状态来判断。源于科技点石成金源点教育专业IC、嵌入式教育机构行列式键盘原理电路图4-3行列式键盘原理电路源于科技点石成金源点教育专业IC、嵌入式教育机构行列式键盘工作方式2.键盘工作方式(如图4-4所示)键盘的工作方式:编程扫描方式、定时扫描方式、中断扫描方式三种。在键盘扫描子程序中完成下述几个功能。(1)判断键盘上有无键按下(2)去键的机械抖动影响。(3)求按下键的键号。(4)键闭合一次仅进行一次键功能操作。源于科技点石成金源点教育专业IC、嵌入式教育机构8155扩展I/O口组成的行列式键盘图4-48155扩展I/O口组成的行列式键盘源于科技点石成金源点教育专业IC、嵌入式教育机构键扫描子程序框图调用子程序延时6ms调用子程序延时12ms开始有键闭合否?有键闭合否?判断闭合键键号栈闭合键释放否?输入键号A返回YNNYNY源于科技点石成金源点教育专业IC、嵌入式教育机构键盘扫描方式3.键盘扫描方式扫描法:在判定有键按下后逐列(或逐行)置低电平,同时读入行(或列)的状态,如果行(或列)的状态出现非全1状态,这时0状态的行、列交点的键就是所按下的键。特点是逐列(或逐行)扫描查询。这时相应行(或列)应有上拉电阻接高电平。反转法:只要经过两个步骤就可获得键值。反转法原理如图4-5所示。源于科技点石成金源点教育专业IC、嵌入式教育机构(a)线反转法第一步(b)线反转法第二步图4-5线反转法原理源于科技点石成金源点教育专业IC、嵌入式教育机构行列式键盘接口4.行列式键盘接口(如图4-6所示)通用并行扩展I/O口键盘接口8031串行I/O口扩展的键盘接口源于科技点石成金源点教育专业IC、嵌入式教育机构图4-68031串行I/O口扩展的行列式键盘接口源于科技点石成金源点教育专业IC、嵌入式教育机构1.键输入检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。硬件电路消除抖动或软件消除抖动。&I/O接口&+5v+5v消除抖动电路开关单片机抖动时间<10ms开关动作时间>100ms“1”“0”<10ms延时等待10ms仍有按键信号?Y有按键信号?NYN键盘处理按键释放?NY4.5键盘扫描程序源于科技点石成金源点教育专业IC、嵌入式教育机构2.键译码键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键0~9、字符键0AH~0FH、功能键10H~。3.键处理根据键值转移到不同程序段。若键值属于数字、字符键,则调用显示数字和字符的子程序。若键值属于功能键,则进行多分支转移,执行各个功能程序段。键盘处理程序任务源于科技点石成金源点教育专业IC、嵌入式教育机构独立式键盘电路矩阵式键盘01+5vC0C1R0R1键盘I/O接口1.扫描法列线输出,行线输入。列线逐行输出0,某行有按键,行线输入有0,若无按键,行线输入全部为1。2.反转法行列线交换输入、输出,两步获取按键键号。P1.0P1.1P1.7+5v每个按键单独占有一根I/O接口引线。源于科技点石成金源点教育专业IC、嵌入式教育机构独立式按键(例程讲解)独立式按键是指直接用I/0口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其它1/0口线的工作状态。下图为一种独立式四按键电路,键值由软件用中断或查询方式获得。1、K0—K3四个按键在沒有按下时,P1.0—P1.3均处于高电平状态;只要有键按下,则相应的I/O口线就变成低电平;一个按键与一根I/O口线状态相对应。3、显然,在中断服务程序中,应设计键盘去抖动延时程序和读键值程序。4、等待键释放以后,再退出中断服务程序,转向各键定义的各功能程序。这样可以避免发生一键按下、多次处理的現象。2.在图中,为了使CPU能及时处理键盘功能,四根键盘状态输出线被送到四与门输入端。这样,只要有任一键按下,该四与门输出端便由高电平变成低电平,再通过INT0向CPU发出中断请求。源于科技点石成金源点教育专业IC、嵌入式教育机构ORG0000HAJMPMAIN;转向主程序。ORG0003HAJMPJSB;设置键识别中断服务程序入口。ORG0030HMAIN:MOVSP,#30H;设置堆栈。SETBEA;开中断。SETBEX0;允许INT0中断。MOVP1,#0FFH;设P1口为输入方式。HERE:SJMPHERE;等待键闭合。键识别中断服务程序:ORG0120HJSB:PUSHACC;保护现场。CLREA;暂时关中断。MOVA,P1;取P1口当前状态。ANLA,#0FH;屏蔽高4位。CJNEA,#0FH,KEY;有键按下,转键处理KEY。SETBEA;开中断。POPACC;现场恢复。RETI;返回。KEY:MOVB,A;保存键闭合信息到B。LCALLDELAY10;延时10ms,消去键闭合抖动。LOOP:MOVA,P1;取P1口状态。ANLA,#0FH;屏蔽高4位。CJNEA,#0FH,LOOP;等待键释放。LCALLDELAY10;延迟10ms,消去键释放抖动。MOVA,B;取键闭合信息。JNBACC.0,KEY0;若K0按下,转键处理程序KEY0。JNBACC.1,KEY1;若K1按下,转键处理程序KEY1。JNBACC.2,KEY2;若K2按下,转键处理程序KEY2。AJMPKEY3;转键处理程序KEY3。源于科技点石成金源点教育专业IC、嵌入式教育机构行列式按键(例程讲解)4条列线:P04-P074条行线:P00-P03注:P0口有上拉电阻源于科技点石成金源点教育专业IC、嵌入式教育机构行-列式键盘的扫描键值可归结为二个步骤:判断有无键按下;判断按下键的行、列号,并求出键值,键值=行号×04H+列号若求得键值,则可利用散转指令,去执行键盘各自的功能程序。硬件图中,设定:行号=0,1,2,3;列号=0,1,2,3;可得键值如图所示:扫描步骤(逐列)行/列01230012314567289AB3CDEF键值表源于科技点石成金源点教育专业IC、嵌入式教育机构行列式按键(逐列或逐行扫描原理)扫描步骤(逐列)1。全扫描:作用:判断是否有键按下。先对各行送低电平,如读回各列值都为1,则说明没有键按下,如某列上出现低电平,则说明有跨接到该列的键按下;例程:MOVP0,#0FH;P0口的高四位置0,低四位置1MOVA,P0;读取P0口ANLA,#0FH;提取低四位CJNEA,#0FH,YKEY0;判断是否有键按下AJMPKEYOUT源于科技点石成金源点教育专业IC、嵌入式教育机构扫描步骤(逐列)延时去抖YKEY0:LCALLDELAYMOVP0,#0FH;P0口的高四位置0,低四位置1MOVA,P0;读取P0口ANLA,#0FH;提取P0口的低四位CJNEA,#0FH,YKEY1AJMPKEYOUT源于科技点石成金源点教育专业IC、嵌入式教育机构扫描步骤(逐列)1。逐行扫描:作用:判断具体是哪个键按下,并提取键值。判断已有键按下的情况下,一行一行的判断看是哪一行有键按下,这样就能找出是哪一行和哪一列的键按下,从而得出具体的键值。YKEY1:MOVR3,#0;列号寄存器MOVR4,#0;hang号寄存器MOVR0,#0EFH;从第一列开始扫描YKEY:MOVA,R0MOVP0,AMOVA,P0JNBACC.0,H1;转第一行JNBACC.1,H2;转第二行JNBACC.2,H3;转第三行JNBACC.3,H4;转第四行INCR3CJNER3,#04H,KEYNEXTAJMPKEYOUT源于科技点石成金源
本文标题:第4章 MCS-51单片机输入口及其应用
链接地址:https://www.777doc.com/doc-3737681 .html