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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機和LCD1602的電子密碼鎖設計 實物和仿真程序都有

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

本設計主要任務

(1)共8位密碼,每位的取值范圍為1~8。
(2)用戶可以自行設定和修改密碼。
(3)按每個密碼鍵時都有聲、光提示。
(4)若鍵入的8位開鎖密碼不完全正確,則報警5秒鐘,以提醒他人注意。
(5)開鎖密碼錯3次要報警10分鐘,報警期間輸入密碼無效,以防竊賊多次試探密碼。
(6)鍵入的8位開鎖密碼完全正確才能開鎖,開鎖時要有1秒的提示音。
(7)密碼鍵盤上只允許有8個密碼按鍵和1個發光管。鎖內有備用電池,只有內部上電復位時才能設置或修改密碼,因此,僅在門外按鍵是不能修改或設置密碼的。
(8)密碼設定完畢后要有2秒的提示音。
以上是初步設定的電子密碼鎖的主要功能。
本系統主要由單片機系統、鍵盤、報警系統組成。系統能完成開鎖、超時報警、超次鎖定、管理員解密、修改用戶密碼基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還具有調電存儲、聲光提示等功能,依據實際的情況還可以添加遙控功能。本系統成本低廉,功能實用。本設計要完成的軟件任務主要有:一是鍵盤輸入的識別;二是8位LED的顯示;三是密碼的比較、修改、存儲;;四是報警和開鎖控制電平的輸出。
根據以上任務,結合硬件結構,可以將鍵盤輸入的識別用來作為系統的監控程序(主程序),用顯示程序來延時,不斷查詢鍵盤。如果有鍵按下,就得到相應的鍵值。結合當前系統所處的狀態,調用不同的操作模塊,實現相應的功能。而執行模塊主要有數字輸入模塊、確定鍵模塊、修改鍵模塊、顯示模塊及報警模塊。
存儲單元的分配
該密碼鎖中RAM存儲單元的分配方案如下:
31H~38H:依次存放8位設定的密碼,首位密碼存放在31H單元;
R0:指向密碼地址;
R2:已經鍵入密碼的位數;
R3:存放允許的錯碼次數3與實際錯碼次數的差值;
R4至R7:延時用;
00H:錯碼標志位。
對于ROM存儲單元的分配,由于程序比較短,而且占用的存儲空間比較少,因此,在無特殊要求時,可以從0030H單元(其它地址也可以)開始存放主程序。
若按鍵AN1~AN7分別代表數碼1~7,按鍵AN0代表數碼8。在沒有鍵按下時,P1.0~P1.7全是高電平1,若某個鍵被按下,相應的口線就變為低電平0。假如設定的密碼是61234578,當按鍵AN6被按下時,P1.6變為低電平,P1端口其余口線為高電平,此時從P1端口讀入的數值為10111111,存到31H單元的密碼值就是10111111,也就是BFH。依此類推,存到32H至38H單元的密碼值分別是FDH、FBH、F7H、EFH、DFH、7FH、FEH。開鎖時必須先按AN6,使從P1口讀入的第一個密碼值與31H單元存儲的設定值相同,再順序按AN1、AN2、AN3、AN4、AN5、AN7、AN0才能開鎖。否則不能開鎖,同時開始報警。

實物圖:


proteus仿真原理圖:



