久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4501|回復: 1
打印 上一主題 下一主題
收起左側

八位數字電子密碼鎖設計論文與單片機程序等資料下載

[復制鏈接]
跳轉到指定樓層
樓主


電子密碼鎖
摘要本文的電子密碼鎖利用數字邏輯電路,實現對門的電子控制,并且有各種附加電路保證電路能夠安全工作,具有極高的安全系數。
關鍵詞】電子密碼鎖、電壓比較器、555單穩態電路、計數器、JK觸發器、UPS電源。
一、引言
隨著人們生活水平的提高,如何實現家庭防盜這一問題也變的尤其的突出,傳統的機械鎖由于其構造的簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數高,受到了廣大用戶的親呢。
設計本課題時構思了兩種方案:一種是用以AT89C2051為核心的單片機控制方案;另一種是用以74LS112雙JK觸發器構成的數字邏輯電路控制方案。考慮到單片機方案原理復雜,而且調試較為繁瑣,所以本文采用后一種方案。
二、總體方案設計
1、設計思路
共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過40秒(一般情況下,用戶不會超過40秒,若用戶覺得不便,還可以修改)電路將報警80秒,若電路連續報警三次,電路將鎖定鍵盤5分鐘,防止他人的非法操作。
2總體方框圖
三、設計原理分析
電路由兩大部分組成:密碼鎖電路和備用電源(UPS),其中設置UPS電源是為了防止因為停電
造成的密碼鎖電路失效,使用戶免遭麻煩。
密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測、開鎖電路、執行電路、報警電路、鍵盤輸
次數鎖定電路。
1、鍵盤輸入、密碼修改、密碼檢測、開鎖及執行電路 .  
其電路如下圖3-1-1所示:
                         圖3-1-1鍵盤輸入、密碼修改、密碼檢測、開鎖、執行電路
開關K1~K9是用戶的輸入密碼的鍵盤,用戶可以通過開關輸入密碼,開關兩端的電容是為了提高開關速度,電路先自動將IC1~IC4清零,由報警電路送來的清零信號經C25送到T11基極,使T11導通,其集電極輸出低電平,送往IC1~IC4,實現清零。                                                                                       
密碼修改電路由雙刀雙擲開關S1~S4組成(如圖3-1-2所示), 它是利用開關切換的原理實現密碼的修改。例如要設定密碼為1458,可以撥動開關S1向左,S2向右,S3向左,S4向右,即可實現密碼的修改,由于輸入的密碼要經過S1~S4的選擇,也就實現了密碼的校驗。本電路有16組的密碼可供修改。
3-1-2密碼修改電路                                                
由兩塊74LS112(雙JK觸發器,包含IC1~IC4)組成密碼檢測電路。由于IC1處于計數狀態,當用戶按下第一個正確的密碼后,CLK端出現了一個負的下降沿,IC1計數,Q端輸出為高電平,用戶依次按下有效的密碼,IC2~IC3也依次輸出高電平,送入與門IC5,使其輸出開鎖的高電平信號送往IC13的2腳,執行電路動作,實現開鎖。
執行電路是由一塊555單穩態電路(IC13),以及由T10、              T11組成的達林頓管構成。若IC13的2腳輸入一高電平,則3腳輸出高電平,使T10導通,T11導通,電磁閥開啟,實現開門,同時T10集電極上接的D5(綠色發光二極管)發亮,表示開門,20秒后,555電路狀態翻轉,電磁閥停止工作,以節電。其中電磁閥并聯的電容C24使為了提高電磁閥的力矩。
2報警電路
報警電路實現的功能是:當輸入密碼的時間超過40秒(一般情況下用戶輸入不會超過),電路報警80秒,防止他人惡意開鎖。
電路包含兩大部分,2分鐘延時和40秒延時電路。其工作原理是當用戶開始輸入密碼時,電路開始2分鐘計時,超出40秒,電路開始80秒的報警。圖如下3-2-1所示
             3-2-1報警電路
                                                                                                                           有人走近門時,觸摸了TP端(TP端固定在鍵盤上,其靈敏度非常高,保證電路可靠的觸發),由于人體自身帶的電,使IC10的2腳出現低電平,使IC10的狀態發生翻轉,其3腳輸出高電平,T5導通(可以通過R12控制T1的基極電流),其集電極接的黃色發光二極管D3發光,表示現在電子鎖處于待命狀態,T6截止,C4開始通過R14充電(充電時間是40秒,此時為用戶輸入密碼的時間,即用戶輸入密碼的時間不能超過40秒,否則電路就開始報警, 由于用戶經常輸入密碼,而且知道密碼,一般輸入密碼的時間不會超過40秒),IC2開始進入延時40秒的狀態。
開始報警:當用戶輸入的密碼不正確或輸入密碼的時間超過40秒,IC11的2腳電位隨著C4的充電而下降,當電位下降到1/3Vcc時(即40秒延時結束時候),3腳變成高電位(延時時是低電平),通過R15使(R15的作用是為了限制T7的導通電流防止電流過大燒毀三極管)T7導通,其集電極上面接的紅色發光二極管D4發亮,表示當前處于報警狀態,T8也隨之而導通,使蜂鳴器發聲,令賊人生怯,實現報警.
停止報警:當達到了80秒的報警時間,IC10的6,7腳接的電容C5放電結束,IC10的3腳變成低電平,T5截止,T6導通,強制使強制電路處于穩態,IC11的3腳輸出低電平,使T7,T8截止,蜂鳴器停止報警;或者用戶輸入的密碼正確,則有開鎖電路中的T10集電極輸出清除報警信號,送至T12(PNP),T12導通,強制使T7基極至低電位,解除報警信號。
3、報警次數檢測及鎖定電路
若用戶操作連續失誤超過3次,電路將鎖定5分鐘。其工作原理如下:當電路報警的次數超過3次,由IC9(74161)構成的3位計數器將產生進位,通過IC7,輸出清零信號送往74161的清零端,以實現重新計數。經過IC8(與門),送到IC12(555)的2腳,使3腳產生5分鐘的高電平鎖定脈沖(其脈沖可由公式T=1.1RC計算得出),經T9倒相,送IC6輸入端,使IC6輸出低電平,使IC13不能開鎖,到鎖定的目的。電路圖如下3-3-1所示:
                            3-3-1報警次數檢測及鎖定電路
4、備用電源電路
為了防止停電情況的發生,本電路后備了UPS電源,它包括市電供電電路,停電檢測電路,電子開關切換電路,蓄電池充電電路和蓄電池組成。其電路圖如下3-4-1所示:

220V市電通過變壓器B降壓成12V的交流電,再經過整流橋整流,7805穩壓到5V送往電子切換電路,由于本電路功耗較少,所以選用10W的小型變壓器。

                  3-4-1電源電路
由R8,R9,R6,R7及IC14構成電壓比較器,正常情況下,V+<V- IC14輸出高電平,繼電器的常閉觸點和市電相連;當市電斷開,V+>V- IC14輸出高電平,由T3,T4構成的達林頓管使繼電器J開啟,將其常開觸電將蓄電池和電路相連,實現市電和蓄電池供電的切換,保證電子密碼鎖的正常工作(視電池容量而定持續時間)。其電路圖如下3-4-2所示:
                      圖3-4-2停電檢測及電子開關切換電路
T1,T2構成的蓄電池自動充電電路,它在電池充滿后自動停止充電,其中D1亮為正在充電,D2為工作指示。由R4,R5,T1構成電壓檢測電路,蓄電池電壓低,則T1,T2導通,實現對其充電;充滿后,T1,T2截止,停止充電,同時D1熄滅,電路中C4的作用是濾除干擾信號。其電路圖如3-4-3所示:
                          圖3-4-3  蓄電池自動充電電路
五、總結與體會

