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 + -
显示快捷键?