key44.c
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· C语言 代码 · 共 91 行
C
91 行
#include <reg51.h>
//一个7段显示表 用于显示 0--9
unsigned char code tab[16]={0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
/************矩阵键盘读键程序*******************/
//输入参数: void
//输出参数: unsigned char 键值
//程序设计思路:扫描法读取键值(具体见书)
//
/**********4*4矩阵键盘****************/
/************
矩阵键盘按键值的分布,键值= 行号x4 + 列号
列入 3 2 1 0
P0.0-----P0.1-----P0.2-----P0.3
行出3 ----P0.4 C(F) 1(E) 4(d) 7(c) 功能(键值)
2 ----P0.5 0(b) 2(A) 5(9) 8(8)
1 ----P0.6 =(7) 3(6) 6(5) 9(4)
0 ----P0.7 +(3) _(2) *(1) /(0)
利用已有的按键程序
*************/
unsigned char getkey()
{
unsigned char keycode=0xff,temp,i;
P0=0x0f;
temp=P0&0x0f;
if(temp!=0x0f) //判是否有键按下
{
// beep=0;
P0=0xef; //自第0行开始扫描输出,自列读入键值
for(i=0;i<4;i++)
{
temp=P0&0x0f;
if(temp==0x07) //判断第0列是否有键按下
{
keycode=i*4;
break;
}
else if(temp==0x0b)//判断第1列是否有键按下
{
keycode=i*4+1;
break;
}
else if(temp==0x0d)//判断第2列是否有键按下
{
keycode=i*4+2;
break;
}
else if(temp==0x0e)//判断第3列是否有键按下
{
keycode=i*4+3;
break;
}
P0=(P0<<1)|0x1;
}
while((P0&0x0f)!=0x0f) //等待释放
{
P0=0x0f;
}
// beep=1;
}
return keycode;
}
/********程序执行结果***************/
// 按键程序测试代码,数码管一开始没有显示,
//当有按键按下时,则数码管显示按键值
//
main()
{
unsigned char key; //定义按键返回参数的变量
// P2 输出段码,初始没有显示
while(1)
{
key=getkey();
if(key==0)
P2=0;
if(key==1)
P2=0xff;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?