Finger Print Based Biometric Application

Published on 2 weeks ago | Categories: Documents | Downloads: 0 | Comments: 0 | Views: 58
of x
Download PDF   Embed   Report






T.SHRAVANI (07245A0403) 

BATCH: 2007-2011




  Biometrics can be seen as a solution to a lot of the user identification and security problems in today’s networks.Reliable personal recognition is critical to many business processes. Biometrics refers to automatic Recognition of an individual based on their behavioral and/or physiological characteristics. Biometrics removes human error from the security equation. Fingerprint identification is one such method in biometrics. Steps involved in Finger print identification:    Finger Print enrollment through system.   Enrolled user places his/her Finger on the Finger sensor for checking IN/OUT (Authentication).   The terminal compares live finger with the finger stored on built-in memory and checks for a match.   When a match is found the Authentication is successful and the user is given access.

• •


Finger Print Module-Microcontroller Interfacing authenticates using finger print of user. All users are enrolled using the system and our project checks for authentication. 1.2 BLOCKDIAGRAM


LCD  Power supply

ATMEGA  8515 

Finger Print Module



The prototype of the present Embedded System has the following resources:   Finger print module (FIM3030N)   Robo Board Power supply circuit •

Resistors Capacitors Diodes FETs ATmega 8515 chip Crystal oscillator Potentiometer LCD-Liquid Crystal Display


LEDs-Light Emitting Diodes Switches RegulatorJumpers Max 232 IC for serial communication Reset button ICs for motor , wireless communication.



  The above resources excluding the fingerprint identification module are placed over a general robocon PCB board and soldered accordingly. PORTC lower nibble 2,3 pins used as control lines for LCD. PORTC upper nibble used as data lines for LCD. PORTC pins 0 and 1 used for switches.


A fingerprint is an impression of the friction ridges of all or any part of the finger. A friction ridge is a raised portion of the epidermis on the pal mar(palm and fingers) or plantar (sole and toes) skin, consisting consisting of one or more connected ridge units units of friction ridge skin skin.. These ridges are sometimes known as “dermal ridges” or “dermal papillae”.


Fingerprint-based identification can be placed into two categories depending on the type of  parameter used for comparison. comparison. • Minutiae-based matching (Analyzing the local structure) • Global pattern matching (Analyzing the global structures) Currently the computer aided fingerprint recognition is using the minutiae-based matching. Minutiae points are local ridge characteristics and appear as either a ridge ending or a ridge  bifurcation. The uniqueness of a fingerprint can be determined by the pattern of the ridges and the valleys a fingerprint’s made of. A complete fingerprint consists of about 100 minutiae points in average. The measured fingerprint fingerprint area consists in average of ab about out 30-60 min minutiae utiae points depending on the finger and on the sensor area. a rea. An individual’s fingerprint is scanned to identify 10 to 26 unique points of the finger, and a unique number is assigned to it. The original fingerprint image is not saved, but the fingerprint algorithm algorithm is stored. These minutiae points are represented by a cloud of dots in a coordination system. They are stored together with the angle of the tangent of a local minutiae point in a fingerprint-code or directly in a reference template.


A template can consist of more than one fingerprint-code to expand the amount of information and to expand the enrolled fingerprint area. In general this leads to higher template quality and therefore to a higher similarity value of the template and the sample.


The fingerprint is acquired from a fingerprint scanner

. Image is improved for better contrast and distinctness.

 Noise and defects are eliminated. eliminated.

The final scanned finger print layout.


Minutiae are identified.



ANALYZED FINGERPRINT Fingerprint features are detected and analyzed. Fingerprint search on database is made based on some measures; so polygons are determined connecting 3 minutiae. Thus, internal angles, sides and each minutia angle are computed. These measures are invariant to rotation and translation. This method allows that a desired fingerprint can be localized on database even with position variation (displacement and rotation) in relation to the found fingerprint.


• Prevents unauthorized use or access • Adds a higher level of security to an identification process • Eliminates the burden and bulk of carrying ID cards or remembering Pins • Heightens overall confidence of business processes dependent on personal identification. identification.


  THE FIM3030N FINGERRPINT MODULE: General Descriptions

