51单片机如何通过4*4矩阵键盘输入一个两位数,送给一个变量?求助。。。

如题所述

可以的,假如键盘扫描程序是
#include<reg51.h>
#define uchar unsigned char
uchar key()
{
//键盘扫描
}
main()
{
uchar keycode[2],i=0,x;
uchar a;
while(1)
{
x=key;
if(x<10)
{
keycode[i]=x;
if(i==1)a=keycode[0]*10+keycode[1];
}
i++;
i&=0x01;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-13
设置其中的一个按键,定为标志位

如果没有按下标志位 则

a=a*10+key ; //key为按键值
第2个回答  2012-08-14
具体实现要看矩阵键盘和单片机的接口。
实现思路为:
变量a = 0

if( 数字按键 )
(
if( a < 100 ) //还未成为两位数

a *= 10;
a += 数字按键对应值;

)

else if( 删除按键 )
{
a /= 10;

}

if( a > 10 && a < 100 ) //判断为两位数
return a;

如何用4X4矩阵键盘输入一个两位数?
进一个数字,位选就加1~~再来不就,,,

谁能给我讲明白单片机的4x4矩阵键盘工作原理
给P1赋值0xf0,这时P1^4,P1^5,P1^6,P1^7为高电平,P1^0,P1^1,P1^2,P1^3为低电平。如果这时候有按键按下那么P1^4,P1^5,P1^6,P1^7就有一个会变成低电平。因此P1的值就不等于0xf0,这是就可以判断有按键按下。4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉...

求 关于 用单片机和4*4矩阵键盘输入数字并在LCD1602上显示出来的C语言...
输入 : 需要写入1602的数据 输出 : 无 \/ void wdata(uchar del){

51单片机矩阵4*4键盘程序,P0口接一个数码管,P2口接矩阵键盘
unsigned char KeyScan(void) \/\/键盘扫描函数,使用行列反转扫描法 { unsigned char cord_h,cord_l;\/\/行列值中间变量 KeyPort=0x0f; \/\/行线输出全为0 cord_h=KeyPort&0x0f; \/\/读入列线值 if(cord_h!=0x0f) \/\/先检测有无按键按下 { DelayMs(10); \/\/去抖 if((KeyPort&...

单片机中的4×4矩阵键盘的键值怎么求?
在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I\/O口的利用率。由于单片机IO端口具有线与的功能,因此当任意一个按键按下时,行和列都有一根线被线与,通过运算就可以得出按键的坐标从而判断按键键值。原理如同矩阵数列的...

C51单片机用IO口做为几个按键的控制,现在想用4X4键盘控制,请问下面显示...
这样我们可以先识别K01、K02、K03、K04、K05,若没有按键按下然后再和思路四的设计一样去识别其他按键。但这样存在一个问题,如果IO1配置为0,IO5读到0,那么怎么知道是K51按下还是K05按下呢,这里只需要在程序里做下判断,先判断下是不是K05按下,若不是就是K51,因为按键K01、K02、K03、K04、...

单片机4×4矩阵键盘扫描编程问题(里面详细,欢迎高手)
扫描第一行,就是将第一行电平置为低电平,其他的都为高,扫描哪一行就让哪一行的电平置零,其他行为高电平。这就是第一个问题。在没有键按下的时候,列线全部是高电平,有第一行的键按下的时候,相应的列线就为低电平了,n=P1;n&=0xf0;if(n!=0xf0)这几句就是判断有没有键按下。在第...

单片机4*4矩阵键盘两位数码管显示0—16
步骤如下:1、将4x4矩阵键盘连接到单片机上,并将数码管连接到单片机上。2、编写程序以实现键盘扫描和数码管显示。3、使用行扫描法识别键盘输入。将行线设置为高电平,然后逐行扫描列线。4、使用两位数码管显示0-16的数值。将数码管的段选线连接到单片机的GPIO引脚上,并将位选线连接到另一个GPIO引脚...

急求4*4矩阵键盘控制数码管显示! 51单片机
EA=1; \/\/开启总中断 ET0=1;TR0=0;while(1){ if(!TR0){ if(Test_Key()){ number[x]=num;x++;for(y=x,z=0;y>0;y--,z++){ xianshi[8-y]=number[z];} if(x==8){ x=0;TR0=1;} } } display();} } void time0() interrupt 1 \/\/T1中断用来计数器溢出 数码...

89c51单片机4*4矩阵键盘编程。
PANDUAN: MOV P1,#0FFH CLR P1.4 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ SW1 LCALL DELAY10MS JZ SW1\/\/确认有键按下,但不知道哪个,此时可以之间让蜂鸣器叫 MOV P3.0,#1\/\/蜂鸣器发声(赋1还是赋0取决你用的蜂鸣器)MOV A,P1 ANL A,#0FH CJNE A,#0EH,K1 MOV COUNT,#0 LJMP DK ...

相似回答