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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

密碼鎖程序精華版89c52單片機

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


89C52單片機的密碼鎖:
密碼鎖主程序精華版89c52.rar (89.5 KB, 下載次數: 51)



部分程序預覽:
  1. /****************************************************************/
  2. /****通過借鑒別人作品自己加以修改才完成了此作品*****************/
  3. /****如果大家有啥建議歡迎聯系我,我們共同改進*******************/
  4. /*************************************************/
  5. /********這個程序舍去了外部eeprom簡化了外圍電路****************/
  6. #include<reg52.h>
  7. #include<intrins.h>
  8. #include<1602yj.h>
  9. #include<key.h>
  10. #include<bujing.h>
  11. #include<eeprom.h>
  12. #include<buzzer.h>
  13. #include<time.h>
  14. #include<mima.h>
  15. #define address 0x2000
  16. uchar idata mima_5[6] = {1,2,3,4,5,6}; //初始密碼
  17. uchar idata mima_6[6]={1,1,1,1,1,1};        //管理員密碼
  18. uchar flag_change,flag;
  19. uchar aa;//存放密碼錯誤的次數,夠三次報警
  20. uint num;//計數
  21. uchar flag_bg,flag_h,m;
  22. uchar flag_key=1;
  23. uchar i;
  24. void init()               
  25. {

  26.     init_lcd();//液晶初始化
  27.     fen=1;          //關閉蜂鳴器
  28.     beiguang=0;//打開液晶背光
  29.         TMOD |= 0x11;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  30.    //TH0=0x00;              //給定初值
  31.    //TL0=0x00;

  32.    ET1=0;           //定時器中斷關閉 警報用
  33.    TR1=0;           //定時器開關關閉 警報用

  34.         EA = 1;//打開總中斷
  35.         ET0 = 1;//打開定時器0中斷
  36.         TR0 = 0;//關閉定時器
  37.         TH0 = 0x4c;//50ms裝初值
  38.         TL0 = 0x00;
  39.     EX1=1;
  40.     IT1=1;       //外部中斷0為下降沿觸發  



  41. }


  42. void mima()
  43. {       
  44.     uchar key;
  45.     uchar idata mima_1[6]={' ',' ',' ',' ',' ',' '};//存放密碼緩沖區
  46.         uchar idata mima_2[6]={' ',' ',' ',' ',' ',' '};
  47.         uchar idata mima_3[6]={' ',' ',' ',' ',' ',' '};
  48.           key=step_choose();
  49.                
  50.      beiguang=0;
  51.        
  52.           TR0=0;   
  53. switch (key)                                                   //switch語句比if語句效率高  在這里選擇這種語句  
  54.         {
  55.            case E:                //恢復出廠設置                                                                  
  56.                                   {
  57.                          
  58.                                           lcdpos(0,0);
  59.                                           write_com(0x06);//寫一個字符后地址指針加 1
  60.                                       write_com(0x01);//顯示清零,數據指針清零
  61.                                       write_com(0x0f);//顯示光標
  62.                                           display_n(" Admin Password ");
  63.                                           lcdpos(1,0);
  64.                                           if(input_mima(mima_2)) //處理輸入密碼
  65.                                             {
  66.                                                                 if(mimaduibi(mima_2,mima_6)) //密碼正確
  67.                                                                                 {
  68.                                                                                         lcdpos(0,0);
  69.                                                                                         write_com(0x0c);
  70.                                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  71.                                                                                  write_com(0x01);//顯示清零,數據指針清零
  72.                                                                                         display_n(" PassWord Right ");
  73.                                                                                        
  74.                                                                                         ERASE(address);  
  75.                                                                                     for(i=0;i<6;i++)
  76.                                                                               {        Write_ISP (address+i, mima_5[i]);}
  77.                                                                 delayx(1500);
  78.                                                                                         aa = 0; //清除密碼錯誤次數
  79.                                                                                         fen = 0; //響一下
  80.                                                                                         delayx(1000);
  81.                                                                                         fen = 1;       
  82.                                                                                 }
  83.                                                 else //密碼 不正確
  84.                                                  {
  85.                                                                 lcdpos(0,0);
  86.                                                                 write_com(0x0c); //關光標
  87.                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  88.                                                                 write_com(0x01);//顯示清零,數據指針清零
  89.                                                                 display_n("PassWord  Error");
  90.                                                                 delayx(1000);
  91.                                                                 aa++;
  92.                                                         if(aa == 4)
  93.                                                                 {
  94.                                                                         aa = 0;
  95.                                                                         warn();        //密碼不正確報警
  96.                                                                 }
  97.                        
  98.                                                  }
  99.                                  }
  100.                         else //密碼沒有輸入正確或完成
  101.                                 {
  102.                                         lcdpos(0,0);
  103.                                         write_com(0x0c); //關光標
  104.                                        write_com(0x06);//寫一個字符后地址指針加 1
  105.                                     write_com(0x01);//顯示清零,數據指針清零
  106.                                         display_n("PassWord  Error");
  107.                                         delayx(1000);
  108.                                         aa++;
  109.                                         if(aa == 4)
  110.                                                  {
  111.                                                         aa = 0;
  112.                                                         warn();        //密碼不正確報警
  113.                                                  }
  114.                
  115.                                 }
  116.                
  117.                                                
  118.                                          
  119.                      
  120.                               }
  121.                   
  122.                                                             break;       

  123.        case A:         //A被按下,接收輸入密碼,
  124.                       {       
  125.                            for(i=0;i<6;i++)
  126.                                  {           
  127.                                      
  128.                                    mima_1[i]= Read_ISP(address+i);
  129.                                           
  130.                                   }       
  131.                                 write_com(0x06);//寫一個字符后地址指針加 1
  132.                                 write_com(0x01);//顯示清零,數據指針清零
  133.                                 write_com(0x0f);//顯示光標
  134.                                 lcdpos(0,0);
  135.                                 display_n(" Input PassWord");       
  136.        
  137.                                 if(input_mima(mima_2)) //處理輸入密碼
  138.                                         {
  139.                                                 if(mimaduibi(mima_2,mima_1)) //密碼正確
  140.                                                                 {
  141.                                                                         lcdpos(0,0);
  142.                                                                         write_com(0x0c);
  143.                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  144.                                                                          
  145.                                                                  write_com(0x01);//顯示清零,數據指針清零
  146.                                                                         display_n(" PassWord Right ");
  147.                                                                         aa = 0; //清除密碼錯誤次數
  148.                                                                         kai(); //開鎖
  149.                                                                         fen = 0; //響一下
  150.                                                                         delayx(1000);
  151.                                                                         fen = 1;
  152.                                                                         TR0 = 1;
  153.                                                                         flag_h=1;
  154.                                                                         flag=0;
  155.                                                                
  156.                                                                         while(key != C&&flag_h!=0) //C沒按下一直開 如果忘記關門定時器10s到了會自動關門
  157.                                                                                 {                       
  158.                                                                                   key = scan();               
  159.                                                                     
  160.                                                                                 }
  161.                                                                    if(flag_h==1||m==0)//檢測是不關過門        flag_h==1表示沒關門        m檢測進入外部中斷后執行關門指令 也除去一個警告                                               
  162.                                                                         { guan();
  163.                                                                              flag=1;
  164.                                                                           TR0 = 0;
  165.                                                                         }
  166.                                                                 }
  167.                                            else //密碼 不正確
  168.                                                         {
  169.                                                                 lcdpos(0,0);
  170.                                                                 write_com(0x0c); //關光標
  171.                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  172.                                                                 write_com(0x01);//顯示清零,數據指針清零
  173.                                                             display_n("PassWord  Error");
  174.                                                                 delayx(1000);
  175.                                                                 aa++;
  176.                                                                 if(aa == 4)
  177.                                                                         {
  178.                                                                        
  179.                                                                   aa = 0;
  180.                                                                     warn();        //密碼不正確報警
  181.                                                                         }
  182.                                
  183.                                                         }
  184.                                          }
  185.                                 else //密碼沒有輸入正確或完成
  186.                                         {
  187.                                                 lcdpos(0,0);
  188.                                                 write_com(0x0c); //關光標
  189.                                                write_com(0x06);//寫一個字符后地址指針加 1
  190.                                             write_com(0x01);//顯示清零,數據指針清零
  191.                                                 display_n("PassWord  Error");
  192.                                                 delayx(1000);
  193.                                                 aa++;
  194.                                                 if(aa == 4)
  195.                                                          {
  196.                                                                 aa = 0;
  197.                                                                 warn();        //密碼不正確報警
  198.                                                          }
  199.                        
  200.                                         }
  201.                   }
  202.                                                            break;

  203.        case F:                  //F被按下,修改密
  204.                            {
  205.                                 for(i=0;i<6;i++)
  206.                                  {           
  207.                                      
  208.                                    mima_1[i]= Read_ISP(address+i);
  209.                                           
  210.                                   }       
  211.                                         write_com(0x06);//寫一個字符后地址指針加 1
  212.                                         write_com(0x01);//顯示清零,數據指針清零
  213.                                         write_com(0x0f);//顯示光標
  214.                                         lcdpos(0,0);
  215.                                         display_n(" Input PassWord");               
  216.                                         write_com(0x0f);//顯示光標       
  217.                                         if(input_mima(mima_2)) //處理輸入密碼
  218.                                         {
  219.                                                 if(mimaduibi(mima_2,mima_1)) //密碼正確
  220.                                                 {
  221.                                                         lcdpos(0,0);
  222.                                                         write_com(0x0c);
  223.                                                       write_com(0x06);//寫一個字符后地址指針加 1
  224.                                                       write_com(0x01);//顯示清零,數據指針清零
  225.                                                         display_n(" PassWord Right ");
  226.                                                
  227.                                                         aa = 0; //清除密碼錯誤次數
  228.                                                         delayx(1000);
  229.                                                        
  230.                                                         flag_change = 1;
  231.                                                         if(flag_change) //下面開始修改密碼
  232.                                                         {        lcdpos(0,0);
  233.                                                                 write_com(0x0c); //關閉光標
  234.                                                             write_com(0x06);//寫一個字符后地址指針加 1
  235.                                                             write_com(0x01);//顯示清零,數據指針清零
  236.                                                                 display_n("In New PassWord");
  237.                                                                 delayx(1000);
  238.                                                                 lcdpos(1,0);
  239.                                                                 write_com(0x0f);//顯示光標       
  240.                                                        
  241.                        
  242.                                                                 if(input_mima(mima_2)) //處理輸入密碼
  243.                                                                 {
  244.                        
  245.                                                                         lcdpos(0,0);
  246.                                                                         write_com(0x0c);
  247.                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  248.                                                                 write_com(0x01);//顯示清零,數據指針清零
  249.                                                                         display_n("Input New Pass"); //確定新密碼
  250.                                                                         lcdpos(1,0);
  251.                                                                         display_n("PassWord again");
  252.                                                                         delayx(2000);
  253.                                                                         lcdpos(0,0);
  254.                                                                         write_com(0x0f);//顯示光標
  255.                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  256.                                                                 write_com(0x01);//顯示清零,數據指針清零
  257.                                                                         display_n("In New PassWord");                                               
  258.                                                                                 if(input_mima(mima_3)) //處理輸入密碼
  259.                                                                                 {
  260.                                                                                         if(mimaduibi(mima_2,mima_3)) //密碼正確
  261.                                                                                         {
  262.                                                                                                 lcdpos(0,0);
  263.                                                                                                 write_com(0x0c);
  264.                                                                                               write_com(0x06);//寫一個字符后地址指針加 1
  265.                                                                                               write_com(0x01);//顯示清零,數據指針清零
  266.                                                                                                 display_n("Change  PassWord");
  267.                                                                                                 lcdpos(1,0);
  268.                                                                                                 display_n("  SUCCESSFULLY  ");
  269.                                                                                            ERASE(address);  
  270.                                                                                     for(i=0;i<6;i++)
  271.                                                                               {        Write_ISP (address+i, mima_3[i]);}//把修改的密碼存進內部rom
  272.                                                                                                 delayx(2000);
  273.                                                                                                 flag_change = 0;
  274.                                                                                         }
  275.                                                                                         else //密碼 不正確
  276.                                                                                         {
  277.                                                                                                 lcdpos(0,0);
  278.                                                                                                 write_com(0x0c); //關光標
  279.                                                                                                 write_com(0x06);//寫一個字符后地址指針加 1
  280.                                                                                                 write_com(0x01);//顯示清零,數據指針清零
  281.                                                                                                 display_n("PassWord  Error");
  282.                                                                                                 delayx(1000);
  283.                                                                                                 aa++;
  284.                                                                                                 if(aa == 4)
  285.                                                                                                 {
  286.                                                                                                     aa = 0;
  287.                                                                                warn();        //密碼不正確報警
  288.                                                                                                 }
  289.                                                                                                 flag_change = 0;
  290.                                                                                         }
  291.                                                                                 }
  292.                                                                                 else //密碼沒有輸入正確或完成
  293.                                                                                 {
  294.                                                                                         lcdpos(0,0);
  295.                                                                                         write_com(0x0c); //關光標
  296.                                                                                        write_com(0x06);//寫一個字符后地址指針加 1
  297.                                                                                     write_com(0x01);//顯示清零,數據指針清零
  298.                                                                                         display_n("PassWord  Error");
  299.                                                                                         delayx(1000);
  300.                                                                                         aa++;
  301.                                                                                         if(aa == 4)
  302.                                                                                         {
  303.                                                                                              aa = 0;
  304.                                                                              warn();        //密碼不正確報警
  305.                                                                                         }
  306.                                                                                 }
  307.                                                                        
  308.                                                                 }  
  309.                                                                 else //密碼沒有輸入正確或完成
  310.                                                                 {
  311.                                                                         lcdpos(0,0);
  312.                                                                         write_com(0x0c); //關光標
  313.                                                                      write_com(0x06);//寫一個字符后地址指針加 1
  314.                                                                     write_com(0x01);//顯示清零,數據指針清零
  315.                                                                         display_n("PassWord  Error");
  316.                                                                         delayx(1000);
  317.                                                                         flag_change = 0;
  318.                                                                         aa++;
  319.                                                                         if(aa == 4)
  320.                                                                         {
  321.                                                                             aa = 0;
  322.                                                                     warn();        //密碼不正確報警
  323.                                                                         }
  324.                                                                 }
  325.                                                                                                
  326.                                                         }
  327.                                                 }
  328.                                                 else //密碼 不正確
  329.                                                 {
  330.                                                         lcdpos(0,0);
  331.                                                         write_com(0x0c); //關光標
  332.                                                         write_com(0x06);//寫一個字符后地址指針加 1
  333.                                                         write_com(0x01);//顯示清零,數據指針清零
  334.                                                         display_n("PassWord  Error");
  335.                                                         delayx(1000);
  336.                                                         aa++;
  337.                                                         if(aa == 4)
  338.                                                         {
  339.                                                                 aa = 0;
  340.                                                                 warn();        //密碼不正確報警
  341.                                                         }
  342.                                                 }
  343.                                         }
  344.                                         else          //密碼沒有輸入正確或完成
  345.                                         {
  346.                                                 lcdpos(0,0);
  347.                                                 write_com(0x0c); //關光標
  348.                                                write_com(0x06);//寫一個字符后地址指針加 1
  349.                                             write_com(0x01);//顯示清零,數據指針清零
  350.                                                 display_n("PassWord  Error");
  351.                                                 delayx(1000);
  352.                                                 aa++;
  353.                                                 if(aa == 4)
  354.                                                 {
  355.                                                         aa = 0;
  356.                                                         warn();        //密碼不正確報警
  357.                                                 }
  358.                                         }               
  359.                                 }
  360.                                                            break;
  361.        case C:        if(flag==0)
  362.                                    {
  363.                                           guan();
  364.                                   flag=1;
  365.                                   }
  366.                                                            break;       

  367.            default:
  368.                                                                break;
  369.         }

  370. }       


  371. void main()
  372. {
  373.    init();
  374.             
  375.         while(1)
  376.            {
  377.                         
  378.                      mima();
  379.                
  380.                    /*        lcdpos(0,1);
  381.                         display1(scan());//  *///測試矩陣鍵盤程序  鍵盤必須改成‘1’字符形式
  382.            }
  383.           
  384. }
  385. void timer0() interrupt 1 //定時器0中斷,   背光//         自鎖
  386. {
  387.         TH0 = 0x4c;//50ms定時
  388.         TL0 = 0x00;
  389.         num++;
  390.         if(num ==600)//30s時間到
  391.         {         
  392.                 num = 0;
  393.                 flag_bg=1;
  394.         }

  395. }  
  396. void counter(void) interrupt 2
  397. {     

  398. if(flag==0)
  399. {
  400.   flag=1;
  401.    TR0 = 0;
  402.            flag_h=0;
  403.            m=0;
  404.    //guan(); 有1個警告 所以不在此調用關鎖函數
  405. }

  406. }  
  407. /***************因兩個定時器工作要考慮優先級********/
  408. /*************定時不準*****************************/
  409. /*********所以用了一個定時器**********************/
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:120850 發表于 2016-5-15 22:06 | 只看該作者
這個是用到單片機的什么?
回復