FIM30N is a low-price stand-alone Fingerprint Identif Identification ication Device with many excellent features. It provides benefits such as high identification performance, low power consumption and RS232 serial interface with the various commands for easy integration into a wide range of applications. It is a durable and compact device with fingerprint identifi identification cation module containing  NITGEN® optics-based optics-based fingerprin fingerprintt sensor insi inside. de. Communication

FIM30N has RS-232 serial communication port through that FIM30N communicates at the same time. These T hese ports support 6 baudrate modes such as 9600, 14400, 19200, 38400, 57600, and 115200 bps.


1 2 3 4 5 6

Pin Name



3.3 V (FIM30xx-LV (FIM30xx-LV)) / 5 V (FIM30xx-HV) RS-232 Rx receiving signal from host RS-232 Tx transmitting signal to host Output for indicating authentication success FAIL Output for indicating authentication fail Enroll_Ke Enroll_Key y Input to enroll fingerprint without RS-232 communication


7 8 9

Delete_Key Input to delete user without RS-232 communication Identify_Ke Identify_Key y Input to identify user without RS-232 communication GND Ground

2.2 LCD:


There are pins along one side of the small printed board used for connection to the microcontroller. There are total of 14 pins and their function is described in the table below





We used RS-232 serial communication standards for the communication between the Bio Module and the ATMEGA 8515 microcontroller. The general instruction format of the instructions between the microcontrol microcontroller ler and Bio-Module is




This field tells the bio module what it has to do. Some of the commands used in our program are: 0x01-Initialization 0x01-Init ialization of the module. 0x2F-Entering into master mode. 0x33-Enrolling user. 0x12-Authentication. 0x22-Deletion of a user. Packet index:

If data size is so large that the host/device cannot carry data in a single packet, the host/device divides data into small data blocks and sends them over several subsequent packets. The packet index gives information about the number of packets. Data size:  Gives information about the size of data that is being sent interms of bytes. Error:

If the host sends the command packet, the device returns the acknowledge packet with the packet error code. If Error code is not “ERR_NONE”, the previously sent command packet is ignored in the device. The host needs to check the returned error code, and then retry or does something.


Checksum data can be calculated by adding a dding all byte data. 2.4 ATMEGA 8515 MICRO CONTROLLER: FEATURES:

• High-performance, Low-power AVR® 8-bit Microcontroller Architecture  –• RISC 130 Powerful Instructions – Most Single Clock Cycle Execution Instructions


 – 32 x 8 General Purpose Purpose Working Registers  – Fully Static Operation Operation  – Up to 16 MIPS Throughput Throughput at 16 16 MHz  – On-chip 2-cycle Multiplier Multiplier • Nonvolatile Program and Data Memories  – 8K Bytes of In-System In-System Self-programmable Self-programmable Flash Endurance: 10,000 Write/Erase Cycles  – Optional Boot Code Section with In Independent dependent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation  – 512 Bytes EEPROM Endurance: 100,000 Write/Erase Cycles  – 512 Bytes Internal Internal SRAM  – Up to 64K Bytes Optional Optional External Memory Memory Space  – Programming Lock Lock for Software Security • Peripheral Features  – One 8-bit Timer/Counter Timer/Counter with Separate Prescaler and Compare Mode  – One 16-bit Timer/Counter Timer/Counter with Separat Separatee Prescaler, Compare Mode, and Capture Capture Mode  – Three PWM Channels Programmable Serial USART  – Master/Slave SPI Serial Interface Interface  – Programmable Watchdog Watchdog Timer with Separate OnOn-chip chip Oscillator  – On-chip Analog Comparator • Special Microcontroller Features  – Power-on Reset and Programmable Programmable Brown-o Brown-out ut Detection  – Internal Calibrated Calibrated RC Oscillator  – External and Internal Internal Interrup Interruptt Sources  – Three Sleep Modes: Idle, Idle, Power-down and Stan Standby dby • I/O and Packages  – 35 Programmable Programmable I/O Lines  – 40-pin PDIP, 44-lead 44-lead TQFP, 44-lead PLCC, and 44 44-pad -pad MLF  –• Operating 2.7 - 5.5VVoltages for ATmega8515L ATmega8515L  – 4.5 - 5.5V for ATmega8515 ATmega8515 • Speed Grades  – 0 - 8 MHz for ATmega8515L ATmega8515L  – 0 - 16 MHz for ATmega8515 ATmega8515





  The module is initialized by sending an initialization command to it.   An option is provided to user to press a swith & thus enter the authentication a uthentication mode.   If the user has already been enrolled through the system, then Authentication OK is displayed on the LCD. Else it shows Authentication Failed.

