精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么設計一個能夠實現上鎖開鎖功能的簡易電子鎖?

冬至子 ? 來源:好吶好吶 ? 作者:好吶好吶 ? 2023-05-02 16:02 ? 次閱讀

1 概述

1.1 選題背景

安全是現代社會更加關注的現象之一。盜竊事件常有發生,因此更需要一種工具來維護門戶安全。在此之前,掛鎖、子彈鎖和插入式鎖被廣泛使用。這些鎖結構簡單、安全性低。撬鎖入室和入室盜竊的案件越來越多。因此,我們的團隊設計了一款電子智能密碼鎖。產品的設計主要考慮了保證人們安全使用、使用方便、使用方便等綜合因素。電路產品設計包括防探鍵盤輸入、智能控制解鎖、鎖定、報警、密碼重置等功能。其次,由于采用多位密鑰設置,具有保密性好、靈敏度高等優點。

1.2 方案描述

(1)輸入密碼功能。輸入密碼時,用“*”代替真實的密碼以防密碼泄露。在輸入密碼時,具有清除前一位/或多位的密碼功能(用清除鍵)。密碼輸入完畢,按(確認/開鎖鍵)確認并生效。

(2)上鎖功能。在鎖開狀態下,通過上鎖鍵上鎖。

(3)在鎖合的狀態下,通過輸入密碼開鎖功能。開鎖時,先按確認/開鎖鍵后,再在鍵盤上輸入六位密碼,然后按確認/開鎖鍵,如果密碼正確,進入鎖開狀態。

(4)在鎖開狀態下,設置新密碼功能。按設置新密碼鍵,在鍵盤上輸入六位新的密碼,按(確認/開鎖)鍵確認,代替舊密碼。

(5)在開鎖時,如果輸入密碼三次錯誤,產生聲、光報警功能。每錯誤一次,告警一次, 若連續三次錯誤,則系統屏蔽輸入功能,直到系統復位后重新開始。

1.3 設計的目的

信息產業迅速發展的今天,我們生活中必不可少的設備都向著小型化、微型化、智能化、自動化的方向發展。避免用鑰匙開啟旋芯式鎖的一切煩惱。安全性能高,成本低,功耗低,易操作,從而實現了對鎖的電子控制,突破了傳統的機械鎖的單一性,保密性低,易撬性的缺點,具有使用靈活性好,安全系數高的優點。它的主要工作部分是將輸入密碼與設定密碼進行比較,密碼正確時,控制繼電器開鎖,密碼錯誤時,數碼管清屏,繼電器保持關閉狀態。它的電路結構簡單,密碼破譯難度較大,操作簡單。

2 方案設計

2.1 硬件選擇

基于AT89C51單片機的電子密碼鎖硬件設計選用AT89C51單片機作為本設計的核心元件, 于AT89C51單片機的電子密碼鎖硬件設計利用AT89C51單片機靈活的編程設計和豐富的I/O端口, 及其控制的準確性, 基于AT89C51單片機的電子密碼鎖實現基本的密碼鎖功能。在AT89C51單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,基于AT89C51單片機的電子密碼鎖硬件設計選用LM016L用于顯示作用。

2.2 功能介紹

當用戶需要開鎖時, 先按基于AT89C51單片機的電子密碼鎖的鍵盤開鎖鍵之后按鍵盤的數字鍵0-9輸入密碼。基于AT89C51單片機的電子密碼鎖的密碼輸完后按下確認鍵, 如果基于AT89C51單片機的電子密碼鎖的密碼輸入正確則開鎖, 不正確顯示密碼錯誤重新輸入密碼, 當三次密碼錯誤則發出報警;當用戶需要修改基于AT89C51單片機的電子密碼鎖的密碼時, 先按下基于AT89C51單片機的電子密碼鎖的鍵盤設置鍵后可以設置新密碼。新密碼輸入無誤后按基于AT89C51單片機的電子密碼鎖的確認鍵使新密碼將得到存儲, 密碼修改成功。

