基于STM32单片机的密码锁
功能描述:
由STM32F103单片机最小系统+ 4*4矩阵键盘+LCD1602液晶显示+蜂鸣器+继电器模块
1、采用STM32F103为主控芯片
2、通过4*4矩阵键盘实现密码输入、功能键等排列如下
1 2 3 删除
4 5 6 修改密码
7 8 9 重新输入
返回 0 确认 紧急开锁键
3、每按下一次按键蜂鸣器会有‘滴’提示音
4、按任意数字键键,进入密码输入界面 输入正确密码开锁,继电器打开,2秒都自动关锁;输入密码错误三次,系统锁死一分钟后才可再次尝试;
5、按“修改密码”键,进入密码修改界面,首先输入原始密码才可进行修改,输错三次同样锁死一分钟后才可再次修改密码。
6、按“删除”键可删除退格。
7、按“重新输入”键可重新输入。
8、按“紧急开锁”键可直接一键开锁并重置密码。
视频演示链接:
3、基于STM32单片机的密码锁
仿真图:
程序源码:
#include "delay.h"
#include "LCD1602.h"
#include "key4.h"
#include "led.h"
#include "timer.h"
#include "dht11.h"
#include "password.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
char buf[18];
unsigned char cnt=0;
unsigned char key_value = 0; //按键返回值
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
Lcd1602_Init(); //液晶1602初始化
Key_Init(); //矩阵按键初始化
TIM2_Int_Init(499,7199); //10Khz的计数频率,计数到500为50ms
LED_Init(); //初始化与控制设备连接的硬件接口
Password_Right = 0;
while(1)
{
Lcd1602_String(0,0," Password Lock !");
if(Lock_Flag==1) //键盘可用
{
cnt=KeyScan(); //扫描按键键值 值赋给cnt
if(cnt!=0xff) //如果有按键按下
{
if(cnt>='0'&&cnt<='9') //如果按下了0-9之间的数字键 则直接输入密码开锁
{
Beep_Alram(40);
Password_Insert(); //输入密码
}
else if(cnt=='B') //如果按下了'B'键 修改密码
{
Beep_Alram(40);
Password_Changed(); //密码修改函数
}
else if(cnt=='D') //如果按下了'D'键 紧急开锁并重置密码
{
Beep_Alram(40);
Password_Open();
Password_Right = 1;
}
}
if(Password_Right==1) //输入密码正确?
{
Jd0_Set(GPIO_ON); //开继电器
Password_Right = 0; //清除标志
Lcd1602_String(0,0," Openning... ");
delay_ms(300); //延时一会儿
Jd0_Set(GPIO_OFF); //关继电器 由于电磁锁不能长时间通电并且由于门锁的特性,并不需要一直开着继电器。
}
if(Password_Error3 == 1) //密码输错误3次标志位
{
Password_Error3 = 0; //清除标志
Lock_Flag = 0; //锁死键盘不可用
TIM_Cmd(TIM2, ENABLE); //使能TIMx 使能中断
}
}
else
{
Lcd1602_Write_Com(0xc0+1); //第二行0xc0开头
Lcd1602_Write_Data(0+0x30);
Lcd1602_Write_Data(0+0x30);
Lcd1602_Write_Data(':');
Lcd1602_Write_Data(Sec/10+0x30);
Lcd1602_Write_Data(Sec%10+0x30);
if(Sec<=0) //达到1分钟 后 键盘恢复
{
Sec = 60;
Lcd1602_String(0,1," ");
Lock_Flag = 1; //键盘恢复可用
}
}
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg
提取码:ab58
代码下载:文章来源:https://www.toymoban.com/news/detail-470494.html
https://pan.baidu.com/s/1v-56waF5QUdZzMMlBYDD6Q?pwd=ockn文章来源地址https://www.toymoban.com/news/detail-470494.html
到了这里,关于基于STM32单片机的密码锁(Proteus仿真、程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!