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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機電子密碼鎖設計PCB制版和原理圖及仿真和源碼

[復制鏈接]
跳轉到指定樓層
樓主
Altium Designer畫的電子密碼鎖原理圖和PCB圖如下:(51hei附件中可下載工程文件)


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define GPIO_DIG P0
  3. #define GPIO_KEY P1
  4. sbit JINGBAO=P2^0;
  5. sbit SUO=P2^1;
  6. void KeyDown();
  7. unsigned char  DIG_CODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  8. unsigned char  A[6],X,Q;
  9. unsigned S,M,H;
  10. unsigned char KeyValue;
  11. void Delay10ms(unsigned int c)
  12. {
  13.         unsigned char a,b;
  14.         for(;c>0;c--)
  15.   for        (b=38;b>0;b--)
  16.         for(a=13;a>0;a--);
  17. }
  18. void KeyDown(void)
  19. {
  20.         char a=0,K,CWCS;
  21.         GPIO_DIG=0x00;
  22.         GPIO_KEY=0X0f;
  23.         if(GPIO_KEY!=0x0f)
  24.         {
  25.                 Delay10ms(1);
  26.                 if(GPIO_KEY!=0x0f)
  27.                 {
  28.                         GPIO_KEY=0X0F;
  29.                         switch(GPIO_KEY)
  30.                         {
  31.                                 case(0x07):KeyValue=1;break;//0000 0111
  32.                                 case(0x0b):KeyValue=2;break;//0000 1011
  33.                                 case(0x0d):KeyValue=3;break;//0000 1101
  34.                         }
  35.                         GPIO_KEY=0XF0;
  36.                         switch(GPIO_KEY)
  37.                         {
  38.                                 case(0xe0):if(KeyValue==1)K=0;if(KeyValue==2)K=10;if(KeyValue==3)K=11;break;
  39.                                 case(0xd0):K=KeyValue;break;
  40.                                 case(0xb0):K=KeyValue+3;break;
  41.                                 case(0x70):K=KeyValue+6;break;
  42.                         }
  43.                         if(K<10&&X<6)
  44.                                 {
  45.                                 A[X]=K;
  46.                                 X++;
  47.                           }
  48.                         if(K==10&&X>0) X--;//刪除功能
  49.                         if(X==6&&K==11)//輸入6位數后,按確認鍵
  50.                                 {
  51.                                 if(A[0]==6&&A[1]==6&&A[2]==6&&A[3]==6&&A[4]==6&&A[5]==6)//判斷和設置密碼
  52.                                         {
  53.                 X=0;//密碼正確要將X重新置0
  54.                                         SUO=1;//密碼正確,開鎖
  55.                                         Delay10ms(2500);//開鎖后延時
  56.                                         SUO=0;//延時一定時間后自動上鎖
  57.                                         CWCS=0;        //將之前的錯誤次數清零                               
  58.                                   }
  59.                                 else
  60.                                         {
  61.                                         CWCS++;
  62.                                         P3=0x00;
  63.                                         X=0;
  64.                                         while(CWCS==3)
  65.                                                 {
  66.                                                 JINGBAO=1;//報警
  67.                                                 Delay10ms(5000);//報警延時
  68.                                                 JINGBAO=0;//報警解除
  69.                                                 CWCS=0;//將之前的錯誤次數清零       
  70.                                           }
  71.                                   }
  72.                           }
  73.                         while((a<20)&&(GPIO_KEY!=0xf0))
  74.                                 {
  75.                                  Delay10ms(35);
  76.                 if(X>=1)
  77.                         {               
  78.                         Q=A[0];
  79.                         P0=DIG_CODE[Q];
  80.                         P3=0x01;
  81.                         Delay10ms(1);
  82.                         P3=0x00;
  83.                   }
  84.       
  85.                 if(X>=2)
  86.                         {
  87.                         Q=A[1];
  88.                         P0=DIG_CODE[Q];
  89.                         P3=0x02;
  90.                         Delay10ms(1);
  91.                         P3=0x00;
  92.                   }
  93.                        
  94.                 if(X>=3)
  95.                         {
  96.                         Q=A[2];
  97.                         P0=DIG_CODE[Q];
  98.                         P3=0x04;       
  99.                         Delay10ms(1);
  100.                         P3=0x00;
  101.                   }
  102.                        
  103.                 if(X>=4)
  104.                         {
  105.                         Q=A[3];
  106.                         P0=DIG_CODE[Q];
  107.                         P3=0x08;               
  108.                         Delay10ms(1);
  109.                         P3=0x00;
  110.                   }
  111.                        
  112.                 if(X>=5)
  113.                         {
  114.                         Q=A[4];
  115.                         P0=DIG_CODE[Q];
  116.                         P3=0x10;                       
  117.                         Delay10ms(1);
  118.                         P3=0x00;
  119.                   }
  120.                        
  121.                 if(X>=6)
  122.                         {
  123.                         Q=A[5];
  124.                         P0=DIG_CODE[Q];
  125.                         P3=0x20;                       
  126.                         Delay10ms(1);
  127.                         P3=0x00;
  128.                   }
  129.                                  a++;
  130.                         }
  131.                 }
  132.         }
  133.         else{                    //不輸入密碼時顯示時間
  134.                 if(X==0)
  135.                         {
  136.                   P0=DIG_CODE[S%10];
  137.       P3=0x20;
  138.                   Delay10ms(1);
  139.             P3=0x00;
  140.          
  141.             P0=DIG_CODE[S/10];
  142.       P3=0x10;
  143.             Delay10ms(1);
  144.                   P3=0x00;
  145.       
  146.             P0=DIG_CODE[M%10];
  147.       P3=0x08;
  148.             Delay10ms(1);
  149.                   P3=0x00;
  150.       
  151.       P0=DIG_CODE[M/10];
  152.       P3=0x04;
  153.             Delay10ms(1);
  154.                   P3=0x00;
  155.          
  156.             P0=DIG_CODE[H%10];
  157.       P3=0x02;
  158.                   Delay10ms(1);
  159.                   P3=0x00;
  160.       
  161.             P0=DIG_CODE[H/10];
  162.       P3=0x01;
  163.             Delay10ms(1);
  164.             P3=0x00;
  165.                 }
  166.         }
  167. }
  168.        
  169.        
  170. void main()
  171. {
  172.         JINGBAO=0;
  173.   SUO=0;
  174.         TMOD=0x01;//0000 0001 16位定時器
  175.         EA=1;
  176.         ET0=1;
  177.         TH0=(65536-1000)/256;//賦初值,設置定時時間1毫秒
  178.         TL0=(65536-1000)%256;
  179.         TR0=1;
  180.         while(1)
  181.                 {
  182.                         P3=0x00;
  183.                         P1=0x0f;
  184.                         KeyDown();
  185.                         if(X>=1)
  186.                         {               
  187.                         Q=A[0];
  188.                         P0=DIG_CODE[Q];
  189.                         P3=0x01;
  190.                         Delay10ms(1);
  191.                         P3=0x00;
  192.                   }
  193.       
  194.                 if(X>=2)
  195.                         {
  196.                         Q=A[1];
  197.                         P0=DIG_CODE[Q];
  198.                         P3=0x02;
  199.                         Delay10ms(1);
  200.                         P3=0x00;
  201.                   }
  202.                        
  203.                 if(X>=3)
  204.                         {
  205.                         Q=A[2];
  206.                         P0=DIG_CODE[Q];
  207.                         P3=0x04;       
  208.                         Delay10ms(1);
  209.                         P3=0x00;
  210.                   }
  211.                        
  212.                 if(X>=4)
  213.                         {
  214.                         Q=A[3];
  215.                         P0=DIG_CODE[Q];
  216.                         P3=0x08;               
  217.                         Delay10ms(1);
  218.                         P3=0x00;
  219.                   }
  220.                        
  221.                 if(X>=5)
  222.                         {
  223.                         Q=A[4];
  224.                         P0=DIG_CODE[Q];
  225.                         P3=0x10;                       
  226.                         Delay10ms(1);
  227.                         P3=0x00;
  228.                   }
  229.                        
  230.                 if(X>=6)
  231.                         {
  232.                         Q=A[5];
  233.                         P0=DIG_CODE[Q];
  234.                         P3=0x20;                       
  235.                         Delay10ms(1);
  236. ……………………

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

所有資料51hei提供下載:
電子密碼鎖.rar (781.07 KB, 下載次數: 138)


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

使用道具 舉報

沙發
ID:356205 發表于 2018-7-7 19:09 | 只看該作者
請問能附一張流程圖嗎,謝謝
回復

使用道具 舉報

板凳
ID:356205 發表于 2018-7-7 19:10 | 只看該作者
請問能附一張流程圖嗎,謝謝
回復

使用道具 舉報

地板
ID:1029707 發表于 2022-5-26 13:44 | 只看該作者
請問可以帶一下流程圖嗎比較需要
回復

使用道具 舉報

5#
ID:1042648 發表于 2022-9-7 01:05 | 只看該作者
謝謝樓主分享!要是有流行圖就更好了。
回復

使用道具 舉報

6#
ID:1047969 發表于 2022-10-21 08:25 | 只看該作者
附件在哪 沒有proteus下載啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片网站免费观看 | 久久精品亚洲一区二区三区浴池 | 一区二区三区亚洲 | 激情综合五月 | 欧美成人免费在线视频 | 妖精视频一区二区三区 | 精品欧美一区二区在线观看欧美熟 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 国产精品乱码一区二区三区 | 国产精品高清在线 | 日韩伦理一区二区 | 免费爱爱视频 | 久久精品亚洲一区二区三区浴池 | 欧美区在线观看 | 亚洲视频二区 | 久久久精品一区 | 国产一区二区不卡 | 午夜资源| 免费在线成人 | www.三级| 日本一卡精品视频免费 | 一区二区三区精品 | 激情综合五月 | 天天看天天干 | 久久不卡 | 羞羞视频在线观看 | 欧美性久久 | 久久久久久久久蜜桃 | 欧美一区二区三区国产精品 | 91极品欧美视频 | 九色 在线 | av在线播放一区二区 | 9色网站| 国产日韩欧美中文字幕 | 91在线视频播放 | 成人福利网 | 精品国产乱码久久久久久蜜退臀 | 欧美精品一区二区免费视频 | 精品一区二区三区不卡 | 91精品国产综合久久久动漫日韩 | 免费一区二区三区 |