2.3 總體設計

圖片

圖2-1 電子密碼鎖結構框架圖

3 硬件設置

3.1 硬件組成

基于AT89C51單片機的電子密碼鎖的外圍電路包括基于AT89C51單片機的電子密碼鎖鍵盤輸入部分、基于AT89C51單片機的電子密碼鎖的顯示部分、基于AT89C51單片機的電子密碼鎖的報警部分、基于AT89C51單片機的電子密碼鎖的開鎖知識部分組成, 根據基于AT89C51單片機的電子密碼鎖的實際情況鍵盤輸入部分選擇4*4矩陣鍵盤, 基于AT89C51單片機的電子密碼鎖的顯示部分選擇字符型液晶顯示LM016L。

3.2 LCD顯示器設置

LM016L液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數據寄存器(DR)忙標志(BF),顯示數RAMDDRAM),字符發生器ROMA(CGOROM)字符發生器RAM(CGRAM),地址計數器RAM(AC)。

圖片

圖3-1 LCD顯示器

3.3 矩陣按鍵電路設計

本設計中采用的4*4矩陣共有16個鍵位,4根行線連PI口低4位,4根列線連PI口高4位。在按鍵未被按下時,每條行線與列線的交叉處互不相通,當莫格按鍵被按下后,該鍵所在的行線和列線連通。這樣PI口的高4位和低4位中各有一位互相連通。通過行列掃描檢測出這兩位,即可識別出被按下的鍵。

圖片

圖3-2 矩陣按鍵設計

基于AT89C51單片機的電子密碼鎖的輸入密碼輸入過程中可以進行退格, 輸入完成后按下確認鍵, 電子密碼鎖會將所輸入與系統密碼進行比對。若輸入密碼正確則顯示“Open”開鎖, 按下電子密碼鎖的B選擇上鎖, 鎖重新回到閉鎖狀態, 電子密碼鎖LCD液晶顯示回到初始化狀態。電子密碼鎖如果密碼輸入錯誤, 基于AT89C51單片機的電子密碼鎖的錯誤警告燈亮,電子密碼鎖的LCD液晶顯示器會顯示錯誤, 并顯示輸入錯誤限制次數。一段時間后, 進入閉鎖狀態。若連續在電子密碼鎖上操作錯誤超過3次, 一定時間內電子密碼鎖的系統會鎖定鍵盤, 并報警用以防止惡意試探密碼。如果在規定次數以內密碼輸入正確, 則鎖開, 且錯誤次數清空, 不會影響到下一次的開鎖。

3.4 報警器設置

蜂鳴器模塊部分的電路如下圖3-2 報警器設置,就是用P2.1口控制一個有源蜂鳴器發聲,作為提示音或報警音。蜂鳴器有兩個引腳,其中長腳為正極,短腳為負極。其發聲原理是電流通過電磁線圈,使電磁線圈產生磁場來驅動振動膜發聲的,因此需要一定的電流才能驅動它。由于單片機I/O引腳輸出的電流較小,基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路,一般使用三極管來放大電流就可以了。本設計中使用三極管,P2.1口高電平時三極管截至,蜂鳴器不發聲;P2.1口低電平時,三極管導通,這樣蜂鳴器的電流形成回路,發出聲音。因此,我們可以通過程序控制P2.1腳的電平來使蜂鳴器發出聲音和關閉。

圖片

圖3-3 報警器設置

3.5 系統電路設置

下圖為基于AT89C51單片機的電子密碼鎖的系統主電路圖:

圖片

圖3-4 電子密碼鎖主電路

4 程序設計

4.1 系統流程

系統初始化并讀取密碼完成后,液晶顯示"Password:”,提示用戶可以輸入密碼。此時程序即不斷測試按鍵,檢査是否有按鍵被按下。如果有,則進行按鍵識別:行列掃描法識別出的鍵位與對應BUFF的值。如果沒有按鍵按下,或者按下的按鍵沒有被識別,BUFF賦值0FFH,并跳轉至按鍵測試。

