加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機的密碼鎖【4位,數(shù)碼管】(仿真)

11/28 08:22
1263
服務支持:
技術交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權作品,購買后不支持退換且無法轉移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關方案
  • 方案介紹
  • 相關文件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

電子密碼鎖的設計

模擬電子密碼鎖,實現(xiàn)密碼設置、密碼匹配、開鎖,具體內(nèi)容如下(以4*3鍵為例):

1.按“*”鍵清空當前顯示。

2.按1~9鍵可輸入密碼,每輸入一個密碼,都在數(shù)碼管中顯示。

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()//主函數(shù)
{
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

相關推薦

電子產(chǎn)業(yè)圖譜