加入星計劃,您可以享受以下權(quán)益:

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

基于51單片機LCD1602矩陣鍵盤密碼鎖proteus仿真設(shè)計

07/31 08:58
1882
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

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

本設(shè)計僅供學(xué)習(xí)參考
基于51單片機LCD1602矩陣鍵盤密碼鎖proteus仿真設(shè)計(程序+仿真)
原理圖Altium Designer
仿真圖proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
編號C0035
騰訊文檔】C0035 網(wǎng)盤鏈接

資料下載鏈接

一、主要功能:

1.按鍵設(shè)置6位密碼,輸入密碼若密碼正確,則鎖打開。顯示open!
2.密碼可以自己修改(6位密碼),必須是鎖打開時才能改密。為防止誤操作,修改密碼得輸入兩次。
3.若密碼輸入錯誤次數(shù)超過3次,蜂鳴器報警并且鎖定鍵盤。
4.24C02有復(fù)位、掉電保存密碼功能。
5.液晶屏亮度會隨光線自動調(diào)整。

二、按鍵說明:

排列方式:
1 2 3 A
4 5 6 B
7 8 9 C
0 # D

  • ABC無定義、 *號鍵為取消當前操作、#號鍵為確認、D鍵為修改密碼

三、其他說明:

1、首次使用時輸入:131420,對密碼進行初始化,當顯示:initpassword,證明密碼初始化完成,此時的密碼為:000000。然后可以改密了。(如密碼忘記就再輸入131420初始化,然后密碼就是000000了,不要告訴別人哦~~~)
2、按下 * 鍵或復(fù)位鍵,可以關(guān)鎖并退出。
3、當輸入密碼錯誤后,報警并鎖定鍵盤3秒鐘。
4、修改密碼:在開鎖狀態(tài)下,再次輸入正確的密碼并按下 # 鍵,此時聽到兩聲提示,輸入新的六位密碼并按 D 鍵,再重復(fù)輸入一次新密碼并按 D ,會聽到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲。如兩次輸入的新密碼不一樣,則重設(shè)密碼失敗。

仿真圖(提供源文件):

仿真圖
說明

程序(提供源文件源碼):

LCD1602

//==================================================================================================
//=======================================LCD1602====================================================
//==================================================================================================

#define yi 0x80 //LCD第一行的初始位置,因為LCD1602字符地址首位D7恒定為1(100000000=80)
#define er 0x80+0x40 //LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)


//----------------延時函數(shù),后面經(jīng)常調(diào)用----------------------
void delay(uint xms)//延時函數(shù),有參函數(shù)
{
	uint x,y;
	for(x=xms;x>0;x--)
	 for(y=110;y>0;y--);
}

//--------------------------寫指令---------------------------
void write_1602com(uchar com)//****液晶寫入指令函數(shù)****
{
	lcd1602_rs=0;//數(shù)據(jù)/指令選擇置為指令
	lcd1602_rw=0; //讀寫選擇置為寫
	P0=com;//送入數(shù)據(jù)
	delay(1);
	lcd1602_en=1;//拉高使能端,為制造有效的下降沿做準備
	delay(1);
	lcd1602_en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令
}

//-------------------------寫數(shù)據(jù)-----------------------------
void write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****
{
	lcd1602_rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù)
	lcd1602_rw=0; //讀寫選擇置為寫
	P0=dat;//送入數(shù)據(jù)
	delay(1);
	lcd1602_en=1; //en置高電平,為制造下降沿做準備
	delay(1);
	lcd1602_en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令
}

//-------------------------初始化-------------------------
void lcd_init(void)
{
	write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù)
	write_1602com(0x0c);//開顯示不顯示光標
	write_1602com(0x06);//整屏不移動,光標自動右移
	write_1602com(0x01);//清顯示
}

按鍵和聲音提示

