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

📄 数码管显示键盘.c

📁 自己做的单片机Proteus仿真实例
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,
                    0x99,0x92,0x82,0xf8,
					0x80,0x90,0x88,0x83,
					0xc6,0xa1,0x86,0x8e};
                   
				   
				   /*共阴{0x3f,0x06,0x5b,0x4f,
                    0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,
					0x39,0x5e,0x79,0x71};*/
				
void delayms(uint xms)
{
    uint i,j;
	for(i=xms;i>0;i--)
	   for(j=110;j>0;j--);
}
void display(uchar num)
{
     P1=table[num];
}
void keyscan()
{
      uchar temp,key;
	  P3=0xef;
	  temp=P3;
	  temp=temp&0x0f;
	  if(temp!=0x0f)
	  {
	      delayms(10);
		  temp=P3;
	      temp=temp&0x0f;
	      if(temp!=0x0f)
		  { 
		       temp=P3;
			   switch(temp)
			   {
			        case 0xee:
					     key=0;
						 break;  
					 case 0xed:
					     key=1;
						 break;
					 case 0xeb:
					     key=2;
						 break;
					 case 0xe7:
					     key=3;
						 break;
				}
				while(temp!=0x0f)
				{
				     temp=P3;
					 temp=temp&0x0f;
				 }
				 display(key);
	      }
        }
	   P3=0xdf;
	   temp=P3;
	   temp=temp&0x0f;
	   if(temp!=0x0f)
	   {
	       delayms(10);
		   temp=P3;
	       temp=temp&0x0f;
	       if(temp!=0x0f)
		  { 
		       temp=P3;
			   switch(temp)
			   {
			        case 0xde:
					     key=4;
						 break;  
					 case 0xdd:
					     key=5;
						 break;
					 case 0xdb:
					     key=6;
						 break;
					 case 0xd7:
					     key=7;
						 break;
				}
				while(temp!=0x0f)
				{
				     temp=P3;
					 temp=temp&0x0f;
				 }
				 display(key);
	        }
         }
		 P3=0xbf;
	     temp=P3;
	     temp=temp&0x0f;
	     if(temp!=0x0f)
	     {
	           delayms(10);
		       temp=P3;
	           temp=temp&0x0f;
	           if(temp!=0x0f)
		      { 
		            temp=P3;
			        switch(temp)
			       {
			             case 0xbe:
					         key=8;
						     break;  
					     case 0xbd:
					         key=9;
						     break;
				   	     case 0xbb:
					         key=10;
					    	 break;
					     case 0xb7:
					         key=11;
						     break;
				    }
			     	while(temp!=0x0f)
			    	{
				          temp=P3;
					      temp=temp&0x0f;
			     	 }
				   display(key);
	            }		  
           }
		 P3=0x7f;
	     temp=P3;
	     temp=temp&0x0f;
	     if(temp!=0x0f)
	     {
	           delayms(10);
		       temp=P3;
	           temp=temp&0x0f;
	           if(temp!=0x0f)
		      { 
		            temp=P3;
			        switch(temp)
			       {
			             case 0x7e:
					         key=12;
						     break;  
					     case 0x7d:
					         key=13;
						     break;
				   	     case 0x7b:
					         key=14;
					    	 break;
					     case 0x77:
					         key=15;
						     break;
				    }
			     	while(temp!=0x0f)
			    	{
				          temp=P3;
					      temp=temp&0x0f;
			     	 }
				   display(key);
	            }		  
           }
}
void main()
{  
     P2=0xbf;
	 P1=0xff;
	 while(1)
	 { 
	    keyscan();
	  }
}

















⌨️ 快捷键说明

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