📄 key.c
字号:
/************************************************************************************/
/* 程序名:44键盘代码 */
/* */
/* 晶振:12.0 M CPU型号:AT89S52 */
/* */
/* */
/* 功能描述: 44键盘代码,需将J13,J14连接P1口 */
/* 将J2跳线帽插上便于观察实验现象 */
/* K2(0) K4(1) K6(2) K8(3) K10(8) K12(9) K14(A) K16(B) */
/* K3(4) K5(5) K7(6) K9(7) K11(C) K13(D) K15(E) K17(F) */
/* */
/* http://www.mculover.net */
/* http://www.mculover.net/bbs */
/* */
/* 湘灵电子工作室 版权所有 */
/* 2006-03-20 */
/************************************************************************************/
#include<reg51.h>
unsigned char code tab[ ]={0xc0, 0xf9, 0xa4, 0xb0,
0x99, 0x92, 0x82, 0xf8,
0x80, 0x90, 0x88, 0x83,
0xc6, 0xa1, 0x86, 0x8e};//0到F的16个键植
/******************************************************************************/
void delayt(unsigned char t)//延时函数
{
unsigned char a;
while( --t != 0)
{
for(a=0;a<125;a++);
}
}
/******************************************************************************/
bit pkey(void)//判断键的否被按下,通过返回值确定
{
P1=0xf0;
if(P1!=0xf0)
{
delayt(20);
if(P1 != 0xf0)
return 1;
else
return 0;
}
else
return 0;
}
/******************************************************************************/
void main(void)//主函数
{
unsigned char key, j ,k, s;
while(1)
{
if(pkey()== 1)//确定键被按下
{
P1=0xfe;
k=0xfe;
for(j=0;j<4;j++)
{
s=P1&0xf0;
switch(s)
{
case 0xe0: key=4*j+0; break;
case 0xd0: key=4*j+1; break;
case 0xb0: key=4*j+2; break;
case 0x70: key=4*j+3; break;
default: break;
}
k=(k<<1)|0x01;
P1=k;
}//for
}//if
//if((P1&0xf0)==0xf0)
P0=tab[key];
P2=0xfe;
delayt(10);
}//while
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -