成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

畢業(yè)設(shè)計(jì) - 題目:基于單片機(jī)的指紋識(shí)別考勤系統(tǒng) - 嵌入式 物聯(lián)網(wǎng)

antz / 2502人閱讀

摘要:本文在充分理解考勤系統(tǒng)原則和目標(biāo)的基礎(chǔ)上,采用單片機(jī)對(duì)考勤進(jìn)行硬件設(shè)計(jì)并采用面向?qū)ο蟮乃枷脒M(jìn)行上位機(jī)管理系統(tǒng)的設(shè)計(jì)。該芯片共內(nèi)置個(gè)中文漢字,個(gè)字符的碼字符庫及點(diǎn)陣顯示。單片機(jī)指紋考勤系統(tǒng)參數(shù)設(shè)定流程如圖所示。


1 簡介

Hi,大家好,這里是丹成學(xué)長,今天向大家介紹一個(gè) 單片機(jī)項(xiàng)目

基于單片機(jī)的指紋識(shí)別考勤系統(tǒng)

大家可用于 課程設(shè)計(jì) 或 畢業(yè)設(shè)計(jì)

技術(shù)解答、畢設(shè)幫助、開題指導(dǎo)print("Q 746876041") 

2 指紋考勤的背景意義

指紋識(shí)別是成熟的生物識(shí)別技術(shù),生物識(shí)別技術(shù)是全球科研機(jī)構(gòu)和企業(yè)的研究熱點(diǎn),得以應(yīng)用與推廣的許多技術(shù)都已經(jīng)成熟,多種生物識(shí)別技術(shù)例如發(fā)音識(shí)別也是一項(xiàng)關(guān)鍵的技術(shù),面部識(shí)別和指紋識(shí)別也得到了全面的發(fā)展。人的身份特征可以根據(jù)這些生物特征辨識(shí)得到,是因?yàn)槊總€(gè)人的這些特征都有很大的不同之處。人的指紋和掌紋都具有特征的唯一性,這樣的例子在人體內(nèi)還有視網(wǎng)膜、虹膜、發(fā)音和面孔,在人類的特征中,骨架也具有唯一的特征 [4]。在系統(tǒng)安全面臨全方位現(xiàn)實(shí)挑戰(zhàn)的現(xiàn)在,科學(xué)技術(shù)把目光轉(zhuǎn)向了具有唯一性的生物識(shí)別技術(shù),這些不可復(fù)制的人體身體特征,為科學(xué)實(shí)踐的進(jìn)步增加了關(guān)鍵技術(shù)核心競爭力。因此,采用人體特征技術(shù)對(duì)企業(yè)人員進(jìn)行合理的管理,能使企業(yè)人力資源的利用率得到很好的提高。

3 課題目標(biāo)

為最大程度上滿足當(dāng)前企業(yè)的需要,本文有效的結(jié)合了當(dāng)前最先進(jìn)的生物特征識(shí)別技術(shù)和互聯(lián)網(wǎng)關(guān)鍵技術(shù),構(gòu)建了實(shí)現(xiàn)考勤報(bào)表管理、個(gè)人考勤信息查詢、員工終端考勤管理和總部考勤管理等功能的考勤系統(tǒng)。本文在充分理解考勤系統(tǒng)原則和目標(biāo)的基礎(chǔ)上,采用單片機(jī)對(duì)考勤進(jìn)行硬件設(shè)計(jì)并采用面向?qū)ο蟮乃枷脒M(jìn)行上位機(jī)管理系統(tǒng)的設(shè)計(jì)。

4 系統(tǒng)設(shè)計(jì)

4.1 硬件電路設(shè)計(jì)

系統(tǒng)結(jié)構(gòu)設(shè)計(jì)實(shí)現(xiàn)過程中,是要以系統(tǒng)的功能性需求和非功能性需求為基礎(chǔ)的。

學(xué)長設(shè)計(jì)的單片機(jī)指紋考勤系統(tǒng),不僅要實(shí)現(xiàn)硬件設(shè)計(jì)和完成上位機(jī)管理軟件的設(shè)計(jì),還要保證系統(tǒng)在完成后使用穩(wěn)定,便于維護(hù)并且容易擴(kuò)展,在滿足系統(tǒng)的功能性需求基礎(chǔ)上滿足系統(tǒng)的非功能性需求。

系統(tǒng)的硬件設(shè)計(jì)包括人機(jī)交互功能的顯示和鍵盤模塊、通信模塊、指紋識(shí)別模塊、時(shí)鐘模塊和存儲(chǔ)模塊等,其硬件設(shè)計(jì)結(jié)構(gòu)如圖所示。

4.1.1 單片機(jī)主控