圖片

4.2 源程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define GPIO_KEY P1

sbit RS=P2^2;

sbit RW=P2^3;

sbit E=P2^4;

sbit LED = P2^0;

sbit BEEZ = P2^1;

uchar welcome[]="Hello Welcom";

uchar pw_error[]="Password Error";

uchar Lock[]="XXXXXXXXXXXXXXXX";

uchar set_pw[]="Set PassWord";

uchar input_pw[]="Please Input";

uchar pw[6]={0,0,0,0,0,0};

uchar temp_pw[6]={0,0,0,0,0,0};

uchar KeyValue;

uchar flag=0;

uchar pw_count;

uchar pw_errnum=0;

void lcd_int();

void lcd_w_cmd(unsigned char com);

void lcd_w_dat(unsigned char dat);

unsigned char lcd_r_start();

void show_Status(uchar *str);

void show_pw(uchar num);

void Input_Key();

void KeyDown(void);

void open();

void alarm();

void Lock_Device();

void delay(uint j)

{ uint x;

for(x=0;x

}

void main()

{ lcd_int();

show_Status(&input_pw);

show_pw(0);

while(1){

Input_Key();

}

}

void KeyDown(void)

{

GPIO_KEY=0x0f;

if(GPIO_KEY!=0x0f)

{ delay(3);

if(GPIO_KEY!=0x0f)

{ GPIO_KEY=0X0F;

switch(GPIO_KEY)

{

case(0X07): KeyValue=0;break;

case(0X0b): KeyValue=1;break;

case(0X0d): KeyValue=2;break;

case(0X0e): KeyValue=3;break;

}

GPIO_KEY=0XF0;

switch(GPIO_KEY)

{

case(0X70): KeyValue=KeyValue;break;

case(0Xb0): KeyValue=KeyValue+4;break;

case(0Xd0): KeyValue=KeyValue+8;break;

case(0Xe0): KeyValue=KeyValue+12;break;

}

while(GPIO_KEY!=0xf0);

return ;

}

}

KeyValue = 0xff;

}

void open() { }

void alarm()

{ uchar i;

LED = 0;

for(i = 0;i<100;i++)

{ BEEZ = ~BEEZ;

delay(100);

}

LED = 1;

}

void Lock_Device()

{ while(1)

{ alarm();

}

}

void Input_Key()

{ KeyDown();

if(KeyValue == 0xff||pw_errnum>=3)return;

if(KeyValue>=0&&KeyValue<=9)

{ if((flag == 0 || flag ==2)&&pw_count<6)

{ pw_count++;

temp_pw[pw_count] = KeyValue;

show_pw(pw_count);

}

}

else if(KeyValue == 12)

{ if(flag == 1)

{ flag = 0;

show_Status(&input_pw);

}

}

else if(KeyValue == 13)

{ if(pw_count>0)pw_count--;

show_pw(pw_count);

}

else if(KeyValue == 14)

{ if(pw_count == 6)

{ if(flag == 0)

{if(temp_pw[0] == pw[0]&&temp_pw[1] == pw[1]&&temp_pw[2] == pw[2]&&temp_pw[3] == pw[3]&&temp_pw[4] == pw[4]&&temp_pw[5] == pw[5]){

show_Status(&welcome);

flag = 1;

pw_count = 0;

pw_errnum = 0;

show_pw(pw_count);

open();

}

else{ pw_errnum++;

pw_count = 0;

show_pw(pw_count);

show_Status(&pw_error);

alarm();

if(pw_errnum>=3)

{ show_Status(&Lock);

Lock_Device();

}

}

}

else if(flag == 1)

{ }

else if(flag == 2)

{ pw[0] = temp_pw[0];

pw[1] = temp_pw[1];

pw[2] = temp_pw[2];

pw[3] = temp_pw[3];

pw[4] = temp_pw[4];

pw[5] = temp_pw[5];

show_Status(&welcome);

flag = 1; pw_count = 0; show_pw(pw_count);

}

}else{ LED = 0;

}

}

else if(KeyValue == 15)

{ if(flag == 1)

{ show_Status(set_pw);

flag = 2;

}

}

}

void show_pw(uchar num)

{ uchar i;

lcd_w_cmd(0xC5);

for(i=0;i<6;i++)

{ lcd_w_dat(' ');

}

lcd_w_cmd(0xC5);

for(i=0;i

{ lcd_w_dat('*');

}

}

void show_Status(uchar *str)

{ uchar i=0;

lcd_w_cmd(0x80);

for(i=0;str[i]!='\\0';i++)

{ lcd_w_dat(str[i]);

}

}

void lcd_int()

{ lcd_w_cmd(0x3c);

lcd_w_cmd(0x0c);

lcd_w_cmd(0x01);

lcd_w_cmd(0x06);

lcd_w_cmd(0x80);

}

void lcd_w_cmd(unsigned char com)

{ unsigned char i;

do

{i=lcd_r_start();

i&=0x80;

delay(2);

}while(i!=0);

RW=0;

delay(1);

RS=0;

delay(1);

E=1;

delay(1);

P0=com;

delay(1);

E=0;

delay(1);

RW=1;

delay(2);

}

void lcd_w_dat(unsigned char dat)

{ unsigned char i;

do

{i=lcd_r_start();

i&=0x80;

delay(2);

}while(i!=0);

RW=0;

delay(1);

RS=1;

delay(1);

E=1;

delay(1);

P0=dat;

delay(1)

E=0;

delay(1);

RW=1;

delay(2);

}

unsigned char lcd_r_start()

{ unsigned char s;

RW=1;

delay(1);

RS=0;

delay(1);

E=1;

delay(1);

s=P0;

delay(1);

E=0;

delay(1);

RW=0;

delay(1);

return(s);

}

5 仿真測試

(1)點擊proteus軟件下方最左邊按鈕,使電路開始運行,圖5-1為電路運行后狀態,LCD液晶顯示出Please Input,輸入密碼進行開鎖:

圖片

圖5-1 初始化界面

(2)通過矩陣按鍵,輸入數據,會顯示在LCD液晶上,按C按鍵可以刪除上個輸入數字。連續輸入6個數后,按D鍵系統自動判斷密碼的對錯,如圖 5-2輸入錯誤密碼后,會提示密碼錯誤,并提示點擊任意按鍵退出:

圖片

圖5-2 輸入錯誤密碼

(3)按鍵輸入000000后,LCD液晶會顯示密碼正確,同時LED“鎖”被打開,LED顯示Hello Welcome:

圖片

圖5-3 輸入正確密碼

(4)在開鎖狀態下,點擊F鍵,此時聽到兩聲提示,輸入新的六位密碼并按“D”(重設)鍵,會聽到兩聲提示音,表示重設密碼成功。

圖片

圖5-4 重新設置密碼

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 繼電器
    +關注

    關注

    132

    文章

    5320

    瀏覽量

    148584
  • 控制器
    +關注

    關注

    112

    文章

    16203

    瀏覽量

    177415
  • LCD顯示器
    +關注

    關注

    0

    文章

    87

    瀏覽量

    20162
  • AT89C51單片機

    關注

    1

    文章

    56

    瀏覽量

    17992
收藏 人收藏

    評論

    相關推薦

    基于安卓手機的FPGA藍牙通信技術智能電子鎖控制系統

    ,使用FPGA藍牙通信技術設計了基于FPGA藍牙通信技術的智能電子鎖系統。通過手機APP直接控制電子鎖,對電子鎖進行雙重加密處理,具有開鎖、修改密碼,管理員控制用戶
    的頭像 發表于 11-27 14:59 ?4946次閱讀
    基于安卓手機的FPGA藍牙通信技術智能<b class='flag-5'>電子鎖</b>控制系統

    誰能告訴我 做一個語音電子鎖,就能夠用特定人的聲音開...

    誰能告訴我 ,設計語音電子鎖,要能夠用特定人的聲音開鎖,用什么語音識別芯片可以做到呢?
    發表于 11-15 20:46

    智能電子鎖

    控,大家隨時隨地都會帶著手機,但是鑰匙不定會每次都帶,在很多時候鑰匙忘記帶的時候很難講門打開,但是我就是想通過手機的控制去打開鎖,目前只是想法的階段,還沒有想好具體的技術路線,希
    發表于 04-25 11:38

    電路設計,簡易電子鎖

    求高人指點:簡易電子鎖(二)功能要求如下:插入電子“鑰匙”后“”打開(LED燈亮),鑰匙拔出或插入的鑰匙不對
    發表于 11-22 17:17

    汽車電子鎖有什么功能

    汽車電子鎖有多種形式,常見的是電子鑰匙式電子鎖。這種電子鎖的鑰匙內藏電子電路存儲密碼,通過光、電和磁性等多種形式和主控電路聯系。
    發表于 03-19 09:01

    基于stm32c8t6的電子鎖設計

    基于stm32的電子鎖項目總結所做的小項目,記錄下出現的問題項目材料1、stm32f103c8t6最小系統板2、1.8寸LCD屏幕3、四位二相步進電機4、MPU6050六軸陀螺儀
    發表于 08-06 09:14

    電子鎖原理圖

    電子鎖是學習單片機的好的項目,畢業設計什么的多可以用這電子鎖
    發表于 12-09 16:58 ?33次下載

    基于單片機的短信收發智能電子鎖的設計與實現

    的智能電子鎖。 防盜已進入電子時代,原有的彈子、將軍將被淘汰,指紋、錄像
    發表于 11-04 10:27 ?6次下載
    基于單片機的短信收發智能<b class='flag-5'>電子鎖</b>的設計與<b class='flag-5'>實現</b>

    電子鎖原理與電子鎖的組成及應用

    電子鎖種通過密碼輸入來控制電路或是芯片工作(訪問控制系統),從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品?,F在應用較廣的電子門鎖
    發表于 06-08 14:07 ?9408次閱讀

    電子鎖的組成及原理介紹

    電子鎖的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品?,F在應用較廣的電子密碼是以芯片為核心,通過編程來實現的。
    發表于 06-20 11:30 ?4.1w次閱讀

    隨著技術的不斷普及 智能電子鎖也開始逐漸普及

    隨著技術的不斷普及,智能電子鎖是在近幾年也開始逐漸普及,并大范圍使用。智能電子鎖開鎖功能多樣,是消費者選擇它的主要原因之,畢竟忘帶鑰匙這
    發表于 05-23 15:03 ?750次閱讀

    智能家居電子鎖方案原理電路

    智能家居電子鎖是當代物聯網(LOT)的智能產品之,目前的智能功能包括遠程開鎖、智能防盜、指紋開鎖
    的頭像 發表于 06-29 10:59 ?6169次閱讀

    不是所有的電子鎖都叫智能

    充其量是電子鎖,或者更準確地說它是電子鎖。? 那么電子鎖有什么功能呢?
    發表于 10-09 15:10 ?906次閱讀

    電子鎖防水測試機如何確定電子鎖防水性能

    電子鎖電子鎖防水測試機是怎么確定電子鎖防水性能的?指的是種通過輸入“密碼”來控制鎖具內的電路或者是芯片工作,進而控制實現
    發表于 09-30 09:58 ?682次閱讀

    Yale耶魯電子鎖好用嗎,耶魯電子鎖的七功能

    Yale耶魯電子鎖將鎖具的便利性提升到了新的高度。尤其是很多實用功能的植入,使得這款經典耶魯電子鎖YDM7116成為安全、便利的鎖具產品
    的頭像 發表于 11-15 10:18 ?3967次閱讀
    Yale耶魯<b class='flag-5'>電子鎖</b>好用嗎,耶魯<b class='flag-5'>電子鎖</b>的七<b class='flag-5'>個</b>新<b class='flag-5'>功能</b>