摘要:本文在充分理解考勤系統(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è)定流程如圖所示。
Hi,大家好,這里是丹成學(xué)長,今天向大家介紹一個(gè) 單片機(jī)項(xiàng)目
基于單片機(jī)的指紋識(shí)別考勤系統(tǒng)
大家可用于 課程設(shè)計(jì) 或 畢業(yè)設(shè)計(jì)
技術(shù)解答、畢設(shè)幫助、開題指導(dǎo)print("Q 746876041")
指紋識(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è)人力資源的利用率得到很好的提高。
為最大程度上滿足當(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ì)。
系統(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)如圖所示。
ATMEL 公司生產(chǎn)的單片機(jī) AT89C51RC2,是單片機(jī)指紋考勤機(jī)必要的硬件設(shè)備,其 CPU 具有高性能 CMOS 8 位微處理器和低電壓功能。
這里學(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ī)接口
勤時(shí)必備的要素除了指紋就是時(shí)間日期,因此,實(shí)時(shí)時(shí)鐘在本系統(tǒng)中是重要的部件,它必須具備準(zhǔn)確可靠和斷電時(shí)正常工作的性能。因此需要選擇帶有雙電源的時(shí)鐘芯片,本系統(tǒng)采用的是時(shí)鐘芯片 DS1302。DS1302 與單片機(jī)的接口電路如圖所示。
指紋識(shí)別模塊包括指紋采集器和指紋處理單元,它起著關(guān)鍵性的作用。因此,好的指紋識(shí)別模塊能保證本系統(tǒng)在使用過程中的穩(wěn)定性,具有 32 位處理器的VFDA02 指紋識(shí)別模塊就是本系統(tǒng)選擇的關(guān)鍵模塊,指紋識(shí)別模塊如圖所示。
單片機(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)試。
單片機(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è)定流程如圖 所示。
// 作者:丹成學(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í)分組為組2:2位搶占優(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
摘要:門禁系統(tǒng)可有效管理門的開啟關(guān)閉對(duì)出入人員進(jìn)行監(jiān)控管理。基于的門禁系統(tǒng)通過對(duì)射頻卡的識(shí)別,保證那些持有相應(yīng)證件的人員能自由進(jìn)出,阻止外來人員或無法提供證件的人員進(jìn)入。 ...
摘要:信息的安全性可控性已成為錄音系統(tǒng)的重要研究內(nèi)容。系統(tǒng)設(shè)計(jì)系統(tǒng)架構(gòu)通過單片機(jī)與語音功能集成芯片,以及液晶芯片進(jìn)行設(shè)計(jì),由單片機(jī)控制來實(shí)現(xiàn)語音的錄制存儲(chǔ)以及播放清除等功能。 ...
摘要:基于單片機(jī)的智能小車控制就是其中的一個(gè)體現(xiàn)。本設(shè)計(jì)實(shí)現(xiàn)了一種基于單片機(jī)的自動(dòng)避障智能模型車系統(tǒng),通過紅外傳感器采集路況信息,通過對(duì)檢測信息的分析,自動(dòng)控制轉(zhuǎn)向電機(jī)轉(zhuǎn)向,改變行駛路徑,繞過障礙物,從而實(shí)現(xiàn)車穩(wěn)定避障。 ...
摘要:老年智能手環(huán)主要致力于深入到整個(gè)救治老年人環(huán)節(jié)中,促進(jìn)幾個(gè)關(guān)鍵人群的及時(shí)反應(yīng)智能互聯(lián)信息互通。是一款突出個(gè)性與人性的智能化產(chǎn)物。 文章目錄 1 簡介1 項(xiàng)目背景意...
摘要:設(shè)計(jì)簡介本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能可通過顯示溫濕度光照強(qiáng)度窗簾狀態(tài)和模式可通過按鍵調(diào)整光照強(qiáng)度最小值可通過藍(lán)牙連接手機(jī)進(jìn)行遠(yuǎn)程控制可通過獲取溫濕度可通過光敏電阻獲取光照強(qiáng)度。 設(shè)計(jì)簡介: 本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能: 可通過LC...
閱讀 2503·2021-11-24 09:39
閱讀 3427·2021-11-15 11:37
閱讀 2279·2021-10-08 10:04
閱讀 3986·2021-09-09 11:54
閱讀 1899·2021-08-18 10:24
閱讀 1074·2019-08-30 11:02
閱讀 1811·2019-08-29 18:45
閱讀 1668·2019-08-29 16:33