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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2994|回復: 0
收起左側

單片機密碼鎖設計 包含c51程序及proteus圖 功能齊全

[復制鏈接]
ID:255665 發表于 2018-4-27 14:56 | 顯示全部樓層 |閱讀模式
密碼鎖仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.jpg 0.jpg

單片機源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char       
  3. #define uint unsigned int
  4. sbit RS = P2^6 ;
  5. sbit RW = P2^5;
  6. sbit E = P2^7;
  7. sbit P3_0=P3^0;
  8. sbit P3_1=P3^1;
  9. uchar b,c,d,n,g=0,e=0;
  10. uchar o=0,t=0,m=0;
  11. uchar a[2][6];
  12. uint j;

  13. void fbusy(void);
  14. void write_command(uchar com);
  15. void write_data(uchar j);
  16. void LCD_init(void);
  17. void string(uchar ad ,uchar *s);
  18. void lcd_test(void);

  19. void input1(void);
  20. void panduan(void);
  21. void jinggao(void);
  22. void delay();
  23. void delay1(unsigned char x);
  24. void key(void);

  25. void delay(unsigned int k)
  26. {
  27.     unsigned int i,j;
  28. for(i=0;i<k;i++)
  29. for(j=0;j<121;j++)
  30. {
  31. ;
  32. }
  33.    }

  34. void fbusy(void)          //忙函數
  35. {
  36.    
  37.       RS = 0;
  38.       RW = 1;
  39.       E = 1;
  40.   E=0;     
  41. while(P0 & 0x80)
  42.    {E = 0;E=1;}
  43.    delay(1);
  44. }


  45. void write_command(uchar com)          //寫命令函數
  46. { fbusy();
  47.    E = 0;
  48.    RS = 0;
  49.    RW = 0;
  50.    E=1;
  51.    P0 = com;
  52.    E = 0;
  53.    delay(1);
  54. }


  55. void write_data(uchar j)         //寫數據函數
  56. {
  57.    fbusy();
  58.    E = 0;
  59.    RS = 1;
  60.    RW = 0;
  61.    E=1;
  62.    P0 = j;
  63.    E=0;
  64.    delay(1);   
  65. }

  66. void LCD_init(void)          //LCD初始化
  67. { write_command(0x38);
  68.    write_command(0x01);
  69.    write_command(0x0e);
  70.    write_command(0x14);
  71.    delay(1);
  72. }

  73. void string(uchar ad, uchar *s)
  74. { write_command(ad);
  75.    while(*s>0)
  76.     { write_data(*s++);
  77.       delay(100);
  78.     }
  79. }

  80.    
  81. void delay1(unsigned char x)   //大延遲函數
  82. {
  83.   unsigned char i,j,k;
  84.    do
  85. {
  86.   for(i=10;i>0;i--)
  87.    for(j=100;j>0;j--)
  88.     for(k=249;k>0;k--);
  89. }
  90. while(--x);
  91. }


  92. void key()           //鍵盤
  93. {
  94.   while(1)
  95.     {
  96.    if(m>2)           //輸錯三次
  97.    {
  98.   LCD_init();       
  99.     for(t=0;t<100;t++)
  100.   {
  101.   P3_1=0;
  102.   delay(10);
  103.   P3_1=1;
  104.   delay(10);
  105.   }
  106.     jinggao();          //警告
  107.     delay1(5);
  108.     m=0;
  109.     input1();
  110.    
  111.      }
  112.         P1=0xf0;
  113.   if(P1!=0xf0)
  114.   {
  115.    delay(150);
  116.    if(P1!=0xf0)
  117.    {
  118.     switch(P1)
  119.     {
  120.        
  121.      case 0x70:b=0;break;
  122.      case 0xb0:b=1;break;
  123.      case 0xd0:b=2;break;
  124.      case 0xe0:b=3;break;
  125.                     default:break;
  126.     }
  127.    P1=0x0f;
  128.    switch(P1)
  129.    {
  130.     case 0x07:c=0;break;
  131.     case 0x0b:c=1;break;
  132.     case 0x0d:c=2;break;
  133.     case 0x0e:c=3;break;
  134.                 default:break;
  135.    }
  136.    d=(4*b+c);
  137.   if(d==10)           //更改鍵
  138.    {
  139.            delay1(1);
  140.    if(e>=1)
  141.    {  
  142.    write_command(0x04);
  143.    write_data(' ');
  144.    write_command(0x06);
  145.           e--;
  146.          }
  147.    }
  148.   
  149.     if(d==11)          //設置新密碼
  150.    {
  151.    delay1(2);
  152.    g=1;e=0;o=1;
  153.    LCD_init();
  154.         string(0x80,"new code:");
  155.     if(e<6)
  156.       {
  157.       key();
  158.       write_data('0'+d);
  159.       a[g][e]=d;
  160.       e++;
  161.       }
  162.       for(e=0;e<6;e++)
  163.            {
  164.             a[0][e]=a[1][e];
  165.            }
  166.    LCD_init();
  167.         string(0x80,"Reset");
  168. string(0xc0,"Successfully");      
  169.         delay1(2);
  170.         o=0;e=0;
  171.         input1();
  172.    key();

  173.    }
  174.    if(d<=9)
  175.   {       
  176.      if(e<6)
  177.   {
  178.   write_data('0'+d);
  179.   a[g][e]=d;
  180.   e++;
  181.   delay1(1);
  182.   if(g==0&e>5)
  183.   {
  184.   e=0;g++;
  185.   delay1(2);
  186.   LCD_init();
  187.      string(0x80,"set");
  188. string(0xc0,"successfully");

  189.   delay1(2);
  190.   input1();
  191.     }
  192.   if(g>0&e>5)
  193.     {
  194.       delay1(1);
  195.        LCD_init();
  196.    if(o==0)
  197.    panduan();
  198.    if(o==1)
  199.    break;
  200.     }
  201.   }
  202.   }
  203.    
  204. }
  205. }
  206. }
  207. }


  208. void panduan()
  209. {
  210.     n=1;g=1;
  211.    for(e=0;e<6;e++)
  212.    {
  213.      if(a[0][e]!=a[1][e])           //第一次輸入與第二次輸入不同為n=0
  214.   {
  215.    n=0;
  216.     }
  217.   }
  218.   if(n==1)            //相同
  219.   {
  220.      P3_0=1;
  221.       LCD_init();
  222.      string(0x80,"Right");
  223.      delay1(5);
  224.      input1();
  225.      e=0;m=0;
  226.       key();
  227.   }
  228.   if(n==0)            //不同
  229.   {
  230.      P3_0=0;
  231.       LCD_init();
  232.     string(0x80,"Error");
  233.      delay1(3);
  234.      input1();
  235.      e=0;m=m+1;
  236.      key();
  237.   }     
  238. ……………………

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

所有資料51hei提供下載:
密碼鎖.zip (137.74 KB, 下載次數: 54)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩有码一区 | 国产精品免费大片 | 免费一级片 | 国产精品一区在线观看 | 欧美综合一区二区 | 国产精品久久久久久久久久久久 | 色免费在线视频 | 久久国产日本 | 亚洲午夜在线 | 国产成人福利在线观看 | 一区二区三区在线播放 | 日韩一区二区三区四区五区 | 观看av| 日韩视频在线观看一区二区 | 国产精品久久av | 亚洲免费婷婷 | 欧美人妇做爰xxxⅹ性高电影 | 成人精品国产 | 国产午夜精品一区二区三区四区 | 伊人91在线 | 久久久久一区 | 亚洲国产一区二区三区 | 亚洲欧美另类在线 | 91免费看片 | 亚洲一区二区三区在线播放 | 日本国产一区二区 | 国产精成人| 麻豆久久久久 | 精品一区二区三区入口 | 天天拍夜夜爽 | 日本视频一区二区三区 | 国产日韩欧美91 | 懂色中文一区二区三区在线视频 | 伊人久久综合影院 | 正在播放国产精品 | av 一区二区三区 | 91久久精品一区二区三区 | 天天拍夜夜爽 | 91久久| 美国av片在线观看 | 亚洲人成人一区二区在线观看 |