求助大神们关于简单密码锁的编程问题

2019-07-18 09:47发布

刚学的单片机,做一个简单的密码锁,功能如下:密码对绿灯亮;密码错红灯亮,然后蜂鸣器响。下面是我的代码,没有错但是却实现不了功能,大神帮我看下!
#include<reg51.h>
#define uchar unsigned char
uchar         Code[6]={1,2,3,4,5,6};        //密码
void delay1(uchar i)
{
  uchar n;
  for(n=0;n<i;n++)
  ;
}

  uchar scan() //        扫描法
  {
           uchar a,b;
        P3=0X0f;
        delay1(1);
        if(P3!=0X0f) //列
         {delay1(10);
           if(P3!=0X0f)
            { a=P3^0X0f;
                  switch(a)
                  {
                   case 0x01:
                             b=1;break;
                   case 0x02:
                             b=2;break;
                   case        0x04:
                             b=3;break;
                   case 0x08:
                             b=4;break;
                                         default:
                                         b=0;break;
                                         }
                 P3=0Xf0;
                 a=0xf0^P3;//行
                 switch(a)
                 {
                  case 0x10:
                            b=b+0;break;
                  case  0x20:
                            b=b+4;break;
                  case   0x40:
                            b=b+8;break;
                 case  0x80:
                            b=b+12;break;
                                        default:
                                         b=0;
                 
                 }
                 
                  }
                   }
                   return b;


  }

void main()
{uchar Input[6];
  uchar temp,j;
   j=0;
   P1=0X03;
   temp=scan();
   Input[j]=temp;
     j++;       
        if(j>=6)
         if(Input[0]==Code[0])
           if(Input[1]==Code[1])
            if(Input[2]==Code[2])
                if(Input[3]==Code[3])
                if(Input[4]==Code[4])
                if(Input[5]==Code[5])
                {P1=0x02;}
                else{P1=0x04;}
        }

QQ图片20170419233419.png
QQ图片20170419233425.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。