單片機源程序如下:
  1. //南陽理工學院
  2. //學習是遺忘的最好的方式
  3. //只花了很少時間寫的,有很多不足的算法與編程序方式,見諒!
  4. #include"at89x51.h"
  5. #include"key.h"
  6. #include"lcd.h"
  7. uchar code show_0[]="Please input the password:";
  8. uchar code show_1[]="The cipher is:" ;
  9. uchar code show_2[]="********";
  10. uchar code show_3[]="The password is wrong!";
  11. uchar code show_4[]="This is the last time,";
  12. uchar code show_5[]="Please try it tomorrow!";
  13. uchar code show_6[]="you are right!";
  14. uchar code show_7[]="Please input the new cipher:";
  15. uchar code show_8[]="Input it again!";
  16. uchar code show_9[]="Establishes successful! ";
  17. uchar code show_10[]="(^_^)";
  18. uchar  init_pswd[]={8,8,8,8,8,8,8,8};
  19. uchar  pswd[8]={0};
  20. uchar  pswd_1[8]={0};
  21. void play(uchar *j,uchar k)          //K是顯示的個數,j是地址
  22. {
  23.    uchar  i;
  24.    for(i=0;i<k;i++)
  25.    {
  26.     dat_w(*(j+i));
  27.         delay(20);
  28.    }
  29. }
  30. main()
  31. {
  32.   uchar j=0,i=0,sum_1=0;
  33.   loop:init();
  34.   clear();
  35.   gotoxy(1,0);
  36.   play(show_0,16);
  37.   gotoxy(2,0);
  38.   play(show_0+17,10);
  39.   /****密碼輸入****/
  40.   do
  41.   {
  42.     key();
  43.   }
  44.   while(ki!=15);
  45.   clear();
  46.   gotoxy(1,0);
  47.   play(show_1,15);
  48.   do
  49.   {
  50.     flag=0;
  51.     key();
  52.         gotoxy(2,0);
  53.         if(flag==1&&ki<=9)
  54.          {
  55.           pswd[i]=ki;
  56.           play(show_2,i);
  57.           i++;
  58.          }
  59.         if(ki==14)        //14則退出.
  60.           break;
  61.    }       
  62.    while(i<=8);
  63.    for(i=0;i<=7;i++)
  64.    {
  65.      sum_1=init_pswd[i]-pswd[i]+sum_1;
  66.      if(sum_1!=0)
  67.          {
  68.            clear();
  69.            j++;
  70.            if(j==3)
  71.            {
  72.             clear();
  73.             gotoxy(1,0);
  74.             play(show_4,16);
  75.                 gotoxy(2,0);
  76.                 play(show_4+16,14);
  77.                 delay(500);
  78.                 delay(500);
  79.                 clear();
  80.                 gotoxy(1,0);
  81.                 play(show_5+7,16);
  82.                 gotoxy(2,5);
  83.                 play(show_10,5);
  84.             while(1);   //三次輸入密碼失敗,自鎖
  85.            }
  86.            gotoxy(1,0);
  87.            play(show_3,16);
  88.            gotoxy(2,5);
  89.            play(show_3+15,7);
  90.            delay(500);
  91.            clear();
  92.            gotoxy(1,0);
  93.            play(show_8,15);
  94.            goto loop;
  95.           }
  96.           if(sum_1==0)
  97.           {
  98.           
  99.            clear();
  100.            gotoxy(1,0);
  101.            play(show_6,15);
  102.            do
  103.            {
  104.            key();
  105.            }
  106.            while(ki!=13);
  107.            loop1:clear();
  108.            gotoxy(1,0);
  109.            play(show_7,13);
  110.            gotoxy(2,0);
  111.            play(show_7+13,15);
  112.            /****第一次輸密碼***/
  113.            i=0;
  114.             do
  115.             {
  116.                   flag=0;
  117.           key();
  118.                   if(flag==1&&ki<=9)
  119.               {
  120.                pswd[i]=ki;
  121.                    i++;
  122.                    clear();
  123.                    gotoxy(1,0);
  124.                    play(show_2,i);
  125.                    }
  126.                     }while(i<=7);
  127.                  clear();
  128.                  gotoxy(1,0);
  129.              play(show_8,15);
  130.            /***第二次輸密碼****/
  131.                  i=0;
  132.                  sum_1=0;
  133.             do
  134.             {
  135.                   flag=0;
  136.           key();
  137.                   if(flag==1&&ki<=9)
  138.               {
  139.                pswd_1[i]=ki;
  140.                    i++;
  141.                    clear();
  142.                    gotoxy(1,0);
  143.                    play(show_2,i);
  144.                    }
  145.                     }
  146.                  while(i<=7);
  147.                  for(i=0;i<=7;i++)
  148.                   {
  149.                    sum_1=sum_1+ pswd_1[i]-pswd[i];
  150.                    }
  151.                  if(sum_1==0)
  152.                    {
  153.                     clear();
  154.                            gotoxy(1,2);
  155.                         play(show_9,12);
  156.                         gotoxy(2,2);
  157. ……………………

  158. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子密碼鎖 1602顯示仿真程序.zip (292.21 KB, 下載次數: 395)



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

使用道具 舉報

沙發
ID:308279 發表于 2018-4-14 22:07 | 只看該作者
沒有黑幣
回復

使用道具 舉報

板凳
ID:396478 發表于 2018-9-12 14:54 | 只看該作者
謝謝樓主!
回復

使用道具 舉報

地板
ID:398790 發表于 2018-9-18 20:23 | 只看該作者
可以 ,很有用,很難得的八位密碼,找了好久才找到
回復

使用道具 舉報

5#
ID:435643 發表于 2018-12-7 12:20 | 只看該作者
謝謝樓主!學習了!
回復

使用道具 舉報

6#
ID:443622 發表于 2018-12-12 12:27 | 只看該作者
為什么下載之后打開沒有
回復

使用道具 舉報

7#
ID:439603 發表于 2018-12-12 18:51 | 只看該作者
密碼鎖實現外部是要連線的嗎
回復

使用道具 舉報

8#
ID:447904 發表于 2018-12-17 13:30 | 只看該作者
這里面的源代碼和教程是不是都有,詳細嗎?我是第一次做不知道有困難不?我很需要
回復

使用道具 舉報

9#
ID:447904 發表于 2018-12-17 13:32 | 只看該作者
這個壓縮包里的文件是不是特別詳細,我是新手,求解答
回復

使用道具 舉報

10#
ID:467396 發表于 2019-1-13 14:46 | 只看該作者
謝謝LZ
回復

使用道具 舉報

11#
ID:467396 發表于 2019-1-13 15:07 | 只看該作者
太實用了,謝謝!
回復

使用道具 舉報

12#
ID:396940 發表于 2019-3-23 18:51 | 只看該作者
下來學習一下意見看了好幾個不同的方案 了
回復

使用道具 舉報

13#
ID:507769 發表于 2019-4-16 23:25 | 只看該作者
為什么打不開,聯調死機?
回復

使用道具 舉報

14#
ID:502407 發表于 2019-4-17 09:59 | 只看該作者
黑幣不夠啦,項目收官階段。求樓主發郵箱,謝謝啦!郵箱614837496@qq.com
回復

使用道具 舉報

15#
ID:470939 發表于 2019-12-9 17:20 | 只看該作者
可以,感謝,下載學習
回復

使用道具 舉報

16#
ID:711792 發表于 2020-3-28 16:21 | 只看該作者
好用,感謝。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 玖玖综合网 | 在线观看成人 | 91 视频网站 | 欧美激情精品久久久久久变态 | 久视频在线观看 | 国产精品一区二区三级 | 日韩精品在线一区 | 成人在线观看网址 | 免费播放一级片 | 亚洲成人三级 | 久草中文在线观看 | 在线看亚洲 | 在线一级片| 99精品视频在线 | 自拍视频在线观看 | 国产羞羞视频在线观看 | 综合网伊人 | 国产精品久久久久久久久久久久冷 | 成人久久视频 | 欧洲色综合 | 亚洲狠狠爱| 北条麻妃一区二区三区在线视频 | 精品视频在线观看 | 亚洲综合色视频在线观看 | 日韩成人一区 | 欧美a在线 | 国产目拍亚洲精品99久久精品 | 久久综合久久综合久久 | 97色在线观看免费视频 | 精品久久中文字幕 | 亚洲欧洲一区二区 | 欧美成人精品二区三区99精品 | 亚洲欧美aⅴ | 日韩免费视频一区二区 | 午夜小电影 | 午夜精品福利视频 | 国产高清一区二区三区 | 粉嫩国产精品一区二区在线观看 | 不卡一区 | 日韩精品一区二区三区高清免费 | 国产婷婷色综合av蜜臀av |