使用道具 舉報

板凳
ID:142439 發表于 2016-10-12 15:01 | 只看該作者
請問這個有沒有原理圖
回復

使用道具 舉報

地板
ID:152262 發表于 2016-12-7 22:06 | 只看該作者
沒有原理圖呀
回復

使用道具 舉報

5#
ID:156130 發表于 2016-12-25 06:17 | 只看該作者
沒圖說個毛
回復

使用道具 舉報

6#
ID:157512 發表于 2016-12-25 14:24 | 只看該作者
好東西,學習下
回復

使用道具 舉報

7#
ID:274244 發表于 2018-1-10 13:16 | 只看該作者
我想知道怎么看啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品视频99在线观看免费 | 日韩中文字幕一区 | 欧美黑人国产人伦爽爽爽 | 国产免费一区二区 | 国产第一页在线播放 | 亚洲综合在线一区 | 国产成人精品a视频一区www | 午夜极品 | 每日在线更新av | 最近免费日本视频在线 | 精品亚洲一区二区三区四区五区高 | 亚洲福利在线观看 | 国产精品久久久久无码av | 欧美精品在线一区 | 欧美一区二区小视频 | 国产一区二区三区久久久久久久久 | 国产午夜精品一区二区三区四区 | 欧美日韩成人在线 | 日韩中文字幕在线视频观看 | 久久久久国产 | 午夜久久久久久久久久一区二区 | 久久久精品视频免费看 | 一级黄色片网站 | 综合久久久久久久 | 丁香婷婷成人 | 国产人成精品一区二区三 | 在线成人免费av | 久热精品在线观看视频 | av在线免费观看网站 | 久热伊人 | 国产午夜精品一区二区三区嫩草 | 希岛爱理在线 | 中文字幕日韩欧美一区二区三区 | a视频在线| 免费精品久久久久久中文字幕 | 久久这里有精品 | 91一区二区在线观看 | 欧美成人免费在线 | 中文字幕久久精品 | 国产激情网 | 在线亚洲一区二区 |