基于51单片机的密码锁【4位,数码管】(仿真)

电子密码锁的设计

模拟电子密码锁,实现密码设置、密码匹配、开锁,具体内容如下(以4*3键为例):

1.按“*”键清空当前显示

2.按1~9键可输入密码,每输入一个密码,都在数码管中显示

3.四位密码输入结束后按“#”键保存(密码设置过程)或判断(密码判断过程)

4密码输入正确则显示“并开锁(继电器所接LED亮如图一),否则显示“OFF且不开锁(LED不亮,如图二);

5.如果三次密码错误,锁死30秒

6.按*0键可重新设置密码

bit smg2=P3^2;
sbit smg3=P3^3;
sbit smg4=P3^4;
sbit k1=P2^0;//按键
sbit k2=P2^1;
sbit k3=P2^2;
sbit ss1=P2^4;
sbit ss2=P2^5;
sbit ss3=P2^6;
sbit ss4=P2^7;			
uchar code smgduan[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf,0x7f};
uchar mima0[4]={0,0,0,0};//密码存储
uchar mima1[4]={1,2,3,4};//固定密码
uchar xian[4]={0xff,0xff,0xff,0xff};
uint time=0,time0=0,time1=0;//定时

uint qidong=0;//启动计时
uchar error=0;
uchar shunxu=0;//显示顺序
uchar mode=0;//模式。输入、设置
uint sec=0;

void delay(uint i)//延时
{
	while(i--);
}

uchar key_scan()//按键检测
{
	uchar i;
	i=0xff;
	k1=0;k3=1;k2=1;
	if(!ss1)
	{
		i=1;
	}
	if(!ss2)
	{
		i=4;
	}
	if(!ss3)
	{
		i=7;
	}
	if(!ss4)
	{
		i=10;
	}
	k2=0;k1=1;
	if(!ss1)
	{
		i=2;
	}
	if(!ss2)
	{
		i=5;
	}
	if(!ss3)
	{
		i=8;
	}
	if(!ss4)
	{
		i=0;
	}
	k3=0;k2=1;
	if(!ss1)
	{
		i=3;
	}
	if(!ss2)
	{
		i=6;
	}
	if(!ss3)
	{
		i=9;
	}
	if(!ss4)
	{
		i=11;
	}
	k1=0;k2=0;k3=0;
	if(i>0)
	time=500;
	while((P2 & 0xf0)!=0xf0);

	return(i);
}

void main()//主函数
{
uchar i,j,num=0;
	led=0;
	TMOD|=0X01;//定时器初始化
	TH0=(65536-50000)/256;	//定时50ms
	TL0=(65536-50000)%256;	
	ET0=1;
	TR0=1;
	EA=1;
while(1)
{
//显示
	P0=xian[0];
	smg1=0;
	delay(100);
	smg1=1;
	P0=xian[1];
	smg2=0;
	delay(100);
	smg2=1;
	P0=xian[2];
	smg3=0;
	delay(100);
	smg3=1;
	P0=xian[3];
	smg4=0;
	delay(100);
	smg4=1;

i=key_scan();//按键检测
if(i==0)//设置密码
	{
	mode=1;
	mima0[0]=0;//输入缓存清零
	mima0[1]=0;
	mima0[2]=0;
	mima0[3]=0;
	if(mode)
	{
		xian[0]=smgduan[mima0[0]];//计算显示
		xian[1]=smgduan[mima0[1]]; 
		xian[2]=smgduan[mima0[2]]; 
		xian[3]=smgduan[mima0[3]];
	}
	else
	{
		xian[0]=0xff;
		xian[1]=0xff;
		xian[2]=0xff;
		xian[3]=0xff;
	} 

 

 资料借鉴于此纷传

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值