51单片机项目(5)——基于51单片机的密码锁设计

目录

1.课题意义

2.实现功能

3.功能演示视频 


1.课题意义

        51单片机密码锁课题的意义如下:

        1. 实践和应用能力提升:通过设计和开发51单片机密码锁,学生可以锻炼自己的实践能力和应用能力。他们需要理解密码锁的原理和工作方式,并将其应用在具体的项目中,提高问题解决和创新思维能力。

        2. 综合学科知识的应用:51单片机密码锁涉及相关的电子电路、嵌入式系统和编程知识等多个学科领域。学生在课题中需要综合运用这些知识来设计和实现密码锁,从而加深对这些学科的理解和应用能力。

        3. 学习项目管理和团队合作:完成51单片机密码锁课题需要进行项目计划、资源管理和团队协作等工作。学生可以通过这个课题学习项目管理技能和团队合作精神,提高自己的组织能力和沟通能力。

        4. 创造力和设计思维培养:课题要求学生设计密码锁的外观、功能和用户交互界面等。通过课题,学生可以培养自己的创造力和设计思维,探索不同的设计方案,并将其实现在具体的产品中。

        5. 理论与实践的结合:51单片机密码锁课题将理论知识与实际应用相结合。学生需要将课堂上学到的理论知识转化为实际的设计和实现,培养在真实场景中应用理论知识的能力。

        6. 提高安全意识:密码锁涉及到安全和保密性的问题。通过设计和研究密码锁,学生可以提高对信息安全和保护隐私的意识,了解密码保护机制的原理和应用。

        总之,51单片机密码锁课题有助于学生综合运用多个学科领域的知识和技能,提高实践能力和创新思维能力。同时,它也培养了学生的项目管理和团队合作能力,并提高对安全意识和信息保护的认识。最重要的是,这个课题为学生提供了一个实践和应用学习的机会,帮助他们将理论知识应用到实际项目中。

2.实现功能

本次实现的功能如下:
初始密码:123456    密码位数:6位
注意:掉电后,所设密码会丢失,重新上电时,密码恢复为原始的123456
与P1.0相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上

程序功能:
          1、开锁:
          下载程序后,直接按六次数字123456(即代表密码123456),LED亮,锁被打开,输入密码时,
          六位数码管依次显示小横杠。
          2、更改密码:
          只有当开锁(LED亮)后,该功能方可使用。
          首先按下更改密码键,然后设置相应密码,此时六位数码管会显示设置密码对应
          的数字。最后设置完六位后,按下确认密码更改,此后新密码即生效。
          3、重试密码:
          当输入密码时,密码输错后按下重试键,可重新输入六位密码。
          当设置密码时,设置中途想更改密码,也可按下此键重新设置。
          4、关闭密码锁:
          按下上锁按键即可将打开的密码锁关闭。
          
功能测试:输入原始密码123456---按下更改密码按键---按0到9设置密码---按确认键
       密码更改---按上锁按键关闭密码锁---输入新的密码打开密码锁

仿真图如下所示

主函数代码:

void main(void)
{
	InitI2C();			   //初始化
	TMOD = 0x01;
	TH0  = (65535-2000)/256;
	TL0  = (65535-2000)%256; 
	EA=1;
	ET0=1;
	TR0=1;
	WritePassWord_Ini();
	ReadPassWord();
	//if(PassWord[0]==0xff) WritePassWord_Ini();
		
	while(1)
	{
		keyscan();
		shumima();
		yanzheng();
		if(allow)	 //验证完后,若allow为1,则开锁
		{
			Lock=0;GLED=0;RLED=1;
			if(!genggai)	wanbi=0;
		}
		else 
		{
			Lock=1;GLED=1;RLED=0;
			if(wanbi)
			{
				delay(500);
				beep=0;delay(500);beep=1;delay(500);
				beep=0;delay(100);beep=1;delay(200);
				beep=0;delay(100);beep=1;delay(200);
				beep=0;delay(100);beep=1;delay(200);
				beep=0;delay(100);beep=1;delay(200);
				beep=0;delay(100);beep=1;delay(200);
				beep=0;delay(100);beep=1;
				wei=0;wanbi=0;allow=0;
				a=16;b=16;c=16;d=16;e=16;f=16;
				new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
			}
			
		}
		if(genggai)	  //当S16更改密码键被按下,genggai会被置一
		{
			if(allow)	 //若已经把锁打开,才有更改密码的权限
			{
				while(!wanbi)	//当新的六位密码没有设定完,则一直在这里循环
				{
					delay(20);
				 	keyscan();
					shumima();
					if(retry|close)	 //而当探测到重试键S18或者关闭密码锁键S19被按下时,则跳出
					{	
						wanbi=1;
						break;
					}
				}
			}
		}
		if(ok)	  //更改密码时,当所有六位新密码均被按下时,可以按下此键,结束密码更改
		{		  //其他时间按下此键无效
			ok=0; wei=0;Lock=1;GLED=1;RLED=0;
			genggai=0;
			PassWord[0]=new1;PassWord[1]=new2;PassWord[2]=new3; //此时,旧的密码将被代替
			PassWord[3]=new4;PassWord[4]=new5;PassWord[5]=new6;
			WritePassWord();
			wei=0;wanbi=0;allow=0;
			a=16;b=16;c=16;d=16;e=16;f=16;
			new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
		}
		if(retry)	//当重试按键S18被按下,retry会被置位
		{
			retry=0; wei=0;wanbi=0;
			a=16;b=16;c=16;d=16;e=16;f=16;
			new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;		
		}
		if(close)  //当关闭密码锁按键被按下,close会被置位
		{
			close=0;genggai=0;//所有变量均被清零。
			wei=0;	wanbi=0;
			allow=0;
			Lock=1;GLED=1;RLED=0;
			a=16;b=16;c=16;d=16;e=16;f=16;
			new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
		}
	}
}

3.功能演示视频 

密码锁功能演示

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值