任务5.3 键盘接口电路的设计与制作_第1页
任务5.3 键盘接口电路的设计与制作_第2页
任务5.3 键盘接口电路的设计与制作_第3页
任务5.3 键盘接口电路的设计与制作_第4页
任务5.3 键盘接口电路的设计与制作_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务5.3键盘接口电路的设计与制作知识能力:熟悉键盘接口的基本特点,了解独立式键盘和矩阵式键盘的应用方法。

技能能力:掌握键盘接口的硬件设计方法、软件程序设计能力和调试排错能力。社会能力:训练学生工程意识和良好的劳动纪律观念,培养学生认真做事、用心做事的态度。5.3.1键盘接口工作原理键盘人机交互的一个重要工具两种基本类型编码键盘除了按键以外,还包括产生键码的硬件电路使用方便、价格较高非编码键盘靠软件来识别键盘上的闭合键,由此计算出编码几乎不需要附加硬件逻辑在单片机应用系统中被普遍使用独立联接式无编码键盘

独立联接式编码键盘

键盘的分类与结构◆独立联接式键盘◆矩阵联接式键盘◆屏幕键盘(触摸屏)◆无编码键盘◆编码键盘无编码,简单有效,键数较少时采用编码,节省I/O口线,键数较多时采用5.3.1键盘接口工作原理1.

非编码键盘的工作原理分类独立式键盘〔简单键盘〕、行列式键盘(矩阵式键盘)独立式按键行列式键盘01111011110111102.按键开关去抖动问题按键抖动在按下和释放时,按键有抖动按键时间:>100ms前跳沿和后跳沿:<20ms,抖动时间一般为5~10msA为确保:对键的一次闭合仅作一次处理必须:去除抖动3.消除抖动不良后果的方法⑴硬件去抖动RC滤波电路去抖动电路简单实用,效果较好。⑵软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。键处理的流程图

独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。独立式键盘工作电路图(适于键数较少、操作快、同时多键动作场合)程序处理方法与开关量输入相同4.独立式按键4.独立式按键处理过程查键:扫描有否键按下,若无键按下,返回有键按下软件去抖:延时20ms找键等键释放软件去抖:延时20ms[例]有键按下,返回键值;否则,返回0FFHP10P118051

K1P12P13P14P15K2K3K4K5K6+5V;准备输入等放去抖查键KE2: MOV B,#0 ;保存键值0KE3: ANL A,#3FH RRC A ;(A.0)Cy JNC KE4

INC B SJMP KE3KE4: ORL P1,#3FH MOV A,P1 ANL A,#3FH CJNE A,#3FH,KE4

MOV A,B ;返回键值

CJNE A,#06H,KE5KE5: JC KE6 ;Cy=1,(A)<6KE7: MOV A,#0FFH;(A)>=6KE6: RETKE: ORL P1,#3FH

MOV A,P1 ANL A,#3FH ;P1.0~P1.5 CJNE A,#3FH,KE1 SJMP KE7 ;无键按下KE1: LCALL DL20 ;延时去抖

ORL P1,#3FH;修改P1 MOV A,P1 ;读P1 ANL A,#3FH CJNE A,#3FH,KE2 SJMP KE7 ;误动作返回找键5.矩阵式键盘工作方式查询定时每隔一段时间对键盘扫描一次利用单片机内部的定时器的定时器溢出中断。中断中断方式00001111行列式(矩阵式)键盘接口4×4行列式键盘结构图(扫描法)适于按键数目较多的场合;可节省很多的I/O口线;同时只会有一个键闭合的场合。行列式键盘按键的识别方法a.扫描法第1步:识别键盘有无键按下;驱动所有列线为‘0’,输入各行线电平如果有‘0’,就说明有键按下,如果行线电平全‘1’,则全部无键按下。第2步:如有键被按下,识别具体的按键。

依序驱动某一列为‘0’,其余列均为‘1’,输入各行线电平,如果某行线电平为‘0’,可确定此行列交叉点处的按键被按下;如果行线电平全为‘1’则本列无按键按下。输出口驱动列线输入口读取行线电平第1步:列线输出为全‘0’,随后输入行线电平如有‘0’,则‘0’所在的行就是闭合的按键所在行;无‘0’则无键闭合。第2步:行线输出为全‘0’,随后输入列线电平如有‘0’,则‘0’所在的列就是闭合的按键所在列;无‘0’则无键闭合。结合上述两步,可确定按键所在行和列。线反转法原理图

b.线反转法

