1、第七章 MCS-51与键盘、显示器的接口 第七章 MCS-51与键盘、显示器的接口 7.1 MCS-51单片机与键盘接口7.1.1 键盘的工作原理键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。它的结构和产生的波形如图所示。P1.1VCCGND断开闭合断开P1.1( a ) ( b )第七章 MCS-51与键盘、显示器的接口 键盘的处理主要涉及三个方面: 1按键的识别2抖动的消除消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用 RS 触发器或单稳态电路。如图。 断开闭合+5V+5V输出软件消抖
2、是利用延时来跳过抖动过程 第七章 MCS-51与键盘、显示器的接口 3键位的编码通常有两种方法编码。 ( 1)用连接键盘的 I/O线的二进制组合进行编码。如( a)图 ( 2)顺序排列编码。如( b)图,处理方法如下:编码值 =行首编码值 X+列号 Y。 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.788 84 82 8148 44 42 4128 24 22 2118 14 12 11P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7F E D CB A 9 87 6 5 43 2 1 0( a ) ( b )第七章 MCS-51与键盘、显示器的接口 7.1.
3、2 独立式键盘与单片机的接口键盘的结构形式一般有两种:独立式键盘与矩阵式键盘。独立式键盘就是各按键相互独立,每个按键各接一根 I/O口线,每根I/O口线上的按键都不会影响其它的 I/O口线。 GNDVCCGNDVCC或( b )8051( a )INT08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7第七章 MCS-51与键盘、显示器的接口 图( a)为中断方式工作的独立式键盘的结构形式,( b)为查询方式工作的独立式键盘的结构形式下面是针对图 7.4( b)图查询方式的汇编语言形式的键盘程序。总共有 8个
4、键位, KEY0KEY7为 8个键的功能程序。START: MOV A, #0FFH;MOV P1, A ;置 P1口为输入状态MOV A, P1 ;键状态输入CPL AJZ START ;没有键按下,则转开始JB ACC.0, K0 ;检测 0号键是否按下,按下转JB ACC.1, K1 ;检测 1号键是否按下,按下转JB ACC.2, K2 ;检测 2号键是否按下,按下转JB ACC.3, K3 ;检测 3号键是否按下,按下转JB ACC.4, K4 ;检测 4号键是否按下,按下转JB ACC.5, K5 ;检测 5号键是否按下,按下转JB ACC.6, K6 ;检测 6号键是否按下,按下
5、转JB ACC.7, K7 ;检测 7号键是否按下,按下转JMP START ;无键按下返回,再顺次检测第七章 MCS-51与键盘、显示器的接口 K0: AJMP KEY0K1: AJMP KEY1K7: AJIMP KEY7KEY0: ; 0号键功能程序JMP START ; 0号键功能程序执行完返回KEY1: ; 0号键功能程序JMP START ; 1号键功能程序执行完返回KEY7: ; 7号键功能程序JMP START ; 7号键功能程序执行完返回7.1.3 矩阵键盘与单片机的接口矩阵式键盘又叫行列式键盘。用 I/O口线组成行、列结构,键位设置在行列的交点上。例如 44的行、列结构可组
6、成 16个键的键盘,比一个键位用一根 I/O口线的独立式键盘少了一半的 I/O口线。 第七章 MCS-51与键盘、显示器的接口 矩阵键盘的连接方法有多种,可直接连接于单片机的 I/O口线;可利用扩展的并行 I/O口连接;也可利用可编程的键盘、显示接口芯片(如 8279)进行连接等等。其中,利用扩展的并行 I/O口连接方便灵活,在单片机应用系统中比较常用。下图就是通过 8255A芯片扩展的并行 I/O口连接 48的矩阵键盘。PA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 316 17 18 19
7、20 21 22 23 24 25 26 27 28 29 30 31 CS74LS373WRRDA1A0P2.7WRRDALEP0.0P0.7 D0D7RESET1K20F+5V+5V82555.1K48051第七章 MCS-51与键盘、显示器的接口 一矩阵键盘的工作过程对矩阵键盘的工作过程可分两步:第一步是 CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。1检测键盘上是否有键按下处理方法是:将列线送入全扫描字,读入行线的状态来判别。其具体过程如下: PA口输出 00H,即所有列线置成低电平,然后将行线电平状态读入累加器 A中。如果有键按下,总会有一根行线电平被拉至低电平,从
8、而使行输入状态不全为 “1“。2识别键盘中哪一个键按下处理方法是:将列线逐列置低电平,检查行输入状态,称为逐列扫描。其具体过程如下:从 PA0开始,依次输出 “0”,置对应的列线为低电平,然后从 PC口读入行线状态,如果全为 “1”,则按下的键不在此列;如果不全为 “1”,则按下的键必在此列,而且是该列与 “0”电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。二矩阵键盘的工作方式第七章 MCS-51与键盘、显示器的接口 1查询工作方式这种方式是直接在主程序中插入键盘检测子程序,主程序每执行
9、一次则键盘检测子程序被执行一次,对键盘进行检测一次,如果把没有键按下,则跳过键识别,直接执行主程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值,然后根据编码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序流程如图 。开始有键按下否?调用 6ms延时子程序?调用 12ms延时子程序?有键按下否?判闭合键,编码入栈保护闭合键释放否?编码 A返回否否否是是是第七章 MCS-51与键盘、显示器的接口 键盘扫描子程序如下:(硬件线路如图 7.4, 8255A的 A口、 B口、 C口和控制口地址分别为 7F00H、 7F01H、 7F02H、 7F03H,设 8255A已在主程
10、序中初始化。已设定为 A口方式 0输出, C口的低 4位方式 0输入。)KEY1: ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下时, (A)0转消抖延时KEY2: ACALL TM6msAJMP KEY1 ;无键按下返回LK1: ACALL TM12ms ;调 12 ms延时子程序ACALL KS1 ;查有无键按下,若有则真有键按下JNZ LK2 ;键 (A) 0逐列扫描AJMP KEY2 ;不是真有键按下,返回LK2: MOV R2, #0FEH ;初始列扫描字 (0列 )送入 R2MOV R4, #00H ;初始列 (0列 )号送入 R4LK4: MOV DPTR, #7F00H ; DPTR指向 8155PA口MOV A, R2 ;列扫描字送至 8155PA口MOVX DPTR, AINC DPTR ; DPTR指向 8155PC口INC DPTR