单片机设计指纹识别系统

发布者:疯狂小马最新更新时间:2022-08-24 来源: csdn关键字:单片机  指纹识别系统  LCD1602 手机看文章 扫描二维码
随时随地手机看文章

一、电路设计

此电路由最小系统板、LCD1602液晶模块和AS608指纹模块组成。


二、运行效果

在这里插入图片描述
在这里插入图片描述

三、主代码


/*想要更多项目私wo!!!*/

#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "lcd.h"

#include "key.h"

#include "touch.h"   

#include "malloc.h" 

#include "usmart.h"  

#include "MMC_SD.h"   

#include "ff.h"  

#include "exfuns.h"    

#include "fontupd.h"

#include "text.h"

#include "usart2.h"

#include "AS608.h"

#include "timer.h"


#define usart2_baund  57600//串口2波特率,根据指纹模块波特率更改


SysPara AS608Para;//指纹模块AS608参数

u16 ValidN;//模块内有效模板个数

u8** kbd_tbl;

const  u8* kbd_menu[15]={"del_fp"," : ","add_fp","1","2","3","4","5","6","7","8","9","DEL","0","Enter",};//按键表

const  u8* kbd_delFR[15]={"BACK"," : ","del_all","1","2","3","4","5","6","7","8","9","DEL","0","Enter",};//按键表


void Add_FR(void); //录指纹

void Del_FR(void); //删除指纹

void press_FR(void);//刷指纹

void ShowErrMessage(u8 ensure);//显示确认码错误信息

void AS608_load_keyboard(u16 x,u16 y,u8 **kbtbl);//加载虚拟键盘

u8  AS608_get_keynum(u16 x,u16 y);//获取键盘数

u16 GET_NUM(void);//获取数值  


int main(void)

{  

u8 ensure;

u8 key_num;

char *str;


  Stm32_Clock_Init(9); //系统时钟设置

delay_init(72);   //延时初始化

uart_init(72,115200); //串口1初始化,用于支持USMART    

LCD_Init(); //初始化液晶 

KEY_Init(); //按键初始化       

usmart_dev.init(72); //usmart初始化

  usart2_init(36,usart2_baund); //初始化串口2,用于与指纹模块通讯

PS_StaGPIO_Init();   //初始化FR读状态引脚

tp_dev.init(); //触摸屏初始化

  mem_init(); //初始化内存池     

  exfuns_init(); //为fatfs相关变量申请内存  

  f_mount(fs[1],"1:",1); //挂载FLASH.

POINT_COLOR=RED;

while(font_init()) //检查字库

{     

LCD_ShowString(60,50,240,16,16,"Font Error!");

delay_ms(200);   

LCD_Fill(60,50,240,66,WHITE);//清除显示

delay_ms(200);

}

if(!(tp_dev.touchtype&0x80))//如果是电阻屏

{

Show_Str_Mid(0,30,"Adjust the touch screen?",16,240);

POINT_COLOR=BLUE;

Show_Str_Mid(0,60,"YES: KEY1   NO: KEY0",16,240);

while(1)

{

key_num=KEY_Scan(0);

if(key_num==KEY0_PRES)

break;

if(key_num==KEY1_PRES)

{

LCD_Clear(WHITE);

TP_Adjust();  //屏幕校准 

TP_Save_Adjdata();//保存校准参数

break;

}

}

}

/*加载指纹识别实验界面*/

LCD_Clear(WHITE);

POINT_COLOR=RED;

Show_Str_Mid(0,0,"AS608 Fingerprint module test",16,240);          

Show_Str_Mid(0,20,"Author: @ALIENTEK",16,240);      

  POINT_COLOR=BLUE;

Show_Str_Mid(0,40,"Connect with AS608....",16,240);

while(PS_HandShake(&AS608Addr))//与AS608模块握手

{

LCD_Fill(0,40,240,80,WHITE);

Show_Str_Mid(0,40,"Cannot connect with AS608!",16,240);

delay_ms(1000);

LCD_Fill(0,40,240,80,WHITE);

Show_Str_Mid(0,40,"Try to connect again....",16,240);

delay_ms(1000);   

}

LCD_Fill(0,40,240,320,WHITE);

Show_Str_Mid(0,40,"Connect success!",16,240);//通讯成功

str=mymalloc(30);

sprintf(str,"Baudrate:%d   Addr:%x",usart2_baund,AS608Addr);//显示波特率

Show_Str(0,60,240,16,(u8*)str,16,0);

delay_ms(100);

ensure=PS_ValidTempleteNum(&ValidN);//读库指纹个数

if(ensure!=0x00)

ShowErrMessage(ensure);//显示确认码错误信息

ensure=PS_ReadSysPara(&AS608Para);  //读AS608模块参数 

if(ensure==0x00)

{

mymemset(str,0,50);

sprintf(str,"RemainNum:%d    Level:%d",AS608Para.PS_max-ValidN,AS608Para.PS_level);//显示剩余指纹数量和安全等级

Show_Str(0,80,240,16,(u8*)str,16,0);

}

else

ShowErrMessage(ensure);

myfree(str);

AS608_load_keyboard(0,170,(u8**)kbd_menu);//加载虚拟键盘

while(1)

{

key_num=AS608_get_keynum(0,170);

if(key_num)

{

if(key_num==1)Del_FR(); //删指纹

if(key_num==3)Add_FR(); //录指纹

}

if(PS_Sta) //检测PS_Sta状态,如果有手指按下

{

press_FR();//刷指纹

}  

}

}