ATMEL 公司生產(chǎn)的單片機(jī) AT89C51RC2,是單片機(jī)指紋考勤機(jī)必要的硬件設(shè)備,其 CPU 具有高性能 CMOS 8 位微處理器和低電壓功能。

4.1.2 LCD 顯示屏

這里學(xué)長采用中文圖形控制芯片 ST7920 來實(shí)現(xiàn)用戶信息交互,它是一種內(nèi)置128×64-12 漢字圖形點(diǎn)陣的液晶顯示控制模塊,用于顯示漢字及圖形。該芯片共內(nèi)置 8192 個(gè)中文漢字,128 個(gè)字符的 ASCLL 碼字符庫及 64×256 點(diǎn)陣顯示RAM。

ST7920 與 單片機(jī)接口

4.1.3 實(shí)時(shí)時(shí)鐘

勤時(shí)必備的要素除了指紋就是時(shí)間日期,因此,實(shí)時(shí)時(shí)鐘在本系統(tǒng)中是重要的部件,它必須具備準(zhǔn)確可靠和斷電時(shí)正常工作的性能。因此需要選擇帶有雙電源的時(shí)鐘芯片,本系統(tǒng)采用的是時(shí)鐘芯片 DS1302。DS1302 與單片機(jī)的接口電路如圖所示。

4.1.4 指紋識(shí)別模塊

指紋識(shí)別模塊包括指紋采集器和指紋處理單元,它起著關(guān)鍵性的作用。因此,好的指紋識(shí)別模塊能保證本系統(tǒng)在使用過程中的穩(wěn)定性,具有 32 位處理器的VFDA02 指紋識(shí)別模塊就是本系統(tǒng)選擇的關(guān)鍵模塊,指紋識(shí)別模塊如圖所示。

4.2 軟件設(shè)計(jì)

單片機(jī)指紋考勤系統(tǒng)的下位機(jī)軟件功能圖如圖所示,整個(gè)設(shè)計(jì)由 7 部分組成,指紋考勤模塊將采集到的指紋信息反饋到單片機(jī)進(jìn)行數(shù)據(jù)分析和處理,主程序?qū)⑿畔⒎答伒斤@示屏同時(shí)進(jìn)行數(shù)據(jù)的存儲(chǔ)和傳輸,時(shí)間由時(shí)鐘提供。各個(gè)模塊相對(duì)獨(dú)立又互相聯(lián)系,可以分別設(shè)計(jì),便于軟件的調(diào)試。

4.2.1 系統(tǒng)工作流程

單片機(jī)指紋考勤系統(tǒng)控制軟件主流程如圖 4.8 所示。主控制程序包含系統(tǒng)循環(huán)和初始化程序,初始化參數(shù)設(shè)置,其中主要有各個(gè) I/O 口,串口和顯示屏的初始化,設(shè)置無線通信模塊為發(fā)射模式,啟動(dòng)看門狗電路,時(shí)鐘,配置擴(kuò)展芯片通道。初始化完成后,用戶按下手指或鍵盤,中斷程序完成指紋識(shí)別和鍵盤檢測,再反饋給單片機(jī)主程序。

管理人員通過系統(tǒng)管理模塊設(shè)定參數(shù)和管理指紋信息,單片機(jī)指紋考勤系統(tǒng)管理功能如圖

不同部門的系統(tǒng)參數(shù)設(shè)定不同,管理人員可以通過指紋管理模塊設(shè)定系統(tǒng)時(shí)間、考勤機(jī)號(hào)、波特率、管理員人數(shù)等各種參數(shù)。系統(tǒng)參數(shù)設(shè)定通過 LCD 屏幕與管理人員進(jìn)行信息交互。參數(shù)修改首先要用系統(tǒng)管理員的身份進(jìn)入,按下
MENU 鍵后,管理員驗(yàn)證指紋,比對(duì)成功即可進(jìn)入系統(tǒng)管理菜單,如果要修改系統(tǒng)時(shí)間設(shè)定,可通過鍵盤中的數(shù)字鍵和方向鍵將光標(biāo)移至相應(yīng)的位置進(jìn)行修改,最后按 OK 鍵完成修改,退出管理菜單。其他參數(shù)的修改方式與此相同。單片機(jī)指紋考勤系統(tǒng)參數(shù)設(shè)定流程如圖 所示。

5 實(shí)現(xiàn)效果

6 部分關(guān)鍵代碼

