加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

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

2小时前
87
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

电子密码锁的设计

模拟电子密码锁,实现密码设置、密码匹配、开锁,具体内容如下(以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;
	} 

 资料借鉴于此纷传

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