目录
门禁系统
需要的器件
设计思路
流程图实现
技术实现
实物接线图
实物接线图
函数设计
部分主程序代码,截取片段
12864显示模块
步进电机模块以及蜂鸣器
FRID射频模块
AT24C02模块
功能实现及其源代码
完整文件
门禁系统
需要的器件
STC89C52,MFRC-522 RFID射频模块,AT24C02存储电路,5v步进电机,5v转3.3v稳压模块,(1602)12864显示模块, usb接口的5V电源。
设计思路
采用STC89C52作为主控芯片,MFRC-522模块(5V转3.3模块用于此)用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作,或者通过输入密码来进行开门,若正确则开门,若3次不正确则蜂鸣器报警并显示错误信息。通过AT24C02存储密码,掉电后依然可以存储密码,保证系统安全性。如果输入密码正确,通过驱动步进电机来模拟开门。
流程图实现
技术实现
仿真接线与器件
需要请私信或者Q1-9-9-0-5-7-1-0-9-6,数字电路与逻辑及设计课设大作业完整文件。
实物接线图
函数设计
- 电机,存储器,射频模块,显示屏,蜂鸣器通过模块化编程
- 函数封装,预留不同的接口及功能
- 通过按键扫描key值来实现属于与功能选择
- 主要通过switch语句实现功能选择
- 标志变量判定当前状态与决定显示屏显示菜单
部分主程序代码,截取片段
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模块
功能实现及其源代码
完整文件
有需要的可以联系,以前的课程作业,现在不会了,请先看清楚,20!!
需要的东西