?? 電子密碼鎖.c
字號:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define KEY P1
#define DISP P0
//**********************************
sbit LED=P2^0;
sbit LED1=P2^1;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
uchar key[10];
uchar mima[4]={0x00,0x66,0x00,0x4F};
uchar cnt_key;
uchar cnt_mi;
uint i,m;
uchar wrong;
uchar f_5ms;
uchar cnt_5ms;
uchar cnt_1s;
uchar cnt_led;
uchar kk;
uchar tab[11]={0x00,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//***********************************
void delay(uint i);
void delay_led(void);
void delay_wrong(void);
void disp_mi(void);
void init_main(void);
void main(void);
void disp_led(void);
void get_key(void);
//***********************************
void delay(uint i)
{
while(--i);
}
//***********************************
//void disp_mi(void)
//{
//
//}
//***********************************
void init_main(void)
{
DISP=0;
LED=0;
LED1=0;
// TMOD=0x01;
// TR0=1;
// ET0=1;
// TH0=0xec;
// TL0=0x78;
// EA=1;
cnt_5ms=0;
cnt_1s=0;
cnt_key=0;
cnt_mi=0;
}
//***********************************
void main(void)
{
init_main();
while(1)
{
get_key();
// disp_mi();
while(kk==1){
kk=0;
DISP=key[cnt_key];
if(key[cnt_key]==mima[cnt_mi])
{
cnt_mi++;
if(cnt_mi==4)
{
cnt_mi=0;
delay_led();
}
}
else if(key[cnt_key]!=mima[cnt_mi])
{
delay_wrong();
}}
}
}
//***********************************
void delay_led(void)
{
// cnt_led=20;
// while(cnt_led--)
// {
// if(f_5ms)
// {
// f_5ms=0;
// if(cnt_5ms++==200)
// {
// if(cnt_1s++==10)
// {LED=!LED;}
// }
// }
// }
for(m=20;m>0;m--)
{
LED=1;
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
LED=0;
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
}
}
//***********************************
void delay_wrong(void)
{
for(m=20;m>0;m--)
{
LED1=1;
delay(2000);
delay(2000);
delay(2000);
LED1=0;
delay(2000);
delay(2000);
delay(2000);
}
}
//***********************************
void get_key(void)
{
KEY=0xfe;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[8];
kk=1;
}
}
if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[9];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[10];
cnt_mi++;
kk=1;
}
} KEY=0xfd;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[5];
cnt_mi++;
kk=1;
}
}
if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[6];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[7];
cnt_mi++;
kk=1;
}
}
KEY=0xfb;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[2];
cnt_mi++;
kk=1;
}
}
if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[3];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[4];
cnt_mi++;
kk=1;
}
} if(!P17)
{
delay(200);
if(!P17)
{
while(!P17);
init_main();
}
}
}
//***********************************
//void int0_main(void) interrupt 1
//{
// TH0=0xec;
// TL0=0x78;
// f_5ms=1;
//}
//***********************************
//***********************************
//***********************************
//***********************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -