国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Proteus仿真】【51單片機(jī)】電子密碼鎖設(shè)計

這篇具有很好參考價值的文章主要介紹了【Proteus仿真】【51單片機(jī)】電子密碼鎖設(shè)計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


一、功能簡介

本項目使用Proteus8仿真51單片機(jī)控制器,使用LCD1602液晶、矩陣按鍵、蜂鳴器、EEPROM模塊、繼電器模塊等。

系統(tǒng)運行后,LCD1602顯示密碼輸入提示界面,系統(tǒng)存儲在EEPROM的初始密碼為123456,
用戶可通過矩陣按鍵S1-S10輸入數(shù)值0-9,當(dāng)在密碼輸入過程中有誤,可按S11鍵回刪并重新輸入。當(dāng)密碼輸入完成后,可按S12鍵確認(rèn),校驗密碼是否正確,如密碼輸入正確,電磁閥工作開門,對應(yīng)D3指示燈點亮;如密碼輸入錯誤,LCD顯示錯誤信息,可重新輸入密碼,最多可輸入3次,如還輸入錯誤,系統(tǒng)鎖死,需等待10S鐘解鎖系統(tǒng)方可再次輸入。當(dāng)管理員需要更換密碼時,可按下S13鍵,LCD顯示更換密碼界面,此時可通過S1-S10輸入修改密碼,修改過程中如需更改可按S11鍵回刪并重新輸入。修改密碼完成后可按下S12鍵保存新密碼至EEPROM中,更新的密碼可斷電不丟失。


二、軟件設(shè)計

/*
作者:嗨小易(QQ:3443792007)
*/




//定時器0中斷函數(shù)
void time0() interrupt 1
{
	static u32 i=0;
	
	TH0=0XDC;	//給定時器賦初值,定時10ms
	TL0=0X00;

	i++;
	if(i==(100*AFRESH_TIME))//時間到
	{
		i=0;
		time0_stop();//關(guān)閉定時器
		lock_sys_control.time_flag=1;		
	}
}

//主界面,輸入密碼提示
void main_display(void)
{
	memset(lock_sys_control.password,0,6);//密碼數(shù)據(jù)清零
	lock_sys_control.time_flag=0;
	lock_sys_control.resive_flag=0;
	delay_ms(500);
	lcd1602_clear();
	lcd1602_show_string(0,0,"Password Input:");			
}

//密碼輸入錯誤次數(shù)超過規(guī)定值,等待指定時間后可重新輸入
void password_error_wait_afreah_input(void)
{
	time0_start();//開啟定時器
	lcd1602_clear();
	lcd1602_show_string(0,0,"Error Too much!");
	lcd1602_show_string(0,1,"Please Wait...");
	while(1)
	{
		if(lock_sys_control.time_flag)//時間到
		{
			RELAY=1;
			lock_sys_control.error_cnt=0;
			break;	
		}			
	}		
}

//密碼輸入、修改
void password_input(void)
{
	u8 key=0;
	u8 cnt=0;

	while(1)
	{
		key=key_matrix_flip_scan();

		//密碼輸入
		if(key>0&&key<=10)//輸入有效數(shù)字0-9,排除無效鍵輸入
		{
			beep_alarm(100,10);//提示音
			if(cnt<6)//有效密碼位數(shù),確保6位有效
			{
				if(lock_sys_control.resive_flag==0)
				{
					lock_sys_control.password[cnt]=key-1;//記錄用戶輸入密碼
					if(PASSWORD_SHOW_HIDE==0)
						lcd1602_show_num(cnt,1,'*',0);
					else
						lcd1602_show_num(cnt,1,lock_sys_control.password[cnt],1);
				}	
				else//修改密碼狀態(tài)
				{
					lock_sys_control.save_password[cnt]=key-1;//記錄驗證密碼
					lcd1602_show_num(cnt,1,lock_sys_control.save_password[cnt],1);	
				}	
				cnt++;	
			}								
		}
		
		//輸入撤回
		if(cnt>0)//有輸入密碼,撤回才有效
		{
			if(key==11)//撤回鍵
			{
				beep_alarm(100,10);
				cnt--;
				if(lock_sys_control.resive_flag==0)
				{
					lock_sys_control.password[cnt]=' ';
					lcd1602_show_num(cnt,1,lock_sys_control.password[cnt],0);	
				}
				else//修改密碼狀態(tài)
				{
					lock_sys_control.save_password[cnt]=' ';
					lcd1602_show_num(cnt,1,lock_sys_control.save_password[cnt],0);	
				}		
			}		
		}
		
		//密碼確認(rèn)
		if(key==12)//密碼確認(rèn)鍵
		{
			beep_alarm(100,10);
			if(lock_sys_control.resive_flag==0)
			{
				if(lock_sys_control.error_cnt<ERROR_PASSWORD_CNT)//密碼輸錯,還可繼續(xù)重新輸入
				{
					if(memcmp(lock_sys_control.password,lock_sys_control.save_password,6))//密碼錯誤
					{
						lock_sys_control.error_cnt++;
						lcd1602_show_string(0,1,"Password Error!");
						//密碼錯誤,不可繼續(xù)輸入,需等待10S重新輸入
						if(lock_sys_control.error_cnt==ERROR_PASSWORD_CNT)
							password_error_wait_afreah_input();	
						break;				
					}
					else//密碼正確,開鎖
					{
						RELAY=0;
						lock_sys_control.error_cnt=0;
						lcd1602_show_string(0,1,"Password OK!");
						delay_ms(2000);
						RELAY=1;
						break;		
					}		
				}	
			}
			else//修改密碼狀態(tài)
			{
				lock_sys_control.resive_flag=0;//修改完成
				lcd1602_show_string(0,1,"Password Set OK!");
				at24cxx_write_str(lock_sys_control.save_password,0,6);//存儲新密碼
				break;			
			}		
		}
		
		//密碼修改
		if(key==13)//密碼修改鍵
		{
			beep_alarm(100,10);
			lock_sys_control.resive_flag=1;
			cnt=0;
			lcd1602_clear();
			lcd1602_show_string(2,0,"Password Set:");	
		}		
	}	
}


