【Proteus仿真】【STM32单片机】电子密码锁设计

您所在的位置:网站首页 电子密码锁设计单片机 【Proteus仿真】【STM32单片机】电子密码锁设计

【Proteus仿真】【STM32单片机】电子密码锁设计

2024-07-11 10:38| 来源: 网络整理| 查看: 265

文章目录 一、功能简介二、软件设计三、实验现象联系作者

一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶、矩阵按键、蜂鸣器、EEPROM模块、继电器模块等。

系统运行后,LCD1602显示密码输入提示界面,系统存储在EEPROM的初始密码为123456, 用户可通过矩阵按键S1-S10输入数值0-9,当在密码输入过程中有误,可按S11键回删并重新输入。当密码输入完成后,可按S12键确认,校验密码是否正确,如密码输入正确,电磁阀工作开门,对应D3指示灯点亮;如密码输入错误,LCD显示错误信息,可重新输入密码,最多可输入3次,如还输入错误,系统锁死,需等待10S钟解锁系统方可再次输入。当管理员需要更换密码时,可按下S13键,LCD显示更换密码界面,此时可通过S1-S10输入修改密码,修改过程中如需更改可按S11键回删并重新输入。修改密码完成后可按下S12键保存新密码至EEPROM中,更新的密码可断电不丢失。

二、软件设计 /* 作者:嗨小易(QQ:3443792007) */ /******************************************************************************* * 函 数 名 : TIM2_IRQHandler * 函数功能 : TIM2中断函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void TIM2_IRQHandler(void) { static u32 i=0; if(TIM_GetITStatus(TIM2,TIM_IT_Update)) { i++; if(i>=(100*AFRESH_TIME))//时间到 { i=0; TIM_Cmd(TIM2,DISABLE);//关闭定时器 sys_ctrl.time_flag=1; } } TIM_ClearITPendingBit(TIM2,TIM_IT_Update); } //主界面,输入密码提示 void main_display(void) { memset(sys_ctrl.password,0,6);//密码数据清零 sys_ctrl.time_flag=0; sys_ctrl.resive_flag=0; delay_ms(500); lcd1602_clear(); lcd1602_show_string(0,0,"Password Input:"); } //密码输入错误次数超过规定值,等待指定时间后可重新输入 void password_error_wait_afreah_input(void) { TIM_Cmd(TIM2,ENABLE);//开启定时器 lcd1602_clear(); lcd1602_show_string(0,0,"Error Too much!"); lcd1602_show_string(0,1,"Please Wait..."); while(1) { if(sys_ctrl.time_flag)//时间到 { RELAY=1; sys_ctrl.error_cnt=0; break; } } } //密码输入、修改 void password_input(void) { u8 key=0; u8 cnt=0; while(1) { key=key_matrix_flip_scan(); //密码输入 if(key>0&&key


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3