• •





#include<avr/io.h> #include<util/delay.h> #include<stdio.h> #include<string.h> #include<avr/interrupt.h> #define sbi( PORT, BIT) PORT |= (1<<BIT) #define cbi( PORT, BIT) PORT &= ~(1<<BIT) volatile unsigned char fim[25]; volatile unsigned char q; int i; void delay(int); void Lcd_Cmd(unsigned char); void Lcd_Data(unsigned char); void Lcd_Init(); void Lcd_Display(unsigned Lcd_Display(unsigned char []); void Uart_Init(); void fim_init( ); void fim_master(); void fim_enroll(); void fim_delete(); void fim_auth();


void ser_out(unsigned char ); unsigned char Con1[] = " Connection 0"; unsigned char Con2[] = " Established 0"; unsigned char NOK1[] = " Failed 0"; unsigned char ST1[] = " Finger Print 0"; unsigned char ST2[] = " Impression 0"; unsigned char CON[] = " Connecting 0"; unsigned char Auth[] = " Authenticate 0"; unsigned char PUF[] = "KEEP YOUR FINGER 0"; unsigned char OK[] = " OK 0"; unsigned char CON3[]= "Master 0"; unsigned char CON4[]= "Enroll 0"; unsigned char ENR[]= "Enrolled 0"; unsigned char STEP2[] ="Master Entered 0"; unsigned char STEP3[] = "Step1 ok 0"; unsigned char STEP4[] = "Step2 ok 0"; unsigned char NOK2[] = " Step1 Failed 0"; unsigned char NOK3[] = " Entry failed 0"; unsigned char NOK4[] = " Step2 failed 0"; unsigned char TMO[] = " Time Out 0"; unsigned char DEL[] = " Delete 0"; unsigned char INTRO1[]="1.ENROLL.0"; unsigned char INTRO2[]="2.AUTH 3.DEL.0";


unsigned char GATEO[] = "Gate Opened.....0"; unsigned char GATEC[] = "Gate Closed.... 0";

int main() { unsigned char Title1[] = "BIOMETRIC SECURE0"; unsigned char Title2[] = "& ACCESS SYSTEM.. 0"; unsigned char i; DDRC = 0XFC;// LAST 2 MSB BITS SWITCHES PORTC=0X03;// INTERNAL PULL UPS Lcd_Init(); Lcd_Cmd(0X80); delay(1); Lcd_Display(Title1); Lcd_Cmd(0XC0); delay(1); Lcd_Display(Title2); Uart_Init();  _delay_ms(2000);  _delay_ms(20 00); q=0; for(i=0; i<25;i++) { fim[i] =0x00;


}  _delay_ms(1000.0);  _delay_ms(10 00.0); fim_init();  _delay_ms(1000.0);  _delay_ms(10 00.0); while((PINC & 0x01)!=0x0 0x01)!=0x00); 0); fim_master();  _delay_ms(100.0);  _delay_ms(10 0.0);  _delay_ms(2000.0);  _delay_ms(20 00.0); while(1) { Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(INTRO1); Lcd_Cmd(0XC0); delay(1); Lcd_Display(INTRO2); delay(1);  _delay_ms(2000.0);  _delay_ms(20 00.0); for(i=9;i>=0;i--) { Lcd_Cmd(0x01);



delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(CON4); Lcd_Display(CON4 );

//Functon name display in line 1

delay(1); Lcd_Cmd(0xC0); delay(1); Lcd_Data(i+48);

// i value in 2nd line decremented from 10 to 0

if((PINC & 0x01)==0x0 0x01)==0x00) 0) {  _delay_ms(10.0);  _delay_ms(10 .0); fim_enroll();  _delay_ms(2000.0);  _delay_ms(20 00.0); goto x; } if(i==0)

//time out for function if i=0

