#include <reg51.h>

// 定义密码 #define PASSWORD '1234'

// 定义密码长度 #define PASSWORD_LENGTH 4

// 定义按键输入口 sbit keyP1 = P1^0; sbit keyP2 = P1^1; sbit keyP3 = P1^2; sbit keyP4 = P1^3;

// 定义锁开启口 sbit lock = P2^0;

// 定义按键延时 #define DELAY_TIME 200

// 函数声明 void delay(unsigned int time); void checkPassword();

void main() { while (1) { checkPassword(); } }

// 延时函数 void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) { for (j = 0; j < 1275; j++); } }

// 检查密码 void checkPassword() { unsigned char i = 0; unsigned char key; unsigned char input[PASSWORD_LENGTH + 1];

while (1) {
    // 检测输入按键是否按下
    if (keyP1 == 0 || keyP2 == 0 || keyP3 == 0 || keyP4 == 0) {
        delay(DELAY_TIME);
        if (keyP1 == 0) {
            key = '1';
        } else if (keyP2 == 0) {
            key = '2';
        } else if (keyP3 == 0) {
            key = '3';
        } else if (keyP4 == 0) {
            key = '4';
        }
        input[i++] = key;
        // 输出'*'表示输入密码
        // 可以通过其他方式控制LCD等显示设备显示密码输入
        putchar('*');

        // 输入完毕
        if (i == PASSWORD_LENGTH) {
            input[i] = '\0';
            // 检查密码是否正确
            if (strcmp(input, PASSWORD) == 0) {
                // 密码正确,开启锁
                lock = 0;
                delay(DELAY_TIME);
                // 这里可以通过其他方式控制LCD等显示设备展示"解锁成功"等信息
                putchar('\n');
                putchar('O');
                putchar('p');
                putchar('e');
                putchar('n');
                putchar(' ');
                putchar('S');
                putchar('u');
                putchar('c');
                putchar('c');
                putchar('e');
                putchar('s');
                putchar('s');
                putchar('!');
                putchar('\n');
                // 延时一段时间后,锁上
                delay(5000);
                lock = 1;
            } else {
                // 密码错误,这里可以通过其他方式控制LCD等显示设备展示"密码错误"等信息
                putchar('\n');
                putchar('I');
                putchar('n');
                putchar('c');
                putchar('o');
                putchar('r');
                putchar('r');
                putchar('e');
                putchar('c');
                putchar('t');
                putchar(' ');
                putchar('P');
                putchar('a');
                putchar('s');
                putchar('s');
                putchar('w');
                putchar('o');
                putchar('r');
                putchar('d');
                putchar('!');
                putchar('\n');
            }
            i = 0;
        }
    }
}

}

请注意,以上代码仅为示例,可能需要根据具体硬件平台和需求进行适当修改和优化。同时,该代码只提供了简单的密码检查和锁的控制功能,实际应用中可能需要更多的安全性和功能扩展。请确保在实际使用中遵守相关法律法规,并谨慎测试和操作。

AT89C51 单片机电子密码锁代码实现

原文地址: https://www.cveoy.top/t/topic/8FG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录