ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于51单片机的密码锁

2021-01-17 10:57:50  阅读:216  来源: 互联网

标签:仿真 password 密码 51 单片机 smgduan PCB 密码锁


本次的项目是基于51单片机的密码锁,适合用来作为课程设计

主要实现了:密码锁功能,通过矩阵按键输入密码,输入范围为0-F,共有四位;同时,也可以使用更改按键更改密码,在更改时需要输入原密码来进入更改模式,四位密码显示H标识,成功修改后,红绿指示灯会同时闪烁;在输入密码正确后,绿色指示灯点亮,舵机启动,模拟密码锁的打开过程;错误时则会红色指示灯亮起。

本项目的优点在于加入了舵机来仿真密码锁的开关,这就意味着这不是个单纯的仿真了,至少是在PCB打样焊接后,这是个可以使用的东西,而不是现在网上那些没法出东西的虚拟仿真!!

原理图

同时,这次的设计还加入了AT24C02,这是个IIC接口的EEPROM器件,通过这个内存芯片,我们就可以储存密码,这样就可以实现每次上电后,自动加载修改过后的密码。但是!!!由于Proteus的破解问题,在A版的仿真中,写入内存无法实现,但是实际在实物中可以实现,B版不包含掉电写入功能,初始密码均为1121。

本项目的文件夹里包含了两个版本的PCB,可以直接打样来制作实物
A版PCB侧视图
A版PCB俯视图

注意!!在PCB中有两个贴片电阻,这两个电阻的作用是防止舵机驱动芯片L298N的电流传感引脚直接接地,可以选择焊接0欧电阻,或者是选择使用一根飞线连接,但是不可以不焊接。相关文章解析:AD原理图编译ERROR:GND contains Output Pin and Power Pin objects

B版的设计也带有PCB,也是需要这两个电阻,不同点就在于不带有内存芯片,这对于一些要求较低的课设来说,可以有效的降低成本和难度,便于贴合实际设计能力。

B版PCB侧视图
部分代码如下所示:

void main()  //主函数
{
	uchar i;
	uchar x;//存放内存读取的标识
	uint temp1,temp2;
	EA=1;
	EX0=1;
	IT0=1;
	x=At24c02Read(1);
	if(x==3)
	{
		temp1=At24c02Read(4);
		temp2=At24c02Read(7);
		password[0]=smgduan[(temp1/10)];
		password[1]=smgduan[(temp1%10)];
		password[2]=smgduan[(temp2/10)];
		password[3]=smgduan[(temp2%10)];
	}
	while(1)
	{
		if((time==0)&&(state!=1))        //初始化状态
		{
			LED_Green=1;
			LED_Red=1; 
			for(i=0;i<4;i++)                          
			{
				disp[i]=0xbf;     //写入横杠
			}
		}
		keys_scan();        //扫描有无按键按下
	}
}

本设计包含:Proteus仿真原理图、仿真设计;keil5的C语言代码;ad的原理图,PCB;产品说明书,所有代码都含有注释,这样便于理解,而且还有技术答疑!!

完整项目获得处:
资源连接

标签:仿真,password,密码,51,单片机,smgduan,PCB,密码锁
来源: https://blog.csdn.net/toyjis/article/details/112730799

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有