51单片机实现0-9的4位密码锁,并在数码管上显示输入的密码,密码错误时蜂鸣器发出警报
时间: 2024-01-24 10:17:06 浏览: 78
单片机电子密码锁论文
实现0-9的4位密码锁,可以通过按键输入密码,再进行比对验证,以下是一个简单的实现代码:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code num_table[] = { // 数码管显示0-9的编码
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
sbit beep = P2^3; // 蜂鸣器连接的IO口
void delay(uint t) // 延时函数
{
uint i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 120; j++);
}
void display(uchar num) // 数码管显示函数
{
P0 = num_table[num];
}
void main()
{
uchar password[4] = {1, 2, 3, 4}; // 设置密码为1234
uchar input[4] = {0}; // 输入的密码
uchar i, j;
while (1) {
for (i = 0; i < 4; i++) {
while (1) { // 等待按键按下
if (P3 != 0xff) {
delay(10);
if (P3 != 0xff) {
input[i] = P3; // 记录按下的按键值
display(input[i]); // 在数码管上显示输入的密码
delay(1000); // 延时1秒,等待按键松开
break;
}
}
}
}
for (i = 0; i < 4; i++) {
if (input[i] != password[i]) { // 检查输入的密码是否正确
beep = 1; // 蜂鸣器发出警报
delay(1000); // 等待1秒
beep = 0;
break;
}
}
if (i == 4) { // 输入的密码与设定的密码一致
P0 = 0; // 关闭数码管显示
while (1); // 等待程序停止
}
for (j = 0; j < 4; j++) { // 清空输入的密码
input[j] = 0;
}
}
}
```
上述代码实现了一个简单的密码锁,当输入的密码与设定的密码不一致时,蜂鸣器会发出警报。注意,此处只是一个简单的实现,实际应用中还需要进行更多的优化和完善。
阅读全文