基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)

目录

门禁系统

需要的器件

设计思路

流程图实现

技术实现

实物接线图

实物接线图

 函数设计

部分主程序代码,截取片段

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件


门禁系统

需要的器件

        STC89C52,MFRC-522 RFID射频模块,AT24C02存储电路,5v步进电机,5v转3.3v稳压模块,(1602)12864显示模块, usb接口的5V电源。

基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)_第1张图片

设计思路

        采用STC89C52作为主控芯片,MFRC-522模块(5V转3.3模块用于此)用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作,或者通过输入密码来进行开门,若正确则开门,若3次不正确则蜂鸣器报警并显示错误信息。通过AT24C02存储密码,掉电后依然可以存储密码,保证系统安全性。如果输入密码正确,通过驱动步进电机来模拟开门。

流程图实现

        

基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)_第2张图片

技术实现

仿真接线与器件

        需要请私信或者Q1990571096,数字电路与逻辑及设计课设大作业完整文件。

实物接线图

 函数设计

  1. 电机,存储器,射频模块,显示屏,蜂鸣器通过模块化编程
  2. 函数封装,预留不同的接口及功能
  3. 通过按键扫描key值来实现属于与功能选择
  4. 主要通过switch语句实现功能选择
  5. 标志变量判定当前状态与决定显示屏显示菜单

部分主程序代码,截取片段

while(1)
	{
		PcdReset();//扫描完矩阵键盘后复位RC522
		detectCard();//探测NFC卡
		key = keyScan();
		if(key != 16)
		{
			if(keyboardMode == 0 || keyboardMode == 2 || keyboardMode == 3)//输入开门密码  输入新键盘密码  输入管理员密码
			{
				if(key >=0 && key <= 9)
				{
					//输入密码【0~9】,显示在第二行
					if(password <= (999999 - key) / 10)//最大可设置为9位密码,这里设置为6位密码, 请勿改动
					{
						password = password * 10 + key;
						if(password != 0)
						{
							lcdWriteDate(key + '0');
						}
					}
				}
				else
				{
					//【重输】【主页】【返回】【确定】
					switch(key)
					{
						
						//case 10:
							//打印数据
							//showAt24c02All();
							//break;

						case 12:
							//重输
							password = 0;
							lcdCleanLine(3);
							gotoRowCol(3, 1);
							break;
						case 13:
							//返回主页
							keyboardMode = 0;
							detectMode = 0;
							lcdShow_Welcome();
							gotoRowCol(3, 1);
							break;
						case 14:
							//显示菜单
							password = 0;
							detectMode = 0;
							keyboardMode = 1;
							lcdShowMenu_Main();
							break;
						case 15:
							//确定
							if(keyboardMode == 0)
							{
								readPassword();
								if(password / 100000 == passwordInMemory[0] &&
								   password % 100000 / 10000 == passwordInMemory[1] &&
								   password % 10000 / 1000 == passwordInMemory[2] &&
								   password % 1000 / 100 == passwordInMemory[3] &&
								   password % 100 / 10 == passwordInMemory[4] &&
								   password % 10 == passwordInMemory[5])
								{
									//开门密码正确
									beep(1);//蜂鸣器响一下
									lcdCleanLine(3);
									gotoRowCol(3, 1);
									password = 0;
									passwordWrongCount = 0;//错误次数清零
									openDoor();//电机开门3s后恢复
								}
								else if(password / 100000 == adminPasswordInMemory[0] &&
								   password % 100000 / 10000 == adminPasswordInMemory[1] &&
								   password % 10000 / 1000 == adminPasswordInMemory[2] &&
								   password % 1000 / 100 == adminPasswordInMemory[3] &&
								   password % 100 / 10 == adminPasswordInMemory[4] &&
								   password % 10 == adminPasswordInMemory[5])
								{
									//管理员密码正确
									keyboardMode = 1;
									password = 0;
									lcdShowMenu_Main();
								}

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件

 基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)_第3张图片

基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)_第4张图片

有需要的可以联系,不免费哦

你可能感兴趣的:(51单片机,51单片机,嵌入式硬件,单片机)