标题:
密码锁
[打印本页]
作者:
电子密码锁设计
时间:
2015-5-25 22:34
标题:
密码锁
/********************************************************************************
电子密码锁主函数
*******************************************************************************/
#include<reg51.h>
#include<12864.h>
#include<keypad.h>
#include<24C01.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P1^5;
sbit LED2=P1^6;
sbit INIT=P2^2;
sbit SOUND=P1^7;
uchar idata key[6]={0,0,0,0,0,0};
uchar idata iic[6]={0,1,2,3,4,5};
void press(uchar *s)
{
uchar dat;
//**************************************************
P3=0xf0; //保存第一位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,16);
}
s++;
//**************************************************
P3=0xf0; //保存第二位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,24);
}
s++;
//**************************************************
P3=0xf0; //保存第三位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,32);
}
s++;
//**************************************************
P3=0xf0; //保存第四位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,40);
}
s++;
//**************************************************
P3=0xf0; //保存第五位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,48);
}
s++;
//**************************************************
P3=0xf0; //保存第六位密码
while(P3==0xf0);
dat=key_scan();
if((dat!=0x0a)&&(dat!=0x0b))
{ *s=dat;
Left();
star_12864(star,0x05,56);
}
//**************************************************
do{P3=0xf0; //键入Enter键盘继续执行下面语句,否则等待
while(P3==0xf0);
dat=key_scan();
}while(dat!=0x0b);
}
void Delay10ms(void) //延时10ms
{
uint i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
void main()
{
uchar dat;
uchar i=0,j=0,k;
uchar x;
LED1=1;
LED2=1;
SOUND=0;
INIT=1;
if(INIT==0) //密码初始化
{
x=SendB(iic,0x50,6);
Delay10ms();
} //首先从IIC器件中读出密码以供下面输入密码进行比较
x=ReadB(iic,0x50,6);
Init_12864();
for(i=0;i<150;i++){Delay10ms();}
//**********************************若密码不正确,循环执行do{}while()********************************************
do{
LED1=1;
System(); //显示:"请输入密码"字幕
press(key);
if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码
{
true();
do
{
P3=0xf0; //键入1或2继续执行下面语句,否则等待
while(P3==0xf0);
dat=key_scan();
}while(dat!=0x01&&dat!=0x02);
if(dat==1) //开锁
{
LED1=0;
unlock();
for(i=0;i<100;i++){Delay10ms();}
continue;
}
if(dat==2) //修改密码
{
do{
System();
press(key);
again();
press(iic);
if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5]))
{
succeed(); //修改密码成功
for(i=0;i<100;i++){Delay10ms();}
Delay10ms();
x=SendB(iic,0x50,6);
Delay10ms();
x=ReadB(iic,0x50,6);break;
}
else //修改密码不成功,重新修改
{
repeat();
for(i=0;i<100;i++){Delay10ms();}
}
}while(1);
}
}
else //密码不正确,重新输入密码
{
j++;
if(j==3)
{
for(i=0;i<8;i++)
{
LED2=0;
for(k=0;k<5;k++){Delay10ms();}
LED2=1;
for(k=0;k<5;k++){Delay10ms();}
}
j=0;
}
error();
for(i=0;i<50;i++){Delay10ms();}
}
}while(1);
}
作者:
liuguoquann
时间:
2015-6-8 16:15
密码锁挺不错的 ,在这一方面可以学习
作者:
谦虚请教
时间:
2015-6-17 12:19
要用什么模块啊
作者:
tangtang_v5
时间:
2016-4-11 20:56
赞赞赞赞赞赞
作者:
湖恶虎
时间:
2016-5-18 16:56
不是c语言怎么做
作者:
诗和远方1515
时间:
2016-7-22 09:39
谢谢楼主分享资料,学习中
作者:
mqwu
时间:
2016-7-23 08:15
现在的密码锁已不再是简单的指纹识别和密码设置, 要加彩色LCD, Zigbee, WIFI和手机连接,设置IP和网关, 当密码丢失和忘记可以通过手机重新找回密码和设置密码。很简单的例子, 你的房子租给别人住了一段时间, 别人不租了, 以前的办法是更换锁芯, 现在的办法只需重置密码。
作者:
男人
时间:
2016-10-24 21:32
有仿真吗
作者:
obsession2016
时间:
2016-10-24 21:59
不知道这个密码怎么连续输入
作者:
obsession2016
时间:
2016-10-24 21:59
不知道这个密码怎么连续输入
作者:
yh211314
时间:
2016-10-29 13:39
用protus仿真仿真
作者:
asdwqw
时间:
2017-3-5 16:13
啦啦啦啦啦啦啦啦啦啦啦啦
作者:
mihuazhita
时间:
2017-3-16 21:23
谢谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1