{ Lcd_Cmd(0xC0); delay(1); Lcd_Display(TMO);  _delay_ms(2000.0);  _delay_ms(20 00.0); goto x; }




} x:_delay_ms(100.0); for(i=9;i>=0;i--) { Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(Auth); delay(1); Lcd_Cmd(0xC0); delay(1); Lcd_Data(i+48); if((PINC & 0x01)==0x0 0x01)==0x00) 0) {  _delay_ms(10.0);  _delay_ms(10 .0); fim_auth();  _delay_ms(2000.0);  _delay_ms(20 00.0); goto y; } if(i==0) {



Lcd_Cmd(0xC0); delay(1); Lcd_Display(TMO);  _delay_ms(2000.0);  _delay_ms(20 00.0); goto y; }  _delay_ms(2000.0);  _delay_ms(20 00.0);

} y:_delay_ms(100.0); for(i=9;i>=0;i--) { Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(DEL); delay(1); Lcd_Cmd(0xC0); delay(1); Lcd_Data(i+48); if((PINC & 0x01)==0x0 0x01)==0x00) 0) {  _delay_ms(10.0);  _delay_ms(10 .0);



fim_delete();  _delay_ms(2000.0);  _delay_ms(20 00.0); goto z; } if(i==0) { Lcd_Cmd(0xC0); delay(1); Lcd_Display(TMO);  _delay_ms(2000.0);  _delay_ms(20 00.0); goto z; }  _delay_ms(2000.0);  _delay_ms(20 00.0);

} z:_delay_ms(3000.0); } }

void Uart_Init() { UBRRH=0; UBRRL=51;


UCSRB=0X18; UCSRC=0X86; }

ISR(UART_RX_vect) { cli(); fim[q]= UDR; q++; sei(); }

void fim_init() { UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10 .0); ser_out(0x7e);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x01);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00);


ser_out(0x01); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled  _delay_ms(1.0);  _delay_ms(1.0 ); sei(); while(q<20); cli();  _delay_ms(1.0);  _delay_ms(1.0 ); if(fim[4]==0x01 if(fim[4]==0x 01 && fim[8]==0x0 fim[8]==0x01) 1) { Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(Con1); delay(10); Lcd_Cmd(0xC0); delay(10); Lcd_Display(Con2); delay(10); } else if(fim[4]==0x01 && fim[8]==0x0c) //connection failed {


Lcd_Cmd(0x80); delay(10); Lcd_Display(Con1); delay(10); Lcd_Cmd(0xC0); delay(10); Lcd_Display(NOK1); delay(10); } }//end fim_init void ser_out(unsigned ser_out(unsigned char ser) { while(!(UCSRA &0x20)); UDR =ser;  _delay_ms(1.0);  _delay_ms(1.0 ); }//end ser-out void fim_master() { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(CON3);


delay(10); UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10 .0); ser_out(0x7e); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x2F); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x0A); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x39); ser_out(0x34);ser_out(0x37);ser_out(0x37);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0xA2); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled sei(); while(q<24); cli();  _delay_ms(100.0);  _delay_ms(10 0.0); if(fim[4]==0x2F if(fim[4]==0x 2F && fim[8]==0x0 fim[8]==0x01) 1) {



Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(STEP2); delay(10); PORTD = 0x80; } else { Lcd_Cmd(0xC0); delay(1000); delay(1000); Lcd_Data(fim[20]+48); delay(1000); delay(10); PORTD =0x40; }


void fim_enroll() { Lcd_Cmd(0X01);


delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(CON4); delay(1); Lcd_Cmd(0xC0); delay(1); Lcd_Display(PUF); UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10 .0); ser_out(0x7e);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x33);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x10);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x43); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled  _delay_ms(10.0);  _delay_ms(10 .0); sei(); while(q<20);


cli();  _delay_ms(10.0);  _delay_ms(10 .0); if(fim[4]==0x33 if(fim[4]==0x 33 && fim[8]==0x0 fim[8]==0x01) 1) { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(STEP3); delay(1); PORTD = 0x80; UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10 .0); ser_out(0x7e);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x33);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x01);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x01);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x35); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled


 _delay_ms(10.0);  _delay_ms(10 .0); sei(); while(q<20); cli();  _delay_ms(10.0);  _delay_ms(10 .0); if(fim[4]==0x33 if(fim[4]==0x 33 && fim[8]==0x0 fim[8]==0x01) 1) { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(STEP4); delay(1); Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(ENR); PORTD = 0x80; } else { Lcd_Cmd(0xC0);


delay(1); Lcd_Display(NOK4); delay(1); } } else { Lcd_Cmd(0xC0); delay(1); Lcd_Display(NOK2); delay(1); } }

