51单片机数码管仿真(矩阵按键)

51单片机按键扫描与LED显示
本文介绍了一种使用51单片机进行按键扫描并控制LED显示的方法。通过P2口读取按键状态,利用延时消抖处理,确保按键信号稳定。当检测到按键按下时,根据不同的按键值,通过P1口控制LED显示对应的数字。此程序实现了基本的输入输出控制,适用于初学者理解和实践单片机的基本操作。

在这里插入图片描述

#include<reg52.h>
#define uchar unsigned char
int key,temp;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(unsigned int xms)
{	
	unsigned int i,j;	
	for(i=xms;i>0;i--)	   //1=xms即延时约xms毫秒	
	    for(j=112;j>0;j--);
}
void main()
{	
P2 = 0Xf0;	
temp = P2;	
temp = temp &0Xf0;	//1110 0000	//1111 0000	//1110 0000	
	if(temp!=0xf0)	 //有按键被按下	
	{		delay(10);		
		if(temp!=0xf0)		
		{			temp = P2;			
			temp =temp|0x0f; //0000 1111		//1110 0000		//0000 1111		//1110 1111			
			P2 = temp;	  //1110 1011 = 0xeb			
			key = P2;			
			switch(key)			
			{				
				case 0xee:					
				P1 = table[0];				
				break;					
				case 0xde:					
				P1 = table[1];				
				break;					
				case 0xbe:					
				P1 = table[2];				
				break;					
				case 0x7e:					
				P1 = table[3];				
				break;					
				case 0xed:					
				P1 = table[4];				
				break;					
				case 0xdd:					
				P1 = table[5];				
				break;					
				case 0xbd:					
				P1 = table[6];				
				break;					
				case 0x7d:					
				P1 = table[7];				
				break;					
				case 0xeb:					
				P1 = table[8];				
				break;					
				case 0xdb:					
				P1 = table[9];				
				break;					
				case 0xbb:					
				P1 = table[10];				
				break;					
				case 0x7b:					
				P1 = table[11];				
				break;					
				case 0xe7:					
				P1 = table[12];				
				break;					
				case 0xd7:					
				P1 = table[13];				
				break;					
				case 0xb7:					
				P1 = table[14];				
				break;					
				case 0x77:					
				P1 = table[15];				
				break;			
				}		
			}	
		} 
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

visual_eagle

欢迎交流学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值