How to interface keypad with AVR microcontroller (ATmega16)
Summary
Keypad is most widely used input device to provide input from the outside world to the microcontroller. The keypad makes an application more users interactive. The concept of interfacing a keypad with the ATmega16 is similar to interfacing it with any other microcontroller. The article of Interfacing keypad with 8051 can be referred for detailed description of the methodology used here. This article explains the interfacing of a 4x3 keypad with AVR microcontroller (ATmega16) and displaying the output on a LCD.
Description
The algorithm and detailed explanation for keypad interfacing is given in above mentioned article. The brief steps to interface the keypad with AVR are written below:
1. Configure the row pins or column pins.
2. Make all output pins to low and input pins to high.
3. Keep monitoring the port value, where the key pad is connected.
while(1) { PORTD=0xF0; //set all the input to one value=PIND; //get the PORTD value in variable “value” if(value!=0xf0) //if any key is pressed value changed { check1(); check2(); check3(); check4(); } }4. If there is any change in port value, make one of the output pin of port to zero and rest all high.
void check1(void){ //DDRD = 0xf0; pad =0b11111110; //pad &= (0<<r1); _delay_us(10); if(bit_is_clear(PIND,c1)) LCD_write('1'); else if(bit_is_clear(PIND,c2)) LCD_write('2'); else if(bit_is_clear(PIND,c3)) LCD_write('3');}5. If any of input pin found zero, write the particular pin data to LCD, else continue with the step (4).
Video
Code
This Code is only visible to Registered users. Please Login/Register
Components
|
Preset A preset is a three legged electronic component which can be made to offer varying resistance in a circuit. The resistance is varied by adjusting the rotary control over it. The adjustment can be done by using a small screw driver or... |
|
LCD
LCD (Liquid Crystal Display) screen is an electronic display module and find a wide range of applications. A 16x2 LCD display is very basic module and is very commonly used in various devices and circuits. These modules are preferred over seven segments... |
|
ATmega16 ATmega16 is an 8-bit high performance microcontroller of Atmel’s Mega AVR family with low power consumption. Atmega16 is based on enha... |
- 19662 reads
