当前位置:   article > 正文

50、基于51单片机智能IC卡楼宇门禁系统 刷卡 RFID射频密码锁语音播报设计(原理图+程序+开题报告+参考论文+元器件清单)_rc522卡开户和销户

rc522卡开户和销户

一、设计简介:

本设计是基于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射频密码锁语音播报设计 ” 获取!
项目纯手打,不是免费的哦~
希望可以帮到你哈! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/772161
推荐阅读
相关标签
  

闽ICP备14008679号