毕业设计| 即学即用,分享搭建指纹识别系统全过程
-
指纹识别在门禁系统相关的毕设中经常出现,我们就找到了一篇详细的搭建指纹识别系统的文章分享给大家。有兴趣想学习指纹识别的朋友可以尝试下,当然重点是帮没接触过指纹识别模块的同学踩一下坑。网上买回来的模块即插即用,不用半天就可以实现功能,也可以做一些自己感兴趣的智能家居小用品。
第一步:准备模块和工具:
1)开发板:STM32F103RCT6Mini开发板
2)显示屏:某宝上购买的1.44寸TFT显示屏(这个显示屏看个人喜欢,可有可无,可以用自己已经有的显示屏作显示,没有的话就直接打印串口的方式看运行过程)
3)指纹识别模块:某宝上购买的AS608指纹识别
4)按键板:自己用面包板焊接的按键
相关资料及下面的代码可以在“达尔闻说”微信回复:指纹识别,获取。
第二步:接线
1.44寸液晶屏电源接线:
VCC——>接5V DC
GND——> 接地
液晶屏数据线接线:
CS——>接 PC7 片选信号
CLK——>接 PB13 SPI时钟信号
SDI(DIN)——>接 PB15 SPI数据总线
液晶屏控制线接线:
LED——>接 PB9 背光控制线,高电平电亮
RS——>接 PC6 寄存器选择信号 RS=0发送命令 RS = 1发送像素数据
RST——>接 PB12 液晶屏复位信号线,低电平复位。
指纹识别模块AS608接线:
VCC——>接3.3V (切记不可以接5V,会烧坏)
GND——>接地
RX——>PB10
TX——>PB11
实物图:

接线图:

杜邦线接的有点乱,IO口的接线看个人喜好,除了RX和TX需要接开发板上的RX和TX之外,其他线可以随意更改,只需要修改对应的IO口初始化函数即可。
第三步:移植代码和使用方法
主函数:
int main(void){delay_init(); //延时函数初始化SystemInit(); //系统初始化Uart_Init(115200); //打印串口初始化usart3_init(57600); //指纹识别模块初始化KEY_Init(); //按键初始化Lcd_Init(); //LCD屏初始化LCD_LED_SET; //通过IO控制背光亮Redraw_Mainmenu(); //绘制主菜单(部分内容由于分辨率超出物理值可能无法显示)while(1){key_num = KEY_Scan();if(key_num == 1){key_num = 0;Lcd_Clear(WHITE);Add_FR();}if(key_num == 3){key_num = 0;Lcd_Clear(WHITE);Del_FR();}if(key_num == 5){key_num=0;Lcd_Clear(WHITE);press_FR();}}}指纹添加函数Add_FR():
void Add_FR(void){u8 i, ensure, processnum = 0;u8 ID_NUM = 0;char str[20];while(1){switch (processnum){case 0:i++;Gui_DrawFont_GBK16(35,15,RED,WHITE,"请按手指");showimage(gImage_Finger65,33,40,97,104,65,65); //指纹图片显示示例ensure = PS_GetImage();if(ensure == 0x00){ensure = PS_GenChar(CharBuffer1); //生成特征if(ensure == 0x00){Gui_DrawFont_GBK16(35,15,GREEN,WHITE,"指纹正常");delay_ms(1500);i = 0;processnum = 1; //跳到第二步}else ShowErrMessage(ensure);}else{ShowErrMessage(ensure);}break;//省略的部分后面摆放到网盘,自己下载查看指纹删除函数Del_FR():
while(key_num != 3){key_num = KEY_Scan();if(key_num == 2){key_num = 0;if(ID_NUM > 0)ID_NUM--;}if(key_num == 4){key_num = 0;if(ID_NUM < 99)ID_NUM++;}if(key_num == 1)goto MENU ; //返回主页面if(key_num == 5){key_num = 0;ensure = PS_Empty(); //清空指纹库if(ensure == 0){Lcd_Clear(WHITE);Gui_DrawFont_GBK16(10,15,GREEN,WHITE,"清空指纹库成功");printf("清空指纹库成功 \r\n");}指纹验证函数press_FR():
void press_FR(void){SearchResult seach;u8 ensure;char str[20];Gui_DrawFont_GBK16(35,15,RED,WHITE,"请按指");showimage(gImage_Finger65,33,40,97,104,65,65); //指纹图片显示示例while(key_num != 1){key_num = KEY_Scan();ensure = PS_GetImage();if(ensure == 0x00){printf("获取图像成功 \r\n");ensure = PS_GenChar(CharBuffer1);if(ensure == 0x00){printf("生成特征成功 \r\n");ensure = PS_HighSpeedSearch(CharBuffer1, 0, 99, &seach);if(ensure == 0x00){printf("验证成功 \r\n");Lcd_Clear(WHITE);Gui_DrawFont_GBK16(16,15,GREEN,WHITE,"指纹验证成功");sprintf(str, " 指纹ID:%d ", seach.pageID);Gui_DrawFont_GBK16(16,35,RED,WHITE,(u8*)str);delay_ms(1500);delay_ms(1500);break;}只需要移植一个按键C文件、串口初始化C文件、AS608C文件,文件路径和对应函数添加好,编译下载即可运行,方便快捷。
第四步:实验结果及注意事项

注意事项:
1、函数初始化切记不要漏掉
2、按键质量差的消抖需要注意
3、指纹识别模块电源不要接错,否则会烧坏。
最后:心得总结
模块还是很方便使用的,接线简单,在学校参加项目或者初学C语言的人都可以买来学习一下,兴趣之余可以创作一些类似智能的开关锁,指纹识别系统,签到系统等等,即学即用。
显示函数和部分处理函数看个人需要,可以优化得更好,处理逻辑可以看需要更改合适自己要求的,函数都是封装好的,直接调用就好。有更好玩的模块欢迎一起探讨学习。
本文为教而不善。”的原创文章,对本篇感兴趣的小伙伴可以关注他的博客,看原文:
https://blog.csdn.net/weixin_45270358/article/details/111985252
-


