keyboard.c
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· C语言 代码 · 共 69 行
C
69 行
#include <reg51.h>
/******led 接口描述******/
//P0--->(a-g,dot) 显示
//选择使能控制段
//P2^3--->使能左第一个数码管 P2^2--->左第二个数码管
//P2^1--->左第三个数码管 P2^0--->左第四个数码管
/*********显示数据表************/
//前16个对应0-9 ,a-f,后面三个0x73 0x40,0x00分别对应字符P,-,空
unsigned char code table[19]={0x3f,6,0x5b,0x4f,
0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,
0x7c,0x58,0x5e,0x79,0x71,0x73,0x40,0x00};
/******按键接口描述********/
//左第一 二 三 四 个按键分别对应于 P2.7 P2.6 P2.5 P2.4
//左第一个按键键值为1
//左第二个按键键值为2
//左第三个按键键值为3
//左第四个按键键值为4
/******延时程序********/
void delay (dy)
{
while(--dy);
}
/******读取按键子程序 getkey()*************/
unsigned char getkey (void)
{ unsigned char k,tem,keytem;
keytem=0;
tem=P2 & 0xf0; //第一次读取按键值
if(tem!=0xf0) //判断有无按键按下
{
for(k=0;k<20;k++)
delay(250); //延时一段时间
tem=P2 & 0xf0; //再次读取按键值
if(tem!=0xf0)
{ if(tem==0x70) keytem=1; //表示左第一个按键按下
else if(tem==0xb0) keytem=2; //表示左第二个按键按下
else if(tem==0xd0) keytem=3; //表示左第三个按键按下
else if(tem==0xe0) keytem=4; //表示左第四个按键按下
}
}
while(tem!=0xf0) tem=P2 & 0xf0; //等待按键释放
return(keytem); //返回按键值
}
/********主函数************/
//效果就是按左第一个按键,左数码管显示数值加1(0-9循环)
void main (void)
{
unsigned char keyboard;
unsigned char number; //
P2=0xff; //让左第一个数码管显示按键的键值
while(1)
{
keyboard=getkey();
if(keyboard==1)
{
number=(number+1)%10;
}
P0=table[number];
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?