之前上传的所有门禁制作程序绝大部分为本人原创(只有I2C程序为网上收集本人更改),所有看到的人可以用来用作个人讨论,学习和研究。禁止完全使用或修改使用在以盈利为目的的商业用途。如有违反,本人保留一切权利。解释权归本人所有。
昨天晚上终于完成了按键操作,由于太晚没上传,大部分功能已经完成,一个简单(功能相对于专业门禁来说简单,制作对我来说相当复杂,但也是体现我的单片机和电子技术水平又有提高)的门禁可以使用了,目前的功能有:读卡开门,密码开门,加卡,删卡,更改密码,系统初始化。后期要加上:远程控制开门,加卡,删卡,监控等。下面是程序:
/*////////////////////////////////////
函数原型:void psw(void)
函数说明:密码写入EEPROM中
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
void psw(void)
{
uchar a=0,b=2,c,d,x=0;
timer=0;
while(1)
{
c=key();
if(c==12)
{
sound(1);
break;
}
if(ex==1)
{
sound(1);
ex=0;
break;
}
if(c!=0)
{
if(a<6)
{
keybuff[a]=c;
a++;
if(a==6)sound(2);
}
else if(a>6,a<13)
{
if(c!=keybuff[x])
{
sound(20);
x=0;
a=0;
break;
}
a++;
x++;
if(a==12)
{
a=0;
x=0;
b=2;
for(d=0;d<6;d++)
{
wt24c(b,keybuff[d]);
ys100us(1000);
b++;
}
SEND(&keybuff[0]);
break;
}
}
}
}
}
/*////////////////////////////////////
函数原型:bit keyscan(void)
函数说明:键盘操作扫描
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
bit keyscan(void)
{
uchar a=1,c,d;
scan=key();
if(scan!=0)
{
if(scan!=11)
{
d=scan;
timer=0;
keybuff[0]=scan;
scan=0;
while(1)
{
if(d==12)
{
sound(1);
break;
}
c=key();
if(c==12)
{
sound(1);
break;
}
else if(ex==1)
{
sound(1);
ex=0;
break;
}
else if(c!=0)
{
keybuff[a]=c;
a++;
if(a==6)
{
a=0;
SEND(&keybuff[0]);
return 1;
break;
}
}
}
}
}
return 0;
}
/*////////////////////////////////////
函数原型:void password(void)
函数说明:确认密码
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
bit password(void)
{
uchar a,b;
if(keyscan())
{
b=2;
for(a=0;a<6;a++)
{
if(keybuff[a]!=rd24c(b))
{
break;
}
b++;
if(b==8)return 1;
}
if(b!=8)
{
sound(5);
// LED=0;
return 0;
}
}
}
/*////////////////////////////////////
函数原型:void systeminit(void)
函数说明:系统初始化
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
void systeminit(void)
{
uchar a;
wt24c(0,0x02);
ys100us(1000);
wt24c(1,0xab);
ys100us(1000);
wt24c(2,0x01);
ys100us(1000);
wt24c(3,0x02);
ys100us(1000);
wt24c(4,0x03);
ys100us(1000);
wt24c(5,0x04);
ys100us(1000);
wt24c(6,0x05);
ys100us(1000);
wt24c(7,0x06);
ys100us(1000);
for(a=8;a<128;a++)
{
if(rd24c(a)!=0xff)
{
//ysms(100)
wt24c(a,0xff);
ys100us(1000);
}
}
sound(5);
}
