刚学的
单片机,做一个简单的密码锁,功能如下:密码对绿灯亮;密码错红灯亮,然后蜂鸣器响。下面是我的代码,没有错但是却实现不了功能,大神帮我看下!
#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;}
}
-
-
一周热门 更多>