目录

​​​​​​目录

Proteus界面

硬件准备

接线说明

矩阵键盘(GPIOA)

OLED 显示屏(软件 I2C)

EEPROM 模块(硬件 I2C1)

其他外设

编译与烧录

编译步骤

Proteus导入固件步骤

首次上电

操作指南

1. 输入密码

2. 确认密码(按键 11)

3. 修改密码(按键 12)

4. 查看密码(按键 13)

5. 清除输入(按键 14)

6. 手动上锁(按键 15)

EEPROM 密码持久化说明

项目文件链接


介绍

本项目基于 STM32F103C8T6 微控制器,设计并实现一套电子密码锁系统。系统通过 4x4 矩阵键盘接收用户输入,使用 OLED 显示屏提供实时交互反馈,配合 LED 指示灯、蜂鸣器和电子锁执行机构,完成密码验证、开锁、修改密码等核心功能。密码数据通过 24C02C EEPROM 芯片实现掉电持久化存储。

项目文件链接在文章最后。


Proteus界面

硬件准备

使用本系统前,请准备以下硬件:

序号

器件

数量

说明

1

STM32F103C8T6 最小系统板(Blue Pill)

1

主控板

2

4x4 矩阵键盘模块

1

用于输入数字和功能操作

3

SSD1306 OLED 显示屏(128x64,I2C 接口)

1

显示交互信息

4

24C02C EEPROM 模块

1

存储密码,掉电不丢失

5

有源蜂鸣器模块

1

操作提示音

6

LED(红色 + 绿色)

各 1 个

状态指示

7

电磁锁或继电器模块

1

执行开锁/关锁动作


接线说明

按照下表连接各模块与 STM32F103C8T6 引脚:

矩阵键盘(GPIOA)

键盘引脚

STM32 引脚

说明

行 1

PA3

推挽输出

行 2

PA2

推挽输出

行 3

PA1

推挽输出

行 4

PA0

推挽输出

列 1

PA4

上拉输入

列 2

PA5

上拉输入

列 3

PA6

上拉输入

列 4

PA7

上拉输入

OLED 显示屏(软件 I2C)

OLED 引脚

STM32 引脚

说明

SCL

PB8

开漏输出

SDA

PB9

开漏输出

VCC

3.3V

供电

GND

GND

接地

EEPROM 模块(硬件 I2C1)

EEPROM 引脚

STM32 引脚

说明

SCL

PB6

复用开漏

SDA

PB7

复用开漏

VCC

3.3V

供电

GND

GND

接地

其他外设

外设

STM32 引脚

说明

LED1(红色)

PB0

推挽输出,亮起表示锁定/错误

LED2(绿色)

PB1

推挽输出,亮起表示开锁/成功

蜂鸣器

PB11

推挽输出

电磁锁/继电器

PB2

推挽输出,高电平开锁

提示:OLED 和 EEPROM 分别使用软件 I2C 和硬件 I2C1,两路独立,可同时工作。电磁锁如需大电流驱动,请通过继电器或 MOSFET 模块中转,不要直接连接 STM32 引脚。


编译与烧录

编译步骤

  1. 安装 Keil uVision5 开发环境。
  2. 打开工程文件 Project.uvprojx
  3. 确认目标设备为 STM32F103C8(Medium Density)。
  4. 点击菜单 Project -> Build Target,或按 F7 键编译。
  5. 编译成功后,底部 Build Output 窗口显示 0 Error(s), 0 Warning(s)
  6. 编译产物位于 Objects/ 目录,生成文件 Project.hex(在下载好的文件中已经包含编译后的.hex文件)

Proteus导入代码步骤

打开Proteus文件,右键STM32芯片,点击编辑属性,再点击Program File,选中源码编译得到的Project.hex(上个步骤得到的文件)


首次上电

固件导入成功后,点击Proteus左下角的按键,系统开始运行,OLED 将显示锁定界面:

  • 第 1 行:标题 -----LOCK-----
  • 第 2 行:密码输入区,显示已输入的数字(初始为空)
  • 第 4 行:锁定状态 OFF(未开锁)和剩余尝试次数 3

首次使用的默认密码为 111111


操作指南

1. 输入密码

按下矩阵键盘上的数字键 0-9 输入密码。OLED 第 2 行实时显示已输入的数字。每次输入一位,最多 6 位。

输入过程中:

  • 按 清除键(按键 14) 可清除所有已输入的数字,重新开始。
  • 输入满 6 位后继续按键,蜂鸣器会短促响一声提示已输满。

2. 确认密码(按键 11)

输入完整 6 位密码后,按下 确认键(按键 11) 提交验证。

密码正确时:

  • OLED 第 3 行显示 password right
  • 绿色 LED 亮起,红色 LED 熄灭
  • 电磁锁打开
  • 蜂鸣器响 1 次
  • 第 4 行状态变为 ON
  • 剩余尝试次数重置为 3

密码错误时:

  • OLED 第 3 行显示 password error
  • 红色 LED 亮起,绿色 LED 熄灭
  • 蜂鸣器响 2 次
  • 剩余尝试次数减 1

累计错误 3 次:

  • 蜂鸣器连续响 5 次
  • OLED 显示 Too many inputwait 5s
  • 系统锁定 5 秒,期间无法操作
  • 5 秒后自动恢复,尝试次数重置为 3

3. 修改密码(按键 12)

前提条件:系统必须处于开锁状态(已正确输入密码解锁后)。

  1. 在键盘上输入新的 6 位密码。
  2. 按下 修改密码键(按键 12)。
  3. OLED 显示 Update Complete,表示修改成功。
  4. 新密码自动保存到 EEPROM,掉电后不会丢失。

如果在未开锁状态下按下此键,OLED 会提示 Please Open First

如果在开锁状态下但未输满 6 位就按下此键,OLED 会提示 Update error Please input

4. 查看密码(按键 13)

前提条件:系统必须处于开锁状态。

按下 显示密码键(按键 13),OLED 切换到密码显示界面:

显示 2 秒后自动返回主界面。此功能用于确认当前存储的密码。

如果在未开锁状态下按下此键,OLED 会提示 Please Open First

5. 清除输入(按键 14)

按下 清除键(按键 14),立即清除所有已输入的数字,OLED 输入区恢复为空白。此操作在任何状态下都可执行。

6. 手动上锁(按键 15)

按下 上锁键(按键 15),系统立即回到锁定状态:

  • 红色 LED 亮起,绿色 LED 熄灭
  • 电磁锁关闭
  • OLED 第 4 行状态变为 OFF

EEPROM 密码持久化说明

系统使用 24C02C EEPROM 芯片(256 字节)存储密码,地址从 0x00 开始,占用 6 个字节。

  • 上电时:程序自动从 EEPROM 读取密码。如果 EEPROM 中的数据有效(首字节不为 0xFF 且值在 0-9 范围内),则加载为当前密码;否则使用默认密码 111111
  • 修改密码时:新密码同时写入内存和 EEPROM。
  • 首次烧录:EEPROM 内容为空(全 0xFF),系统使用默认密码。

注意:如果 EEPROM 模块未接线或损坏,系统仍可正常工作,但密码不会持久保存,每次上电都会恢复为默认密码。

项目文件链接

通过网盘分享的文件:电子密码锁.zip
链接: https://pan.baidu.com/s/1X4rmL55QD1a14Jr0GvOKLw?pwd=nxqv 提取码: nxqv 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