//=====================按鍵檢測并返回按鍵值===============================
unsigned char keynum(void)
{
 	unsigned char row,col,i;
 	P1=0xf0;
 	if((P1&0xf0)!=0xf0)
 	{
	   	Delay5Ms();
        Delay5Ms();
   		if((P1&0xf0)!=0xf0)
		{
    		row=P1^0xf0;          //確定行線
			i=0;
			P1=a[i];	          //精確定位
			while(i<4)
			{
	 			if((P1&0xf0)!=0xf0)
	  			{
	   				col=~(P1&0xff);	  //確定列線
	   				break;            //已定位后提前退出   
	  			}
				else 
	  			{
	   				i++;
	   				P1=a[i];
	  			}
			}
		}
		else 
		{
			return 0;
		}
		while((P1&0xf0)!=0xf0);
		return (row|col);	 		//行線與列線組合后返回
 	}
 	else return 0;	         		//無鍵按下時返回0
}
//=======================一聲提示音,表示有效輸入========================
void OneAlam(void)
{
	ALAM=0;
	Delay5Ms();
    ALAM=1;
}
//========================二聲提示音,表示操作成功========================
void TwoAlam(void)
{
	ALAM=0;
	Delay5Ms();
    ALAM=1;
    Delay5Ms();
	ALAM=0;
	Delay5Ms();
    ALAM=1;
}
//========================三聲提示音,表示錯誤========================
void ThreeAlam(void)
{
	ALAM=0;
	Delay5Ms();
    ALAM=1;
    Delay5Ms();
	ALAM=0;
	Delay5Ms();
    ALAM=1;
    Delay5Ms();
	ALAM=0;
	Delay5Ms();
    ALAM=1;
}

重置密碼

//========================重置密碼==================================================
//==================================================================================
void ResetPassword(void)
{
	unsigned char i;	
	unsigned char j;
	if(pass==0)
	{
		pass=0;			   
		DisplayChar();	   //顯示錯誤
		ThreeAlam();	   //沒開鎖時按下重置密碼報警3聲
	}
	else				   //開鎖狀態(tài)下才能進行密碼重置程序
	{
    	if(ReInputEn==1)   //開鎖狀態(tài)下,ReInputEn置1,重置密碼允許
		{
			if(N==6)	   //輸入6位密碼
			{
				ReInputCont++;			//密碼次數(shù)計數(shù)	
				if(ReInputCont==2)		//輸入兩次密碼
				{
					for(i=0;i<6;)
					{
						if(TempPassword[i]==InputData[i])	//將兩次輸入的新密碼作對比
							i++;
						else								//如果兩次的密碼不同
						{
							//DisplayListChar(0,1,Error);
							write_1602com(er);
							for(j=0;j<16;j++)
							{
								write_1602dat(Error[j]);	//顯示錯誤Error
							}
							ThreeAlam();			//錯誤提示	
							pass=0;					//關(guān)鎖
							ReInputEn=0;			//關(guān)閉重置功能,
							ReInputCont=0;
							DisplayChar();
							break;
						}
					} 
					if(i==6)
					{
						//DisplayListChar(0,1,ResetOK);
						write_1602com(er);
						for(j=0;j<16;j++)
						{
							write_1602dat(ResetOK[j]);	  //密碼修改成功,顯示
						}

						TwoAlam();				//操作成功提示
					 	WrToROM(TempPassword,0,6);		//將新密碼寫入24C02存儲
						ReInputEn=0;
					}
					ReInputCont=0;
					CorrectCont=0;
				}
				else					  //輸入一次密碼時
				{
					OneAlam();
					//DisplayListChar(0, 1, again); 		//顯示再次輸入一次
					write_1602com(er);
					for(j=0;j<16;j++)
					{
						write_1602dat(again[j]);			//顯示再輸入一次
					}					
					for(i=0;i<6;i++)
					{
						TempPassword[i]=InputData[i];		//將第一次輸入的數(shù)據(jù)暫存起來						
					}
				}

			N=0;						//輸入數(shù)據(jù)位數(shù)計數(shù)器清零
		   }
	    }
	}
}

在這里插入圖片描述

  • 設(shè)計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
STM32H750VBT6 1 STMicroelectronics High-performance and DSP with DP-FPU, Arm Cortex-M7 MCU with 128 Kbytes of Flash memory, 1MB RAM, 480 MHz CPU, L1 cache, external memory interface, JPEG codec, HW crypto, large set of peripherals

ECAD模型

下載ECAD模型
$27.62 查看
STM32F429ZIT6 1 STMicroelectronics High-performance advanced line, Arm Cortex-M4 core with DSP and FPU, 2 Mbytes of Flash memory, 180 MHz CPU, ART Accelerator, Chrom-ARTAccelerator, FMC with SDRAM, TFT

ECAD模型

下載ECAD模型
$24.77 查看
MPC5554MZP132 1 Freescale Semiconductor 32-BIT, FLASH, 132MHz, MICROCONTROLLER, PBGA416, 27 X 27 MM, 1 MM PITCH, PLASTIC, MS-034AAL-1, TEBGA-416
$80.8 查看

相關(guān)推薦

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