关键字:单片机  指纹识别系统  LCD1602 引用地址:单片机设计指纹识别系统

上一篇:51单片机游戏(贪吃蛇)
下一篇:单片机设计 超声波测距仿真

推荐阅读最新更新时间:2024-11-17 22:10

51单片机ADC0809电压表(12864显示,程序 + 仿真)
51单片机ADC0809电压表(12864显示,程序 + 仿真)并口;0~5V先上图正常工作图 上图:最大电压值 上图渐变电压值(最大到最小) 这是仿真图,可以进行仿真 #include reg51.h #include LCD12864.h sbit OE=P3^6; sbit EOC=P3^7; sbit CLOCK=P3^0; sbit ST=P3^3; void Lcd12864_Display(); unsigned char dat = 0.000V ; unsigned int tmp; unsigned char adc; void main() { EA=1; ET0=1; T
[单片机]
51<font color='red'>单片机</font>ADC0809电压表(12864显示,程序 + 仿真)
基于单片机和AD9858的4频点快速跳频设计
摘要:在分析了DDS基本原理以及AD9858基本特点的基础上,介绍了AD9858的送数方式及单片机接口程序。给出了利用AD9858内部寄存器来实现跳频时间小于50ns的4频点快速跳频的具体方法。 关键词:DDS;AD9858;快速跳频 在电子系统中,常常需要应用频率合成技术来实现跳频源设计。频率合成指对一个高稳定的参考频率进行各种技术处理,以生成一系列稳定的频率输出。目前应用最广的是锁相环(PLL)频率合成技术,它是通过改变PLL中的分频比N来实现跳频的,但PLL无法避免环路锁定时间缩短与频率分辨率提高及杂散减小之间的矛盾,因此很难同时满足高速跳频和细步长、低杂散的要求。直接数字频率合成(DDS)是一种新的频率合成技术。它具有
[单片机]
实例讲解PIC单片机的时钟设置
什么时钟? 首先我们先讲讲什么是时钟。时钟就是单片机的心脏。每跳动一下。整个单片机的各个电路就同步的动作一下。就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234。。。。然后我们全部的同学就按照这个节奏进行一个个动作。节拍越快我们动作越快。节拍越慢我们动作的越慢。 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部时钟(如外部接个4MHZ的石英晶振),也可以设置成用内部RC时钟。而且还有许多型号可以选择多种频率的时钟。 如 PICLF1823 内部时钟最高可以到达32MHZ 最低可以达到 31kHz. 这事实上提供了一条降低功耗的新路子。一般的单片机降低功耗常常用的睡眠,而睡眠期间CPU是什么都不做。
[单片机]
实例讲解PIC<font color='red'>单片机</font>的时钟设置
单片机C语言-程序结构
先来简单说说C语言的标识符和关键字。 标识符是用来标识源顺序中某个对象的名字的, C语言是大小字敏感的一种高级语言, 假设我们要定义一个定时器1, 标识符由字符串, 数字和下划线等组成, 留意的是第一个字符必须是字母或下划线, 如“1Timer”是错误的, 编译时便会有错误提示。 所以普通不要以下划线开头命名标识符。 含义明晰, 这样有助于阅读理解顺序。 在C51编译器中, 只支持标识符的前32位为有效标识, 普通情况下也足够用了。 在顺序编写中不允许标识符与关键字相同。 在KEILuVision2中的关键字除了有ANSIC标准的32个关键字外还依据51单片机的特点扩展了相关的关键字(比如for, while等标准的还有sbit,
[单片机]
基础学单片机要多久?单片机学了以后可以干嘛?
很多小伙伴看到网路上流传的单片机很难啊,又要硬件又要编程,就望而却步。 其实说白了,这都是人性对未知事物的一种恐惧心理。 害怕付出了时间精力,最后一无所获。 有个词叫 事在人为 ,如果你要做一件事学一门技术,没想好之前就不要开始。 既然开始了,就要有学不会做不成就吃S的决心,这样基本什么事都难不倒你。 1.零基础自学要多久? 我11年前,也是零基础自学啊,学了1个月就入门了。 过程呢,也很简单粗暴,一块51开发板,一台电脑,把自己关在房间里一天。 坚持半个月-1个月,学不会你打我! 2.单片机学会能干嘛? 单片机的应用非常多,小到生活起居,大到飞机火箭都有。 比如离我们最近的丰巢快递柜、共享单车、共享充电宝、充电桩、无人机
[单片机]
学51单片机-指令周期与LED闪烁
之前讲了如何点亮LED,包括硬件电路和程序,今天说一下如何让LED闪烁。单片机控制LED闪烁有两种方法,一种是软件延时,另一种是定时器中断。因为涉及到单片机指令集的问题,还有一些简单的C语言,今天只讲第一种。 先说指令集,早期的51单片机都是复杂指令集,因为沿用的习惯现在用的STC89C52单片机也是复杂指令集,和复杂指令集对应的,就是精简指令集,常见的有AVR和430单片机。 这两种指令集的区别是啥?最明显的就是一条指令执行的时间,举个例子:51单片机和AVR单片机都外接一个12M的晶体,一个时钟周期是1/12M=1/12US,执行一条单周期指令(多周期指令不考虑)需要多少时间? 51单
[单片机]
学51<font color='red'>单片机</font>-指令周期与LED闪烁
SiLabs针对物联网推出低功耗无线MCU
-高集成度的Sub-GHz Si106x/8x系列产品非常适合具有RF连接功能的功耗敏感型电池供电系统- 中国,北京 - 2013年12月13日 - 高性能模拟与混合信号IC领导厂商Silicon Labs(芯科实验室有限公司, NASDAQ: SLAB)今日宣布扩展了8位Si10xx无线微控制器(Wireless MCU)系列产品,新成员Si106x和Si108x特别针对成本敏感和性能密集型设计而优化。通过在单芯片解决方案中整合其超低功耗MCU技术和sub-GHz EZRadio®及EZRadioPRO®收发器,Silicon Labs推出创新的节能型无线MCU,在同类产品中整体功耗最低,并且具有业内领先的RF性能指标。Si1
[单片机]
基于AVR单片机的LED显示屏的灰度设计与实现
  LED点阵块具有亮度高、发光均匀、可靠性好、拼装方便等优点,能构成各种尺寸的显示屏。目前,LED显示屏已被广泛应用于文字显示并取得了很好的效果,但是大部分仅能显示滚动的文字信息而不能显示图像,并且还存在系统复杂等缺点。本文提出了一种主从式单片机的LED显示屏解决方案,该设计方案利用AVR单片机自身的FLASH ROM和RAM,外部无需任何存储电路,电路结构简单。该系统实现了图像的16阶灰度显示,可广泛用于商场、车站等公共场合。    1 AVR单片机简介       AVR单片机是增强型内置FLASH的RISC(ReducedInstruction Set CPU)精简指令集高速8位单片机,硬件采用哈佛(Harward)结
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved