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

📄 huangvn9.c

📁 我同学做的电子密码锁
💻 C
📖 第 1 页 / 共 2 页
字号:
							delayms(60000);
							alarmcon=0;
							sysmode=2;//为管理员登陆解锁
							clear_lcd();
						}
						else
						{//出错次数少于3次,用户重新输入
							pass1=0;
							alarmcon=1;//错误一次鸣叫5S
							delayms(5000);
							alarmcon=0;
						   clear_lcd();
							
							return;
						
						}
				   }

				  break;
			  
		 }
		 	break;
	   case 1://修改密码
	   		switch(xg)
			{	
				case 0://管理员登陆
					 switch(keytemp)
						 {
						 	case 0:
							case 1:
							case 2:
							case 3:
							case 4:
							case 5:
							case 6:
							case 7:
							case 8:
							case 9:
									TR0=1;//启动定时器T0
									write_cmd(0x8A+pass2); //密码输入起始位			
									
									//output=dispnumber[keytemp];//查找代码
									//write_data(output);//显示输入密码
									write_data(0xA1);//显示黑点
					                write_data(0xf1);
									passinbuf2[pass2]=keytemp;//保存用户输入的密码
									if(pass2<6)
									pass2++;//调整保存下一个密码位置
									//alarmcon=1;//发按键提示音200ms
									//delayms(200);
									//alarmcon=0;
									break;
				           case 10://退格键
									pass2=pass2-1;
									write_cmd(0x8a+pass2);
									write_data(0x20);//显示空白
									write_data(0x20);
									pass2=pass2-1;
				        		break;
			        	   case 11://清除键
				  				 
									if(pass2!=0)
									{
										 for(a=0;a<=pass2;a++)
										{
										    write_cmd(0x8A+a); //从第一位开始清除		
											write_data(0x20);//显示空格
											write_data(0x20);				
										}
										a=0;	
									}
								   pass2=0;
				 				 break;
						   case 12 ://
								  
								  break;				 	
						   case 13://定义闭锁键
								  
								  break;   
				            case 14://定义确认键
								   for (i=0;i<6;i++)
								  {//比较用户输入密码与系统预设密码是否一致 
								  
								   if(passinbuf2[i]!=password2[i])
								   break;
								    }
								   if(i>=6)
								   { //输入密码正确
								   	  clear_lcd();
									   chenggong();
									   pass2=0;
									   errorcnt=0;//错误次数清零
									   lockcon=1;//开锁
									   alarmcon=1;//开蜂鸣器
									   delayms(2000);//蜂鸣器鸣叫2S
									   alarmcon=0;//关闭蜂鸣器
									   delayms(3000);//延时5S自动闭锁	
									   lockcon=1;//闭锁
									   clear_lcd();
									   xg=1;//为修改密码做准备
								   	   return;
								   }				   
								  break;
						
							case 15:
								  break;  
						 }

				    break;	
				 case 1://保存第一次修改密码
					switch(keytemp)
					{
							case 0:
							case 1:
							case 2:
							case 3:
							case 4:
							case 5:
							case 6:
							case 7:
							case 8:
							case 9:
									TR0=1;//启动定时器T0
									write_cmd(0x8A+pass3); //密码输入起始位			
									
									//output=dispnumber[keytemp];//查找代码
									//write_data(output);//显示输入密码
									write_data(0xA1);//显示黑点
					                write_data(0xf1);
									passinbuf3[pass3]=keytemp;//保存用户输入的密码
									if(pass3<6)
									pass3++;//调整保存下一个密码位置
									//alarmcon=1;//发按键提示音200ms
									//delayms(200);
									//alarmcon=0;
									break;
				        	case 10://退格键
								    pass3=pass3-1;
									write_cmd(0x8a+pass3);
									write_data(0x20);//显示空白
									write_data(0x20);
								  break;
							case 11://清除键
								   		
										if(pass3!=0)
										{
											 for(a=0;a<=pass3;a++)
											{
											    write_cmd(0x8A+a); //从第一位开始清除		
												write_data(0x20);//显示空格
												write_data(0x20);																	
				
											}
											a=0;	
										}
									   pass3=0;
								  break;
							case 12 ://
								  sysmode=1;
								  break;				 	
						 	case 13://定义闭锁键
				
								  break;   
				            case 14://定义确认键
								   xg=2;
								  break;
						
							case 15:
								  break; 		
									
				   	  } 	 
					break;
				case 2://保存第二次修改的密码并与第一次比较
					switch(keytemp)
					{
						case 0:
						case 1:
						case 2:
						case 3:
						case 4:
						case 5:
						case 6:
						case 7:
						case 8:
						case 9:
								TR0=1;//启动定时器T0
								write_cmd(0x8A+pass4); //密码输入起始位			
							
								//output=dispnumber[keytemp];//查找代码
								//write_data(output);//显示输入密码
								write_data(0xA1);//显示黑点
				            	write_data(0xf1);
								passinbuf4[pass4]=keytemp;//保存用户输入的密码
								if(pass4<6)
								pass4++;//调整保存下一个密码位置
								//alarmcon=1;//发按键提示音200ms
								//delayms(200);
								//alarmcon=0;
								break;
			        	case 10://退格键
			
							    pass4=pass4-1;
								write_cmd(0x8a+pass4);
								write_data(0x20);//显示空格
								write_data(0x20);
								pass4=pass4-1;
							break;
						case 11://清除键
								 	
									if(pass4!=0)
									{
										 for(a=0;a<=pass4;a++)
										{
										    write_cmd(0x8A+a); //从第一位开始清除		
											write_data(0x20);//显示空格
											write_data(0x20);
															
										}
										a=0;	
									}
								   pass4=0;
							  break;
						case 12 ://
							  sysmode=1;
							  break;				 	
					 	case 13://定义闭锁键
			
							  break;   
			            case 14://定义确认键
							   for (i=0;i<6;i++)
							  {//比较用户输入密码与系统预设密码是否一致 
							  
							   if(passinbuf4[i]!=passinbuf3[i])
							   break;
							    }
							   if(i>=6)
							   { //修改密码正确
							   	   clear_lcd();
								   chenggong();
								   for(i=0;i<6;i++)
								   {
								   		password1[i]=passinbuf4[i];//将修改的密码存到用户密码表
								   
								   }
								   pass4=0;
								   errorcnt=0;//错误次数清零
								   lockcon=1;//开锁
								   alarmcon=1;//开蜂鸣器
								   delayms(2000);//蜂鸣器鸣叫2S
								   alarmcon=0;//关闭蜂鸣器
								   delayms(3000);//延时5S自动闭锁	
								   lockcon=1;//闭锁
								   xg=0;//为管理员下次修改密码做准备
								   clear_lcd();
								   return;
							   }				   
							  break;
					
						case 15:
							  break; 	
								
								}
				break;
			
			
			    }
	   		break;
	   case 2://管理员进入开锁
			switch(keytemp)
			{
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 13:
				case 14:
				case 15:
					break;
			    case 12:
					sysmode=3;
					break;
			}

	   		break;
	   case 3://管理员解密输入模式		
		   switch(keytemp)
		 {
		 	case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
			case 7:
			case 8:
			case 9:
					write_cmd(0x8A+pass2); //密码输入起始位			
					
					//output=dispnumber[keytemp];//查找代码
					 ///write_data(output);//显示输入密码
					write_data(0xA1);//显示黑点
					write_data(0xf1);
					passinbuf2[pass2]=keytemp;//保存用户输入的密码
					if(pass2<6)
					pass2++;//调整保存下一个密码位置
					//alarmcon=1;//发按键提示音200ms
					//delayms(200);
					//alarmcon=0;
					break;
        	case 10://退格键
					   	pass2=pass2-1;
						write_cmd(0x8a+pass2);
						write_data(0x20);//显示空格
						write_data(0x20);
						pass2=pass2-1;
				  break;
			case 11://清除键
						 
							if(pass2!=0)
							{
								 for(a=0;a<=pass2;a++)
								{
								    write_cmd(0x8A+a); //从第一位开始清除		
									write_data(0x20);//显示空格
									write_data(0x20);				
								}
								a=0;	
							}
						   pass2=0;
				  break;
			case 12 ://
				  sysmode=1;
				  break;				 	
		 	case 13://定义闭锁键
				  	lockcon=1;
				  break;   
            case 14://定义确认键
				   for (i=0;i<6;i++)
				  {//比较用户输入密码与系统预设密码是否一致 
				  
				   if(passinbuf2[i]!=password2[i])
				   break;
				    }
				   if(i>=6)
				   { //输入密码正确
				   	   clear_lcd();
					   chenggong();
					   pass2=0;
					   errorcnt=0;//错误次数清零
					   lockcon=1;//开锁
					   alarmcon=1;//开蜂鸣器
					   delayms(2000);//蜂鸣器鸣叫2S
					   alarmcon=0;//关闭蜂鸣器
					   delayms(3000);//延时5S自动闭锁	
					   lockcon=1;//闭锁
					   clear_lcd();
					   return;
				   }				   
				  break;
		
			case 15:
				  break;  
		 }
		 	break;
	}
	 
	 
 }

//中断
 void exter() interrupt 0
 {	
 	uchar keytemp,i=0;
    TMOD=0x01;
    TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	ET0=1; 
 	keytemp=find_key();
	key_process(keytemp);//键值处理函数
	 keyport=0xf0;
	
  }	
 
void t0() interrupt 1 
{ 
  uchar tcount,second;
		tcount++;
		   if(tcount==20)
		     {second++;
			   tcount=0;
			   if(second==30)
			     {second=0;
				  clear_lcd();
				  chaoshi();
				  delayms(2000);
				  clear_lcd();
				  }
			 }
}
 
//主程序
void  main()																							                                                                                                                                                                                                                                                                                                                                                              						         
{
    alarmcon=0;//关闭蜂鸣器
    lockcon=1;//闭锁
	lcd_int();//初始化LCD
    functionset();
	zhici();//开机显示题目
    keyport=0xf0;//行线输出0,列线输出全1
	
	EX0=1;//允许外部中断0
	IT0=0;//电平触发方式
	EA=1;//CPU开中断	
	while(1)    
	{
		if(sysmode==0) 
		 {
		 	yonghu();//调用用户界面	
			
		 }
		if(sysmode==1)//管理员修改密码
		{
			if(xg==0)
			{
				guanliyuan();
			}
			if(xg==1)
			{
				xiugai();
			}
			if(xg==2)
			{
				queding();
			}
		
		
		 }

		if(errorcnt>2)
		 {	
		 	if(sysmode==2)
		 	{
				suoding();//调用锁定界面
				
			}
		 	if (sysmode==3) //等待管理员解锁
			{
			
				guanliyuan();
			
			}

		 
		 }														   
	  }
	}
	

⌨️ 快捷键说明

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