stm32矩形按键(4*4)7针脚oled屏密码锁(入门级)

本文采用7针脚0.96的OLED屏作为输出显示,以矩形按键作为输入,做一个简易的密码锁。

不同于其他文章,本文所介绍的密码锁,就单纯使用OLED屏与矩形按键,但由于本人也是初学者,还有一些功能没有实现,目前本工程仅实按键输入、OLED屏输出以及一个密码判断。

源码链接:https://pan.baidu.com/s/1E82SN-HPMLp5h7-E-d7T1Q?pwd=vk7n 
提取码:vk7n

目录

一、硬件接线

1、矩形按键

2、OLED显示屏

二、思路讲解

三、代码介绍

1、文件总体介绍

2、代码介绍

四、现象展示


一、硬件接线

1、矩形按键

本文采用的是4*4的矩形按键,关于矩形按键详细大家可以看我先前发布的这篇文章:STM32矩形(矩阵)按键(键盘)输入控制LED灯 ——4*4矩阵按键源码解析-CSDN博客

在这里矩形按键接在GPIOA中,具体接线也跟上篇文章相同。

2、OLED显示屏

OLED屏作为本实验显示输出,详细使用的内容可参考上一篇文章:STM32+7针脚0.96OLED屏显示数字汉字符号英文(入门级)-CSDN博客

本文OLED屏接线也与上一篇文章相同,如下

二、思路讲解

本文实现的功能是在矩形按键上输0~9十位数,然后进行一个确认密码,若密码错误,提示后3s重新回到输入密码那块。

矩形按键S1~S9分别对应输入1~9,S10输入0,S11在输入密码时,可以进行删除单个密码,但密码输入完后按下S12进行确定密码。

一开始我的想法是每输入一个密码数字,就将其输出到显示屏上,确认密码时,只要将显示屏输出的数跟正确密码进行对比即可,但在单独删除密码单位数时出现了问题,而且OLED屏官方提供的代码中也没有读取显示内容的功能。

后面我采用数组的方法来存储输入密码,然后修改官方提供的OLED屏中的OLED_clear()清屏函数块,将其该成对某行进行清屏,然后每次输入完密码后执行清屏再重新遍历数组进行显示,删除功能的话就是将最后一位置0后再将数组现有的长度减1,这样就完成了输入功能。

但是由于本人也是C的初学者,所以在设定密码时,本来是打算用字符串的,但keil中好像没有string这个定义,后面就用了数组代替。确定密码时则是使用遍历对两个数组对应的元素进行对比。

三、代码介绍

1、文件总体介绍

文件中key.c为矩形按键的驱动函数文件,矩形按键的引脚定义及扫描识别等均在这个文件中;OLED.c为显示屏的驱动文件,同样的里面是引脚的定义跟驱动函数,这个官方有提供,我这是在官方的基础上增多一个OLED_delete()某行清屏函数。user.c为自定义的一些子函数段文件,里面主要是连续显示汉字、按键输入值等函数。

同样的这里将所有的声明函数放在了main.h文件中。

2、代码介绍

在user.c中可以看到有以下内容,这个设定密码是采用数组的方式,如果大家有兴趣,可以完善这个实验,可以由输入来修改密码。

由于官方提供的汉字输出只能时每次调用输入一个,所以这个我定义了一个函数,可以一次性输入多个汉字。

在主函数中,这里是将按键输入放在了while循环中,然后给一个变量pdz(默认为1),但密码输入正确后将变量pdz赋值为0,结束这个循环。故这个实验也有没密码正确后可以退出到返回界面的功能。

其余的代码大家有兴趣可以在文章开头处百度网盘链接下载源码进行查看,源码内大部分的内容我都有进行注释。

四、现象展示

stm32矩形按键7针脚oled屏密码锁

 

文章中的实验还有许多待完善的功能,如输入密码显示为***等,大家有兴趣也可做优化。

本人也是stm32的初学者,对于本实验的思路,如果大家有更好的建议也希望大家多多指点。

若文章中有错误的地方也请大家多多指正!!!

硬件部分: 通过R7F0C809开发板核心板与各个模块部分如AD按键、EEPROM、RTC时钟、以及OLED显示模组和蜂鸣器的连接,实现待机时,显示实时时间,等待密码的录入,或者门铃按键的按下等功能 软件部分: 实现了ADC采集,间隔定时器唤醒MCU,IIC与EEPROM和RTC时钟的通讯进行对其的控制,以及硬件SPI对OLED的显示控制和 蜂鸣器输出控制对无源蜂鸣器的叫声控制等功能。 电子密码锁主要功能: 1.实现按键中断功能,中断处给予警报提示; 2.实现对AT24C02的通讯,存储密码,掉电不丢失; 3.实现对PCF8563为RTC时钟的控制,给系统提供准确的时间; 4.实现AD按键的检测,通过定时器0的通道0间隔唤醒,使按键录入达到良好的体验; 5.实现对OLED的控制,显示实时时间以及密码输入后的提示。 视频演示: 说明: 由于硬件限制,没有一套真实的电子锁给予开启的展示,只是采用了各个模块的拼接,来完成了纯软件的操作展示工作,实现了一个简易的密码锁功能。 需要的网友可以直接转移常用的OLED显示,模拟IIC等部分。由于最近时间特别有限,本想通过按键结合来实现类似:密码重置,时间重新设定等功能,但是由于种种原因,实在没时间进行下去,有兴趣的可以下载附件的代码,拼接硬件后来进行实现一套完整的小型门禁系统。 电子密码锁原理图截图: 电子密码锁源码截图:
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值