51单片机电子密码锁代码
时间: 2023-10-19 20:09:23 浏览: 175
51单片机密码锁代码
5星 · 资源好评率100%
以下是一个简单的51单片机电子密码锁代码,仅供参考:
```c
#include <reg51.h>
#define PASSWORD_LENGTH 4 // 密码长度
#define PASSWORD "1234" // 正确密码
sbit LED = P1^0; // LED灯
sbit BUZZER = P1^1; // 蜂鸣器
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 125; j++);
}
void main()
{
unsigned char i, j;
unsigned char password[PASSWORD_LENGTH]; // 存储输入的密码
unsigned char input[PASSWORD_LENGTH]; // 存储当前输入的字符
unsigned char count = 0; // 当前输入的字符数
while (1)
{
for (i = 0; i < PASSWORD_LENGTH; i++)
{
input[i] = 0; // 清空当前输入的字符
password[i] = 0; // 清空存储的密码
}
count = 0; // 清空当前输入的字符数
while (1)
{
if (count == PASSWORD_LENGTH) // 输入完成
{
if (strcmp(input, PASSWORD) == 0) // 输入正确
{
LED = 1; // 点亮LED灯
BUZZER = 0; // 关闭蜂鸣器
delay(1000); // 延时1秒
LED = 0; // 熄灭LED灯
}
else // 输入错误
{
BUZZER = 1; // 打开蜂鸣器
delay(1000); // 延时1秒
BUZZER = 0; // 关闭蜂鸣器
}
break;
}
for (i = 0; i < PASSWORD_LENGTH; i++)
{
if (password[i] != 0) // 当前位置已经输入过
continue;
for (j = 0; j < 10; j++) // 等待按键按下
{
P2 = 0xFF; // 设置P2口为输入状态
if (P2 != 0xFF) // 按键按下
{
delay(10); // 延时去抖动
if (P2 != 0xFF) // 确认按键按下
{
input[count] = j + '0'; // 存储当前输入的字符
password[i] = j + '0'; // 存储当前位置的字符
count++; // 当前输入的字符数加1
break;
}
}
}
if (j < 10) // 按键已经按下
break;
}
}
}
}
```
阅读全文