51单片机一位密码锁程序代码
时间: 2023-07-02 12:17:45 浏览: 96
以下是基于51单片机的简单密码锁程序:
```
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code password[4]={0x01,0x02,0x03,0x04}; //设置4位密码
sbit led=P2^0; //LED灯连接的IO口
sbit key1=P3^1; //按键1连接的IO口
sbit key2=P3^2; //按键2连接的IO口
sbit key3=P3^3; //按键3连接的IO口
sbit key4=P3^4; //按键4连接的IO口
uchar key_code[4]={0,0,0,0}; //存储用户输入的密码
uchar key_index=0; //当前输入密码的位数
void delay(uint n) //延时函数
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<125;j++);
}
void main()
{
uchar i;
while(1)
{
if(key1==0) //按下按键1
{
delay(5); //延时消抖
if(key1==0) //再次检测按键状态
{
key_code[key_index++]=0x01; //保存按键代码
while(!key1); //等待按键松开
delay(100); //延时等待下一个按键
}
}
if(key2==0) //按下按键2
{
delay(5); //延时消抖
if(key2==0) //再次检测按键状态
{
key_code[key_index++]=0x02; //保存按键代码
while(!key2); //等待按键松开
delay(100); //延时等待下一个按键
}
}
if(key3==0) //按下按键3
{
delay(5); //延时消抖
if(key3==0) //再次检测按键状态
{
key_code[key_index++]=0x03; //保存按键代码
while(!key3); //等待按键松开
delay(100); //延时等待下一个按键
}
}
if(key4==0) //按下按键4
{
delay(5); //延时消抖
if(key4==0) //再次检测按键状态
{
key_code[key_index++]=0x04; //保存按键代码
while(!key4); //等待按键松开
delay(100); //延时等待下一个按键
}
}
if(key_index==4) //用户已经输入完4位密码
{
key_index=0; //重置输入密码的位数
for(i=0;i<4;i++)
{
if(key_code[i]!=password[i]) //密码错误
{
led=0; //熄灭LED灯
delay(500); //延时等待下一次输入
break; //跳出循环
}
}
if(i==4) //密码正确
{
led=1; //点亮LED灯
}
for(i=0;i<4;i++) //清空用户输入的密码
{
key_code[i]=0;
}
}
}
}
```
在这个代码中,程序通过读取4个按键的状态来获取用户输入的密码。当用户输入完4位密码后,程序会与预设的密码进行比对,如果密码正确则点亮LED灯,否则熄灭LED灯并等待下一次输入。
阅读全文