P.168PC3PC2PC1PC0PC4PC5PC6PC7实验板4×4键盘连接82C55的端口线采用线反转法的键盘行线、列线端口各自应当可以在输入与输出方式间切换!如图:高四位与低四位均可独立改变其输入或输出方式处理过程键扫描确认有无按键按下去抖动延时按键的识别:确定键的行、列号扫描算法、线反转法键号的确定键号=所在行号×键盘列数+所在列号等待键释放5.矩阵式键盘[例]扫描算法用8255A作单片机键盘接口,A口为输出口接键盘列线。C口为输入口接键盘的4条行线8255A地址 A口:7FFCH

B口:7FFDH

C口:7FFEH 控制寄存器:7FFFH子程序KSI:判定有无闭合的键KSI: MOV DPTR,#7FFCH

;A口地址 MOV A,#00H MOVX @DPTR,A

;A口送00H INC DPTR INC DPTR

;C口地址 MOVX A,@DPTR

;读C口 CPL A ANL A,#0FH

;屏蔽高四位 RET00000000有闭合键,则(A)≠0无闭合,则(A)=01111KEY1: ACALL KSI

;检查是否有键闭合 JNZ LK1

;A非“0”则转移 ACALL DIR

;显示一次LED(“延时6ms”) AJMP KEY1LK1: ACALL DIR

;有键闭合二次延时 ACALL DIR

;共12ms去抖动

ACALL KSI

;再检查是否有键闭合 JNZ LK2

;有键闭合转移到LK2 ACALL DIR AJMP KEY1

;无键闭合,延时6ms后转KEY1有闭合键,则(A)≠0无闭合,则(A)=0LK2: CLR F0 ;有键标志 MOV R2,#0FEH

;扫描初值送R2 MOV R4,#00H

;扫描列号送R4LK4: MOV DPTR,#7FFCH

;A口地址

MOV A,R2 MOVX @DPTR,A

;扫描初值送A口 INC DPTR INC DPTR

;C口地址 MOVX A,@DPTR

;读C口有闭合键,则(A)≠0无闭合,则(A)=001111111KEY1: ACALL KSI

;检查是否有键闭合 JNZ LK1

;A非“0”则转移 ACALL DIR

;显示一次LED(“延时6ms”) AJMP KEY1LK1: ACALL DIR

;有键闭合二次延时 ACALL DIR

;共12ms去抖动

ACALL KSI

;再检查是否有键闭合 JNZ LK2

;有键闭合转移到LK2 ACALL DIR AJMP KEY1

;无键闭合,延时6ms后转KEY1LK2: MOV R2,#0FEH

;扫描初值送R2 MOV R4,#00H

;扫描列号送R4LK4: MOV DPTR,#7FFCH

;A口地址

MOV A,R2 MOVX @DPTR,A

;扫描初值送A口 INC DPTR INC DPTR

;C口地址 MOVX A,@DPTR

;读C口有闭合键,则(A)≠0无闭合,则(A)=001111111全程序 JB ACC.0,LONE

;ACC.0=1,第0行无键闭合,转LONE MOV A,#00H

;装第0行值 AJMP LKPLONE: JB ACC.1,LTWO

;ACC.1=1,第1行无键闭合,转LTWO MOV A,#08H

;装第1行值 AJMP LKPLTWO: JB ACC.2,LTHR

;ACC.2=1,第2行无键闭合,转LTHR MOV A,#10H

;装第2行值 AJMP LKPLTHR: JB ACC.3,NEXT

;ACC.3=1,第3行无键闭合,转NEXT MOV A,#18H

;装第3行值LKP: ADD A,R4

;计算键码 PUSH ACC

;保护键码LK3: ACALL DIR

;延时6ms ACALL KSI

;检查是否继续闭合,若闭合再延时 JNZ LK3 POP ACC ;若键起,则键码送A RET扫描列号:R4NEXT: INC R4

;扫描列号加1

MOV A,R2 JNB ACC.7,KND

;若第7位=0,已扫完最高列则转KND RL A MOV R2,A AJMP LK4

;进行下一列扫描KND: SETB F0 ;无键标志 RET

;扫描完毕扫描列号:R4[例]线反转法KEY: MOV P1,#0F0H ;行线置低电平,列线置输入态KEY0: MOV A,P1 ;读列线数据

CPL A ;数据取反,“1”有效

ANL A,#0F0H ;屏蔽行线,保留列线数据

MOV R1,A ;存列线数据(R1高4位) JZ GRET ;全0,无键按下,返回KEY1: MOV P1,#0FH ;行线置输入态,列线置低电平

MOV A,P1 ;读行线数据

CPL A ;数据取反,“1”有效

ANL A,#0FH ;屏蔽列线,保留行线数据

MOV R2,A ;存行线数据(R2低4位) JZ GRET ;全0,无键按下,返回

JBC F0,WAIT ;已有消抖标志,转

SETB F0 ;无消抖标志,置消抖标志

LCALL DY10ms ;调用10ms延时子程序消抖

SJMP KEY0 ;重读行线列线数据GRET: RET参考程序:WAIT: MOV A,P1 ;等待按键释放

CPL A ANL A,#0FH

JNZ WAIT ;按键未释放,继续等待KEY2: MOV A,R1 ;取列线数据(高4位) MOV R1,#03H ;取列线编号初值

MOV R3,#03H ;置循环数

CLR CKEY3: RLC A ;依次左移入C中

JC KEY4 ;C=1,该列有键按下,(列线编号存R1) DEC R1 ;C=0,无键按下,修正列编号

DJNZ R3,KEY3 ;判循环结束否?未结束继续寻找有键按下的列线KEY4: MOV A,R2 ;取行线数据(低4位) MOV R2,#00H ;置行线编号初值

MOV R3,#03H ;置循环数

CLR CKEY5: RRC A ;依次右移入C中

JC KEY6 ;C=1,该行有键按下,(行线编号存R2) INC R2 ;C=0,无键按下,修正行线编号

DJNZ R3,KEY5 ;判循环结束否?未结束继续寻找有键按下的行线KEY6: MOV A,R2 ;取行线编号

CLR C RLC A ;行编号×2 RLC A ;行编号×4 ADD A,R1 ;行编号×4+列编号=按键编号KEY7: CLR C RLC A ;按键编号×2 RLC A ;按键编号×4(LCALL+RET共4字节)

MOV DPTR,#TABJ JMP @A+DPTR ;散转,执行相应键功能子程序TABJ: LCALL WORK0 ;调用执行0#键功能子程序

RET LCALL WORK1 ;调用执行1#键功能子程序

RET …… LCALL WORK15 ;调用执行15#键功能子程序

RET

技能能力5.3.2工作任务描述1)根据给出的图5-35,在Proteus中画出电路图;编写程序使数码管显示当前闭合按键的键值。2)利用Proteus的仿真功能对其进行仿真测试,观察数码管的显示状态和按键开关的对应关系。3)根据图5-35,搭接硬件电路,进行硬件验证。矩阵键盘扫描电路图4)程序范例:;功能:以数码管显示键盘的作用。点击相应按键显示相应的键值。;处理过程:首先扫描键盘,判断是否有键按下,再确定是哪一个键,计算键值,输出显示。ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#TABLE;将表头放入DPTRLCALLKEY ;调用键盘扫描程序

MOVCA,@A+DPTR;查表后将键值送入ACCMOVP2,A;将Acc值送入P0口

LJMPMAIN;返回反复循环显示

KEY:LCALLKS;调用检测按键子程序

JNZK1;有键按下继续

LCALLDELAY2;无键按调用延时去抖

AJMPKEY;返回继续检测按键K1:LCALLDELAY2LCALLDELAY2;有键按下延时去抖动

LCALLKS;再调用检测按键程序

JNZK2;确认有按下进行下一步

AJMPKEY;无键按下返回继续检测K2:MOVR2,#0EFH;将扫描值送入R2暂存MOVR4,#00H;将第一列值送入R4暂存K3:MOVP1,R2;将R2的值送入P1口L6:JBP1.0,L1;P1.0等于1跳转到L1MOVA,#00H;将第一行值送入ACCAJMPLK;跳转到键值处理程序L1:JBP1.1,L2;P1.1等于1跳转到L2MOVA,#04H;将第二行的行值送入ACCAJMPLK;跳转到键值理程序进行键值处理L2:JBP1.2,L3;P1.2等于1跳转到L3MOVA,#08H;将第三行的行值送入ACCAJMPLK;跳转到键值处理程序L3:JBP1.3,NEXT;P1.3等于1跳转到NEXT处

MOVA,#0cH;将第四行的行值送入ACCLK:ADDA,R4;行值与列值相加后的键值送入APUSHACC;将A中的值送入堆栈暂存K4:LCALLDELAY2;调用延时去抖动程序

LCALLKS;调用按键检测程序

JNZK4;按键没有松开继续返回检测

POPACC;将堆栈的值送入ACCRETNEXT:INCR4;将列值加一

MOVA,R2;将R2的值送入AJNBACC.7,KEY;扫描完至KEY处进行下一扫描

RLA;扫描未完将A中的值右

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论