用51单片机设计一个密码锁程序
时间: 2023-08-12 08:06:55 浏览: 138
好的,我可以为您提供一个简单的例子。假设我们的密码是 123456,密码锁有一个按键和一个 LED 灯,正确输入密码后,LED 灯亮起,否则不亮。
以下是代码:
```c
#include <reg51.h>
#define PASSWORD "123456"
sbit KEY = P1^0;
sbit LED = P1^1;
char input[7];
char count = 0;
void delay(unsigned int t) {
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 120; j++);
}
void main() {
while (1) {
if (KEY == 0) {
delay(10);
if (KEY == 0) {
input[count++] = getchar();
putchar('*');
}
while (KEY == 0);
}
if (count == 6) {
if (strcmp(input, PASSWORD) == 0) {
LED = 1;
delay(1000);
LED = 0;
}
else {
putchar('\n');
count = 0;
}
}
}
}
```
代码解释:
1. 定义密码为 `123456`,定义按键和 LED 灯的引脚为 P1^0 和 P1^1。
2. 定义一个数组 `input`,用于存储用户输入的密码。定义计数器 `count`,用于记录当前输入的字符数。
3. 定义一个延时函数 `delay`,用于等待一段时间。
4. 在主函数中,不断检测按键是否按下,如果按下则获取一个字符,并在串口终端上输出一个星号 `*`,表示已经输入一个字符。
5. 如果输入的字符数达到 6 个,则判断输入的密码是否正确。如果正确,则点亮 LED 灯并延时 1 秒后熄灭;如果错误,则清空输入缓冲区并重新开始输入。
请注意,此代码中使用了串口通信,需要通过串口终端(如 Tera Term)来输入密码。如果您没有串口调试工具,可以将代码中的 `getchar()` 和 `putchar()` 函数替换为读取键盘输入和在 LED 灯上显示密码的代码。
阅读全文