51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言程序实现,

如题所述

定义一个按键缓冲区
用普通的按键扫描程序,当扫描到有按键按下的时候。按键键的值写入缓冲区。继续扫描直到完成。
然后返回缓冲区地址就可以得到多个按键的数据了。
这样只要定义16字节的缓冲区全部按键都能检测到。(一般不需要那么多6个足够)

还有一种方式 是 如果只返回2个按键的话。
可以这样
常规按键扫描 返回范围在0-15也就是0-F
读取到一个值后把这个值左移4位
再继续读取。当读取到第二个值的时候与上第一个值。就能获取2个按键的值了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-27
原理跟单键按下去显示数字是一样的呀。。。

51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言...
读取到一个值后把这个值左移4位 再继续读取。当读取到第二个值的时候与上第一个值。就能获取2个按键的值了。

C语言如何实现判断2个键同时按下
如果是操作系统下,判断按键,需要调用相关操作系统的相关函数。如果是单片机矩阵键盘,需要自己写循环延时判断按钮的电平状态。我以window为例子,写了简单的判断W和A键同时按下的程序。两个按键先后按下,之间存在间隔,我定义的常量,默认10毫秒,你需要自己改。include <stdio.h>#include <windows.h>#...

单片机中独立键盘和矩阵键盘如何一起使用 请用C语言写个程序说明,谢谢...
uchar keyval,num;sbit skey=P1^0; \/\/独立键P1.0 void delay(uchar a){ uchar i,j;for(i=0;i<a;i++)for(j=0;j<125;j++);} uchar kbscan(void) \/\/矩阵键扫描程序 { unsigned char sccode,recode;P3=0x0f; \/\/发0扫描,列线输入 if ((P3 & 0x0f) != 0x0f) \/...

51单片机4*4矩阵键盘如何同时实现单击+双击的功能?
一般地,我们的键盘检测都有一个按键码存储字节,一般情况下,只要检测到有效按键,那么这个存储字节的按键码就有效,也就是单击。何为双击呢?双击就是在监测到该按键后在该按键要有作用(这个作用就是单击)之前又检测到该按键,然后就当作了双击。那怎么实现这一判断呢?我们只要加一个软计数器,当...

51单片机如何把矩阵键盘控制数码管和独立键盘控制蜂鸣器共同实现
在显示模块的八位 LED 数码的个位显示当前使用矩阵键盘所按下的值。键阵键盘多用于键数目较多的时候。这样可以更多的节省IO口的占用量,对于矩阵键盘常用的扫描方法为线反转查询法。具体的思路是:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个IO口是低,...

求51单片机 4*4矩阵键盘 控制8*8点阵 显示 的语音 程序。
define uchar unsigned char \/\/心形显示 \/\/unsigned char code tabP0[]={0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00};\/\/unsigned char code tabP2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};\/\/圆形显示 unsigned char code tabP0[]={0x00,0x3c,0x42,0x42,0x42,0x42,0x3c...

51单片机矩阵键盘程序:想把按键的值一一存到数组里,最后按下某个按键...
给一个键盘扫描程序参考:void delay(unsigned int a){unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);}uchar kbscan(void){unsigned char sccode,recode;P1=0x0f; \/\/发0扫描,列线输入if ((P2 & 0x0f) != 0x0f) \/\/有键按下{delay(20); \/\/延时去抖动if (...

关于51单片机的问题,独立键盘和矩阵键盘怎么同时使用?懂的来帮帮忙啊...
你是不是按下下方的四个按键也会让1,2,3,4灯亮起来?你可以不要定义在同一个引脚上连起来一个引脚的四个按键,你试试控制8个单片机不同引脚上的按键编程一下试一试。程序上,你的独立按键程序和矩阵键盘程序要分开,独立键盘的程序高低四位判断是相反的,这个一定要注意。你可以让独立按键在那里...

如何在51单片机矩阵键盘里按一个键可实现数码管动态显示而不是一...
kbscan(void){unsigned char sccode,recode;P1=0x0f; \/\/发0扫描,列线输入if ((P2 & 0x0f) != 0x0f) \/\/有键按下{delay(20); \/\/延时去抖动if ((P1&0x0f)!= 0x0f){sccode = 0xef; \/\/逐行扫描初值while((sccode&0x01)!=0){ P1=sccode;if((P1&0x0f)...

急求一个由89C51单片机的代码!要求用4*4矩阵键盘控制LED矩阵输出0~9的...
\/ 分别按下4×4键盘的按键,显示0~16键值 \/ include<reg51.h> sbit speaker=P3^7;\/\/\/键盘 sbit v1=P2^0;sbit v2=P2^1;sbit v3=P2^2;sbit v4=P2^3;sbit h1=P2^4;sbit h2=P2^5;sbit h3=P2^6;sbit h4=P2^7;\/\/\/显示 sbit shu1=P1^3;\/*第1位数码管共阴端*\/ sbit shu2...

相似回答