基于51单片机的无线电子密码锁
目录
具体实现功能
设计介绍
资料内容
全部内容
资料获取
具体实现功能
具体功能:
(1)密码锁上电后,即可输入密码,输入过程中不显示密码内容;密码正确时,显示密码正确,LED灯亮,继电器动作,表示开门;密码错误时,显示密码错误,蜂鸣器报警,连续输错三次后锁定2小时。
(2)具有修改密码功能。在输入原密码验正后才能修改密码,新密码需两次确认。
(3)具有一个万能的通用密码,在必要时可使用。
(4)具有无线控制门锁功能。利用串口模拟无线功能,可用串口输入密码及修改密码。
仿真演示视频:
基于51单片机的无线电子密码锁-仿真视频
设计介绍
51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。
本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。
资料内容
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计,具体如图。
程序(Keil5)
本设计利用KEIL5软件实现程序设计。
主函数如下:
///
void main()//主函数
{uchar i,j,num1=0,num2=0;lcd_init(); // 初始化lcd_clear(0); // 清屏lcd_set_line(0); // 设置起始行为0mima_in();SCON=0X50; //设置为工作方式1TMOD=0X21; //设置计数器工作方式2TH1=0XFD; //9600TL1=0XFD;ES=1; //打开接收中断TR1=1; //打开计数器TH0=0X3C; //定时50msTL0=0XB0; ET0=1;TR0=1;EA=1;while(1){i=key_scan();//按键检测if(i==11)//模式切换 设置密码{mode=!mode;if(mode==1)//修改密码{if(!zhengque)mode=0;else{mima_reset();}}mima0[0]=0;//输入缓存清零mima0[1]=0;mima0[2]=0;mima0[3]=0; mima0[4]=0;mima0[5]=0; mima0[6]=0;mima0[7]=0; }
if(mode)//重设密码
{ if(cishu==0){if((i>0)&&(i<11))//记录密码{ mima0[0]=mima0[1];//输入密码mima0[1]=mima0[2];mima0[2]=mima0[3];mima0[3]=mima0[4];mima0[4]=mima0[5];mima0[5]=mima0[6];mima0[6]=mima0[7];mima0[7]=i; disp_num(); }if(i==12)//确认{mima3[0]=mima0[0];//记录第一次输入mima3[1]=mima0[1];mima3[2]=mima0[2];mima3[3]=mima0[3];mima3[4]=mima0[4];mima3[5]=mima0[5];mima3[6]=mima0[6];mima3[7]=mima0[7];//清空密码mima0[0]=0;mima0[1]=0;mima0[2]=0;mima0[3]=0; mima0[4]=0;mima0[5]=0;mima0[6]=0;mima0[7]=0;disp_xin();ling(2);mima_zaici();cishu=1;}}else//第二次输入{if((i>0)&&(i<11))//记录密码{ mima0[0]=mima0[1];//输入密码mima0[1]=mima0[2];mima0[2]=mima0[3];mima0[3]=mima0[4];mima0[4]=mima0[5];mima0[5]=mima0[6];mima0[6]=mima0[7];mima0[7]=i; disp_num(); }if(i==12)//确认{cishu=0;num1=0;for(j=0;j<8;j++){if(mima0[j]==mima3[j])num1++;}if(num1==8)//正确{mima1[0]=mima0[0]-1;//存储密码mima1[1]=mima0[1]-1;mima1[2]=mima0[2]-1;mima1[3]=mima0[3]-1;mima1[4]=mima0[4]-1;mima1[5]=mima0[5]-1;mima1[6]=mima0[6]-1;mima1[7]=mima0[7]-1;}//清空密码mima0[0]=0;mima0[1]=0;mima0[2]=0;mima0[3]=0; mima0[4]=0;mima0[5]=0;mima0[6]=0;mima0[7]=0;disp_xin();mode=0;mima_in();ling(2);cishu=1;}}
}
else //输入密码
{ if((i>0)&&(i<11))//读取按键{mima0[0]=mima0[1];//输入密码mima0[1]=mima0[2];mima0[2]=mima0[3];mima0[3]=mima0[4];mima0[4]=mima0[5];mima0[5]=mima0[6];mima0[6]=mima0[7];mima0[7]=i; //显示disp_xin(); }if(i==12)//OK{ num1=0;for(j=0;j<8;j++) //检验输入密码{if(mima0[j]-1==mima1[j]){num1++;} }num2=0;for(j=0;j<8;j++) //检验万能密码{if(mima0[j]-1==mima2[j])num2++;} if((num1>5)||(num2==8)) //密码正确{ times=0;zhengque=1;led=0; mima_yes();delay_ms(5000);//延时5smima_in();led=1;cishu=0;}else{times++;zhengque=0;mima_no();ling(3);//密码错误mima_in(); }//清空密码mima0[0]=0;mima0[1]=0;mima0[2]=0;mima0[3]=0; mima0[4]=0;mima0[5]=0;mima0[6]=0;mima0[7]=0;disp_xin();if(times==3)//3次错误{shi=1;ES=0;mima_lock();while(times==3);ES=1;}}
}
}
}
程序运行结果如图:
全部内容
全部资料包括程序(keil5)、protues仿真(protues8.7)、设计说明、答辩PPT、开发资料、资料使用介绍、仿真视频、最小系统介绍视频等。
资料获取
https://docs.qq.com/doc/DT0JHenRUWVpzYndn