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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3412|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)密碼鎖通過1602顯示,繼電器模擬狀態(tài)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
根據(jù)設(shè)定好的密碼, 采用六個(gè)按鍵實(shí)現(xiàn)密碼的輸入功能
當(dāng)密碼輸入完后,按確認(rèn)鍵驗(yàn)證,正確之后,鎖就打開
如果輸入的三次的密碼不正確, 就鎖定按鍵 3 秒鐘
同時(shí)發(fā)出報(bào)警聲,直到?jīng)]有按鍵按下 5秒后
才打開按鍵鎖定功能否則在 5 秒鐘內(nèi)仍有按鍵按下,就重新鎖

電路原理圖如下:


單片機(jī)源程序如下:
  1. #include "lcd1602.h"
  2. #include "delay.h"
  3. #include "eeprom.h"
  4. #include "keyboard.h"
  5. #include "code.h"
  6. #include<intrins.h>
  7. #include<string.h>
  8. #define uint unsigned int
  9. #define uchar unsigned char

  10. uchar Timer=0;                           //中斷計(jì)數(shù)器
  11. #define uchar unsigned char
  12. /********************按鍵處理函數(shù)***********************/
  13. uchar Count=0;                          //開鎖次數(shù)
  14. uchar k=0;                                         //數(shù)組累加
  15. uchar Wrong=0;                         //錯(cuò)誤次數(shù)
  16. uchar Sure_temp,Cancel_temp;//保存按下確認(rèn)鍵和取消鍵P1的值
  17. uchar num=0;                                //按鍵次數(shù)
  18. //確認(rèn)鍵處理 按鍵檢測(cè)
  19. uchar code Key_Table[]={0xee,0xde,0xbe,0x7e,
  20.                                                   0xed,0xdd,0xbd,0x7d,
  21.                                                   0xeb,0xdb,0xbb,0x7b,
  22.                                                   0xe7,0xd7,0xb7,0x77};       
  23. uchar Buffer[]={0,0,0,0,0,0};         //按鍵數(shù)值緩存數(shù)組
  24. uchar Buffer_Reset[]={0,0,0,0,0,0};        //重置密碼緩存
  25. uchar Passedword[]={0,0,0,0,0,0};//密碼數(shù)組                         (這里開始出廠密碼為比賽日期201657)
  26. uchar code Count_Table[]="123456789";
  27. //聲光報(bào)警
  28. void Alarm()
  29. {
  30.         uchar i;
  31.         Red=0;
  32.         for(i=0;i<120;i++)
  33.         {
  34.                 Beep=~Beep;
  35.                 Delay(2);               
  36.         }
  37. }
  38. //警報(bào)
  39. void Warning()
  40. {        uchar i;
  41. for(i=0;i<2;i++)
  42. {        for(i=0;i<20;i++)
  43.         {
  44.                 Beep=~Beep;
  45.                 Delay(20);               
  46.         }
  47.   }
  48. }
  49. void Sure_Key()
  50. {       
  51.         uchar flag;
  52.         uchar i;
  53.         write_com(0x80);                                                 //第一行0x80+0x00
  54.         write_data(Count_Table[Count++]);                                           //顯示輸入次數(shù)
  55.         Delay(200);
  56.         if(Count>=10){P0=0XC0;Count=0;}
  57.         for(i=0;i<6;i++)
  58.         {
  59.                 if(Buffer[i]==Passedword[i]){flag=1;continue;}
  60.                 else {flag=0;break;}
  61.         }
  62.         //結(jié)果處理
  63.         if(flag==1){k=0;Green=0;Wrong=0;Lamp=0;Red=1;write_com(0x80+0x40);for(i=0;i<16;i++)write_data('\0');Delay(200);}                 //正確綠燈亮,鎖打開
  64.         else {k=0;Alarm();Wrong++;Green=1;Lamp=1;write_com(0x80+0x40);for(i=0;i<16;i++)write_data('\0');Delay(200);}         //錯(cuò)誤則聲光報(bào)警
  65.         if(Wrong==3) {Sure_temp=P1;TR0=1;Wrong=0;}                        //錯(cuò)誤三次則鎖定鍵盤3秒鐘
  66. }
  67. //取消鍵處理
  68. void Cancel_Key()
  69. {       
  70.         uchar i;
  71.         k=0;
  72.         for(i=0;i<6;i++)Buffer[i]=0;Delay(100);
  73.         write_com(0x80+0x40);
  74.         for(i=0;i<16;i++)write_data('\0');
  75. }
  76. //鎖定鍵
  77. void Lock()
  78. {
  79.         uchar i;
  80.         k=0;Alarm();Green=1;Lamp=1;Delay(200);
  81.         Cancel_Key();       
  82. }
  83. //清屏鍵

  84. void Clear_Lcd()
  85. {
  86.         k=0;Cancel_Key();
  87.         write_com(0x01);
  88. }
  89. //重置鍵
  90. void Reset_Key()
  91. {
  92.         uchar i;
  93.         k=0;
  94.         write_com(0x10);
  95.         write_string("Input Passedword:");
  96. }
  97. //重置確認(rèn)鍵
  98. void Reset_Sure_Key()
  99. {
  100.         uchar i,flag;
  101.         for(i=0;i<6;i++){if(Buffer[i]==Passedword[i]){flag=1;continue;}        else {flag=0;break;}}//輸入老密碼并判斷
  102.                                         if(flag==1)        {write_com(0x01);write_string("Input Newword:");Cancel_Key();}
  103.                                         else {Reset_Key();}

  104. }
  105. //重置保存
  106. void Reset_Save()
  107. {
  108.         uchar i;
  109.         k=0;
  110.         for(i=0;i<6;i++) Write_Random_Address_Byte(i,Buffer[i]); //老密碼正確再保存新密碼
  111.         for(i=0;i<6;i++)Passedword[i]=Random_Read(i);
  112.         write_com(0x01);write_string("Succeed!");Delay(1000);write_com(0x01);
  113.                
  114.                                                        
  115. }
  116. /**************************按鍵掃描函數(shù)***********************************/
  117. //按鍵掃描
  118. void Key_Play()
  119. {       
  120.         uchar i=0;
  121.         uchar num;
  122.         uchar temp;
  123.         uchar Key,c;
  124.         P1=0xf0;
  125.         if(P1!=0xf0)
  126.         {
  127.                 Delay(5);
  128.                 if(P1!=0xf0)
  129.                 {
  130.                         temp=P1;
  131.                         P1=0x0f;
  132.                         Key=temp|P1;
  133.                         for(i=0;i<16;i++)
  134.                         if(Key==Key_Table[i]) {num=i;break;}
  135.                         Buffer[k++]=num;
  136.                         switch(num)
  137.                         {
  138.                                 case 10:Sure_Key();break;         //確認(rèn)
  139.                                 case 11:Cancel_Key();break;         //取消
  140.                                 case 12:Reset_Key();break;         //重置
  141.                                 case 13:Reset_Sure_Key();break;//重置確認(rèn)
  142.                                 case 14:Reset_Save();break;           //上鎖
  143.                                 case 15:Lock();;           //清屏
  144.                         }               
  145.                         write_com(0x80+0x40);        //第二行0x80+0x40
  146.                         for(i=0;i<k;i++)
  147.                         write_data('*');
  148.                 }
  149.                 do{                                           //等待按鍵抬起
  150.                           temp=P1;
  151.                          temp=temp&0x0f;
  152.                  }         
  153.                   while(temp!=0x0f);
  154.         }
  155. }
  156.        
  157. //************************主函數(shù)************************//
  158. void main()
  159. {       
  160.         uchar i;
  161.         lcd_initial();
  162.         write_com(0x10);
  163.         write_string("  XM:MaZhuang ");
  164. //write_com(0x80);                                                 //第一行0x80+0x00
  165.         write_data(Count_Table[1]);
  166.         write_data(Count_Table[2]);
  167.     Delay(1000);
  168.         P0=0x3f;//次數(shù)默認(rèn)為0  0011 1111
  169.         P2=0XFF;//初始全關(guān)           1111 1111
  170.         TMOD=0X01;//0000 0001               
  171.         TH0=(65536-50000)/256;               
  172.         TL0=(65536-50000)%256;
  173.         EA=1;
  174.         ET0=1;                                                 //密碼錯(cuò)誤定時(shí)器中斷0

  175.         for(i=0;i<6;i++)Passedword[i]=Random_Read(i);
  176.         while(1)
  177.         {       
  178.                 Key_Play();
  179. ……………………

  180. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

源程序下載,注意不含仿真圖,暫時(shí)不公開:
密碼鎖(終極).zip (78.06 KB, 下載次數(shù): 42)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:768914 發(fā)表于 2020-6-7 10:31 | 只看該作者
下載了也不得捏?咋搞啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天曰天天干 | 国产日韩欧美 | 日韩喷潮| 日韩一区二区三区在线视频 | 四虎最新视频 | 午夜精品久久久久久久久久久久久 | 亚洲精品久久久久久久久久久久久 | 国产欧美精品一区 | 99亚洲精品 | 可以免费观看的av | 亚洲图片视频一区 | 日韩影院一区 | 97在线观看| 久久久久久久久精 | 日本三级电影在线观看视频 | 久久久久久久一区 | 精品一区二区三区在线观看国产 | 视频1区2区 | 亚洲精品久久久久久国产精华液 | 日本啊v在线 | 国产精品一区二区不卡 | 999热视频| 午夜影院 | 国产日韩欧美精品一区二区 | 亚洲精品在线免费观看视频 | 久久国 | 亚洲一区二区三区视频在线 | 亚洲高清免费观看 | 国产高清在线精品一区二区三区 | 日韩二三区 | 成人一区二 | 国产精品二区三区 | 狠狠亚洲 | 欧美在线观看一区 | 中文字幕一区二区三区精彩视频 | 日韩成人免费av | 精品99久久久久久 | 欧美激情一区二区 | 婷婷综合网 | 亚洲+变态+欧美+另类+精品 | 999久久久久久久久6666 |