51单片机矩阵键盘代码

51单片机矩阵键盘代码,第1张

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

uchar code table[]={ 0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void display(uchar num)

{

P0=table[num];

dula=1;

//P0=table[num];

dula=0;

//delayms(500);

}

void matrixkeyscan()

{

uchar temp,key;

P3=0xfe;

temp=P3;

temp=temp&0xf0;

if(temp != 0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xee: key=0;

break;

case 0xde: key=1;

break;

case 0xbe: key=2;

break;

case 0x7e: key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

if(temp != 0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xed: key=4;

break;

case 0xdd: key=5;

break;

case 0xbd: key=6;

break;

case 0x7d: key=7;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

if(temp != 0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xeb: key=8;

break;

case 0xdb: key=9;

break;

case 0xbb: key=10;

break;

case 0x7b: key=11;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xf7;

temp=P3;

temp=temp&0xf0;

if(temp != 0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0xe7: key=12;

break;

case 0xd7: key=13;

break;

case 0xb7: key=14;

break;

case 0x77: key=15;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

}

void main()

{

P0=0;

dula=1;

dula=0;

P0=0xc0;

wela=1;

//P0=0xc0;

wela=0;

while(1)

{

matrixkeyscan();

}

}

所谓的虚键码就是ascii码。

对於早期的程式写作者来说,真实的键码由实际键盘硬体产生。在Windows文件中将这些键码称为“扫描码(scan codes)”。在IBM相容机种上,扫描码16是Q键,17是W键,18是E、19是R,20是T,21是Y等等。这时您会发现,扫描码是依据键盘的实际布局的。

Windows开发者认为这些代码过於与设备相关了,於是他们试图通过定义所谓的虚拟键码,以便经由与装置无关的方式处理键盘。其中一些虚拟键码不能在IBM相容机种上产生,但可能会在其他制造商生产的键盘中找到,或者在未来的键盘上找到。

扩展资料:

当用户按下某个键时,

1键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传送到计算机;

键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同。

2计算机接收到扫描码后,将其交给键盘驱动程序;

3键盘驱动程序把这个扫描码转换为键盘虚拟码;

虚拟码与具体硬件无关,不同厂商的键盘,同一个键的虚拟码总是相同的。

一、clientX、clientY

点击位置距离当前body可视区域的x,y坐标

二、pageX、pageY

对于整个页面来说,包括了被卷去的body部分的长度

三、screenX、screenY

点击位置距离当前电脑屏幕的x,y坐标

四、offsetX、offsetY

相对于带有定位的父盒子的x,y坐标

五、x、y

和screenX、screenY一样

eventcode:当前按键名称(键盘按键类型 + 按键名称)

eventkey:当前按键名称(只有按键名称)

eventwhich / eventkeyCode:当前按键的键盘码

以上就是关于51单片机矩阵键盘代码全部的内容,包括:51单片机矩阵键盘代码、X或x键的虚键码是多少、鼠标键盘事件对象常用属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9324354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存