// 作者:丹成學(xué)長 Q746876041#include "sys.h"#include "delay.h"#include "usart.h" #include "led.h" 		 	 #include "lcd.h"  #include "key.h"  #include "key1.h"#include "beep.h"	   #include "malloc.h"#include "sdio_sdcard.h"  #include "w25qxx.h"   #include "ff.h"  #include "exfuns.h"   		#include "usart3.h"#include "common.h" #include "rtc.h" #include "sql.h"#include "usart2.h"#include "AS608.h"#include "timer.h"#include "touch.h"#include "ezio.h"#include "text.h"#include "admin.h"#include "fontupd.h"#include "usmart.h"#include "fattester.h"#include "stmflash.h"#include "mqtt.h"#define usart2_baund  9600//串口2波特率,根據(jù)指紋模塊波特率更改#define usart3_baund 11500FIL fill;UINT bw_2;u8 cun[10]={" "," ","0","0"," "," "," "," "," "," "};u8 cun_1[10]={" "," ","0","0"," "," "," "," "," "," "};#define FLASH_SAVE_ADDR 0X08070000#define SIZE sizeof(number_3)u8 number_1[30];u8 number_2[30];u8 number_3[120];u8 number_4[30];int member_num;u8** kbd_tbl;const  u8* kbd_menu[15]={"delete"," : ","input","1","2","3","4","5","6","7","8","9"," ","0"," "};//按鍵表SysPara AS608Para;//指紋模塊AS608參數(shù)u16 ValidN;//模塊內(nèi)有效指紋個(gè)數(shù)	u8 s_1=0;u8 IDnum;u8 shu_flag;u8 shu_flag_1;u8 flag_1=0;u8 flag_2=1;u8 flag3;u8 flag4=0;u8 flag5;u8 e=1;u8 f=1;u8 min_five=0;u8 count;u8 depart_flag;u8 data_flag;u8 z_1=1;   //簽到人數(shù)void Add_FR(void);	//錄指紋void Del_FR(void);	//刪除指紋void press_FR(void);//刷指紋void ShowErrMessage(u8 ensure);//顯示確認(rèn)碼錯(cuò)誤信息void keyboard(u16 x,u16 y,u8 **kbtbl);void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode);void Show_Str_Mid(u16 x,u16 y,u8*str,u8 size,u8 len);void AS608_key_staset(u16 x,u16 y,u8 keyx,u8 sta);u8 jiemian(void );void IDentity(){	SearchResult seach;	u8 key;	u8 ensure_1;	u8 z_2=0;	flag_1=1;		TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE );	LCD_Clear(WHITE);//清屏	Show_Str(20,40,200,16,"請識(shí)別指紋:",16,1); 	Show_Str(20,300,200,16,"密碼",16,1); 	Show_Str(200,300,200,16,"返回",16,1);		while(flag_1)	{		ensure_1=PS_GetImage();		if(ensure_1==0x00)//獲取圖像成功 		{				BEEP=1;//打開蜂鳴器				ensure_1=PS_GenChar(CharBuffer1);			if(ensure_1==0x00) //生成特征成功			{						BEEP=0;//關(guān)閉蜂鳴器					ensure_1=PS_HighSpeedSearch(CharBuffer1,0,AS608Para.PS_max,&seach);				if(ensure_1==0x00)//搜索成功				{									LCD_Fill(0,100,lcddev.width,160,WHITE);					Show_Str_Mid(0,100,"刷指紋成功",16,240);									if(flag_1==1)					{						if(seach.pageID==99)							z_2=1;						else							z_2=0;					}					min_five=0;				}				else 					ShowErrMessage(ensure_1);								}			else				ShowErrMessage(ensure_1);		 BEEP=0;//關(guān)閉蜂鳴器		 delay_ms(600);		 LCD_Fill(0,100,lcddev.width,160,WHITE);		}			if(z_2==1)		{			LCD_Clear (WHITE );			jiemian();			flag_1=0;		}		key=KEY_Scan(0);				if(key==KEY0_PRES)			flag_1=0;					if(key==KEY2_PRES)		{			if(password_input()==1)           //輸密碼			{				LCD_Clear (WHITE );				jiemian();				flag_1=0;			}			else				flag_1=0;		}	}	return_time_flag=1;	LCD_Clear (WHITE );	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );}int main(void){	     	u8 ensure;	char *str;	  	u8 key;	u8 fontok=0; //用于字庫校準(zhǔn)		u8 i;	u8 b=0;	u8 j=0;	count=1;		delay_init();	    	 //延時(shí)函數(shù)初始化	    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組22位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)	usmart_dev.init(72);		//初始化USMART			uart_init(115200);	 	//串口初始化為115200	usart2_init(usart2_baund);//初始化串口2	usart3_init(usart3_baund);		//初始化串口3 	LED_Init();		  			//初始化與LED連接的硬件接口	KEY_Init();					//初始化按鍵	LCD_Init();			   		//初始化LCD 	TP_Init();     //觸摸屏初始化,注意這里用到了24C02來存儲(chǔ)校準(zhǔn)數(shù)據(jù),因此需要24C02的驅(qū)動(dòng)支持,移植的時(shí)候注意	W25QXX_Init();				//初始化W25Q128	PS_StaGPIO_Init();	//初始化FR讀狀態(tài)引腳	BEEP_Init();  			//初始化蜂鳴器	Key_init1();	 	TIM3_Int_Init(1999,7199);	RTC_Init();	  			  //	RTC_Set(2020,4,12,19,07,50);  //設(shè)置時(shí)間		STMFLASH_Read(FLASH_SAVE_ADDR,(u16 *)number_3,SIZE);/*SD卡檢測及文件系統(tǒng)掛載*/	while(SD_Init())//檢測不到SD卡	{		LCD_ShowString(30,150,200,16,16,"SD Card Error!");		delay_ms(500);							LCD_ShowString(30,150,200,16,16,"Please Check! ");		delay_ms(500);		LED0=!LED0;//DS0閃爍	} 	exfuns_init();							//為fatfs相關(guān)變量申請內(nèi)存				   f_mount(fs[0],"0:",1); 		//掛載SD卡  	f_mount(fs[1],"1:",1); 		//掛載FLASH.				  			    		while(PS_HandShake(&AS608Addr))//與AS608模塊握手	{		delay_ms(300);		LCD_Fill(0,40,240,80,WHITE);//		Show_Str_Mid(0,40,"未檢測到模塊!!!",16,240);		delay_ms(700);		LCD_Fill(0,40,240,80,WHITE);//		Show_Str_Mid(0,40,"嘗試連接模塊...",16,240);		  	}	/*字庫校準(zhǔn)*/		fontok=font_init();			//檢查字庫是否OK	if(fontok||key==KEY1_PRES)	//需要更新字庫				 	{		LCD_Clear(WHITE);		//清屏 		POINT_COLOR=RED;		//設(shè)置字體為紅色	 						    		key=update_font(20,110,16,"0:");//從SD卡更新		while(key)//更新失敗				{			 		  			LCD_ShowString(60,110,200,16,16,"Font Update Failed!");			delay_ms(200);			LCD_Fill(20,110,200+20,110+16,WHITE);			delay_ms(200);		       		} 		  		LCD_ShowString(60,110,200,16,16,"Font Update Success!");		LCD_Clear(WHITE);//清屏	       	}  	/*指紋模塊操作*/	ensure=PS_ValidTempleteNum(&ValidN);//讀庫指紋個(gè)數(shù)	if(ensure!=0x00)		ShowErrMessage(ensure);//顯示確認(rèn)碼錯(cuò)誤信息		ensure=PS_ReadSysPara(&AS608Para);  //讀參數(shù) 	myfree(SRAMIN,str);		POINT_COLOR=BLUE;	LCD_Clear(WHITE);//清屏	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );	zhuanhua(0);	if(number_3[0]!=0)		z_1=number_3[0];		while(1)	{		key=KEY_Scan(0);		flag_1=0;		flag_2=1; 				if(key==KEY2_PRES)		{				count=1;			j=0;			b=0;			TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE );			LCD_Clear(WHITE);//			mqtt_sendmassage();						while(count)			{				LCD_LED=1;						Show_Str(10,10,240,320,"已簽到人員:",16,1);  //a=5				LCD_ShowNum(130,10,(number_3[0]-1)/3,2,16);				STMFLASH_Read(FLASH_SAVE_ADDR,(u16 *)number_3,SIZE);					if(count==1)				{										for(i=1;i<120;i++)					{						if(number_3[i]!=0)						{							if(i%30==1&&i!=1)							{								j=0;								b=0;								LCD_Fill (10,30,220,300,WHITE);							}							LCD_ShowNum(40+50*j,60+20*b,number_3[i],2,16);							if(i%3==1)								LCD_ShowString(60,60+20*b,240,320,16," :  ");							}						j++;						if(i%3==0)						{							b++;							j=0;						}											}					count=2;				}				key=KEY_Scan(0);				if(key==KEY0_PRES||key==KEY1_PRES||key==KEY2_PRES)				{					count=0;					LCD_LED=1;							LCD_Clear(WHITE);					TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );					return_time_flag=1;				}			}		}		if(flag4==1)		{			number_3 [0]=0;			for(i=1;i<120;i++)			{				number_3 [i]=0;			}			flag4=0;			z_1=1;			STMFLASH_Write(FLASH_SAVE_ADDR,(u16 *)number_3,SIZE );					}		if(key==KEY0_PRES)		{							TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE );						jiemian();			LCD_LED=1;				//點(diǎn)亮背光		}		press_FR(
                 
               
              

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/124730.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<