Sie sind auf Seite 1von 40

MI NI PROJ ECT DOCUMENTATI ON ON FI NGER PRI NT

MODULE BI O METRI C
MI CRO CONTROLLER I NTERFACE
BY
T.SHRAVANI(07245A0403)


BATCH: 2007-2011





DEPARTMENT OF ELECTRONICS AND COMMUNICATION
ENGINEERING
GOKARAJU RANGARAJU INSTITUTE OF
ENGINEERING AND TECHNOLOGY
(Affiliated to Jawaharlal Nehru Technological University)
HYDERABAD 500 072



ABSTRACT:

Biometrics can be seen as a solution to a lot of the user identification and security problems in
todays 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.

1. INTRODUCTION:
1.1 AIM OF THIS PROJECT:

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




1.3 HARDWARE REQUIREMENTS:

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

LCD
Power
supply
Finger
Print
Module

ATMEGA
8515
LEDs-Light Emitting Diodes
Switches
RegulatorJ umpers
al communication
, wireless communication.

Max 232 IC for seri
Reset button
ICs for motor





The above resources excluding the fingerprint identification module are placed over a general
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.

FINGERPRINT MODULE:
fingerprint is an impression of the friction ridges of all or any part of the finger. A friction

FINGERPRINT IDENTIFICATION MECHANISM:

Fingerprint-based identification can be placed into two categories depending on the type of
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.
These minutiae points are represented by a cloud of dots in a coordination system. They are
robocon PCB board and soldered accordingly.

A
ridge is a raised portion of the epidermis on the pal mar(palm and fingers) or plantar (sole and
toes) skin, consisting of one or more connected ridge units of friction ridge skin. These ridges
are sometimes known as dermal ridges or dermal papillae.
parameter used for comparison.
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 fingerprints made of. A complete fingerprint consists of about 100 minutiae points
in average. The measured fingerprint area consists in average of about 30-60 minutiae points
depending on the finger and on the sensor area. An individuals 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 is stored.
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 ACQUISITION PROCESS:

The fingerprint is acquired from a fingerprint scanner
.
Image is improved for better contrast and distinctness.

Noise and defects are eliminated.

The final scanned finger print layout.


Minutiae are identified.



ENDINGS BIFURCATIONS


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.

ADVANTAGES OF USING FINGERPRINTS
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.





THE FIM3030N FINGERRPINT MODULE:

General Descriptions

FIM30N is a low-price stand-alone Fingerprint Identification 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 identification module containing
NITGENoptics-based fingerprint sensor inside.

Communication

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







Pin Pin Name Description
1 VCC 3.3 V (FIM30xx-LV) / 5 V (FIM30xx-HV)
2 RXD RS-232 Rx receiving signal from host
3 TXD RS-232 Tx transmitting signal to host
4 SUCCESS Output for indicating authentication
success
5 FAIL Output for indicating authentication fail
6 Enroll_Key Input to enroll fingerprint without
RS-232 communication
7 Delete_Key Input to delete user without RS-232
communication
8 Identify_Key Input to identify user without RS-232
communication
9 GND Ground

2.2 LCD:
PIN DESCRIPTION:



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








2.3 RS-232 SERIAL COMMUNICATION :

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 microcontroller and Bio-Module is









Command:

This field tells the bio module what it has to do. Some of the commands used in our program are:
0x01-Initialization 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:

Checksum data can be calculated by adding all byte data.

2.4 ATMEGA 8515 MICRO CONTROLLER:

FEATURES:

