Control Interfacing Keypad to Microcontroller AVR ATmega8535 | Controller Circuit

Tuesday, January 4, 2011

Control Interfacing Keypad to Microcontroller AVR ATmega8535

Basically key pad is a number of buttons compiled in such a manner so that forms formation of numeral button and some other menus. Following is example configuration of key pad 4x4. Keypad needed to interaction with system, for example we make setting with set-point would a control feedback at the time of program still run. Actually every programmer has different way interaction to with system. Even for keypad in hardware every programmer can differ in. This thing is more because of different requirement.


Keypad 4x4 very often applied by programmer. Besides its the hardware easy, software nor hard. Basically keypad 4x4 is 16 push-button stringed up in matrix. Interfacing keypad 4x4 with pattern scanning hardly easy to be done. Besides having to has keypad 4x4, we only require a diode as supporter component. Diode applied is 1N4001 attached by series with K1, K2, K3 and K4 with part of Anode.



Interfacing Schematic for Keypad at Microcontroller ATmega8535:





After having keypad network 4x4, we will try does program by using keypad.

#include

// Alphanumeric LCD Module functions

#asm

.equ_lcd_port=0x15

#endasm

#include

//Declare your global variables here

Unsigned char dt, dtkey;

Void detect_key (void);

Void main(void)

{

//Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=On Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=On Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=On Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=On Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 Initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 Initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 Initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer (s) / Counter (s) Interrupt (s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

LCD module initialization

lcd_init(16);

lcd_gotoxy(0,0);

lcd_puts(“Keypad to LCD…”);

lcd_gotoxy(0,1);

lcd_putsf(“Pad”);

while (1)

// Place your code here

Detect_key();

lcd_gotoxy(7,1);

sprint(buf, “%x hex”, dtkey);

lcd_puts(buf);

delay_ms(5);

};

}

Void detect_key(void) {

PORTD.4=0

Dt=(~PIND & 0x0F);

Switch (dt) {

Case1: dtkey=0x1;

Break;

Case2: dtkey=0x4;

Break;

Case4: dtkey=0x7;

Break;

Case8: dtkey=0xa;

Break;

};

PORTD.5=1; PORTD6=0;

Dt=(~PIND & 0x0F);

Switch (dt) {

Case 1: dtkey=0x3;

Break;

Case 2: dtkey=0x6;

Break;

Case 4: dtkey=0x9;

Break;

Case 8: dtkey=0xb;

Break;

};

PORTD.6=1; PORTD.7=0;

Dt=(~PIND & 0x0F);

Switch (dt) {

Case1: dtkey=0xc;

Break;

Case2: dtkey=0xd;

Break;

Case4: dtkey=0xe;

Break;

Case8: dtkey=0xf;

Break;

};

PORTD.7=1;

}

No comments:

Post a Comment