Control Interface Keypad to ATmega 8535 | Controller Circuit

Monday, December 12, 2011

Control Interface Keypad to ATmega 8535


Basically keypad is a number of buttons compiled in such a manner so that forms formation of numeral button and some other menus. Many types of keypad that can be use for interface to microcontroller. 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 4×4 very often applied by programmer. Besides its the hardware easy, software nor hard. Basically keypad 4×4 is 16 push-button stringed up in matrix. Interfacing keypad 4×4 with pattern scanning hardly easy to be done. Besides having to has keypad 4×4, 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.

Compiler program keypad by using in codevision AVR.
#include
// Alphanumeric LCD Module functions
#asm
.equ_lcd_port=0×15
#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=0×00;
DDRA=0×00;
// 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=0×00;
DDRB=0×00;
// 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=0×00;
DDRC=0×00;
// 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=0×00;
DDRD=0×00;
// Timer/Counter 0 Initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;
// 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=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
// Timer/Counter 2 Initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0×00;
MCUCSR=0×00;
// Timer (s) / Counter (s) Interrupt (s) initialization
TIMSK=0×00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
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 & 0×0F);
Switch (dt) {
Case1: dtkey=0×1;
Break;
Case2: dtkey=0×4;
Break;
Case4: dtkey=0×7;
Break;
Case8: dtkey=0xa;
Break;
};
PORTD.5=1; PORTD6=0;
Dt=(~PIND & 0×0F);
Switch (dt) {
Case 1: dtkey=0×3;
Break;
Case 2: dtkey=0×6;
Break;
Case 4: dtkey=0×9;
Break;
Case 8: dtkey=0xb;
Break;
};
PORTD.6=1; PORTD.7=0;
Dt=(~PIND & 0×0F);
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