Interfacing Numeric Keypad With MB90F387S
Interfacing Numeric Keypad With MB90F387S
Numeric Keypad
Most common input device in embedded systems appliances Follows the telephony standard layout (3x4 or 4x4) Uses array of pushbutton switches with common columns (X) and rows (Y); eliminates individual control of all switches Can be interfaced with encoder integrated circuit
3x4 4x4
Schematic Diagram
4x4 layout
How to Control?
Supply one of the columns for example Column 1 (X1) with logic-1 while the rest is logic-0. If the one of the buttons in that column is pressed, current will flow to the corresponding row. Therefore, the column and row data will now be used to identify the specific key pressed. Move to the next column and read the row data.
0 1
0 0
0 0 1 0
Key 1 4 7 * 2 5 8 0 3 6 9 # A B C D
SW No. SW1 SW5 SW9 SW13 SW2 SW6 SW10 SW14 SW3 SW7 SW11 SW15 SW4 SW8 SW12 SW16
Column
Row 1000b
1000b
0100b
0010b
0001b
Key 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D
74C922 Data Output (bin) 0000b 0001b 0010b 0011b 0100b 0101b 0110b 0111b 1000b 1001b 1010b 1011b 1100b 1101b 1110b 1111b
Hex 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
Software Control
The example before shows that the keypad data will only be available if DAVBL is high. The software will continue to read DAVBL and exit the read loop only when DAVBL be equal to high. Not very efficient but it works. Most efficient method:
external interrupt (will be discussed in Unit 5) scheduling (will be covered in Unit 8)
Seatwork
Draw a flowchart for a program that will display the key pressed on the 7-segment display. Keys * & # will display 0.
Sources
74C922 Datasheet