收藏 分销(赏)

单片机键盘接口.ppt

上传人:w****g 文档编号:13300217 上传时间:2026-02-25 格式:PPT 页数:18 大小:120KB 下载积分:8 金币
下载 相关 举报
单片机键盘接口.ppt_第1页
第1页 / 共18页
单片机键盘接口.ppt_第2页
第2页 / 共18页


点击查看更多>>
资源描述
第八章 单片机人机接口,键盘接口,键盘是计算机不可缺少的输入设备,是实现人机对话的纽带。按其结构形式键盘可分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者用硬件方法产生键码。,.键盘接口,8.2.1 键盘工作原理,1.键的特性,键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间电压会产生波动,即抖动。它的结构和产生的波形如图所示。,P1.1,VCC,GND,K,P1.1,抖动时间,10ms,开关动作时间,100ms,“断开”,“闭合”,10ms,“断开”,为了保证CPU对键的一次闭合仅进行一次键功能操作消除按键盘抖动,通常有两种方法:硬件消抖和软件消抖。,I/O,接,口,+5v,+5v,消除抖动电路,开关,单,片,机,硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路。,2.去抖动影响的措施,软件消抖是利用延时来跳过抖动过程。在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除了抖动影响。,图8-6 键盘结构,44 键盘,3.行列式键盘工作原理,如果把行线接到单片机的输入口,列线接到单片机的输出口。在单片机的控制下,先使列线Y0输出“0”,其余列线都为“1”,读行线状态。如果行线都为“1”,则Y0列上没有键闭合。如果读出的行线不全为“1”,则为“0”的行线和Y0相交的键处于闭合状态,如果Y0这一列上没有键闭合,接着是列线Y1为“0”,其余为“1”,用同样方法检查Y1列上是否有键闭合。这种逐行逐列地检查键盘状态的过程称为对键盘的一次。,图中键盘的行线X0X3通过电阻接+5V。当键盘上没有键闭合时,所有的行线和列线都断开,行线都呈高电平。当键盘上某一个键闭合时,该键所对应的行线和列线被短路。,8.2.2 键盘的工作方式,键盘的工作方式一般有两种:,一、编程扫描方式(查询方式),二、中断扫描方式,一、编程扫描方式,CPU对键盘扫描,(1)可以采用程序控制的随机方式,调用键盘扫描子程序响应键输入要求;,(2)也可以采用,定时控制方式,,每隔一定时间,调用键盘扫描子程序,来响应键输入要求。可利用8051内部定时器,定时10ms中断,调用键盘扫描子程序,从而转到键功能处理程序。,键盘扫描子程序一般应具备如下几个功能:,1)判断键盘上有无键按下。,2)用软件去除键的抖动影响。,3)扫描键盘,得到按下键的键号。,4)判断闭合的键是否抬起,键闭合一次仅进行一次键功能操作。,5)输出确定的键号。,接线说明:,键盘,行线与P1口的高四位,P1.7P1.4,相连,作键扫描输出线;,列线与P1口的低四位,P1.3P1.0,相连,作读键输入线;,四根列线P1.3P1.0接到与门输入端,与门输出接到INT0引脚,以申请中断。,2)中断扫描方式,编程扫描方式,CPU经常处于空扫状态,为提高 CPU的效率,可采用中断方式。,44 键盘,行,列,初始化时使键盘行输出口全为0。当有键按下时,向CPU发出中断请求,CPU中断开放,响应中断请求,进入中断服务程序后,,进入中断服务程序后,要完成以下功能:,键识别:,执行键盘识别程序,使行扫线P1.4-P1.7全部输出低电平,读入P1.3-P1.0列线的状态,如有键按下,必有列线为低电平,转去抖动;,去除抖动:,延时10ms左右后,再次识别有无键按下;,确定键并计算键值:,执行扫描键盘程序,使行扫线P1.4-P1.7逐次输出低电平,读入P1.3-P1.0列线的状态,如所扫行有键按下,必有列线为低电平,从而根据行号和列号可以计算出键值。,键值行首值列号值,键处理程序,中断返回,键盘、显示器接口8155(8.2.3),48 键盘,8155的端口地址分配如下:,7F00H 命令状态口,7F01H A口(显示器位选口;键盘列扫描输出口),7F02H B口(显示器段选口),7F03H C口(键盘行输入口),LED采用动态显示、软件译码;,键盘采用编程扫描工作方式。,LED采用共阴极数码管;键盘编码为十六进制数。,LED驱动采用集电极开路同相输出8位驱动器8718芯片,键扫描子程序的设计要考虑以下个方面:,1、判别键盘上有无键闭合,方法是使PA口输出全“0”,读PC口的状态,,若PC口全为“1”则键盘上没有键闭合,,若PC口不全为“1”,则有键闭合。,2、去除键的机械抖动,方法是判断到键盘上有键闭合后,延迟一段时,再判别键盘的状态,若仍有键闭合,则认为有,一个键处于稳定的闭合期,否则认为是键的抖动。,3、判别闭合键的键号,方法执行扫描键盘程序,PA口依次输出扫描码,并用,计数器记录,下当前扫描列的列号,并相应地读取PC口的状态。,行首键号列号8+1,4、使CPU对键的一次闭合,仅做一次处理,等待闭合键释放以后再做处理,。,PA口列扫描输出码 图8-10 键扫描程序框图,键盘、显示器接口程序清单:,ORG 3000H,START:MOV SP,#60H,MOV DPTR,#2F00H,MOV A,#03H,MOVX DPTR,A,MOV 70H,#00H ;70H存放键号,KEYI:ACALL KS1 ;调用判有无键闭合子程序,JNZ LK1,NI:ACALL DIR ;调用显示子程序,延时6ms,AJMP KEYI,LK1:ACALL DIR ;延时12ms,ACALL DIR,ACALL KS1,JNZ LK2,ACALL DIR,AJMP KEYI,LK2:MOV R2,#0FEH;列扫描码送R2,MOV R4,#00H ;R4是列计数单元,LK4:MOV DPTR,#7F01H ;列扫描码送PA口,MOV A,R2,MOVX DPTR,A,INC DPTR,INC DPTR,MOVX A,DPTR ;读C口,JB ACC.0,LONE ;0行为高电平,转判1行,MOV A,#00H ;0行首键号送A,AJMP LKP,LONE:JB ACC.1,LTWO ;转判2行,MOV A,#08H ;1行首键号送A,AJMP LKP,LTWO:JB ACC.2,LTHR ;转判3行,MOV A,#10H ;2行首键号送A,AJMP LKP,LTHR:JB ACC.3,NEXT ;转判下一列,MOV A,#18H ;3行首键号送A,LKP:ADD A,R4 ;行首键号+列号=键号,MOV 70H,A,PUSH ACC,LK3:ACALL DIR,ACALL KS1 ;判键释放否,JNZ LK3,POP ACC,AJMP KEY1,判断键号,NEXT:INC R4 ;列扫描计数器加1,MOV A,R2 ;判是否已扫到最后一列,JNB ACC.7,KND ;扫到则转移,RL A ;列扫描码左移一位,MOV R2,A,AJMP LK4 ;无键按下,KND:AJMP KEYI,KS1:,MOV DPTR,#7F01H,MOV A,#00H ;全“0”送PA口,MOVX DPTR,A,INC DPTR,INC DPTR,MOVX A,DPTR ;读入键的状态,CPL A,ANL A,#0FH ;取出被按下键的状态,RET,判断键,是否按下,DIR:MOV R0,#70H,MOV A,R0,ANL A,#0FH,MOV 30H,A,MOV A,R0,SWAP A,ANL A,#0FH,MOV 31H,A,MOV R0,#30,MOV R3,#01,D01:MOV A,R3,MOV DPTR,#0FF01H,MOVX DPTR,A,INC DPTR,MOV A,R0,ADD A,0DH,MOVC A,A+PC,将70H中的单字节两位数字拆分成双字节,并送显示缓冲区30H、31H,用两块显示器显示所按下的键值,DIR1:MOVX DPTR,A,ACALL DL1,MOV A,R3,RL A,JB ACC.2,LD1,MOV R3,A,INC R0,AJMP DO1,LD1:RET,TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,DB 82H,0F8H,80H,90H,88H,83H,0C6H,DB 0A1H,86H,8EH,0FFH,DL1:MOV R7,#2,MOV R6.#0FFH,DL6:DJNZ R6,DL6,DJNZ R7,DL,RET,END,单片机人机接口结束,下次见!,
展开阅读全文

开通  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 

客服