//數(shù)字密碼鎖控制系統(tǒng)
void password_lock_control_sys(void)
{
	u8 init_flag=0;
	u8 i=0;
	
	lcd1602_init();//LCD1602初始化
	time0_init();//初始化定時器0

	init_flag=At24c02Read(250);
	if(init_flag!=0xAA)//初始化一次,防止重復(fù)初始化密碼
	{
		At24c02Write(250,0xAA);
		for(i=1;i<7;i++)lock_sys_control.save_password[i-1]=i;
		delay_ms(10);
		at24cxx_write_str(lock_sys_control.save_password,0,6);//寫入初始密碼123456	
	}
	at24cxx_read_str(lock_sys_control.save_password,0,6);//讀取密碼

	while(1)
	{
		main_display();//主界面顯示
		password_input();//密碼輸入、修改					
	}	
}



三、實驗現(xiàn)象

演示視頻:https://space.bilibili.com/444388619

電子密碼鎖設(shè)計,【Proteus仿真】【51單片機(jī)】趣味項目設(shè)計,proteus,51單片機(jī),單片機(jī)

電子密碼鎖設(shè)計,【Proteus仿真】【51單片機(jī)】趣味項目設(shè)計,proteus,51單片機(jī),單片機(jī)
電子密碼鎖設(shè)計,【Proteus仿真】【51單片機(jī)】趣味項目設(shè)計,proteus,51單片機(jī),單片機(jī)
電子密碼鎖設(shè)計,【Proteus仿真】【51單片機(jī)】趣味項目設(shè)計,proteus,51單片機(jī),單片機(jī)


聯(lián)系作者

專注于51單片機(jī)、STM32、國產(chǎn)32、DSP、Proteus、ardunio、ESP32、物聯(lián)網(wǎng)軟件開發(fā),PCB設(shè)計,視頻分享,技術(shù)交流。文章來源地址http://www.zghlxwxcb.cn/news/detail-538586.html

