完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文章主要是自己兴趣想学习和尝试玩一下指纹识别模块,也是帮没接触过指纹识别模块的同学踩一下坑,比较适合新手和需要作毕业设计的同学。网上买回来的模块即插即用,不用半天就可以实现功能,也可以做一些自己感兴趣的智能家居小用品。
模块和工具的准备 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("清空指纹库成功 rn"); } ......... ......... //省略的部分后面摆放到网盘,自己下载查看 指纹验证函数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("获取图像成功 rn"); ensure = PS_GenChar(CharBuffer1); if(ensure == 0x00) { printf("生成特征成功 rn"); ensure = PS_HighSpeedSearch(CharBuffer1, 0, 99, &seach); if(ensure == 0x00) { printf("验证成功 rn"); 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; } else ......... ......... //省略的部分后面摆放到网盘,自己下载查看 只需要移植一个按键C文件、串口初始化C文件、AS608C文件,文件路径和对应函数添加好,编译下载即可运行,方便快捷。 实验结果: 注意事项: 1、函数初始化切记不要漏掉 2、按键质量差的消抖需要注意 3、指纹识别模块电源不要接错,否则会烧坏。 心得总结 模块还是很方便使用的,接线简单,在学校参加项目或者初学C语言的人都可以埋来学习一下,兴趣之余可以创作一些类似智能的开关锁,指纹识别系统,签到系统等等,即学即用。如果需要交流请评论留言。显示函数和部分处理函数看你个人需要,可以优化得更好,处理逻辑可以看需要更改合适自己要求得,函数都是封装好的,直接调用就好。有更好玩的模块欢迎一起探讨学习。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:58 , Processed in 0.636476 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号