以上為實習期間所設計的電子密碼鎖電路,它經過多次修改和整理,以是一個比較不錯的設計,可以滿足人們的基本要求,但因為水平有限,此電路中也存在一定的問題,譬如說電路的密碼不能遺忘,一旦遺忘,就很難打開,這可以通過增加電路解決,但過于復雜,本次設計未其中;用開關作74LS112的CLK脈沖,不是很穩定,可以調換其它高速開關或計數脈沖;電路密碼只有16種可供修改,但由于他人不知道密碼的位數,而且還要求在規定的時間內按一定的順序開鎖,所以他人開鎖的幾率很小;電路中未加顯示電路,但可通過其它數字模塊實現這一功能。這需要一段時間的進一步改進,如果有好的意見,希望老師給以支持。
通過這三周的學習,我感覺有很大的收獲:首先,通過學習使自己對課本上的知識可以應用于實際,使的理論與實際相結合,加深自己對課本知識的更好理解,同時實習也段練了我個人的動手能力:能夠充分利用圖書館去查閱資料,增加了許多課本以外的知識。能對protel 99、和EWB等仿真軟件操作,能達到學以致用。對我們學生來說,理論與實際同樣重要,這是我們以后在工作中說明自己能力的一個重要標準。
在實習中,我感受到了老師對學生的那種悔人不卷的精神,每天的固定時間,老師都來給我們指導,使我們少走彎路,順利完成實習任務,請允許我向你們致意崇高的敬意,感謝你們,老師!



