欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3886|回復: 0
收起左側

單片機1602密碼鎖程序仿真 源碼及論文

[復制鏈接]
ID:204395 發表于 2017-5-24 17:53 | 顯示全部樓層 |閱讀模式
單片機1602密碼鎖程序仿真
0.png
目 錄
第1節 引言…………………………………………………………………………1
    1.1  電子密碼鎖述……………………………………………………………1
    1.2  本設計主要任務…………………………………………………………1
    1.3  系統主要功能……………………………………………………………2
第2節 系統硬件設計………………………………………………………………3
2.1  系統的硬件構成及功能 …………………………………………………3
2.2  AT89C2051單片機及其引腳說明………………………………………3
第3節 系統軟件設計………………………………………………………………5
3.1  系統主程序設計(流程圖)……………………………………………5
3.2  軟件設計思想……………………………………………………………5
3.3  儲單元的分配……………………………………………………………5
3.4  系統源程序………………………………………………………………6
3.5  系統應用說明……………………………………………………………9
3.6  小結………………………………………………………………………9
結束語……………………………………………………………………10
參考文獻 ………………………………………………………………………11
附錄 ……………………………………………………………………………12

本設計主要任務
(1)共8位密碼,每位的取值范圍為1~8。
(2)用戶可以自行設定和修改密碼。
(3)按每個密碼鍵時都有聲、光提示。
(4)若鍵入的8位開鎖密碼不完全正確,則報警5秒鐘,以提醒他人注意。
(5)開鎖密碼錯3次要報警10分鐘,報警期間輸入密碼無效,以防竊賊多次試探密碼。
(6)鍵入的8位開鎖密碼完全正確才能開鎖,開鎖時要有1秒的提示音。
(7)密碼鍵盤上只允許有8個密碼按鍵和1個發光管。鎖內有備用電池,只有內部上電復位時才能設置或修改密碼,因此,僅在門外按鍵是不能修改或設置密碼的。
(8)密碼設定完畢后要有2秒的提示音。
     以上是初步設定的電子密碼鎖的主要功能。
