📄 password.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 + -