STM32F429IGT6 矩阵键盘密码输入与回退功能实现

本示例演示如何在 STM32F429IGT6 上使用矩阵键盘实现 8 位密码输入功能,并支持回退功能。用户可以通过按键输入密码,并通过专用回退键删除错误输入。密码验证成功后,OLED 显示 'Pass!' 并发出 '嘀嘀' 两声;失败则显示 'Warning!' 并发出警报声。

实现方法:

在输入密码的过程中,通过按下某个按键来删除上一位输入的密码。

**代码示例:**c#include "stm32f4xx.h"#include "OLED.h"#include "matrix_keypad.h"#include "delay.h"

#define PASSWORD_LENGTH 8#define BACKSPACE_KEY '*'

char password[PASSWORD_LENGTH] = "12345678";char input[PASSWORD_LENGTH + 1] = "";uint8_t input_length = 0;

void checkPassword(void){ if (strcmp(input, password) == 0) { OLED_ShowString(0, 0, "Pass!"); for (int i = 0; i < 2; i++) { // 发出'嘀嘀'2声 // ... } } else { OLED_ShowString(0, 0, "Warning!"); // 发出刺耳的警报声 // ... }}

int main(void){ // 初始化OLED显示器 OLED_Init(); // 初始化矩阵键盘 MatrixKeypad_Init(); while (1) { MatrixKey key = MatrixKeypad_GetKey(); if (key != NO_KEY) { if (key == BACKSPACE_KEY) { // 回退输入的密码 if (input_length > 0) { input_length--; input[input_length] = '\0'; OLED_Clear(); OLED_ShowString(0, 0, input); } } else { // 输入密码 if (input_length < PASSWORD_LENGTH) { input[input_length] = key; input_length++; input[input_length] = '\0'; OLED_Clear(); OLED_ShowString(0, 0, input); } } // 检查密码 if (input_length == PASSWORD_LENGTH) { checkPassword(); // 清除输入的密码 memset(input, 0, sizeof(input)); input_length = 0; delay_ms(1000); OLED_Clear(); } }


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

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