void fim_auth() { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(Auth); delay(1); Lcd_Cmd(0XC0);


delay(1); Lcd_Display(PUF); delay(1); UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10 .0); ser_out(0x7e);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x12);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x12); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled  _delay_ms(10.0);  _delay_ms(10 .0); sei(); while(q<20); cli();  _delay_ms(10.0);  _delay_ms(10 .0); if(fim[4]==0x12 if(fim[4]==0x 12 && fim[8]==0x0 fim[8]==0x01) 1) { Lcd_Cmd(0X01);


delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(Auth); delay(1); Lcd_Cmd(0XC0); delay(1); Lcd_Display(OK); delay(1);  _delay_ms(300.0);  _delay_ms(30 0.0); Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(GATEO);  _delay_ms(5000.0);  _delay_ms(50 00.0);  _delay_ms(300.0);  _delay_ms(30 0.0); Lcd_Cmd(0x01); delay(1); Lcd_Cmd(0x80); delay(1); Lcd_Display(GATEC);  _delay_ms(1000.0);  _delay_ms(10 00.0);


} else //auth failed { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(Auth); delay(1); Lcd_Cmd(0XC0); delay(1); Lcd_Display(NOK1); delay(1); } }//end fim-auth

void fim_delete() { Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X80); delay(1); Lcd_Display(DEL);


delay(100); UCSRB = 0x08;//on 0x08;//only ly tx is enabled cli();// no interrupts  _delay_ms(10.0);  _delay_ms(10.0); ser_out(0x7e); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x22); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x0A); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x2C); ser_out(0x34);ser_out(0x37);ser_out(0x35);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00); ser_out(0x00);ser_out(0x00);ser_out(0x00);ser_out(0xA0); q=0; UCSRB = 0x90;//rx complete int enabled and rx enabled sei(); while(q<24); cli();  _delay_ms(10.0);  _delay_ms(10 .0); if(fim[4]==0x22 if(fim[4]==0x 22 && fim[8]==0x01 fim[8]==0x01)) {



Lcd_Cmd(0XC0); delay(1); Lcd_Display(OK); delay(10); } else

{ Lcd_Cmd(0xC0); delay(1); Lcd_Display(NOK1); delay(1); } }

void delay(int d) { int i; for(i=0;i<d;i++)  _delay_ms(10.0);  _delay_ms(10 .0); }

void Lcd_Init() {


Lcd_Cmd(0X30); delay(1); Lcd_Cmd(0X01); delay(1); Lcd_Cmd(0X28); delay(1); Lcd_Cmd(0x0E); delay(1); }

void Lcd_Cmd(unsigned char d) { unsigned char d1; d1=0xF0 & d; PORTC = d1; cbi(PORTC,2);//Rs=0; sbi(PORTC,3);//En =1 cbi(PORTC,3);//En = 0 d1=d &0x0F; d1=d1<<4; PORTC = d1; cbi(PORTC,2);//Rs=0; sbi(PORTC,3);//En =1


cbi(PORTC,3);//En = 0 }

void Lcd_Data(unsigned char d) { unsigned char d1; d1=0xF0 & d; PORTC = d1; sbi(PORTC,2);//Rs=1; sbi(PORTC,3);//En =1 cbi(PORTC,3);//En = 0 d=d<<4; d1=d & 0XF0; PORTC = d1; sbi(PORTC,2);//Rs=1; sbi(PORTC,3);//En =1 cbi(PORTC,3);//En = 0 } void Lcd_Display(unsigned char msg[]) { unsigned char i; for(i=0; msg[i] != '0';i++) {


Lcd_Data(msg[i]); delay(1); } }


  Finger print identification system can be extensively used for attendance system in schools & colleges.   For security purposes, employees in banks, managers of huge organisations are

required to make use of finger-print recogntion systems.   Based on this, future applications can be extended to face-recognition and retinarecognition systems.


  Connection Established   Enrolling through PC   Authentication

• • •


When Biomodule is connected to the Robo-board through RS232 cable, a request is sent to the module & thus ‘Connection Established’ is displayed on LCD. Next, when the switch is  pressed, it identifies identifies if the user is enrolled enrolled or not.

Sponsor Documents

Or use your account on


Forgot your password?

Or register your new account on


Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in