watch the video for explanation of the project
VIDEO
#include
#include<string.h>
#include "lcd_display4bit.h"
#define TOTAL 5
void serial_init();
void serial_txS(char *);
void serial_tx(char);
void checkID();
void printOnTerminal();
short int checkTodaysAttd(int);
sbit ON=P1^0;
sbit RESET=P1^1;
sbit result=P1^2;
sbit IR_Tx=P1^3;
sbit IR_Rx=P1^4;
sbit Reset_Todays_Attendence=P1^5;
struct details
{
char *name;
char id[4];
int count;
}emp[TOTAL]={{"phanindra", "437p", 0},
{"nayak", "455n", 0},
{"anilKumar", "414a", 0},
{"gowtham", "456g", 0},
{"chaitu", "449c", 0}};
char recieved_id[4]={0};
int i, no_of_stu=0, todays_count=0;
int todays_ids[4]={0};
short int access=0, gotID=0;
void serial() interrupt 4
{
EA=0;
for(i=0;i<4;i++)
{
while(RI==0);
recieved_id[i]=SBUF;
RI=0;
}
gotID=1;
EA=1;
}
//***********************************------
void main()
{
ON=RESET=result=1;
rs=en=0;
P2=0x00;
IR_Rx=1;
IR_Tx=0;
EA=1;
ES=1;
serial_init();
lcd_init();
super:
while(1)
{
IR_Tx=0;
lcd_cmd(0x01);
while(!ON)
{
lcd_cmd(0x01);
IR_Tx=1;
while(!(IR_Rx==1))
{
lcd_cmd(0x01);
lcd_dataS("ID please");
while(gotID==0) //wait until any card is shown
if(ON==1) goto super;
checkID();
}
}
/////////////////////////
while(!result)
{
for(i=0;i<=TOTAL;i++)
{
lcd_cmd(0x01);
lcd_dataS(emp[i].name);
lcd_cmd(0xc0);
lcd_data_int(emp[i].count);
delay_msec(500);
}
}
////////////////////////
while(! Reset_Todays_Attendence)
{
for(i=0;i'\0';
todays_count=0;
lcd_cmd(0x01);
lcd_dataS("todays attd rst");
delay_msec(100);
}
///////////////////////
} //end of super loop
} //end of main
//*************************************
void checkID()
{
access=0; //like a flag
lcd_dataS(recieved_id);
for(i=0;iif(( strcmp(emp[i].id , recieved_id) )==0)
{
if(checkTodaysAttd(i))
{
access=1;
lcd_cmd(0x01);
lcd_dataS("welcome");
lcd_cmd(0xc0);
lcd_dataS(emp[i].name);
emp[i].count++;
todays_ids[todays_count]=i+1;
todays_count++;
delay_msec(400);
printOnTerminal();
gotID=0;
break;
}
else
{
lcd_cmd(0x01);
lcd_dataS("your turns over");
gotID=0;
delay_msec(400);
}
}
}
if(access==0)
{
lcd_cmd(0x01);
lcd_dataS("access denied");
delay_msec(100);
gotID=0;
}
}
short int checkTodaysAttd(int id)
{
short int d;
for(d=0;dif(id==(todays_ids[d]-1))
return 0; //return 0 if specific ID has already been
} //counted for today.
return 1;
}
void printOnTerminal()
{ EA=0;
serial_tx('\r');
serial_tx('\n');
serial_txS(emp[i].name);
serial_tx(' ');
serial_txS(emp[i].id);
serial_tx(' ');
serial_tx(emp[i].count+48);
EA=1;
}
void serial_init()
{
TMOD=0x20;
TH1=0xfd;
SCON=0x50;
TR1=1;
}
void serial_txS(char *p)
{
while((*p)!='\0')
{
SBUF=*p;
while(TI==0);
TI=0;
p++;
}
}
void serial_tx(char x)
{
SBUF=x;
while(TI==0);
TI=0;
}