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

📄 dianzimimasuo.c

📁 电子密码锁的程序 可以实现仿真 适合课程设计用
💻 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 + -