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

📄 password.c

📁 该程序为8位的密码锁
💻 C
字号:
//--作者王超
//2008年8月6日
//-----密码锁----
//------功能:清零,输入,正确输出

#include <at89x52.h>
#define uchar unsigned char 
#define uint  unsigned int 
/*uchar LEDSEGCODE[]=
{
  0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,//共阴			   00111111
  0X77,0X7C,0X39,0X5E,0X79,0X71,0x40,0X80,0x00,0x50,				   
}; */
uchar LEDSEGCODE[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,
                     0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0X02,0X9E,0X00,0X0C};


uchar LEDBITCODE[]=
{
  0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
};

#define SEG P0
#define BIT P2
#define KEYPAD P3

uchar LEDBuffer[8]={16,16,16,16,16,16,16,16,};
uchar LEDScanPointer;

uchar KEYBuffer[8];
uchar KEYPointer;

uchar KeyTemp;
uchar KeyPressFlag;
uchar KeyID;


uchar MYPASSWORD[]={1,2,3,4,5,6,7,8};  //密码12345678


void delay(uint t)
{
	while(t--);
}


void main(void)
{	
	uchar i;
	while(1)
	{
	//============================================
	//----数码管显示程序-------------
	//============================================
	 	SEG=LEDSEGCODE[LEDBuffer[LEDScanPointer]];
		BIT=LEDBITCODE[LEDScanPointer];
		LEDScanPointer++;
		if(sizeof(LEDBuffer)==LEDScanPointer)LEDScanPointer=0;
		delay(100);
	//============================================
	//---4*4键盘扫描,翻转法----------
	//============================================
	  KEYPAD=0x0f;
	  if(0x0f!=(KEYPAD & 0x0f))
	    {
		  delay(100);
		  if(0x0f!=(KEYPAD & 0x0f))
		    {
			  if(0==KeyPressFlag)
			    {
				   KeyPressFlag=1;
			       KeyTemp=KEYPAD;
			       KEYPAD=0xf0;
				   //Delay(100);
			       KeyTemp|=KEYPAD;
							switch(KeyTemp)
							     {
								   case 0xEE:
								     KeyID=7;
								     break;
								   case 0xDE:
								     KeyID=8;
								     break;
								   case 0xBE:
								     KeyID=9;
								     break;
								   case 0x7E:
								     KeyID=10;
								     break;
								   case 0xED:
								     KeyID=4;
								     break;
								   case 0xDD:
								     KeyID=5;
								     break;
								   case 0xBD:
								     KeyID=6;
								     break;
								   case 0x7D:
								     KeyID=11;
								     break;
								   case 0xEB:
								     KeyID=1;
								     break;
								   case 0xDB:
								     KeyID=2;
								     break;
								   case 0xBB:
								     KeyID=3;
								     break;
								   case 0x7B:
								     KeyID=12;
								     break;
								   case 0xE7:
								     KeyID=14;
								     break;
								   case 0xD7:
								     KeyID=0;
								     break;
								   case 0xB7:
								     KeyID=15;
								     break;
								   case 0x77:
								     KeyID=13;
								     break;
								 }
								 //============获取按键,分清是数字键还是功能键
								 if(KeyID<10)  //--表示输入数字键
								 	{
										if(KEYPointer<sizeof(KEYBuffer))
										{
											KEYBuffer[KEYPointer]=KeyID;   //存入按键数据进入缓冲区
											LEDBuffer[KEYPointer]=KeyID;	   //数码管显示
											KEYPointer++;	
										}
									}
									else if(KeyID==14)	  //--清零键
									{
										KEYPointer=0;
										for(i=0;i<sizeof(LEDBuffer);i++)LEDBuffer[i]=16;
										for(i=0;i<sizeof(KEYBuffer);i++)KEYBuffer[i]=0;
										if(P1_7==0)P1_7=1;							
									}
									else if(KeyID==15)	   //表示密码正确
									{
										for(i=0;i<sizeof(MYPASSWORD);i++)
											{
												if(MYPASSWORD[i]!=KEYBuffer[i])
												{
													i=sizeof(MYPASSWORD)+1;
														
												}
											}		
												if(i==sizeof(MYPASSWORD))
												{
													P1_7=0;		
												}
												else
												{						 //显示"error"
											     LEDBuffer[7]=14;
												 LEDBuffer[6]=19;
												 LEDBuffer[5]=19;
												 LEDBuffer[4]=18;
												 LEDBuffer[3]=18;
												 LEDBuffer[2]=18;
												 LEDBuffer[1]=18;
												 LEDBuffer[0]=18;
												 P1_7=0;
												 delay(10000);
												 P1_7=1;
												 delay(10000);
											     }
												
									
									} 

						}
				 }
			}
	  else KeyPressFlag=0;
	 
	  
	}  
 
}

⌨️ 快捷键说明

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