到了這里,關(guān)于【Proteus仿真】【51單片機(jī)】電子密碼鎖設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 51單片機(jī)簡易電子密碼鎖

    51單片機(jī)簡易電子密碼鎖

    由于作業(yè)需求,在昨天天晚上寫了一個通過lcd1602,i2c,eeprom,按鍵,實現(xiàn)的可以設(shè)置密碼的簡易電子鎖, ? ?首先點擊k15(回車鍵)進(jìn)入 ?進(jìn)入后可以點擊0-9按鍵輸入6位密碼,錯誤則顯示error,5s后重新顯示密碼輸入頁面,密碼正確則進(jìn)入。 ? ?進(jìn)入后可以點擊Esc鍵設(shè)置密碼,進(jìn)入設(shè)

    2024年02月02日
    瀏覽(28)
  • 基于51單片機(jī)的電子密碼鎖

    基于51單片機(jī)的電子密碼鎖

    主要功能: 1、6位密碼開鎖 可以修改用戶密碼和管理員密碼 斷電記憶 3次錯誤報警鎖住鍵盤

    2024年02月11日
    瀏覽(26)
  • 基于STM32單片機(jī)的密碼鎖(Proteus仿真、程序)

    基于STM32單片機(jī)的密碼鎖(Proteus仿真、程序)

    由STM32F103單片機(jī)最小系統(tǒng)+ 4*4矩陣鍵盤+LCD1602液晶顯示+蜂鳴器+繼電器模塊 1、采用STM32F103為主控芯片 2、通過4*4矩陣鍵盤實現(xiàn)密碼輸入、功能鍵等排列如下 1 ? ? 2 ? ?3 ? ? 刪除 4 ? ? 5 ? ?6 ? ? 修改密碼 7 ? ? 8 ? ?9 ? ? 重新輸入 返回 ?0 ? 確認(rèn) ? 緊急開鎖鍵 3、每按下一次

    2024年02月07日
    瀏覽(29)
  • 基于51單片機(jī)的電子密碼鎖設(shè)計

    基于51單片機(jī)的電子密碼鎖設(shè)計

    一.硬件方案 ????????本系統(tǒng)由STC89C52單片機(jī)、4*4矩陣鍵盤,蜂鳴器,復(fù)位電路和晶振電路、繼電器等組成,4*4鍵盤主要用于密碼的輸入和修改,蜂鳴器報警,復(fù)位電路和晶振電路與STC89C52單片機(jī)組成單片機(jī)最小系統(tǒng)。它具有設(shè)置、修改6位用戶密碼、輸錯報警、密碼錯誤報

    2024年02月16日
    瀏覽(27)
  • 51單片機(jī)學(xué)習(xí)--矩陣鍵盤、電子密碼鎖

    51單片機(jī)學(xué)習(xí)--矩陣鍵盤、電子密碼鎖

    矩陣鍵盤的模塊原理圖: 功能:按下矩陣按鍵,在LCD上顯示對應(yīng)的數(shù)值。 采用模塊化編程,在此只給出MatrixKey.c 和 main.c 兩部分代碼 這里要注意必須先判斷KeyNum是否為0,否則while不斷循環(huán)會不斷顯示0,導(dǎo)致看不到按下按鈕顯示的數(shù)字 要利用寫好的矩陣鍵盤來制作一個密碼鎖

    2024年02月16日
    瀏覽(26)
  • 基于STM32單片機(jī)的密碼鎖(Proteus仿真+程序+報告)

    基于STM32單片機(jī)的密碼鎖(Proteus仿真+程序+報告)

    3-基于STM32單片機(jī)的密碼鎖 功能描述如下: ?????????由STM32F103單片機(jī)最小系統(tǒng)+ 4*4矩陣鍵盤+LCD1602液晶顯示+蜂鳴器+繼電器模塊; 1、采用STM32F103為主控芯片。 2、通過4*4矩陣鍵盤實現(xiàn)密碼輸入、功能鍵等排列如下 1? ? ?2? ? 3? ? ?刪除 4? ? ?5? ? 6? ? ?修改密碼 7? ?

    2024年02月08日
    瀏覽(25)
  • (含代碼)基于51單片機(jī)電子密碼鎖設(shè)計

    (含代碼)基于51單片機(jī)電子密碼鎖設(shè)計

    一.硬件說明 采用STC89C51作為主控芯片,結(jié)合矩陣按鍵輸入模塊、數(shù)碼管顯示模塊、LCD1602液晶顯示、LED、蜂鳴器報警器等電路模塊實現(xiàn)開鎖、上鎖、報警、密碼更改等功能,設(shè)計一款可修改密碼且具有報警功能的液晶顯示電子密碼鎖。 主要由STM32單片機(jī)+最小系統(tǒng)+LCD1602液晶顯

    2024年01月16日
    瀏覽(29)
  • 基于51單片機(jī)密碼鎖(修改密碼,串口上鎖解鎖,仿真)

    基于51單片機(jī)密碼鎖(修改密碼,串口上鎖解鎖,仿真)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 目錄 一、仿真圖 二、步驟 1.矩陣按鍵 2.串口配置 3.串口接收數(shù)據(jù)判斷 4.修改密碼+密碼輸入 總結(jié) 前言 LCD1602+矩陣按鍵+串口上鎖解鎖+修改密碼 ??提供參考 代碼如下: 代碼如下(示例): 這里把判斷拿

    2024年02月15日
    瀏覽(31)
  • c51單片機(jī)16個按鍵密碼鎖源代碼(富proteus電路圖)

    c51單片機(jī)16個按鍵密碼鎖源代碼(富proteus電路圖)

    ?注意了:這個代碼你是沒法直接運行的,但是如果你看得懂,隨便改一改不超過1分鐘就可以用

    2024年02月13日
    瀏覽(23)
  • 基于AT89C51單片機(jī)的8位密碼鎖仿真與實物制作

    基于AT89C51單片機(jī)的8位密碼鎖仿真與實物制作

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/88657969?spm=1001.2014.3001.5503 源碼獲取 C 源碼+仿真圖+畢業(yè)設(shè)計+實物制作步驟+01 摘要 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的

    2024年01月23日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包