You are on page 1of 10

#ifndef F_CPU

#define F_CPU 16000000UL // 16 MHz clock speed


#endif
#define D4 eS_PORTA2
#define D5 eS_PORTA3
#define D6 eS_PORTA4
#define D7 eS_PORTA5
#define RS eS_PORTA0
#define EN eS_PORTA1
//////////////////////////////////////////////////////////////////////////
#define KEYPAD B //KEYPAD IS ATTACHED ON PORTB
//Don't Touch the lines below
//*******************************
#define KEYPAD_PORT PORTB
#define KEYPAD_DDR DDRB
#define KEYPAD_PIN PINB
//*******************************
///////
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
int i;
///////
uint8_t buzz()
{
PORTC|=(1<<6);
_delay_ms(200);
PORTC&=~(1<<6);
}
uint8_t GetKeyPressed()
{
uint8_t r,c,key,keyPressed =' ';
KEYPAD_PORT|= 0X0F;
//KEYPAD_PORT|= 0Xf0;
for(c=0;c<3;c++)
{
KEYPAD_DDR&=~(0X7F);
KEYPAD_DDR|=(0X40>>c);
for(r=0;r<4;r++)
{
_delay_ms(1);
if(!(KEYPAD_PIN & (0X08>>r)))
{
key = (48+r*3+c);
////
switch (key) //generating key character as

{
case (';'): keyPressed = '1'; // read as F
return(keyPressed);
break;
case (':'): keyPressed = '2'; // read as E
return(keyPressed);
break;
case ('9'): keyPressed = '3'; // read as D
return(keyPressed);
break;
case ('8'): keyPressed = '4'; // read as C
return(keyPressed);
break;
case ('7'): keyPressed = '5'; // read as B
return(keyPressed);
break;
case ('6'): keyPressed = '6'; // read as A
return(keyPressed);
break;
case ('5'): keyPressed = '7'; // read as 9
return(keyPressed);
break;
case ('4'): keyPressed = '8'; // read as 8
return(keyPressed);
break;
case ('3'): keyPressed = '9'; // read as 7
return(keyPressed);
break;
case ('2'): keyPressed = '*'; // read as 6
return(keyPressed);
break;
case ('1'): keyPressed = '0'; // read as 5
return(keyPressed);
break;
case ('0'): keyPressed = '#'; // read as 4
return(keyPressed);
break;
default:
return(' ');
break;
}//end of switch
}
}
}
return (' ');//Indicate No keypressed
}

// function to check whether ic is good or


bad................................................................................
..........
void testic(int j)
{
if(j==1) //to test 7404 not gate
{
//edited from here
DDRD=0b11010101;
DDRC=0b00001010;
PORTD=0b10111111;
PORTC=0b11111111;

PORTD=0b10111111;
PORTC=0b11111111;
char t=PIND;
char u=PINC;
t=t|0b11010101;
u=u|0b11101010;
if ((t==0b11010101)&&(u==0b11101010))
{
PORTD=0b00101010;
PORTC=0b00010101;
char t=PIND;
char u=PINC;
t=t|0b11010101;
u=u|0b11101010;

if ((t==0b11111111)&&(u==0b11111111))
{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS GOOD.... ");
buzz();
buzz();
buzz();
}
else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT.... ");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
}
}
else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT ");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();

}
DDRD=0x00;
DDRC=0x00;
}//end of 7404

if(j==2) //to test 7408 AND gate


{
DDRD=0b11011011;
DDRC=0b00001101;
PORTD=0b10111111;
PORTC=0b11111111;

PORTD=0b10111111;
PORTC=0b11111111;
char t=PIND;
char u=PINC;
t=t|0b11011011;
u=u|0b11101101;
if ((t==0b11111111)&&(u==0b11111111))
{
PORTD=0b11001001;
PORTC=0b11100100;
char t=PIND;
char u=PINC;
t=t|0b11011011;
u=u|0b11101101;

if ((t==0b11011011)&&(u==0b11101101))
{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS GOOD.... ");
buzz();
buzz();
buzz();
}
else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT.... ");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
}
}
else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT.");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
}
DDRD=0x00;
DDRC=0x00;
}//end of 7408

//stating of 7432 or
gate-------------------------------------------------------------------------------
---------------------------------

if(j==3) //to test 7432 OR gate


{
DDRD=0b11011011;
DDRC=0b00001101;
PORTD=0b10111111;
PORTC=0b11111111;

PORTD=0b10111111;
PORTC=0b11111111;
char t=PIND;
char u=PINC;
t=t|0b11011011;
u=u|0b11101101;
if ((t==0b11111111)&&(u==0b11111111))
{
PORTD=0b11001001;
PORTC=0b11100100;
char t=PIND;
char u=PINC;
t=t|0b11011011;
u=u|0b11101101;

if ((t==0b11111111)&&(u==0b11111111))

/*{PORTD=0b00010010;
PORTC=0b00001001;
char t=PIND;
char u=PINC;
t=t|0b11011011;
u=u|0b11101101;
if((t==11111111)&&(u==11111111))*/

{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS GOOD....
");
buzz();
buzz();
buzz();

}
else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT....
");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
}

else{
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("IC IS FAULT.");
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();
_delay_ms(50);
buzz();

}
DDRD=0x00;
DDRC=0x00;
}//end of
7432-------------------------------------------------------------------------------
-----
else
return;

}
// ---------------- main program
-----------------------------------------------------------------------------------
------------------------------------
int main(void)
{
int x;
DDRA = 0xFF;

Lcd4_Init();
Lcd4_Set_Cursor(1,0);
Lcd4_Write_String("ENTER IC NO. ");
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
while(1)
{

Lcd4_Set_Cursor(1,13);
int x = GetKeyPressed();
if (x =='1')
{
i =1;
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7404");
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
_delay_ms(1000);
}

else if (x =='2')
{
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7408");
i =2;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
buzz();
}

else if (x =='3')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7432");
i =3;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}
else if (x =='4')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7400");
i =4;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}

else if (x =='5')
{
buzz();

Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7486");
i =5;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}
else if (x =='6')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7402");
i =6;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}

else if (x =='7')
{
buzz();

Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("7466");
i =7;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}

else if (x =='8')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("IC08");
i =8;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}
else if (x =='9')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("IC09");
i =9;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}
else if (x =='0')
{
buzz();
Lcd4_Set_Cursor(1,12);
Lcd4_Write_String("IC10");
i =0;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}

else if (x =='*')
{
buzz();
Lcd4_Clear();
Lcd4_Set_Cursor(1,0);
Lcd4_Write_String("GPC PERUMBAVOOR");

i =10;
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("BATCH:EC 20-23");
_delay_ms(1000);
Lcd4_Clear();
Lcd4_Set_Cursor(1,0);
Lcd4_Write_String("ENTER IC NO. ");
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("and press # ");
}

if (x =='#')
{
buzz();
Lcd4_Set_Cursor(2,0);
Lcd4_Write_String("testing .......");
testic(i);
x=' ';
}
}
}

You might also like