⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyboard_serial.c

📁 模拟的键盘输入程序
💻 C
字号:
#include<reg51.h>
#include<stdio.h>

//发光管显示码,共阳极
unsigned char data displaycode[10]={0x00,0x9f,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};
//LED显示数据
unsigned char leddisplay[4]={1,1,1,1};
//键扫描值,低四位为行号,高四位为列号
unsigned char key;

 // 键消抖的延时函数
void delay_10ms(void)
{
	unsigned char j,k;
	for(j=20;j>0;j--)
		for(k=248;k>0;k--);
}

//  kbscan键扫描函数
unsigned char kbscan(void)  
{
	
    unsigned char sccode,recode;

	P1=0xf0;								              

	if((P1&0xf0)!=0xf0)						              
	{

		delay_10ms();    						          

		if((P1&0xf0)!=0xf0)
		{
			sccode=0xfe;					              

			while((sccode&0x10)!=0)
			{
			P1=sccode;					                  

				if((P1&0xf0)!=0xf0)    		              
					{
						recode=(P1&0xf0)|0x0f;
						return((~sccode)+(~recode));       
					}
				else 
					{
						sccode=(sccode<<1)|0x01;           
					}
			}
		}
	}

	return(0);								               

} 

//LED显示函数
void display(void)
{
	unsigned char count;
	
	for(count=4;count>0;count--)
	{
		SBUF=displaycode[leddisplay[count-1]];	
		while(TI==0);
		TI=0;
	}
}
//初始化LED显示数据
void leddisplay_ini(unsigned i)
{
	leddisplay[0]=i;leddisplay[1]=i;leddisplay[2]=i;leddisplay[3]=i;
}

void main(void)
{
	SCON=0x00;									 //移位寄存器工作方式
	display();
	while(1)
	{ 
		key=kbscan();				             //键盘扫描函数
		delay_10ms();							 //延时函数
		if(key!=0)
		{
			switch(key)
			{
				case 0x11:                       //显示1,第一行第一列
					leddisplay_ini(1);			 //显示数据初始化,显示1
					display();					 //显示数据
					break;
				case 0x21:						 
					leddisplay_ini(2);
					display();
					break;
				case 0x41:						 
					leddisplay_ini(3);
					display();
					break;
				case 0x12:						 //显示4,第二行第一列
					leddisplay_ini(4);
					display();
					break;						 
				case 0x22:					   	
 					leddisplay_ini(5);
					display();
					break;						 
				case 0x42:						 
					leddisplay_ini(6);
					display();
					break;
				case 0x14:
					leddisplay_ini(7);			  //显示7,第三行第一列
					display();
					break;
				case 0x24:
					leddisplay_ini(8);
					display();
					break;
				case 0x44:
					leddisplay_ini(9);
					display();
					break;
				default:
					leddisplay_ini(0);			  //显示其他
					display();
					break;

			}

		}
	}

}

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -