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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機多功能密碼鎖

[復制鏈接]
跳轉到指定樓層
樓主
  適合新手學習。


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. #define GPIO_KEY P2

  6. sbit LCD_E=P3^7;
  7. sbit LCD_RW=P3^6;                                                               
  8. sbit LCD_RS=P3^5;

  9. sbit beep=P3^4;

  10. uchar table[]="00:00:00";
  11. char keyword1[]={1,2,3,4,5,6};
  12. char table1[5]="pass!";
  13. char table2[6]="wrong!";
  14. char in[6]={-6,-6,-6,-6,-6,-6};
  15. uchar num,miao=0,fen=0,shi=0,x,y,n1=0,n2=0,cmiao=0,cshi=0,cfen=0,i,ge1=0,shi1=0,bai1=0,qian1=0;
  16. char KeyValue=-1,Key1=0,Key2=0;
  17. int s=0;
  18. char flag1=-1,flag2=-1;
  19. char keyword;
  20. uchar i=0,j,a=0;
  21. char flag_pass=-1,flag_beep=-1,c;
  22. void delay5ms();   
  23. void write_com(uchar com);
  24. void write_data(uchar dat);
  25. void display(uchar b,uchar dat);
  26. void init1();
  27. void init2();
  28. void Keyscan();
  29. void input();
  30. void show1();
  31. void show2();
  32. char store();
  33. void unlock();
  34. void delay2s();
  35. void main()
  36. {

  37.      init1();
  38.      beep=1;
  39.    while(1)
  40.         {

  41.                  if(flag1==1)
  42.                  {
  43.                                                                  if(KeyValue==1)
  44.                                                 {
  45.                                                                 TR0=0;
  46.                                                                 a++;
  47.                                                                 KeyValue=-1;

  48.                                                                 if(a==4)
  49.                                                                 {
  50.                                                                         TR0=1;
  51.                                                                         a=0;
  52.                                                                 }
  53.                                                        
  54.                                                  }
  55.                                                  if(a!=0)
  56.                                                  {
  57.                                                          if(KeyValue==2)
  58.                                                                 {
  59.                                                                     KeyValue=-1;
  60.                                                                                 switch(a)
  61.                                                                                 {
  62.                                                                                         case 1:miao=miao+1;display(0x86,miao);break;
  63.                                                                                         case 2:fen=fen+1;display(0x83,fen);  break;
  64.                                                                                         case 3:shi=shi+1;display(0x80,shi);        break;                                                                               
  65.                                                                                 }
  66.                                                                 }
  67.                                                                  if(KeyValue==3)
  68.                                                                  {
  69.                                                                    KeyValue=-1;
  70.                                                                          switch(a)
  71.                                                                          {
  72.                                                                                                 case 1:miao=miao-1;display(0x86,miao);break;
  73.                                                                                                 case 2:fen=fen-1;display(0x83,fen);  break;
  74.                                                                                                 case 3:shi=shi-1;display(0x80,shi);        break;
  75.                                                                          }
  76.                                                                  }                         
  77.                                                         }
  78.                  }
  79.      Keyscan();
  80.      input();
  81.                 unlock();
  82.      if(flag_beep==1)
  83.                  {
  84.                  beep=0;
  85.                  }
  86.                  else
  87.                  {
  88.                  beep=1;
  89.                  }
  90.   }
  91. }
  92. void delay5ms()   //?? 0us
  93. {
  94.     uchar a,b;
  95.     for(b=19;b>0;b--)
  96.         for(a=130;a>0;a--);
  97. }


  98. void write_com(uchar com)
  99. {
  100.    LCD_E=0;
  101.    LCD_RW= 0 ;
  102.    LCD_RS=0;
  103.    P1=com;

  104.    delay5ms();
  105.    LCD_E=1;
  106.    delay5ms();
  107.    LCD_E=0;
  108. }
  109. void write_data(uchar dat)
  110. {
  111.     LCD_E=0;
  112.    LCD_RW=0;
  113.    LCD_RS=1;
  114.    P1=dat;

  115.    delay5ms();
  116.    LCD_E=1;
  117.    delay5ms();
  118.    LCD_E=0;
  119. }

  120. void init1()
  121. {
  122.    write_com(0x38);
  123.    write_com(0x0c);
  124.    write_com(0x06);
  125.    write_com(0x01);
  126. }
  127. void init2()
  128. {
  129.    write_com(0x80);
  130.         for(num=0;num<8;num++)
  131.         {
  132.          write_data(table[num]);
  133.         }
  134.                 write_com(0xc0);
  135.                 for(i=0;i<8;i++)
  136.                 write_data(table[i]);
  137.   TMOD=0X11;
  138.   
  139.         TH0=(65536-50000)/256;
  140.         TL0=(65536-50000)%256;
  141.         TH1=(65536-50000)/256;
  142.         TL1=(65536-50000)%256;
  143.        
  144.   ET0=1;//????0??
  145.   TR0=1;//?????0
  146.   ET1=1;//????0??
  147.   TR1=1;
  148.   EA=1;




  149. }
  150. void display(uchar b,uchar dat)
  151. {
  152.    uchar shi,ge;
  153.    shi=dat/10;
  154.    ge=dat%10;
  155.    write_com(b);
  156.         delay5ms();
  157.    write_data(0x30+shi);
  158.    write_data(0x30+ge);

  159. }


  160. void Keyscan()
  161. {
  162.         uchar i;
  163.         GPIO_KEY=0X0f;
  164.         if(GPIO_KEY!=0X0f)
  165.         {
  166.                 delay5ms();
  167.                 if(GPIO_KEY!=0X0f)
  168.                 {
  169.                
  170.                                 switch(GPIO_KEY)
  171.                                 {
  172.                                         case 0x07:KeyValue=12; break ;
  173.                                         case 0x0b:KeyValue=8;        break ;
  174.                                         case 0x0d:KeyValue=4;        break ;               
  175.                                         case 0x0e:KeyValue=0;        break ;
  176.                                 }
  177.      
  178.                                 GPIO_KEY=0XF0;
  179.                                 if(GPIO_KEY!=0XF0)
  180.                                 {
  181.                                  delay5ms();
  182.                                  if(GPIO_KEY!=0XF0)
  183.                                                          switch(GPIO_KEY)
  184.                                                          {
  185.                                                                  case 0x70:KeyValue=KeyValue+1;break;
  186.                                                                  case 0xb0:KeyValue=KeyValue+2;break;
  187.                                                                  case 0xd0:KeyValue=KeyValue+3;break;
  188.                                                                  case 0xe0:KeyValue=KeyValue+4;break;
  189.                                                          }
  190.                                                
  191.                                                         while((i<50)&&(GPIO_KEY!=0XF0))
  192.                                                                 {
  193.                                                                 delay5ms();
  194.                                                                         i++;
  195.                                                                 }
  196.                                                                 i=0;
  197.                                                        
  198.                           }
  199.                 }
  200.   }

  201. }




  202. void input()
  203. {
  204.    
  205.         if(flag_pass==1)
  206.                 {
  207.                         if(flag1==1)
  208.                         {

  209.                                         if(KeyValue==5)
  210.                                         {
  211.                                                 KeyValue=-1;
  212.                                                 Key2++;
  213.                                                 if(Key2==4)
  214.                                                         Key2=0;
  215.                                         }               
  216.                                         if(Key2!=0)
  217.                                         {
  218.                                                 if(KeyValue==6)
  219.                                                 {
  220.                                                         KeyValue=-1;
  221.                                                          switch(Key2)
  222.                                                          {
  223.                                                                  case 1:cmiao=cmiao+1;display(0xc6,cmiao);break;
  224.                                                                  case 2:cfen=cfen+1;display(0xc3,cfen);break;
  225.                                                                  case 3:cshi=cshi+1;display(0xc0,cshi);break;
  226.                                                          
  227.                                                          }
  228.                                                 }
  229.                                                 if(KeyValue==7)
  230.                                                 {
  231.                                                         KeyValue=-1;
  232.                                                          switch(Key2)
  233.                                                          {
  234.                                                                  case 1:cmiao=cmiao-1;display(0xc6,cmiao);break;
  235.                                                                  case 2:cfen=cfen-1;display(0xc3,cfen);break;
  236.                                                                  case 3:cshi=cshi-1;display(0xc0,cshi);break;
  237.                                                          }         
  238.                                                  }
  239.                                         }
  240.                                         if(KeyValue==9)
  241.                                         {
  242.                                                 KeyValue=-1;
  243.                                                 s++;
  244.                                         }
  245.                                                 if(KeyValue==10)
  246.                                         {
  247.                                                 KeyValue=-1;
  248.                                                 s--;
  249.                                         }       
  250.                                                 if(KeyValue==13)
  251.                                                 {
  252.                                                         flag2=1;
  253.                                                 }
  254.                                                 if(KeyValue==14)
  255.                                                 {
  256.                                                         flag2=2;       
  257.                                                 }
  258.                         if(miao==cmiao&&fen==cfen&&shi==cshi&&Key2==0)
  259.                  {
  260.                          flag_beep=1;
  261.        c=KeyValue;                         
  262.                  }
  263.                  if(c!=KeyValue)
  264.                  {
  265.                  flag_beep=-1;
  266.                  }
  267.                  
  268.                  show1();
  269.                  show2();
  270.         
  271.         }
  272.                         if(KeyValue==4)
  273.                         {
  274.                                 KeyValue=-1;
  275.                                 init1();
  276.                                 init2();

  277.                                 flag1=1;
  278.                         }
  279.                                      if(KeyValue==8)
  280.                                 {
  281.                                         KeyValue=-1;
  282.                                         TR1=1;
  283.                                 }
  284.                                         if(KeyValue==12)
  285.                                 {
  286.                                         KeyValue=-1;
  287.                                         TR1=0;
  288.                                 }       
  289.   }
  290. }
  291. void unlock()
  292. {
  293.         uchar s1,m;
  294.   char flag[6]={-1,-1,-1,-1,-1,-1};
  295.     if(flag_pass==-1)
  296.                 {
  297.                                 if(KeyValue==2&&flag!=1)
  298.                         {
  299.                                 for(s1=0;s1<6;s1++)
  300.                                 {
  301.                                  if(in[s1]==keyword1[s1])
  302.                                         flag[s1]=1;
  303.                                  else
  304.                                         flag[s1]=0;
  305.                                 }       

  306.                                 if(flag[0]==1&&flag[1]==1&&flag[2]==1&&flag[3]==1&&flag[4]==1&&flag[5]==1)
  307.                                 {
  308.                                         flag_pass=1;
  309.                                         write_com(0x80);
  310.                                         for(m=0;m<5;m++)
  311.                                         write_data(table1[m]);
  312.                                 }                                                       
  313.                                 else
  314.                                 {
  315.                                         write_com(0x80);
  316.                                         flag_pass=-1;
  317.                                         for(m=0;m<6;m++)
  318.                                         write_data(table2[m]);                                               
  319.                                 }
  320.                         }
  321.                                        
  322.     if(KeyValue!=-1&&flag1!=1)
  323.                  {
  324.                           if(KeyValue!=1)
  325.                                 {
  326.                                 in[i]=store();
  327.                                 i++;
  328.                           KeyValue=-1;
  329.                                 }
  330.                                 if(KeyValue==1)
  331.                                 {
  332.                                 i--;
  333.                                 in[i]=-6;
  334.                                 KeyValue=-1;
  335.                                 }
  336.     }

  337.                  write_com(0xc0);
  338.              for(j=0;j<6;j++)
  339.                  {
  340.                          write_data(in[j]+0x30);
  341.            }
  342.          }
  343.                 else ;
  344.        
  345. }

  346. void show1()
  347. {

  348.         if(n1>19) //????????
  349.   {
  350.    n1=0;
  351.    miao++;
  352.        if(miao>59)
  353.                         {
  354.                          miao=0;
  355.                          fen++;
  356.                                         if(fen>59)
  357.                                          {
  358.                                          fen=0;
  359.                                          shi++;
  360.                                                  if(shi>23)
  361.                                                  {
  362.                                                  shi=0;
  363.                                                  }
  364.                                          display(0x80,shi);
  365.                                          }
  366.                                          display(0x83,fen);
  367.                         }
  368.                         display(0x86,miao);
  369.         }
  370. }
  371. void show2()
  372. {
  373.   
  374.                 if(n2>19)
  375.                 {
  376.                         if(flag2==1)
  377.                         {
  378.                                         s++;
  379.                         }
  380.                         if(flag2==2)
  381.                         {
  382.                                         s--;                                       
  383.                         }               
  384.                              n2=0;               
  385.                  
  386.                 }
  387.                  if(s<0)       
  388.       s=0;       
  389.                         qian1=s/1000;
  390.                         bai1=s%1000/100;
  391.                         shi1=s%100/10;
  392.                         ge1=s%10;
  393.                         write_com(0xc9);
  394.                          write_data(qian1+0x30);
  395.                         write_com(0xca);
  396. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
多功能密碼鎖.zip (53.3 KB, 下載次數: 29)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 本道综合精品 | 久久久精品一区 | 久久国内精品 | av黄色网| aaaaaa大片免费看最大的 | 精品日本中文字幕 | 欧美一级二级三级视频 | av免费在线观看网站 | 成年人在线观看 | 精品乱码一区二区三四区视频 | 欧美日韩网站 | 日韩中文在线视频 | 婷婷五月色综合 | www国产成人免费观看视频,深夜成人网 | 日韩一级黄色片 | 毛片的网址 | 中文字幕一区二区在线观看 | 国产高清免费视频 | 免费一级欧美在线观看视频 | 国产精品久久久久久模特 | 欧美成人综合 | 奇米久久| 久久久久久久久国产成人免费 | 精品一区二区三区视频在线观看 | 欧美理伦片在线播放 | 日韩视频观看 | 日韩久久久久久久久久久 | 成人在线欧美 | 999精品视频| 91天堂网 | 国产日韩视频 | 精品国产免费一区二区三区演员表 | 国产日日操| 亚洲精品一区二区三区蜜桃久 | 亚洲精品中文字幕中文字幕 | 国产超碰人人爽人人做人人爱 | 欧美一级片免费看 | 美日韩免费 | 日韩中文字幕在线播放 | 精品一区二区三区av | 伊人婷婷|