0.png 0.png
單片機源程序如下:
  1. #include"reg51.h"
  2. #include"key.h"
  3. #include"lcd.h"
  4. uchar code show_0[]="Please input the password:";
  5. uchar code show_1[]="The mima is:" ;
  6. uchar code show_2[]="********";
  7. uchar code show_3[]="The password is wrong!";
  8. uchar code show_4[]="This is delay 5s";
  9. uchar code show_5[]="Please zai shu yici!";
  10. uchar code show_6[]="you are right!";
  11. uchar code show_7[]="Please input the new mima:";
  12. uchar code show_8[]="Input it again!";
  13. uchar code show_9[]="Establishes successful! ";
  14. uchar code show_10[]="(^_^)";
  15. uchar code show_11[]="shuru guanliyuan mima";
  16. uchar code show_12[]="chao shi baojing";

  17. sbit baojing                        = P1^1;       
  18. sbit jidianqi=P1^0;
  19. int k;
  20. //蜂鳴器
  21. void beep()                //????????
  22. {   uchar  i;
  23.   for(i=0;i<10;i++)
  24.         {
  25.        
  26.                 delay(10);           //??10??
  27.                 baojing =! baojing;
  28.                 delay(10);           //??10??
  29.         }   
  30. }
  31.        
  32.        
  33. void play(uchar *j,uchar q)          //K是顯示的個數,j是地址
  34. {
  35.    uchar  i;
  36.    for(i=0;i<q;i++)
  37.    {
  38.     dat_w(*(j+i));
  39.         delay(20);
  40.    }
  41. }
  42. time0() interrupt 1
  43. {          
  44.                 TH0=(65536-50000)/256;
  45.           TL0=(65536-50000)%256;
  46.           k++;
  47.        
  48.           if(k>=(20*60*3))
  49.                 {  k=0;
  50.                         //jidianqi=0;
  51.                         beep();       
  52.                         clear();
  53.   gotoxy(1,0);
  54.   play(show_12,16);
  55.   gotoxy(2,0);
  56.   play(show_12+17,10);
  57.                  }
  58.        
  59. }
  60. void main()
  61. { uchar  init_pswd[]={0,0,0,0,0,0,0,0};
  62.   uchar  guanli_pswd[]={8,8,8,8,8,8,8,8};
  63.   uchar  pswd[8]={0};
  64.   uchar  pswd_1[8]={0};
  65.   uchar j=0,i=0,sum_1=0,g=0;
  66.         TMOD=0x01;
  67.         TH0=(65536-50000)/256;
  68.         TL0=(65536-50000)%256;
  69.         EA=1;
  70.         ET0=1;
  71.         //beep();
  72.   loop:init();
  73.         i=0;sum_1=0;
  74.     clear();
  75.   gotoxy(1,0);
  76.   play(show_0,16);
  77.   gotoxy(2,0);
  78.   play(show_0+17,10);
  79.   /****密碼輸入****/
  80.   do
  81.   {
  82.     key();
  83.   }
  84.   while(ki!=15);
  85.        
  86.         TR0=1;//定時器開始計時,超時報警
  87.   clear();
  88.   gotoxy(1,0);
  89.   play(show_1,13);
  90.   do
  91.   {
  92.     flag=0;
  93.     key();
  94.                
  95.                 gotoxy(2,0);
  96.         if(flag==1&&ki<=9)
  97.          {
  98.           pswd[i]=ki;
  99.                  i++;
  100.           play(show_2,i);
  101.          
  102.          }
  103.    }       
  104.    while(i<=7);
  105.    for(i=0;i<=7;i++)
  106.    {
  107.      sum_1=init_pswd[i]-pswd[i]+sum_1;//比較密碼是否正確
  108.                  
  109.          }
  110.    
  111.           if(sum_1==0)
  112.           {
  113.           
  114.            clear();
  115.            gotoxy(1,0);
  116.            play(show_6,15);
  117.                    jidianqi=0;
  118.        //beep();                       
  119.         //TR0=0;                        //密碼正確打開繼電器,關閉計時器
  120.            do
  121.            {
  122.            key();
  123.            }
  124.            while(ki!=13);
  125.                  jidianqi=1;
  126.            loop1:clear();
  127.            gotoxy(1,0);
  128.            play(show_7,13);
  129.            gotoxy(2,0);
  130.            play(show_7+13,13);
  131.            /****第一次輸密碼***/
  132.            i=0;
  133.             do
  134.             {
  135.                   flag=0;
  136.           key();
  137.                   if(flag==1&&ki<=9)
  138.              {
  139.                pswd[i]=ki;
  140.                    i++;
  141.                    clear();
  142.                    gotoxy(1,0);
  143.                    play(show_2,i);
  144.                    }
  145.                    }while(i<=7);
  146.                  clear();
  147.                  gotoxy(1,0);
  148.              play(show_8,15);
  149.            /***第二次輸密碼****/
  150.                  i=0;
  151.                  sum_1=0;
  152.             do
  153.             {
  154.                   flag=0;
  155.           key();
  156.                   if(flag==1&&ki<=9)
  157.               {
  158.                pswd_1[i]=ki;
  159.                    i++;
  160.                    clear();
  161.                    gotoxy(1,0);
  162.                    play(show_2,i);
  163.                    }
  164.                     }
  165.                  while(i<=7);
  166.                  for(i=0;i<=7;i++)
  167.                   {
  168.                    sum_1=sum_1+ pswd_1[i]-pswd[i];
  169.                    }
  170.                  if(sum_1==0)
  171.                    {
  172.                     clear();
  173.                            gotoxy(1,2);
  174.                         play(show_9,12);
  175.                         gotoxy(2,2);
  176.                         play(show_9+13,11);
  177.                         for(i=0;i<=7;i++)
  178.                         {
  179.                         init_pswd[i]=pswd[i];
  180.                          }
  181.                          goto  loop ;
  182.                    }
  183.                  if(sum_1!=0)
  184.                    {
  185.                      clear();
  186.                      goto loop1;
  187.                    }
  188.           }       
  189.   if(sum_1!=0)//密碼不正確e
  190.          {
  191.            clear();
  192.                  
  193.            j++;//統計輸錯次數
  194.            if(j==3)
  195.            {
  196.             clear();
  197.           
  198.        beep();//三次輸入密碼失敗,報警

  199.                           
  200.             while(g==0)
  201.                         {
  202.        clear();
  203.   gotoxy(1,0);
  204.   play(show_11,15);
  205.         gotoxy(2,0);
  206.         play(show_11+15,6);
  207.         i=0;sum_1=0;
  208.   do
  209.   {
  210.     flag=0;
  211.                 gotoxy(2,7);
  212.     key();
  213.                 //beep();       
  214.        
  215.                
  216.         if(flag==1&&ki<=9)
  217.          {
  218.           pswd[i]=ki;
  219.                 i++;
  220.           play(show_2,i);
  221.           
  222.          }
  223.    }       
  224.    while(i<=7);
  225.    for(i=0;i<=7;i++)
  226.    {
  227.      sum_1=guanli_pswd[i]-pswd[i]+sum_1;
  228. ……………………

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

所有資料51hei提供下載:
電子密碼鎖1602液晶顯示資料.zip (446.83 KB, 下載次數: 103)


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表