标题:
带I2C记忆的电子密码锁protues仿真及程序
[打印本页]
作者:
51黑ff
时间:
2016-9-25 13:35
标题:
带I2C记忆的电子密码锁protues仿真及程序
I2C芯片
0.png
(27.78 KB, 下载次数: 54)
下载附件
2016-9-25 13:33 上传
0.png
(58.79 KB, 下载次数: 56)
下载附件
2016-9-25 13:33 上传
带记忆的电子密码锁仿真工程文件及程序下载:
电子密码锁 - I2C芯片.zip
(78.97 KB, 下载次数: 46)
2016-9-25 13:35 上传
点击文件名下载附件
下载积分: 黑币 -5
源程序:
#include<reg51.h>
#include"24c02.h"
#include"1602.h"
#include"keyscan.h"
sbit GRE=P2^2;
sbit RED=P2^3;
uchar num,shu;
uchar code table[]="please input key";
uchar code you[]="you left ";
uchar code chance[]=" chance";
uchar code wait[]="please wait 5s";
uchar code change[]="you can change";
uchar code the[]="the key";
uchar code please[]="please input";
uchar code new[]=" the new key";
uchar code ok[]="ok try again";
uchar key1[6]={1,2,3,4};
uchar key[6];
uchar key_xin[6];
char key0=0;
char a,b,chan,c_xin=0;
void delayms1(uint xms)
{
uint i,j;
for(i=0;i<xms;i++)
for(j=0;j<110;j++);
}
void main()
{
init_24c02();
if(read(0xa0,0)!=0xff)
key1[0]=read(0xa0,0);
if(read(0xa0,1)!=0xff)
key1[1]=read(0xa0,1);
if(read(0xa0,2)!=0xff)
key1[2]=read(0xa0,2);
if(read(0xa0,3)!=0xff)
key1[3]=read(0xa0,3);
init_1602();
write_com(0x80);
for(num=0;num<16;num++)
{
write_date(table[num]);
delayms1(5);
}
delayms1(1000);
write_com(0x01);
write_com(0x80);
while(1)
{
shu=keyscan();
switch(shu)
{
case 7:
write_date('7');
if(c_xin%2==0)
key[key0++]=7;
else
key_xin[key0++]=7;
break;
case 8:
write_date('8');
if(c_xin%2==0)
key[key0++]=8;
else
key_xin[key0++]=8;
break;
case 9:
write_date('9');
if(c_xin%2==0)
key[key0++]=9;
else
key_xin[key0++]=9;
break;
case 4:
write_date('4');
if(c_xin%2==0)
key[key0++]=4;
else
key_xin[key0++]=4;
break;
case 5:
write_date('5');
if(c_xin%2==0)
key[key0++]=5;
else
key_xin[key0++]=5;
break;
case 6:
write_date('6');
if(c_xin%2==0)
key[key0++]=6;
else
key_xin[key0++]=6;
break;
case 1:
write_date('1');
if(c_xin%2==0)
key[key0++]=1;
else
key_xin[key0++]=1;
break;
case 2:
write_date('2');
if(c_xin%2==0)
key[key0++]=2;
else
key_xin[key0++]=2;
break;
case 3:
write_date('3');
if(c_xin%2==0)
key[key0++]=3;
else
key_xin[key0++]=3;
break;
case 0:
write_date('0');
if(c_xin%2==0)
key[key0++]=0;
else
key_xin[key0++]=0;
break;
case 'w':
key0=0;
break;
case '=':
c_xin++;
if(c_xin%2==1)
{
write_com(0x01);
for(b=0;b<12;b++)
{
write_date(please[b]);
delayms1(25);
}
write_com(0x80+0x40);
for(b=0;b<12;b++)
{
write_date(new[b]);
delayms1(25);
}
delayms1(1500);
write_com(0x01);
}
else
{
write(0xa0,0,key_xin[0]);
write(0xa0,1,key_xin[1]);
write(0xa0,2,key_xin[2]);
write(0xa0,3,key_xin[3]);
write_com(0x01);
for(b=0;b<12;b++)
{
write_date(ok[b]);
delayms(25);
}
delayms1(1500);
write_com(0x01);
key0=0;
}
break;
}
if(key0==4&&c_xin%2==0)
{
delayms1(500);
if(c_xin==0)
{
for(a=key0-1;a>=0;a--)
{
if(key[a]!=key1[a])
break;
}
}
else
{
for(a=key0-1;a>=0;a--)
{
if(key[a]!=key_xin[a])
break;
}
}
key0=0;
if(a>=0)
{
write_com(0x01);
write_date('e');
write_date('r');
write_date('r');
write_date('o');
write_date('r');
GRE=1;
RED=0;
delayms1(600);
write_com(0x01);
chan++;
if(chan<3)
{
for(b=0;b<9;b++)
{
write_date(you[b]);
delayms1(1);
}
write_date(0x30+3-chan);
for(b=0;b<7;b++)
{
write_date(chance[b]);
delayms1(10);
}
delayms1(1000);
write_com(0x01);
}
else
{
chan=0;
for(b=0;b<14;b++)
{
write_date(wait[b]);
delayms1(100);
}
delayms1(5000);
write_com(0x01);
}
}
else
{
write_com(0x01);
write_date('r');
write_date('i');
write_date('g');
write_date('h');
write_date('t');
GRE=0;
RED=1;
delayms1(1000);
write_com(0x01);
for(b=0;b<14;b++)
{
write_date(change[b]);
delayms1(25);
}
write_com(0x80+0x40);
for(b=0;b<7;b++)
{
write_date(the[b]);
delayms1(25);
}
}
}
}
}
复制代码
作者:
jamas_lee
时间:
2016-12-22 08:51
bucuocbucuo
作者:
asdjjjj
时间:
2016-12-27 21:29
真的好厉害啊
作者:
40063549
时间:
2018-4-12 20:05
请问下,这个程序能不能更改为设置八位密码呢?可以的话在那里更改?
作者:
给我多加香菜
时间:
2018-4-13 21:21
赞一个
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1