本设计的硬件构成:
STM32F103C8T6单片机最小系统板,LCD1602液晶显示模块,蜂鸣器电路,LED指示灯模块,继电器驱动电路(带5V电子锁接口),4x4矩阵键盘模块,蓝牙模块。
功能介绍:
1、采用4x4共16个按键输入、显示屏采用LCD1602显示、利用stm32单片机内部Flash存储设置的密码,可保证掉电保存,无需上电后重新设置,采用继电器模拟开锁(也可以自行接入5V电子锁);
2、密码为六位数字密码(0-9),更改密码时需要先验证初始密码。输入初始密码正确后,即可进入用户密码设置,当两次输入一致,密码更改成功;
3、当输入三次密码错误后,蜂鸣器声光报警提示,系统进入锁死状态,无法再开锁。
4、如过修改的密码忘记,可以进入管理员模式,重新设置密码;
5、采用蓝牙模块,可通过手机APP进行解锁;解锁成功后,也在APP上修改用户密码。
主要物料清单及型号:
显示屏:LCD1602;
单片机:STM32F103C8T6;
蓝牙模块:HC-05;
蜂鸣器:5V有源蜂鸣器;
部分程序源码:
int main(void)
{
BEEP_Init();
LED_Init();
delay_init();
Lcd_GPIO_init(); //初始化lcd引脚
Lcd_Init(); //初始化lcd屏幕
KEY_Init();
uart_init(9600);
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计算一次速度的值,并显示
LCD_Init(); //显示屏初始化
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();
app_setpassword();
if(rev_data=='P')
{
open_flag=2;
relay=1;
lock_state=UNLOCK;
BEEP=0;//
TIM_Cmd(TIM2, ENABLE); //使能TIMx
setopen_flag=2;
rev_data=0;
}
if(down_flag==2)
{
BEEP=1;
}
if(down_flag==30)
{
down_flag=0;
if(setpass_flag11==2)
{
TIM_Cmd(TIM2, DISABLE);
}
else
{
open_flag=1;
pass_shuru=0;
BEEP=1;
TIM_Cmd(TIM2, DISABLE);
lock_state=LOCK;
relay=0;
}
}
if(errtime_flag==2)
{
BEEP=1;
}
if(errtime_flag==3)
{
BEEP=0;
}
if(errtime_flag==4)
{
BEEP=1;
}
if(errtime_flag==5)
{
BEEP=0;
}
if(errtime_flag==6)
{
open_flag=1;
pass_shuru=0;
errtime_flag=0;
BEEP=1;
TIM_Cmd(TIM4, DISABLE);
}
}
}