找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 554|回复: 0
打印 上一主题 下一主题
收起左侧

单片机电子锁,别人的代码,自己改了一下,无蜂鸣器

[复制链接]
跳转到指定楼层
楼主
电子锁密码6602



单片机源程序如下:
  1.          #include<reg51.h>
  2. #include<string.h>
  3. sbit RS = P3^0;
  4. sbit EN = P3^1;
  5. sbit IN1 =P3^2;
  6. sbit IN2 = P3^3;
  7. void delay(int a)
  8. {
  9.         int i,j;
  10.         for(i=0;i<a;i++)
  11.         for(j=0;j<255;j++);
  12. }
  13. void cmd(char cm)
  14. {
  15.         P2 = cm;
  16.         RS = 0;
  17.         EN = 1;
  18.         delay(1);
  19.         EN = 0;
  20. }
  21. void dat(char dt)
  22. {
  23.         P2 = dt;
  24.         RS = 1;
  25.         EN = 1;
  26.         delay(1);
  27.         EN = 0;
  28. }

  29. void display(char *lcd)
  30. {
  31.         while(*lcd != '\0')
  32.         {
  33.                 dat(*lcd);
  34.                 lcd++;
  35.         }
  36. }
  37. void lcdint()
  38. {
  39.         cmd(0x01);
  40.         cmd(0x38);
  41.         cmd(0x0E);
  42.         cmd(0x80);
  43.        
  44. }

  45. void main()
  46. {
  47.         char pass[5] = "6602";
  48.         char pass2[5];
  49.         int i=0;
  50.         char *ptr;
  51.         ptr = pass2;
  52.         lcdint();
  53.         display("Password-");
  54.         pass2[4]='\0';
  55.                
  56.                 while(1)
  57.                 {
  58.                 while(i<4)
  59.         {
  60.                 P1=0xFE;
  61.                 if(P1==0xEE)
  62.                 {
  63.                         *(ptr+i)='7';
  64.                         dat('7');
  65.                         delay(200);
  66.                         cmd(0x06);
  67.                        
  68.                         i++;
  69.                        
  70.                 }
  71.                 else if(P1==0xDE)
  72.                 {
  73.                         *(ptr+i)='8';
  74.                         dat('8');
  75.                         delay(200);
  76.                         cmd(0x06);
  77.                        
  78.                         i++;
  79.                        
  80.                 }
  81.                 else if(P1==0xBE)
  82.                 {
  83.                         *(ptr+i)='9';
  84.                         dat('9');
  85.                         delay(200);
  86.                         cmd(0x06);
  87.                        
  88.                         i++;
  89.                 }
  90.                 else if(P1==0x7E)
  91.                 {
  92.                         *(ptr+i)='/';
  93.                         dat('/');
  94.                         delay(200);
  95.                         cmd(0x06);
  96.                        
  97.                         i++;
  98.                 }
  99.                
  100.        
  101.                 P1=0xFD;
  102.                 if(P1==0xED)
  103.                 {
  104.                         *(ptr+i)='4';
  105.                         dat('4');
  106.                         delay(200);
  107.                         cmd(0x06);
  108.                        
  109.                         i++;
  110.                 }
  111.                 else if(P1==0xDD)
  112.                 {
  113.                         *(ptr+i)='5';
  114.                         dat('5');
  115.                         delay(200);
  116.                         cmd(0x06);
  117.                        
  118.                         i++;
  119.                 }
  120.                 else if(P1==0xBD)
  121.                 {
  122.                         *(ptr+i)='6';
  123.                         dat('6');
  124.                         delay(200);
  125.                         cmd(0x06);
  126.                        
  127.                         i++;
  128.                 }
  129.                 else if (P1==0x7D)
  130.                 {
  131.                         *(ptr+i)='*';
  132.                         dat('*');
  133.                         delay(200);
  134.                         cmd(0x06);
  135.                        
  136.                         i++;
  137.                 }
  138.        
  139.        
  140.                 P1=0xFB;
  141.                 if(P1==0xEB)
  142.                 {
  143.                         *(ptr+i)='1';
  144.                         dat('1');
  145.                         delay(200);
  146.                         cmd(0x06);
  147.                        
  148.                         i++;
  149.                 }
  150.                 else if(P1==0xDB)
  151.                 {
  152.                         *(ptr+i)='2';
  153.                         dat('2');
  154.                         delay(200);
  155.                         cmd(0x06);
  156.                        
  157.                         i++;
  158.                 }
  159.                 else if(P1==0xBB)
  160.                 {
  161.                         *(ptr+i)='3';
  162.                         dat('3');
  163.                         delay(200);
  164.                         cmd(0x06);
  165.                        
  166.                         i++;
  167.                 }
  168.                 else if(P1==0x7B)
  169.                 {
  170.                         *(ptr+i)='-';
  171.                         dat('-');
  172.                         delay(200);
  173.                         cmd(0x06);
  174.                        
  175.                         i++;
  176.                 }
  177.        
  178.        
  179.        
  180.                 P1=0xF7;
  181.                 if(P1==0xE7)
  182.                 {
  183.                         *(ptr+i)='C';
  184.                         dat('C');
  185.                         delay(200);
  186.                         cmd(0x06);
  187.                        
  188.                         i++;
  189.                        
  190.                 }
  191.                 else if(P1==0xD7)
  192.                 {
  193.                         *(ptr+i)='0';
  194.                         dat('0');
  195.                         delay(200);
  196.                         cmd(0x06);
  197.                        
  198.                         i++;
  199.                 }
  200.                 else if(P1==0xB7)
  201.                 {
  202.                         *(ptr+i)='=';
  203.                         dat('=');
  204.                         delay(200);
  205.                         cmd(0x06);
  206.                        
  207.                         i++;
  208.                 }
  209.                 else if(P1==0x77)
  210.                 {
  211.                         *(ptr+i)='+';
  212.                         dat('+');
  213.                         delay(200);
  214.                         cmd(0x06);
  215.                        
  216.                         i++;
  217.                 }
  218.         }

  219. while(i==4)
  220. {

  221. if ((strcmp(pass, pass2)) == 0)
  222. {
  223.         cmd(0xC0);
  224.         display("Correct");
  225.         IN1 = 1;
  226.         IN2 = 0;
  227.         delay(100);       
  228. }
  229. else
  230. {
  231.         cmd(0xC0);
  232.         display("Incorrect");
  233.         IN1 = 0;
  234.         IN2 = 0;
  235.         delay(100);
  236. }
  237. }
  238. }
  239.         }
复制代码

Keil代码与Proteus仿真下载:
单片机.7z (56.1 KB, 下载次数: 6)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表