High-performance, Low-power AVR8-bit Microcontroller
RISC Architecture
130 Powerful Instructions Most Single Clock Cycle Execution
32 x 8 General Purpose Working Registers
Fully Static Operation
Up to 16 MIPS Throughput at 16 MHz
On-chip 2-cycle Multiplier
Nonvolatile Program and Data Memories
8K Bytes of In-System Self-programmable Flash
Endurance: 10,000 Write/Erase Cycles
Optional Boot Code Section with Independent 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 SRAM
Up to 64K Bytes Optional External Memory Space
Programming Lock for Software Security
Peripheral Features
One 8-bit Timer/Counter with Separate Prescaler and Compare Mode
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
Three PWM Channels
Programmable Serial USART
Master/Slave SPI Serial Interface
Programmable Watchdog Timer with Separate On-chip Oscillator
On-chip Analog Comparator
Special Microcontroller Features
Power-on Reset and Programmable Brown-out Detection
Internal Calibrated RC Oscillator
External and Internal Interrupt Sources
Three Sleep Modes: Idle, Power-down and Standby
I/O and Packages
35 Programmable I/O Lines
40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF
Operating Voltages
2.7 - 5.5V for ATmega8515L
4.5 - 5.5V for ATmega8515
Speed Grades
0 - 8 MHz for ATmega8515L
0 - 16 MHz for ATmega8515








PIN DIAGRAM:


PROGRAM ALGORITHM:
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 mode.
If the user has already been enrolled through the system, then Authentication OK is
displayed on the LCD. Else it shows Authentication Failed.



FLOWCHART:




3. PROGRAM CODE :

#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 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);
q=0;
for(i=0; i<25;i++)
{
fim[i] =0x00;
}
_delay_ms(1000.0);
fim_init();
_delay_ms(1000.0);
while((PINC & 0x01)!=0x00);
fim_master();
_delay_ms(100.0);
_delay_ms(2000.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);
for(i=9;i>=0;i--)
{
Lcd_Cmd(0x01);
delay(1);
Lcd_Cmd(0x80);
delay(1);
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)==0x00)
{
_delay_ms(10.0);
fim_enroll();
_delay_ms(2000.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);
goto x;
}
_delay_ms(2000.0);
}
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)==0x00)
{
_delay_ms(10.0);
fim_auth();
_delay_ms(2000.0);
goto y;
}
if(i==0)
{
Lcd_Cmd(0xC0);
delay(1);
Lcd_Display(TMO);
_delay_ms(2000.0);
goto y;
}
_delay_ms(2000.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)==0x00)
{
_delay_ms(10.0);
fim_delete();
_delay_ms(2000.0);
goto z;
}
if(i==0)
{
Lcd_Cmd(0xC0);
delay(1);
Lcd_Display(TMO);
_delay_ms(2000.0);
goto z;
}
_delay_ms(2000.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;//only tx is enabled
cli();// no interrupts
_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);
sei();
while(q<20);
cli();
_delay_ms(1.0);
if(fim[4]==0x01 && fim[8]==0x01)
{
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 char ser)
{
while(!(UCSRA &0x20));
UDR =ser;
_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;//only tx is enabled
cli();// no interrupts
_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);
if(fim[4]==0x2F && fim[8]==0x01)
{
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;//only tx is enabled
cli();// no interrupts
_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);
sei();
while(q<20);
cli();
_delay_ms(10.0);
if(fim[4]==0x33 && fim[8]==0x01)
{
Lcd_Cmd(0X01);
delay(1);
Lcd_Cmd(0X80);
delay(1);
Lcd_Display(STEP3);
delay(1);
PORTD =0x80;
UCSRB =0x08;//only tx is enabled
cli();// no interrupts
_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);
sei();
while(q<20);
cli();
_delay_ms(10.0);
if(fim[4]==0x33 && fim[8]==0x01)
{
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;//only tx is enabled
cli();// no interrupts
_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);
sei();
while(q<20);
cli();
_delay_ms(10.0);
if(fim[4]==0x12 && fim[8]==0x01)
{
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);
Lcd_Cmd(0x01);
delay(1);
Lcd_Cmd(0x80);
delay(1);
Lcd_Display(GATEO);
_delay_ms(5000.0);
_delay_ms(300.0);
Lcd_Cmd(0x01);
delay(1);
Lcd_Cmd(0x80);
delay(1);
Lcd_Display(GATEC);
_delay_ms(1000.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;//only tx is enabled
cli();// no interrupts
_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);
if(fim[4]==0x22 && 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);
}

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);
}
}



SCOPE:
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 retina-
recognition systems.
OBSERVATION:
Connection Established
Enrolling through PC
Authentication
RESULT:
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 if the user is enrolled or not.

Das könnte Ihnen auch gefallen