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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2055|回復: 1
收起左側

基于51單片機的電子密碼鎖程序源碼

[復制鏈接]
ID:451817 發表于 2018-12-21 22:19 | 顯示全部樓層 |閱讀模式
如果需要其它東西可以問我

單片機源程序如下:
  1. //P0_0用作蜂鳴器
  2. //用4×4組成0-9數字鍵、確認鍵F及修改鍵C。
  3. //用8位數碼管組成顯示電路提示信息,當輸入密碼時,只顯示“8.”,當密碼位數輸入完畢按下確認鍵時,
  4. //對輸入的密碼與設定的密碼進行比較,若密碼正確,用8位數碼管顯示“1HELLO”作為提示信息,
  5. //同時發出“叮咚”聲;若密碼不正確,用8位數碼管顯示“2ERROR”作為提示信息,同時發出“嘀、嘀”報警聲
  6. //在輸入密碼的過程中可以隨時對輸入的密碼進行修改。
  7. #include <at89x52.H>   
  8. unsigned char wl[]={1,2,3,4,5,6};   
  9. unsigned char code wl1[]={0xfe,0xfd,0xfb,0xf7,
  10.                               0xef,0xdf,0xbf,0x7f};
  11. unsigned char code wl2[]={0x3f,0x06,0x5b,0x4f,0x66,
  12.                                0x6d,0x7d,0x07,0x7f,0x6f,
  13.                                0x77,0x7c,0x39,0x5e,0x79,0x71,
  14.                                0x00,0x40,0x73,0xff};
  15. unsigned char code wl8[]={0x00,0x00,0x77,0x3f,0x77,
  16.                                0x77,0x79,0x5b};
  17. unsigned char code wl9[]={0x00,0x00,0x3f,0x38,0x38,
  18.                                0x79,0x76,0x06};
  19. unsigned char wl3[8]={18,16,16,16,16,16,16,16};
  20. unsigned char wl4;
  21. unsigned char wl5;
  22. unsigned char wl6;
  23. unsigned char wl7;
  24. unsigned char zw;
  25. unsigned char zq;
  26. unsigned char wl7count;
  27. unsigned char wllen=6;
  28. unsigned char getwl[6];
  29. bit wl7overflag;
  30. bit errorflag;
  31. bit rightflag;
  32. unsigned int second3;
  33. unsigned int aa,bb;
  34. unsigned int cc;
  35. bit wl8flag;
  36. bit alarmflag;
  37. bit hibitflag;
  38. unsigned char wl8a,wl8b;
  39.   
  40.   
  41. void main(void)
  42. {
  43.   unsigned char i,j;
  44.   
  45.   TMOD=0x01;
  46.   TH0=(65536-300)/256;
  47.   TL0=(65536-300)%256;
  48.   TR0=1;
  49.   ET0=1;
  50.   EA=1;
  51.   
  52.   while(1)
  53.     {
  54.       P3=0xff;
  55.       P3_4=0;
  56.       wl6=P3;
  57.       wl6=wl6 & 0x0f;
  58.       if (wl6!=0x0f)
  59.         {
  60.           for(i=10;i>0;i--)
  61.           for(j=248;j>0;j--);
  62.           wl6=P3;
  63.           wl6=wl6 & 0x0f;
  64.           if (wl6!=0x0f)
  65.             {
  66.               wl6=P3;
  67.               wl6=wl6 & 0x0f;              
  68.               switch(wl6)
  69.                 {
  70.                   case 0x0e:
  71.                     wl7=12;
  72.                     break;
  73.                   case 0x0d:
  74.                     wl7=13;
  75.                     break;
  76.                   case 0x0b:
  77.                     wl7=14;
  78.                     break;
  79.                   case 0x07:
  80.                     wl7=15;
  81.                     break;
  82.                 }
  83.               wl6=P3;
  84.               //P1_1=~P1_1;
  85.               if((wl7>=0) && (wl7<10))
  86.                 {
  87.                   if(wl7count<6)
  88.                     {
  89.                       getwl[wl7count]=wl7;
  90.                       wl3[wl7count+2]=19;
  91.                     }
  92.                   wl7count++;
  93.                   if(wl7count==6)
  94.                     {
  95.                       wl7count=6;
  96.   
  97.                     }
  98.                     else if(wl7count>6)
  99.                       {
  100.                         wl7count=6;
  101.                         wl7overflag=1;//wl7 overflow                        
  102.                       }
  103.                 }
  104.                 else if(wl7==12)//delete wl7
  105.                   {
  106.                     if(wl7count>0)
  107.                       {
  108.                         wl7count--;
  109.                         getwl[wl7count]=0;
  110.                         wl3[wl7count+2]=16;
  111.                       }
  112.                       else
  113.                         {
  114.                           wl7overflag=1;
  115.                         }
  116.                   }
  117.                   else if(wl7==15)//enter wl7
  118.                     {
  119.                       if(wl7count!=wllen)
  120.                         {
  121.                           errorflag=1;
  122.                           rightflag=0;
  123.                           second3=0;
  124.                         }
  125.                         else
  126.                           {
  127.                             for(i=0;i<wl7count;i++)
  128.                               {
  129.                                 if(getwl[i]!=wl[i])
  130.                                   {
  131.                                     i=wl7count;
  132.                                     errorflag=1;
  133.                                     rightflag=0;
  134.                                     second3=0;
  135.                                     goto a;
  136.                                   }
  137.                               }
  138.                             errorflag=0;
  139.                             rightflag=1;
  140. a:                          i=wl7count;
  141.                           }
  142.                     }
  143.               wl6=wl6 & 0x0f;              
  144.               while(wl6!=0x0f)
  145.                 {
  146.                   wl6=P3;
  147.                   wl6=wl6 & 0x0f;              
  148.                 }
  149.               wl7overflag=0;//?????????
  150.             }
  151.         }
  152.   
  153.       P3=0xff;
  154.       P3_5=0;
  155.       wl6=P3;
  156.       wl6=wl6 & 0x0f;
  157.       if (wl6!=0x0f)
  158.         {
  159.           for(i=10;i>0;i--)
  160.           for(j=248;j>0;j--);
  161.           wl6=P3;
  162.           wl6=wl6 & 0x0f;
  163.           if (wl6!=0x0f)
  164.             {
  165.               wl6=P3;
  166.               wl6=wl6 & 0x0f;              
  167.               switch(wl6)
  168.                 {
  169.                   case 0x0e:
  170.                     wl7=11;
  171.                     break;
  172.                   case 0x0d:
  173.                     wl7=3;
  174.                     break;
  175.                   case 0x0b:
  176.                     wl7=6;
  177.                     break;
  178.                   case 0x07:
  179.                     wl7=9;
  180.                     break;
  181.                 }
  182.               wl6=P3;
  183.               //P1_1=~P1_1;
  184.               if((wl7>=0) && (wl7<10))
  185.                 {
  186.                   if(wl7count<6)
  187.                     {
  188.                       getwl[wl7count]=wl7;
  189.                       wl3[wl7count+2]=19;
  190.                     }
  191.                   wl7count++;
  192.                   if(wl7count==6)
  193.                     {
  194.                       wl7count=6;
  195.                     }
  196.                     else if(wl7count>6)
  197.                       {
  198.                         wl7count=6;
  199.                         wl7overflag=1;//wl7 overflow                        
  200.                       }
  201.                 }
  202.                 else if(wl7==12)//delete wl7
  203.                   {
  204.                     if(wl7count>0)
  205.                       {
  206.                         wl7count--;
  207.                         getwl[wl7count]=0;
  208.                         wl3[wl7count+2]=16;
  209.                       }
  210.                       else
  211.                         {
  212.                           wl7overflag=1;
  213.                         }
  214.                   }
  215.                   else if(wl7==15)//enter wl7
  216.                     {
  217.                       if(wl7count!=wllen)
  218.                         {
  219.                           errorflag=1;
  220.                           rightflag=0;
  221.                           second3=0;
  222.                         }
  223.                         else
  224.                           {
  225.                             for(i=0;i<wl7count;i++)
  226.                               {
  227.                                 if(getwl[i]!=wl[i])
  228.                                   {
  229.                                     i=wl7count;
  230.                                     errorflag=1;
  231.                                     rightflag=0;
  232.                                     second3=0;
  233.                                     goto a4;
  234.                                   }
  235.                               }
  236.                             errorflag=0;
  237.                             rightflag=1;
  238. a4:                          i=wl7count;
  239.                           }
  240.                     }
  241.               wl6=wl6 & 0x0f;              
  242.               while(wl6!=0x0f)
  243.                 {
  244.                   wl6=P3;
  245.                   wl6=wl6 & 0x0f;              
  246.                 }
  247.               wl7overflag=0;//?????????
  248.             }
  249.         }
  250.   
  251.       P3=0xff;
  252.       P3_6=0;
  253.       wl6=P3;
  254.       wl6=wl6 & 0x0f;
  255.       if (wl6!=0x0f)
  256.         {
  257.           for(i=10;i>0;i--)
  258.           for(j=248;j>0;j--);
  259.           wl6=P3;
  260.           wl6=wl6 & 0x0f;
  261.           if (wl6!=0x0f)
  262.             {
  263.               wl6=P3;
  264.               wl6=wl6 & 0x0f;              
  265.               switch(wl6)
  266.                 {
  267.                   case 0x0e:
  268.                     wl7=10;
  269.                     break;
  270.                   case 0x0d:
  271.                     wl7=2;
  272.                     break;
  273.                   case 0x0b:
  274.                     wl7=5;
  275.                     break;
  276.                   case 0x07:
  277.                     wl7=8;
  278.                     break;
  279.                 }
  280.               wl6=P3;
  281.               //P1_1=~P1_1;
  282.               if((wl7>=0) && (wl7<10))
  283.                 {
  284.                   if(wl7count<6)
  285.                     {
  286.                       getwl[wl7count]=wl7;
  287.                       wl3[wl7count+2]=19;
  288.                     }
  289.                   wl7count++;
  290.                   if(wl7count==6)
  291.                     {
  292.                       wl7count=6;
  293.                     }
  294.                     else if(wl7count>6)
  295.                       {
  296.                         wl7count=6;
  297.                         wl7overflag=1;//wl7 overflow                        
  298.                       }
  299.                 }
  300.                 else if(wl7==12)//delete wl7
  301.                   {
  302.                     if(wl7count>0)
  303.                       {
  304.                         wl7count--;
  305.                         getwl[wl7count]=0;
  306.                         wl3[wl7count+2]=16;
  307.                       }
  308.                       else
  309.                         {
  310.                           wl7overflag=1;
  311.                         }
  312.                   }
  313.                   else if(wl7==15)//enter wl7
  314.                     {
  315.                       if(wl7count!=wllen)
  316.                         {
  317.                           errorflag=1;
  318.                           rightflag=0;
  319.                           second3=0;
  320.                         }
  321.                         else
  322.                           {
  323.                             for(i=0;i<wl7count;i++)
  324.                               {
  325.                                 if(getwl[i]!=wl[i])
  326.                                   {
  327.                                     i=wl7count;
  328.                                     errorflag=1;
  329.                                     rightflag=0;
  330.                                     second3=0;
  331.                                     goto a3;
  332.                                   }
  333.                               }
  334.                             errorflag=0;
  335.                             rightflag=1;
  336. a3:                          i=wl7count;
  337.                           }
  338.                     }
  339.               wl6=wl6 & 0x0f;              
  340.               while(wl6!=0x0f)
  341.                 {
  342.                   wl6=P3;
  343.                   wl6=wl6 & 0x0f;              
  344.                 }
  345.               wl7overflag=0;//?????????
  346.             }
  347.         }
  348.   
  349.       P3=0xff;
  350.       P3_7=0;
  351.       wl6=P3;
  352.       wl6=wl6 & 0x0f;
  353.       if (wl6!=0x0f)
  354.         {
  355.           for(i=10;i>0;i--)
  356.           for(j=248;j>0;j--);
  357.           wl6=P3;
  358.           wl6=wl6 & 0x0f;
  359.           if (wl6!=0x0f)
  360.             {
  361.               wl6=P3;
  362.               wl6=wl6 & 0x0f;              
  363.               switch(wl6)
  364.                 {
  365.                   case 0x0e:
  366.                     wl7=0;
  367.                     break;
  368.                   case 0x0d:
  369.                     wl7=1;
  370.                     break;
  371.                   case 0x0b:
  372.                     wl7=4;
  373.                     break;
  374.                   case 0x07:
  375.                     wl7=7;
  376.                     break;
  377.                 }
  378.               wl6=P3;
  379.               //P1_1=~P1_1;
  380.               if((wl7>=0) && (wl7<10))
  381.                 {
  382.                   if(wl7count<6)
  383.                     {
  384.                       getwl[wl7count]=wl7;
  385.                       wl3[wl7count+2]=19;
  386.                     }
  387.                   wl7count++;
  388.                   if(wl7count==6)
  389.                     {
  390.                       wl7count=6;
  391.                     }
  392.                     else if(wl7count>6)
  393.                       {
  394.                         wl7count=6;
  395.                         wl7overflag=1;//wl7 overflow                        
  396.                       }
  397.                 }
  398.                 else if(wl7==12)//delete wl7
  399.                   {
  400.                     if(wl7count>0)
  401.                       {
  402.                         wl7count--;
  403.                         getwl[wl7count]=0;
  404.                         wl3[wl7count+2]=16;
  405.                       }
  406.                       else
  407.                         {
  408.                           wl7overflag=1;
  409.                         }
  410.                   }
  411.                   else if(wl7==15)//enter wl7
  412.                     {
  413.                       if(wl7count!=wllen)
  414.                         {
  415.                           errorflag=1;
  416.                           rightflag=0;
  417.                           second3=0;
  418.                         }
  419.                         else
  420.                           {
  421.                             for(i=0;i<wl7count;i++)
  422.                               {
  423.                                 if(getwl[i]!=wl[i])
  424.                                   {
  425.                                     i=wl7count;
  426.                                     errorflag=1;
  427.                                     rightflag=0;
  428.                                     second3=0;
  429.                                     goto a2;
  430.                                   }
  431.                               }
  432.                             errorflag=0;
  433.                             rightflag=1;
  434. a2:                          i=wl7count;
  435.                           }
  436.                     }
  437.               wl6=wl6 & 0x0f;              
  438.               while(wl6!=0x0f)
  439.                 {
  440.                   wl6=P3;
  441.                   wl6=wl6 & 0x0f;              
  442.                 }
  443.               wl7overflag=0;//?????????
  444.             }                          
  445.         }
  446.       
  447.     }
  448. }
  449. void t0(void) interrupt 1 using 0
  450. {
  451.   TH0=(65536-300)/256;
  452.   TL0=(65536-300)%256;
  453.   
  454.   wl5++;
  455.   if(wl5==8)
  456.     {
  457.       wl5=0;
  458.       P1=wl2[wl3[wl4]];
  459.       P2=wl1[wl4];
  460.       wl4++;
  461.       if(wl4==8)
  462.         {
  463.           wl4=0;
  464.         }
  465.     }
  466.   
  467.   if((errorflag==1) && (rightflag==0))
  468.     {
  469.        zw++;
  470.            P1=wl8[zw];
  471.        P2=wl1[zw];
  472.   if(zw==8)
  473.     {
  474.       zw=0;      
  475.     }
  476.           bb++;
  477.       if(bb==800)
  478.         {
  479.           bb=0;
  480.           alarmflag=~alarmflag;
  481.         }
  482.       if(alarmflag==1)//sound alarm signal
  483.         {
  484.           P0_0=~P0_0;
  485.         }
  486.   
  487.       aa++;
  488.       if(aa==800)//light alarm signal
  489.         {
  490.           aa=0;
  491.           //P1_0=~P1_0;
  492.         }
  493.       second3++;
  494.       if(second3==6400)
  495.         {
  496.           second3=0;
  497.           errorflag=0;
  498.           rightflag=0;
  499.           alarmflag=0;
  500.           bb=0;
  501.           aa=0;
  502.         }      
  503.     }
  504.     else if((errorflag==0) && (rightflag==1))
  505.       {
  506.         zq++;
  507.                 P1=wl9[zq];
  508.         P2=wl1[zq];
  509.   if(zq==8)
  510.     {
  511.       zq=0;
  512.       
  513.     }
  514.         cc++;
  515.         if(cc<1000)
  516.           {
  517.             wl8flag=1;
  518.           }
  519.           else if(cc<2000)
  520.             {
  521.               wl8flag=0;
  522.             }
  523.             else
  524.               {
  525.                 errorflag=0;
  526.                 rightflag=0;
  527.                 P0_0=1;
  528.                 cc=0;
  529.                 wl8a=0;
  530.                 wl8b=0;
  531.                 wl8flag=0;
  532.                 //P1_0=1;
  533.               }
  534.         if(wl8flag==1)
  535.           {
  536.             wl8a++;
  537.             if(wl8a==2)
  538.               {
  539.                 wl8a=0;
  540.                 P0_0=~P0_0;
  541.               }
  542.           }
  543.           else
  544.             {
  545.               wl8b++;
  546.               if(wl8b==3)
  547.                 {
  548.                   wl8b=0;
  549.                   P0_0=~P0_0;
  550.                 }
  551.             }
  552.       }
  553.   
  554.   if(wl7overflag==1)
  555.     {
  556.       P0_0=~P0_0;
  557.     }
  558. }
復制代碼


電子密碼鎖程序.rar (18.5 KB, 下載次數: 14)


回復

使用道具 舉報

ID:585326 發表于 2019-8-9 20:08 | 顯示全部樓層
沒有仿真圖嗎?

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区影院 | 久久精品国产99国产精品 | 成人av网页 | 欧美精品一区二区三区在线 | 免费高潮视频95在线观看网站 | 韩日有码 | 99久久精品国产一区二区三区 | 欧美最猛黑人xxxx黑人 | 成人激情视频网 | 国产一区二区不卡 | 国产黄视频在线播放 | 欧美激情一区二区 | 91观看| 亚洲日本免费 | 欧美精品一区在线 | 在线观看免费观看在线91 | 91婷婷韩国欧美一区二区 | 成人午夜精品 | 国产精品一区在线观看 | 欧美日本在线观看 | 国产精品久久久久久久久免费丝袜 | 玖玖国产 | 午夜精品久久久 | 粉嫩av久久一区二区三区 | 国产亚洲一区精品 | 久久精品国产久精国产 | 91精品一区 | 国产精品精品视频一区二区三区 | 我要看黄色录像一级片 | 色视频一区二区 | 97影院在线午夜 | 国产精品欧美一区二区三区不卡 | 一区二区三区国产 | 日韩视频在线一区二区 | 国产精品视频不卡 | 欧美在线视频网站 | 日韩成人在线播放 | 黄免费观看视频 | www.久久久久久久久 | a久久| www.狠狠操 |