Discussion in "Project Doubts" started by    onyot    Nov 23, 2010.
Tue Nov 23 2010, 11:18 am
#11
i can help you regarding LCD..... first make logic of wat u wanna do and write your code
Tue Nov 23 2010, 11:24 am
#12
hi onyot.. this code is for displaying numbers on the 7 segment in every key pressed on the keypad.. get some idea here.. the keypad is 4x3 matrix


#include <REG51.h>


#define KEYPAD P1
#define display P3

void DelayMs(unsigned int) ;
unsigned char keypad[4][3]= { 1 , 2 , 3 ,
                              4 , 5 , 6 ,
			      			  7 , 8 , 9 ,
			      			15 , 0 , 15 } ;

void main()
{
unsigned char colloc,rowloc;

	while(1)
	{
		do
		{
			KEYPAD=0xF0;
			colloc=KEYPAD & 0xF0;
		}
    while(colloc ==0xF0);        // if any key pressed
	DelayMs(1);					 // some delay
	do
	{
	colloc=KEYPAD;
	colloc &=0xF0;
	}while(colloc==0xF0);		// to verify is really key pressed
    
		KEYPAD=0xFE;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=0;
			goto next;
		}

		KEYPAD=0xFD;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=1;
			goto next;
		}
		KEYPAD=0xFB;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=2;
			goto next;
		}
				
		KEYPAD=0xF7;
		colloc=KEYPAD & 0xF0;
		rowloc=3;
		goto next;

next:			                                                                    
if (colloc==0xE0)
display=(keypad[rowloc][0]);
else if(colloc==0xD0)
display=(keypad[rowloc][1]);
else
display=(keypad[rowloc][2]);
}
}


//---------------------------------------
// Delay mS function
//---------------------------------------
void DelayMs(unsigned int count) 
{  // mSec Delay 11.0592 Mhz 
    unsigned int i;		       		
    while(count) {
        i = 115; 
		while(i>
0) i--;
        count--;
    }
}


Tue Nov 23 2010, 11:39 am
#13
Mr. Romel Emperado, can I have the final code of the password program that you have?
Tue Nov 23 2010, 11:43 am
#14
#include <REG51.h>

#define display P3
#define KEYPAD P1

sbit doorclose = P1^7;
sbit correct = P3^5;
sbit wrong= P3^4;
sbit key = P3^7;
void DelayMs(unsigned int);
void save (unsigned char);
void compare (void);

unsigned char keypad[4][3]= { '1', '2', '3',
                              '4', '5', '6',
			      			  '7', '8', '9',
			      			  '*', '0', '#'};

unsigned char displayb[4][3]= { 1 , 2 , 3 ,
                                4 , 5 , 6 ,
			      			    7 , 8 , 9 ,
                                0, 0 ,  0};

unsigned char code password[5]= "12345";
unsigned char user[30];	     //user is allowed to press 30 keys without entering						  
unsigned char q,a=0,z=0;
char t=1;
bit true;
char d;









void main(void)
{
unsigned char colloc,rowloc;



	while(1)
	{
	
		do
		{
			KEYPAD=0xF0;
			colloc=KEYPAD & 0xF0;
		}
    while(colloc ==0xF0);        // if any key pressed
	DelayMs(1);					 // some delay
	do
	{
	colloc=KEYPAD;
	colloc &=0xF0;
	}while(colloc==0xF0);		// to verify is really key pressed
    
		KEYPAD=0xFE;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=0;
			goto next;
		}

		KEYPAD=0xFD;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=1;
			goto next;
		}
		KEYPAD=0xFB;
		colloc=KEYPAD & 0xF0;
		if(colloc !=0xF0)
		{
			rowloc=2;
			goto next;
		}
				
		KEYPAD=0xF7;
		colloc=KEYPAD & 0xF0;
		rowloc=3;
		goto next;

next:			                                                                    
if (colloc==0xE0)
{
 key=0; 					// verifying that key is pressed
 DelayMs(145);
 key=1;
 display=((display & 0xf0) | (displayb[rowloc][0])); // display to 7 seg
 save(keypad[rowloc][0]);
}
else if(colloc==0xD0)
{
 key=0; 					// verifying that key is pressed
 DelayMs(145);
 key=1;
 display=((display & 0xf0) | (displayb[rowloc][1]));
 save(keypad[rowloc][1]);
}
else if(colloc==0xb0)
{
 key=0; 					// verifying that key is pressed
 DelayMs(145);
 key=1;
 display=((display & 0xf0) | (displayb[rowloc][2]));
 save(keypad[rowloc][2]);
}
DelayMs(100);	   // here this delay is important if this is less than 100ms then 
				   // controller understand 1 key as press 2 or 3 times becoz that 
				   //is fast as compaer o our pressing if u want to remove delay from here 
				   // then increse the above 1ms to 100 ms 
}
}

