最近设计了一个项目基于单片机的智能门禁控制系统设计,与大家分享一下:
一、基本介绍
项目名:基于单片机的门禁的设计
单片机:STM32F103C8T6
mcuclub-dz-032
功能简介:
1、通过扫码枪进行扫描二维码,当二维码识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
2、通过RFID进行刷卡,当卡识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
3、通过指纹模块,当指纹识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
4、通过内部RTC时钟同步时间,从而获取年月日时分秒星期
5、通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹
6、通过OLED显示测量数据
二、32实物图
单片机型号:STM32F103C8T6
板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C
三、原理图
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图
四、PCB图
由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
五、系统框图
本设计以STM32单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括控制部分、输入部分和输出部分。控制部分采用了STM32单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是非接触温度检测模块,通过该模块检测指纹识别信息;第二部分是红外避障模块,通过该模块对人体温度进行测量;第三部分是按键模块,通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由七部分组成,第一部分是OLED显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是RFID刷卡模块,通过RFID进行刷卡,当卡识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第三部分是扫码枪模块,通过扫码枪进行扫描二维码,当二维码识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第四部分是指纹模块,通过指纹模块,当指纹识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第五部分是存储模块,通过存储模块对数据进行存储;第六部分是继电器模块,通过继电器控制系统对应的功能;第七部分是声光报警模块,当监测值不在设置的阈值内时进行声光报警。具体系统框图如图3.1所示。
六、软件设计流程
系统的主流程图如图4-2所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取测量值。紧接着进入第三个函数显示函数,该函数显示监测值及阈值;最后进入第四个函数处理函数,该函数主要判断接触触发时间是否大于10S,如果大于10S,表明触发成功,进入下一步的数据监测,反之,启动声光报警系统触发报警,随后进入人体温度值判断,如果温度大于设置的最大值,则声光报警,如果温度小于设置的最小值,则声光报警,如果温度在设置的阈值之内,则取消声光报警,门正常打开,为业主提供通道。
七、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件
*******处理函数
*****/
void Manage_function(void)
{
if(flag_display == 0) //测量界面
{
if(flag_measuring == 1)
{
if(temp_count >= 2) //如果温度检测完成
{
if(temp_value > temp_max*10 || temp_value < temp_min*10) //温度异常声光报警
{
if(beep_count == 0)
beep_count = 6;
}
else //温度正常,开门
{
RELAY_D = 1;
Delay_ms(1000);Delay_ms(1000);
RELAY_D = 0;
}
temp_count = 0;
temp_value = 0;
flag_measuring = 0;
Oled_ShowString(4,0," ");
}
if(flag_10s == 1) //如果10S没有检测完成,本次触发无效
{
flag_timer_begin_10s = 0;
flag_10s = 0;
flag_measuring = 0;
temp_count = 0;
temp_value = 0;
Oled_ShowString(4,0," ");
}
}文章来源:https://www.toymoban.com/news/detail-799634.html
if(beep_count > 0) //声光报警有计数时,声光报警
{
if(time_num % 3 == 0)
{
LED = ~LED;
BEEP = ~BEEP;
if(beep_count > 0)
beep_count--;
}
}
else
{
LED = 1;
BEEP = 0;
}
}
else //设置界面,关闭声光报警
{
flag_timer_begin_10s = 0;
flag_10s = 0;
flag_measuring = 0;
temp_count = 0;
temp_value = 0;
LED = 1;
BEEP = 0;
}
}文章来源地址https://www.toymoban.com/news/detail-799634.html
到了这里,关于【单片机毕业设计】【mcuclub-dz-032】基于单片机的智能门禁控制系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!