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

📄 4x4key+led.c

📁 51单片机的4*4键盘程序,实现键盘控制
💻 C
字号:
///////////////////////////////////////////////////
//4X4键盘演示程序
//精英团队提供
//位选信号    :由右到左为P20、P21、P22、P23、P24、P33
//LED数据线   :P0口
//数码管数字码:0 0xC0 1 0xF9 2 0xA4 3 0xB0 4 0x99 5 0x92 6 0x82 7 0xF8 8 0x80 9 0x90
//键盘数据线  :P1口
///////////////////////////////////////////////////
#include<reg52.h>
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
sbit wei5=P2^4;
sbit wei6=P3^3;

unsigned char keyvalue;//定义键值

///////////////////////////////////////////////////
void delay(unsigned long time)
{
    while(time--);
}
//////////////////////////////////////////////////
void KEY4X4_scan(void)
{
    keyvalue=0x00;//无按键时返回Ox00
	P1=0xFE;//扫描第1行
	delay(1);
	if((P1&0xF0)!=0xF0)
		keyvalue=(P1>>4)|0x10;//返回键值
	P1=0xFD;//扫描第2行
	delay(1);
	if((P1&0xF0)!=0xF0)
		keyvalue=(P1>>4)|0x20;//返回键值
	P1=0xFB;//扫描第3行
	delay(1);
	if((P1&0xF0)!=0xF0)
		keyvalue=(P1>>4)|0x30;//返回键值
	P1=0xF7;//扫描第4行
	delay(1);
	if((P1&0xF0)!=0xF0)
		keyvalue=(P1>>4)|0x40;//返回键值
}
//////////////////////////////////////////////////
void LEDdisplay(unsigned char numb,unsigned char wei)//显示子函数
{
   switch(numb)
      {
       	case 0:P0=0xC0;break;
		case 1:P0=0xF9;break;
		case 2:P0=0xA4;break;
		case 3:P0=0xB0;break;
		case 4:P0=0x99;break;
		case 5:P0=0x92;break;
		case 6:P0=0x82;break;
		case 7:P0=0xF8;break;
		case 8:P0=0x80;break;
		case 9:P0=0x90;break;
	  }
   switch(wei)
      {
       	case 1:wei1=1;wei2=0;wei3=0;wei4=0;wei5=0;wei6=0;break;
 		case 2:wei1=0;wei2=1;wei3=0;wei4=0;wei5=0;wei6=0;break;
 		case 3:wei1=0;wei2=0;wei3=1;wei4=0;wei5=0;wei6=0;break;
 		case 4:wei1=0;wei2=0;wei3=0;wei4=1;wei5=0;wei6=0;break;
 		case 5:wei1=0;wei2=0;wei3=0;wei4=0;wei5=1;wei6=0;break;
 		case 6:wei1=0;wei2=0;wei3=0;wei4=0;wei5=0;wei6=1;break;
      }
   
}
////////////////////////////////////////////////// 
void main(void)
{
    unsigned char numb=0;
	while(1)//动态显示
	{
	   
		KEY4X4_scan();
		switch(keyvalue)
		{
			case 0x1E:numb=1;break;
			case 0x1D:numb=2;break;
			case 0x1B:numb=3;break;
			case 0x17:numb=4;break;

			case 0x2E:numb=5;break;
			case 0x2D:numb=6;break;
			case 0x2B:numb=7;break;
			case 0x27:numb=8;break;

			case 0x3E:numb=9;break;
			case 0x3D:numb=10;break;
			case 0x3B:numb=11;break;
			case 0x37:numb=12;break;

			case 0x4E:numb=13;break;
			case 0x4D:numb=14;break;
			case 0x4B:numb=15;break;
			case 0x47:numb=16;break;
		}
 		LEDdisplay(numb%10,1);delay(50);
		LEDdisplay(numb/10,2);delay(50);
		
	   
	}
}
//////////////////////////////////////////////////

⌨️ 快捷键说明

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