keypad interfacing with Atmega32

keypad is one of most important input device in embedded world provide user to make controller perform desired operation.this tutorial gives you simple illustration of keypad interfacing with atmega32 set to operate at 1MHZ frequency. whenever you would enter any number through keypad it'll get displayed on LCD

DESIGN

 

CODE

#include<avr/io.h>

#include<util/delay.h>

#define lcdport PORTA

#define signal PORTB

#define en PB2

#define rw PB1

#define rs PB0

char key;

char keycheck();

char scankey();

void lcdcmd(unsigned char cmd);

void lcdint();

void lcddata(unsigned char data);

void main()

DDRA=0xff;

DDRB=0x07;

DDRD=0xf0;

char key;

lcdint();

while(1)

 {

 key=scankey();

lcdcmd(0x01);

lcddata(key);

}

char scankey()

{

char key='a';

while(key=='a')

{

key=keycheck();

}

return key;

}

char keycheck()

{

 PORTD=0b11101111;

 _delay_ms(10);

  if((PIND&0b00000001)==0)

  {

return '1';

  }

  if((PIND&0b00000010)==0)

  {

return '2'

  }

 if((PIND&0b00000100)==0)

  {

return '3';

  }

  PORTD=0b11011111;

  _delay_ms(10);

  if((PIND&0b00000001)==0)

  {

return '4';

  }

  if((PIND&0b00000010)==0)

  {

return '5';

  }

 if((PIND&0b00000100)==0)

  {

return '6';

  }

PORTD=0b10111111;

  _delay_ms(10);

  if((PIND&0b00000001)==0)

  {

return '7';

  }

  if((PIND&0b00000010)==0)

  {

return '8';

  }

 if((PIND&0b00000100)==0)

  {

return '9';

  }

 PORTD=0b01111111;

  _delay_ms(10);

  if((PIND&0b00000001)==0)

  {

return '*';

  }

  if((PIND&0b00000010)==0)

  {

return '0';

  }

 if((PIND&0b00000100)==0)

  {

return '#';

  }

 return 'a';

}

void lcdint()

{

lcdcmd(0x38);

_delay_ms(1);

lcdcmd(0x01);

_delay_ms(1);

lcdcmd(0x0E);

_delay_ms(1);

}

 

void lcdcmd(unsigned char x)

{

lcdport=x;

signal=(0<<rs)|(0<<rw)|(1<<en);

_delay_ms(1);

signal=(0<<rs)|(0<<rw)|(0<<en);

_delay_ms(50); 

}

void lcddata(unsigned char data)

{

lcdport= data;

signal= (1<<rs)|(0<<rw)|(1<<en);

_delay_ms(1);

signal= (1<<rs)|(0<<rw)|(0<<en);

_delay_ms(50);

}

Category: 

tags: 

Share

Who's new

  • ravirajpatil871...
  • shubhambajoria
  • yassir
  • demiholyman890954
  • scottgillum51169040

Get Notified

 

Share

We are Social

Syndicate

Subscribe to Syndicate