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

📄 mimasuo.c

📁 51单片机.rar
💻 C
字号:
/**********************************************************************************************
**********************************************************************************************
        密码锁   4位 可重复定义
*************************************************************************************************
*******************************************************************************************/
#include<reg52.h>
#define uchar unsigned char

sbit rs=P3^2;
sbit en=P3^3;
sbit fm=P2^4;
sbit k=P2^7;

uchar i,j,num,temp,s;
uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
uchar code table1[]="Enter:";
uchar code table2[]="Error!";
uchar code table3[]="Right!";

void delay(int z)				  //延时函数
{
	uchar x,y;
	for(x=110;x>0;x--)
	  for(y=z;y>0;y--);
}

void writebyte(byte)				//写字节函数
{    
	rs=1;
	P0=byte; 
	delay(1); 
	en=0;
	en=1;
	en=0;
}

void writecommened(commened)	 //写指令函数
{	
	rs=0;
	P0=commened;
	delay(1); 
	en=0;
	en=1;
	en=0;
}

void wrong()			  //输入错误函数
{
	uchar m;
    writecommened(0x01);
	writecommened(0x0c);    
    writecommened(0x80+0x04);
    for(m=0;m<6;m++)
	{
		writebyte(table2[m]);
		delay(2);
	}
	fm=0;
	delay(500);
	fm=1;
	delay(500);
	fm=0;
	delay(500);
	fm=1;
}

void right()		  //输入正确函数
{	
    uchar n;
    writecommened(0x01);
	writecommened(0x0c);	
	writecommened(0x80+4);
	for(n=0;n<6;n++)
	{
		writebyte(table3[n]);
		delay(2);
	}
	fm=0;
	delay(500);
	fm=1;
	delay(3000);
}

void init()			 //初始化函数
{
    uchar i;
	writecommened(0x38);
	writecommened(0x01);
	writecommened(0x0f);
	writecommened(0x06);
	writecommened(0x80+3);
	for(i=0;i<6;i++)
	{
		writebyte(table1[i]);
		delay(2);
	}
}

void keyscan()		 //键盘检测函数
{
   uchar number=0x0b;
   int t;
   static int t1;
   static int t2;
   static int t3;
   static int t4;
   uchar flag;
   P3=0xfe;
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   		delay(5);
		temp=P3;
        temp=temp&0xf0;
		if(temp!=0xf0)
		{
			switch(temp)
			{
			    case 0x70: number=1;
				break;
				case 0xb0: number=2;
				break;
				case 0xd0: number=3;
				break;
				case 0xe0: number=0;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
			}
		}
   }
   P3=0xfd;
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   		delay(5);
		temp=P3;
        temp=temp&0xf0;
		if(temp!=0xf0)
		{
			switch(temp)
			{
			    case 0x70: number=4;
				break;
				case 0xb0: number=5;
				break;
				case 0xd0: number=6;
				break;
				case 0xe0: number=0x0a;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
			}
		}
   }
   P3=0xfb;
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   		delay(5);
		temp=P3;
        temp=temp&0xf0;
		if(temp!=0xf0)
		{
			switch(temp)
			{
			    case 0x70: number=7;
				break;
				case 0xb0: number=8;
				break;
				case 0xd0: number=9;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
			}
		}
   }
 /*  P3=0xf7;
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   		delay(5);
		temp=P3;
        temp=temp&0xf0;
		if(temp!=0xf0)
		{
			switch(temp)
			{
			    case 0x70: number=0;
				break;
				case 0xb0: number=0x0a;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
			}
		}
   }  */
   if(number!=0x0b)
   { 
       	flag++;
	    if(flag==4)
	    flag=0;	   
	   if(number!=0x0a)
	   {
	   		writebyte(table[number]);
		    writecommened(0x80+9+flag);
		   if(flag==1)
		   {
		   		t1=number*1000;
		   }	 
		   if(flag==2)
		   {
		   		t2=number*100;
		   } 
		   if(flag==3)
		   {
		   		t3=number*10;
		   }   	    
		   if(flag==0)
		   {
		   		t4=number*1;
		   }				
	   }
		  
	   if(number==0x0a)
	   {  	
	        t=t1+t2+t3+t4;	        	        
	      	if(t==5234)
			{
				right();
				t=0;
				flag=0;
				init();
			}
			else wrong();
			t=0;
			flag=0;
			delay(1000);
			init(); 	
		}			   
		number=0x0b;
		delay(5);
	  }   
}

void main()				   //主函数
{
    k=1;
	P1=0;
	k=0;
	init();	 	 
	while(1)
	{	
	    keyscan();			
	}	 
}	 

⌨️ 快捷键说明

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