void save (unsigned char c)
{
 if(c=='*')
 {
  if(a!=0)
  a--;
  return;
 } 

 if(a==5 && c=='#')
 {
  a=0;
  compare();

	if(t==1)
	{
	  if(true==1) // if match ok
	  {
	   DelayMs(800);
       correct=0;
	   t=2;
       for(d=0; d<7; d++)	   // on and after 10 sec off nw keypad can't get data
       DelayMs(1000);	 // max delay u can get is DelayMs(65535) otherwise need looping for big delay
       correct=1;
	   z=0;
       a=0;           // start agian from 0 location of array
 
      }
	  else if(true==0)
	   goto error;

    }
	else if(t==2)
	  {
	    DelayMs(800);
	    doorclose=0;
		t=1;
	    for(d=0; d<5; d++)	 
        DelayMs(1000);	 
        doorclose=1;
	  }
  }
 
 else if((a>
5 && c=='#') || (a<5 && c=='#'))
  {
   error:
   for(q=0; q<5; q++)
   {
    wrong=0;
    DelayMs(420);
    wrong=1;
    DelayMs(420);
    a=0;
   }
   z=z+1;

       if(z==4)
        {
		 for(q=0; q<10; q++)
		  {
	       wrong=0;
		   DelayMs(20000);
           wrong=1;
		   z=0;
           DelayMs(420);
		   }
	    }
        a=0;
  }
else
 {
  user[a]=c;
  a++;

  if(a==30)		// if the user press 31 keys without entering it will automatically indicate an error
   {
    display=((display & 0xf0) | (displayb[3][1])); //brings a zero display on the seven segment
    goto error;	//redirect to error code
   }
 }
 
}	  //end of save



void compare (void)
{
 unsigned char b;
  for(b=0;b<5;b++)
   {

    if(user[b]==password[b])
     true=1;
    else
    {
     true=0;
     break;
    }
   }
}


//---------------------------------------
// Delay mS function
//---------------------------------------
void DelayMs(unsigned int count) 
{  // mSec Delay 11.0592 Mhz 
    unsigned int i;		       		
    while(count) {
        i = 115; 
		while(i>
0) i--;
        count--;
    }
}




Can you tell me, how is it work? I understand slightly but I don't know if it is correct.. So I need YOur help guys!


[ Edited Tue Nov 23 2010, 11:46 am ]
Tue Nov 23 2010, 11:44 am
#15
onyote try making your own code you have much time to do this.......here are many professionals who will help and guide you

Tue Nov 23 2010, 11:51 am
#16
I don't know if I have that much time because as of now, I am here in an industrial plant having my on-the-job training, then, the work is very tiring.

Okay, I'll make a program and I will post it, maybe tomorrow...
Tue Nov 23 2010, 11:53 am
#17


Mr. Romel Emperado, can I have the final code of the password program that you have?

onyot.josephian



hi onyot.. take it as your guide..and i hate to say bye to u guys i have a class... see u later

-----------------------------

onyot, where and what plant is that? is this your project or they require u this?

mirza,, kaon ta ug tae.. hehehe se me in FB lol


[ Edited Tue Nov 23 2010, 11:57 am ]
 onyot.josephian like this.
Tue Nov 23 2010, 11:56 am
#18
who knows how to make a keypad? just a simple keypad...
Tue Nov 23 2010, 12:02 pm
#19


who knows how to make a keypad? just a simple keypad...

onyot.josephian



there are many keypad schematic in www.google.com choose keypad that suite to your need..
Tue Nov 23 2010, 12:16 pm
#20
Is it okay to use an Ordinary switch (Push button that is NO)?

Get Social

Information

Powered by e107 Forum System

Downloads

Comments

Robertgurse
Wed Apr 24 2024, 02:43 pm
Richardedils
Wed Apr 24 2024, 04:07 am
ChrisLub
Tue Apr 23 2024, 05:21 pm
Davidbab
Tue Apr 23 2024, 10:41 am
Richardrit
Tue Apr 23 2024, 09:54 am
HenryLaf
Mon Apr 22 2024, 03:50 pm
bleradrar
Mon Apr 22 2024, 06:38 am
ppu-pro_ka
Sun Apr 21 2024, 07:39 pm