單片機源程序如下:
  1. #include<reg52.h>            
  2. #include<math.h>               
  3. #include<intrins.h>              
  4. #define        uchar unsigned char      
  5. #define        uint unsigned int
  6. #define         data_IO P2

  7. sbit     rs=P3^0;        //指令和數據寄存器 “1是數據,” “0是指令”
  8. sbit     rw=P3^1;//讀寫控制,“1讀” “0寫”
  9. sbit          e=P3^2; //片選信號
  10. sbit      p=P2^7;
  11. sbit   deng=P3^3;///響音樂的端口
  12. sbit   md=P3^4;///修改密碼時的燈


  13. uchar  pwflag;//密碼是否正確的標志位
  14. uchar  count;//
  15. uchar  gg=0 ;//只有輸入正確的密碼才能修改密碼
  16. uchar  cs=3 ;//輸入密碼的錯誤次數


  17. uchar m[]={1,2,3,4,5,6}; ///初始密碼
  18. static uchar mbuf[6];///輸入的密碼


  19. char d[32]={' ','I','M','P','O','R','T',' ','C','I','P','H','E','R',':',' ',
  20.              ' ',' ','_',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};//輸入密碼

  21. code  char ks[32]={'C','O','N','G','R','A','T','U','L','A','T','E',' ','Y','O','U',
  22.                           ' ','O','P','E','N','I','N','G',' ',' ','L','O','C','K','!',' '};////開鎖

  23. code char cw[32]={' ','C','I','P','H','E','R',' ',' ','E','R','R','O','R',' ',' ',
  24.                               '~','~','~','~','~','~','~','~','~','~','~','~','~','~','~','~' };////錯誤         

  25. code char xc[32]={' ',' ','A','M','E','N','D',' ','S','U','C','C','E','E','D',' ',
  26.                   ' ',' ',' ',' ',' ','!','!','!','!','!','!',' ',' ',' ',' ',' '};//修改成功  

  27. code char xg[32]={' ','A','M','E','N','D',' ',' ','C','I','P','H','E','R',':',' ',
  28.                   ' ',' ',' ',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};///修改密碼*/


  29. void yanshi(uint n)///////////////延時函數///////////////////////////////////
  30. {
  31. uint i;
  32.   for(i=0;i<n;i++){};
  33. }

  34. void delay(uint n)///////////////延時函數///////////////////////////////////
  35. {
  36. uint i,j;
  37.   for(i=0;i<1000;i++)
  38.    {for(j=0;j<n;j++){}}
  39.    
  40. }

  41. void busy() ////////////////////判斷是否忙////////////////////////////////////////
  42. {data_IO=0xff;
  43. rs=0; //寫指令        ////////////////////
  44. rw=1; //表示讀狀態    // 三個的狀態表示 //
  45. e=1;  //下降延//      // 判忙狀態       //
  46. while(!p);         ////////////////////
  47. // e=0;
  48. }
  49. void xiezl(uchar shuju) /////////////////////*寫指令*/////////////////////////////
  50. {
  51. busy();/*yanshi(6500);*/
  52. data_IO=shuju;
  53. rs=0; //寫指令        ////////////////////
  54. rw=0; //表示寫狀態    // 三個的狀態表示 //
  55. e=1;  //下降延//      // 寫指令         //
  56. e=0;  /////////       ////////////////////

  57. }

  58. void w_dat(uint n)//////////////////寫數據//////////////////////////
  59. {
  60. busy(); /*yanshi(6500) ;*/
  61.   data_IO=n;
  62.    rs=1; //寫數據       ////////////////////
  63.    rw=0; //表示寫狀態    // 三個的狀態表示 //
  64.    e=1;  //下降延//      //寫數據         //
  65.    e=0;  /////////       ////////////////////
  66.   // return;
  67. }

  68. void xianshi(uchar js[]) //////////////////顯示函數///////////////////////////////
  69. {
  70.   uchar h,v;
  71.   xiezl(0x01); //清屏顯示
  72.   yanshi(2000) ;
  73.   xiezl(0x80); // DDRAM地址的設置
  74. for(h=0;h<16;h++)
  75.    {w_dat(js[h]);  ///n表示有寫幾位數據
  76.    yanshi(100) ;
  77.    }
  78.    xiezl(0xc0);//換行
  79. for(v=(16);v<32;v++)
  80.    {w_dat(js[v]);  ///n表示有寫幾位數據
  81.    yanshi(100) ;
  82.    }
  83. }

  84. void chushihua(void)///////////////////*液晶模塊初始化*/
  85. { uchar i;
  86.    rs=0; //寫指令
  87.    rw=0; //表示寫狀態
  88.    e=0;  //使能
  89.    for(i=0;i<3;i++)
  90.    {
  91.     xiezl(0x38);  //功能設置,8位,一行顯示,5*7點陣
  92.     yanshi(1000);
  93.    }
  94.     xiezl(0x38); //兩行顯示
  95.     xiezl(0x0f); //顯示開關控制位
  96.     xiezl(0x18); //移位控制,光標和顯示一起左移  
  97.     xiezl(0x06); //設置輸入模式
  98.     xiezl(0x01); //清屏顯示
  99.     xiezl(0x80); // DDRAM地址的設置
  100.     }

  101. bit pwcmp(void)
  102. {
  103.         bit flag;
  104.         uchar i;
  105.         for (i=0;i<6;i++)
  106.         {
  107.                 if (m[i]==mbuf[i])   flag = 1;   //*密碼正確*/
  108.                 else  {        flag = 0;  i=6; } //*密碼錯誤*/
  109.         }
  110.         return(flag);
  111. }

  112. void gb(void)/////////轉移光標
  113. {  uchar c;
  114.    xiezl(0xc0);//換行
  115.    yanshi(3000) ;
  116.    for(c=0;c<5;c++)
  117.    {w_dat(' ');///n表示有寫幾位數據
  118.     yanshi(2000) ;
  119.    }
  120. }
  121. uchar getkey(void)///得到鍵值
  122. { uchar h,l,k;
  123.   while(P1!=0x0f)
  124.   {
  125.    h=P1&0x0f;
  126.    P1=0xf0;
  127.    l=P1&0xf0;
  128.    k=h|l;
  129.    return(k);
  130.   }
  131. }


  132. void diaoyong(uchar i)///////////調用各鍵的函數//////輸入密碼
  133. {  uchar lq;
  134.          switch(i)
  135.             {
  136.           case 0x7e: if (count<6) { mbuf[count]=1; count++;  w_dat('*');}  break;  // 01111110       1
  137.           case 0xbe:  if (count<6) { mbuf[count]=2; count++;  w_dat('*');}  break;  // 10111110                 2
  138.           case 0xde: if (count<6) { mbuf[count]=3; count++;  w_dat('*');}  break;  // 11011110                 3
  139.           case 0xee:  if (count<6) { mbuf[count]=4; count++;  w_dat('*');}  break;  // 11101110                 4

  140.           case 0x7d:  if (count<6) { mbuf[count]=5; count++;  w_dat('*');}  break;  // 01111101                 5
  141.           case 0xbd:  if (count<6) { mbuf[count]=6; count++;  w_dat('*');} break; // 10111101                 6
  142.           case 0xdd: if (count<6) { mbuf[count]=7; count++;  w_dat('*');}  break;  // 11011101                 7
  143.           case 0xed: if (count<6) { mbuf[count]=8; count++;  w_dat('*');} break;  // 11101101                 8

  144.           case 0x7b:  if (count<6) { mbuf[count]=9; count++;  w_dat('*');}  break;  // 01111011                 9
  145.           case 0xbb:  if (count<6) { mbuf[count]=0; count++;  w_dat('*');} break;  // 10111011                 0
  146.           case 0xdb: if (count==6) { pwflag = pwcmp();}   else  pwflag = 0;// 只有輸入6個密碼后按確認鍵才作密碼比較
  147.                                    if(pwflag) {deng=0; xianshi(ks);gg=1; }   else { cs--;deng=1; xianshi(cw); delay(200); xianshi(d);gb();count = 0; }
  148.                                     break;  // 11011011                 a           
  149.           case 0xeb:  count = 0;deng=1; xianshi(d);  gb();gg=0;         /*取消鍵*/
  150.                                break;  // 11101011                 b         

  151.           case 0x77: if(gg==1){ count=0;xianshi(xg); gb();} //修該密碼
  152.                                break;  // 01110111                 c
  153.          
  154.                   case 0xb7: if((count==6)&&(gg==1)) { count=0;
  155.                   for (lq=0;lq<6;lq++){ m[lq]=mbuf[lq]; yanshi(10000);} md=1; xianshi(xc); delay(200); xianshi(d);yanshi(2000);gb();yanshi(200);gg=0;}//保存密碼
  156.                                break;  // 10110111                 d
  157.           /*case 0xd7: sr[jm]='e'; break;  // 11010111                 e
  158.             case 0xe7: sr[jm]='f'; break;  // 11100111                 f        */

  159.           default: break;
  160.           }
  161.       
  162. }


  163. void main(void)
  164. {uchar key;
  165. chushihua();
  166. xianshi(d);//顯示函數
  167. gb(); //移光標到第二行第六位
  168. while(cs)
  169. {
  170.   P1=0x0f;
  171.   if(P1!=0x0f)  
  172. {
  173.    yanshi(20);
  174.    key=getkey();
  175.         md=0;
  176.    diaoyong(key);
  177.    yanshi(20000);
  178.    md=1;
  179. }
  180. }while(1);
  181. }
