基于STM32单片机的电子密码锁设计

一.硬件方案

本设计采用STM32F103C8T6单片机作为主控芯片,结合外围的矩阵按键输入、LCD1602液晶显示、报警、开锁等电路模块实现开锁、上锁、报警、密码更改等功能,设计了一款可以多次修改密码并且具有报警功能的液晶显示电子密码锁。
主要由STM32单片机+最小系统+LCD1602液晶显示模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+矩阵键盘模块+AT24C02芯片模块;如图:
在这里插入图片描述

二.设计功能

(1)采用矩阵键盘输入、1602液晶显示、AT24C02实现存储的密码掉电保存、继电器模拟开锁。
(2)六位数字密码(0-9),更改密码时需要先验证初始密码,初始密码正确,输入两次新密码,两次输入一致即更改密码成功。
(3)开锁时密码输入错误,声光报警提示。
(4)如修改的密码忘记,可以通过管理员重置。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)PCB图如下:
在这里插入图片描述

四.软件设计

(1)程序流程图
在这里插入图片描述

(2)主程序源码

int main(void)
{
	BEEP_Init();
	LED_Init();
	delay_init();  
	LCD1602_Init();
  KEY_Init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	TIM2_Int_Init(4999,7199);
  TIM3_Int_Init(29,35999);
	TIM4_Int_Init(4999,7199);//每500ms计算一次速度的值,并显示
	.....
//	flash1[0]=100;
//STMFLASH_Write(ADDR_hum_up_1,(u16*)flash1,sizeof(flash1));
//STMFLASH_Write(ADDR_hum_up_2,(u16*)flash2,sizeof(flash2));

  TIM_Cmd(TIM3, ENABLE);
  STMFLASH_Read(ADDR_hum_up_1,(u16*)flash1,sizeof(flash1));
	setpass_flag=flash1[0];
  STMFLASH_Read(ADDR_hum_up_2,(u16*)flash2,sizeof(flash2));
	for(j=0;j<6;j++)
	{
		setpassword1[j]=flash2[j];
		
	}
	j=0;
	
	open_flag=1;
	pass_shuru=0;
	while(1)
	{
		mound();
		if(down_flag==2)
		{
			GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		}
		if(down_flag==5)
		{
			down_flag=0;
			if(setpass_flag11==2)
			{
			 TIM_Cmd(TIM2, DISABLE);
			}
			else
			{			
				open_flag=1;
			  pass_shuru=0;
			  GPIO_ResetBits(GPIOC,GPIO_Pin_13);
			  TIM_Cmd(TIM2, DISABLE);
				GPIO_ResetBits(GPIOB,GPIO_Pin_0);
			}

		}
		
		if(errtime_flag==2)
		{
			GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		}
		if(errtime_flag==3)
		{
			GPIO_SetBits(GPIOC,GPIO_Pin_13);
		}
		if(errtime_flag==4)
		{
			GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		}
		if(errtime_flag==5)
		{
			GPIO_SetBits(GPIOC,GPIO_Pin_13);
		}

		if(errtime_flag==6)
		{
			open_flag=1;
			pass_shuru=0;
			errtime_flag=0;
			GPIO_ResetBits(GPIOC,GPIO_Pin_13);
			TIM_Cmd(TIM4, DISABLE);
		}

	}


	
	

}

如需资料请关注公众号“单片机实例设计”,首页回复“STM32密码锁”获取资料;
在这里插入图片描述

版权声明:本文为CSDN博主「单片机实例设计」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eletronicfish/article/details/120596997

生成海报
点赞 0

单片机实例设计

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于STM32单片机太阳能电池板追日光跟踪系统设计

一.硬件方案 本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器。微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT