赞
踩
本设计是基于51单片机智能IC卡楼宇门禁系统 刷卡 RFID射频密码锁语音播报设计,主要实现以下功能:
1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2.采用AT24C02芯片可以实现存储的密码掉电保存。密码为6位,可以随意更改,更改时要输入两遍确认;
3.采用矩阵按键输入、12864液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载
4.可以使用RC522 IC开锁,可以利用RC522 IC对用户销户和开户;
5.密码输入错误3次,蜂鸣器响,报警锁死。
6.开锁关锁密码正确错误可通过语音模块播报。
主要硬件组成:
电源5V供电、单片机最小系统、RC522 IC门禁卡模块,矩阵按键电路,LCD 12864显示屏电路,电源开关,语音播报模块
部分代码:
case 0:
ShowMode=1;
break;
case 1:
LCD12864_pos(1,2); //液晶控制写地址命令 LCD12864_pos括号里有两个,第一个数据填写的是显示的第几行,第二个数据是显示这一行的第几个位置
LCD12864_writebyte("欢迎使用"); //显示字符串
LCD12864_pos(2,1); //第二行第一个位置显示
LCD12864_writebyte("智能门禁系统"); //显示字符串
break;
case 2:
LCD12864_pos(0,1); //第零行,第一个位置开始准备显示
LCD12864_writebyte("密码输入开锁"); //显示字符串
LCD12864_pos(1,1); //第一行第一个位置
LCD12864_writebyte(" "); //显示空
for(i=0;i<PassNum;i++) //这里是输入密码时显示星号设置
{
LCD12864_write(1,0x2a); //对于这个函数LCD12864_write,里面也是填写两个数据,第一个是0/1,只能填写0或者1,0代表命令,1代表数据,然后填写的数据是根据前面的数据命令来控制的,比如这个,0x2A就是数据
} //显示部分基本就是这样,就不做过多的赘述
if(s1==0&&PassNum<6) LCD12864_write(1,0x5f); //显示数据下面的横杠
else LCD12864_writebyte(" ");
for(i=0;i<(6-PassNum);i++) //填充空格
{
LCD12864_writebyte(" ");
}
break;
case 3:
// HintMode=1;
switch(HintMode) //门状态switch case语句 HintMode=0,就是门代开
{
case 0:
LCD12864_pos(1,2);
LCD12864_writebyte("门已打开");
break;
case 30:
LCD12864_pos(1,2);
LCD12864_writebyte("门已打开"); // HintMode=1,就是门关闭
LCD12864_pos(2,1);
LCD12864_writebyte("ID:"); //下下面显示门禁ID号
for(i=0;i<4;i++)
{
if(IDH[i]/16<10)
LCD12864_write(1,0x30+IDH[i]/16);
else LCD12864_write(1,0x41+IDH[i]/16-10);
if(IDH[i]%16<10)
LCD12864_write(1,0x30+IDH[i]%16);
else LCD12864_write(1,0x41+IDH[i]%16-10);
}
errorCount=0;
break;
case 1: //显示密码状态
LCD12864_pos(1,2);
LCD12864_writebyte("密码错误");
LCD12864_pos(2,1);
LCD12864_writebyte("请再次输入!");
break;
case 3: //显示密码错误
LCD12864_pos(1,2);
LCD12864_writebyte("信息错误");
LCD12864_pos(2,1);
LCD12864_writebyte("ID:"); ///显示ID号
for(i=0;i<4;i++)
{
if(IDH[i]/16<10)
LCD12864_write(1,0x30+IDH[i]/16);
else LCD12864_write(1,0x41+IDH[i]/16-10);
if(IDH[i]%16<10)
LCD12864_write(1,0x30+IDH[i]%16);
else LCD12864_write(1,0x41+IDH[i]%16-10);
}
errorCount++;
Delay500ms();
if(errorCount>=3){
while(1){
LCD12864_pos(1,1);
LCD12864_writebyte("刷卡错误超限"); //输入密码错误三次之后的显示界面
LCD12864_pos(2,1);
LCD12864_writebyte(" <键盘锁死> ");
}
}
break;
case 4: //显示修改密码部分的错误信息显示
LCD12864_pos(1,2);
LCD12864_writebyte("密码错误");
break;
case 5:
LCD12864_pos(1,2);
LCD12864_writebyte("修改完成");
break;
case 6:
LCD12864_pos(1,0);
LCD12864_writebyte("新密码输入不一致");
break;
}
break;
case 4:
// SetOption=0;
switch(SetOption) //首页面,功能操作选择界面 根据state的值显示选择不同的内容
{ //SetOption设置变量
case 0:
LCD12864_pos(0,0);
LCD12864_writebyte("★"); // →☆
LCD12864_pos(1,0);
LCD12864_writebyte(" ");
LCD12864_pos(2,0);
LCD12864_writebyte(" ");
break;
case 1:
LCD12864_pos(1,0);
LCD12864_writebyte("★"); // →☆
LCD12864_pos(0,0);
LCD12864_writebyte(" ");
LCD12864_pos(2,0);
LCD12864_writebyte(" ");
break;
}
LCD12864_pos(0,1); //4行显示选择内容
LCD12864_writebyte("①密码设置");
LCD12864_pos(1,1);
LCD12864_writebyte("②IC卡登记");
break;
case 5:
LCD12864_pos(0,2);
LCD12864_writebyte("密码设置"); //设置密码部分
LCD12864_pos(1,0);
LCD12864_writebyte("原密码:");
if(SetOption==0)
{
for(i=0;i<PassNum;i++) //显示星号
{
LCD12864_write(1,0x2a);
//LCD12864_write(1,0x30+InputPass[i]);
}
if(PassNum==0)
{
if(s1==0) LCD12864_write(1,0x5f); //显示数据下的横杠
else LCD12864_writebyte(" ");
}
for(i=0;i<(6-PassNum);i++)
{
LCD12864_writebyte(" ");
}
}
LCD12864_pos(2,0);
LCD12864_writebyte("新密码:"); //显示新密码
if(SetOption==1)
{
for(i=0;i<PassNum;i++)
{
LCD12864_write(1,0x2a); //星号
}
if(PassNum==0)
{
if(s1==0) LCD12864_write(1,0x5f); //横杠
else LCD12864_writebyte(" ");
}
for(i=0;i<(6-PassNum);i++)
{
LCD12864_writebyte(" ");
}
}
LCD12864_pos(3,0);
LCD12864_writebyte("再一次:"); //再次确定密码
本项目包含的所有文件都可以点击下面的名片,发送 “ 50、基于51单片机智能IC卡楼宇门禁系统 刷卡 RFID射频密码锁语音播报设计 ” 获取!
项目纯手打,不是免费的哦~
希望可以帮到你哈!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。