復制代碼

所有資料51hei提供下載:
八位數字密碼鎖資料.rar (829.8 KB, 下載次數: 50)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:634141 發表于 2019-12-12 07:35 | 只看該作者
謝謝分享,能再分享一些密碼鎖的設計嗎?想多學習一下274490449@qq.com
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 春色av| 亚洲欧洲小视频 | 欧美 日韩 亚洲91麻豆精品 | 国产精品视频一二三 | 波多野结衣精品在线 | h视频在线观看免费 | 午夜在线精品偷拍 | 一区二区久久电影 | 中文字幕欧美一区 | 成人免费观看男女羞羞视频 | 欧美8一10sex性hd | 伊人久久免费视频 | 亚洲国产精品久久久久 | 毛片a级毛片免费播放100 | 一区免费 | 成人性生交大片免费看中文带字幕 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 我想看一级黄色毛片 | 国产在线不卡视频 | 久久久久久综合 | 超碰97av| 亚洲国产精选 | 欧美成人激情 | 久久精品 | 四虎av电影| 国产区高清 | 欧美二区在线 | 日韩在线一区二区 | 精品视频在线免费观看 | 国产精品久久久久久久久久久免费看 | 色资源在线观看 | 成人免费黄视频 | 日韩一区二区av | 91麻豆精品国产91久久久久久久久 | 亚洲欧美在线视频 | 91网站在线观看视频 | 国产精品三级 | 久草网在线视频 | 国产女人与拘做受免费视频 | 欧产日产国产精品视频 | 欧美日韩国产一区二区三区 |