赞
踩
目录
电子技术的快速发展使得各种各样的电子产品都朝着便携式和小型轻量化的方向发展,也使得更多的非接触式IC卡控制系统得到了发展。目前,较多使用的有公交卡,校园一卡通,门卡,金融卡片等领域。它们的各自特点决定了它们将在相当长的时期内共存发展,由于不同类型管理特性不同,通常对不同类型,甚至不同电压、使用场合不同的系统使用统一的通讯协议,这在实际使用中给我们带来了很大的方便,使一些管理做到细致,高效,准确。
本设计的智能卡卡是面向于小区,家居,酒店等传统门带来的沉重的不变,可以通过一锁一卡或一锁多卡的形式进行单独管理或集中管理。设计上我尽量选择简洁、高效的硬件,设计稳定可靠的软件。设计中介绍了系统的硬件组成,其中包括单片机电路、RC522的工作原理、场耦合通讯信息交换,软件设计方面使用了C语言开发工具,进行详细的设计和编码。以实现系统的可靠性、稳定性和经济性为目标。
硬件构成:电源5V供电、单片机最小系统、RC522 IC门禁卡模块,矩阵按键电路,LCD 12864显示屏电路,电源开关,语音播报模块。
1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2.采用AT24C02芯片可以实现存储的密码掉电保存。密码为6位,可以随意更改,更改时要输入两遍确认;
3.采用矩阵按键输入、12864液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载
4.可以使用RC522 IC开锁,可以利用RC522 IC对用户销户和开户;
5.密码输入错误3次,蜂鸣器响,报警锁死。
6.开锁关锁密码正确错误可通过语音模块播报。
- 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("再一次:"); //再次确定密码
需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。