《2022年×矩阵键盘的工作原理与编程_共页 .pdf》由会员分享,可在线阅读,更多相关《2022年×矩阵键盘的工作原理与编程_共页 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ME300B 单片机学习开发系统应用之三-4 4 矩阵键盘的工作原理与编程作者:山西太原贵国庆本文介绍如何在ME300B型 51/AVR 单片机学习开发系统上使用数码管显示44 矩阵键盘的键值。一、硬件工作原理的简单介绍该实验使用ME300B 上的 8 位数码管显示电路和44 矩阵键盘电路。现将这二部分的电路工作原理进行简单的介绍:1、44 矩阵键盘的工作原理矩阵键盘又称为行列式键盘,它是用4 条 I/O 线作为行线,4 条 I/O 线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是44 个。这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。
2、图 1 为 ME300B矩阵键盘电路图,行线接P1.4P1.7,列线接P1.0 P1.3。K1P14K2P15K3P16K4P17K5RESETVCCS43S87S32S76S21S65S1Comment:0S54S12BS11AS109S98S16FS15ES14DS13C独独独独P10P11P12P13P14P15P16P17014589CDK1K2P14P15P16P17独独独独伟 伟 伟 伟ttp:/www图 1 矩阵键盘电路图 2 按键排列名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -2、数码管动态扫描显示电路在 ME300B开发系统中,采用了8 位数码管动
3、态扫描显示。它将所有数码管的8 个段线相应地并接在一起,并接到AT89S51的 P0口,由 P0 口控制字段输出。而各位数码管的共阳极由AT89S51的P2口控制 Q20Q27来实现 8 位数码管的位输出控制。这样,对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,同一时刻如果各位数码管的位选线都处于选通状态的话,8 位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描
4、显示方式。即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。图 3 数码管电路数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管
5、的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。在 ME300B单片机开发系统中使用数码管来显示信息时,要将JP2 的 2、3 端短接。见图3二、演示程序的编程方法1、44 矩阵键盘的编程方法:1.1、先读取键盘的状态,得到按键的特征编码。先从 P1口的高四位输出低电平,低四位输出高电平,从P1 口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的
6、特征编码。使用上述方法我们得到16 个键的特征编码。举例说明如何得到按键的特征编码:假设“1”键被按下,找其按键的特征编码。从 P1 口的高四位输出低电平,即P1.4 P1.7 为输出口。低四位输出高电平,即P1.0 P1.3 为输入口。读P1 口的低四位状态为“1101”,其值为“0DH”。再从 P1口的高四位输出高电平,即P1.4 P1.7 为输入口。低四位输出低电平,即P10P13 为输出口,读P1 口的高四位状态为“1110”,其值为“E0H”。将两次读出的P0口状态值进行逻辑或运算就得到其按键的特征编码为“EDH”。R00Q20R201-2 LCD2-3 DSYP00P01P02P0
7、3P04P05P06P07abcdefgdpR01R02R03R04R05R06R07R21R22R23R24R25a b c d e f g dpa b c d e fg dpR26R27abfcgdedpabfcgdedpabfcgdedp1298DIG1DIG2DIG31234571011a b c d e fg dpabfcgdedpDIG46DS1P20P21P22P23P24P25P26P271234JP23-4 LEDVCCabfcgdedpabfcgdedpabfcgdedp1298DIG1DIG2DIG31234571011a b c d e fg dpabfcgdedpDI
8、G46DS2Q21Q22Q23Q24Q25Q26Q27名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -用同样的方法可以得到其它15 个按键的特征编码。1.2、根据按键的特征编码,查表得到按键的顺序编码。将用上述方法得到的16 个按键的特征编码按图2 按键排列的顺序排成一张特征编码与顺序编码的对应关系表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它所在的位置就是对应的顺序编码。1.3、矩阵键盘键值查找程序的具体编程这个演示程序的主要功能有:1、识别键盘有无按键按下,若无键按下返回。2、如果有键按下,找出具体的按键值(顺序码)。=矩阵键盘键值查找程序键值存入30
9、H单元=KEY_SCAN:;识别键盘有无键按下子程序 MOV P1,#0F0H ;置列线为0,行线为 1 MOV A,P1 ;读 P1口 ANL A,#0F0H ;取出高四位 MOV B,A ;暂存到 B MOV P1,#0FH ;置列线为1,行线为 0 MOV A,P1 ;读 P1口 ANL A,#0FH ;取出低四位 ORL A,B ;高四位与低四位逻辑或运算重新组合 CJNE A,#0FFH,KEY_IN1 ;0FFH为无按键按下 RETKEY_IN1:;识别具体按键值子程序 MOV B,A ;将按键的特征编码暂存于B MOV DPTR,#KEYTABLE MOV R3,#0FFH KE
10、Y_IN2:INC R3 ;顺序码加 1 MOV A,R3 MOVC A,A+DPTR ;查表 CJNE A,B,KEY_IN3 ;比较,若相同则找到按键的特征编码。MOV A,R3 ;找到特征编码后,取顺序码 MOV 30H,A ;存入 30H单元 RETKEY_IN3:CJNE A,#00H,KEY_IN2 ;末完,继续查 RET ;00H为结束码;特征编码与顺序编码的对应关系表名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -KEY_TABLE:DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4,顺序码 DB 0DDH,0DBH,0D7H,
11、0BEH,0BDH ;5,6,7,8,9,顺序码 DB 0BBH,0B7H,07EH,07DH,07BH,077H ;A,B,C,D,E,F 顺序码 DB 00H ;结束码2、8 位数码管显示程序的编程方法根据要使用的数码管的具体位置来确定扫描初值和扫描方向。根据使用数码管的个数来确定扫描的位数。准备好要显示的数据,放入相应的显示单元中。=8 位数码管显示子程序;从右至左依次点亮8 个数码管=DISPLAY:MOV R1,#07FH ;扫描初值送入R1 MOV R2,#08H ;扫描位数送入R2 MOV R0,#30H ;开始填充显示单元DISP1:MOV A,R0 ;显示内容送入A MOV
12、DPTR,#TABLE ;获得表头 MOVC A,A+DPTR ;查表获得显示数据 MOV P0,A ;显示单元数据 MOV P2,R1 ;开始显示当前位 MOV A,R1 ;准备显示下一位 RR A MOV R1,A INC R0 ;取下一个单元地址 LCALL DELAY2MS ;延时 2 MS DJNZ R2,DISP1 ;重复显示下一个 RET ;显示完成,返回因键值显示只需用一位数码管,可将上面的显示程序进行优化,得到下面的显示程序。=键值显示子程序=KEY_PLAER:MOV A,30H ;键值数据送入A MOV DPTR,#TABLE ;取段码表地址 MOVC A,A+DPTR
13、;查显示数据对应段码 MOV P0,A ;段码送入 P0 口 CLR P2.7 ;第一个数码管显示 CALL DELAY2MS名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -SETB P2.7 RETTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;0F三、演示程序的功能当你按下矩阵键盘中的任何一个键,蜂鸣器响一声,并在数码管上显示相应的键值。图4为ME300B开发系统的实际演示图片。图 4 ME300B 开发系统显示键值“E”编程的具体细节请参阅ME300B光盘中的数码管显示键值演示程序。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -