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

📄 at89c2051单片机密码锁.c

📁 密码:135790 K1:功能键
💻 C
字号:
#include <at89x51.h>
unsigned char led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
unsigned char password[7]={0,1,3,5,7,9,0};
unsigned char getword[7];
unsigned char count,bitcount;
unsigned char k,wrongcount;
unsigned long ul;
unsigned int n;
bit flag;
void delay10ms(void) 
{ 
	unsigned char i,j; 
  	for(i=20;i>0;i--) 
  	for(j=248;j>0;j--); 
} 
void alarmring(void) //输出报警声音
{
	for(k=0;k<2;k++)
	{
		for(ul=0;ul<1000;ul++)
		{
			for(n=0;n<80;n++);
			P3_7=~P3_7;
		}
		for(ul=0;ul<800;ul++)
		{
			for(n=0;n<100;n++); 
			P3_7=~P3_7;
		}
	}	
}	
void delay3s(void)	 //延时程序
{
	unsigned char i;
	for(i=3;i>0;i--)
	{
		for(ul=0;ul<1000;ul++)
		{
			for(n=0;n<80;n++);
			P3_4=~P3_4;
			if((P3_0==0)||(P3_1)==0)
			{
				delay10ms();
				if((P3_0==0)||(P3_1)==0)
				{				
					i=3;
					alarmring();
				}
			}
		}
		for(ul=0;ul<800;ul++)
		{
			for(n=0;n<100;n++); 
			P3_4=~P3_4;
			if((P3_0==0)||(P3_1)==0)
			{
				delay10ms();
				if((P3_0==0)||(P3_1)==0)
				{				
					i=3;
					alarmring();
				}
			}
		}	
	}
}
void rightring(void) //输出叮咚声音
{
	for(ul=0;ul<800;ul++) 
	{
		for(n=0;n<40;n++); 
		P3_7=~P3_7; 
	}
	for(ul=0;ul<1000;ul++)
	{
		for(n=0;n<60;n++);
		P3_7=~P3_7; 
	}
}
comp(void)			 //密码比较程序
{
	
	unsigned char m;
	for (m=1;m<6;m++)
	{
		if (getword[m]==password[m])
			flag = 1;
		else
		{
			flag = 0;
			m = 6;
			wrongcount++;
		}
	}
	return(flag);
}
void pressring(void) //输出按键声音
{
	unsigned long c;
	unsigned int n;
	for(c=0;c<50;c++)
	{
		for(n=0;n<50;n++); //延时
		P3_7=~P3_7; //取反输出到喇叭的信号
	}
}	
void main(void) 
{ 
	bitcount=0;
	count=0;
	P3_2=1;
	P3_3=0;
	P3_4=0;
	P3_5=0;
	P3_7=0;
	k=0;
  while(1) 
    { 	
		if(P3_1==0) 
		{ 
		      pressring();
			  delay10ms(); 
		      if(P3_1==0) 
		      { 
		           count++; 
		           if(count>9) 
		           { 
		               count=0; 
		            } 
		            P1=led[count];
		            while(P3_1==0);
			  }
		 }       	
       	 if(P3_0==0)
		 {
		 	pressring();
			delay10ms();
			if(P3_0==0)
			{
				bitcount++;
				if(bitcount<7)
				P1=led[bitcount];				
				getword[--bitcount]=count;
				bitcount++;
				count=0;				
				if(bitcount>6)
				{
					
									
					bitcount=0;	
					P1=led[bitcount];
					comp();
					if(flag==1)	
					{	
						k=0;						
						P3_3=~P3_3;
						P3_2=~P3_2;			
						rightring();						
					}
					if(flag==0)
					{	
						alarmring();
						if(wrongcount>2)
						{
							delay3s();
						}						
					}	

				} 
			  while(P3_0==0);
			 } 
		 }
  	     
  }
}	

⌨️ 快捷键说明

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