The 16 keys (4x4 matrixes) keypads diagram is shown in figure 4 above. Let see how the keypad is connected. Each square of the alphanumeric has to be pushed to make a switch or connection, which connects the horizontal wires (Rows) with the vertical wires (Columns). For example, if button ‘A' is pressed, it will connect COL1 with ROW4, or pressing button '5' will connect COL2 with ROW2.
The keypads are usually organized in a matrix of rows and columns. The microcontroller will access both the rows and columns through the ports. If a key pressed, a row and column make a contact; otherwise there will be no connection between rows and columns.
Since the switches or keys are all interconnected, I need differentiate between the each one of them. I have connected four 10K Ohms resistors each on the interface board to pull lines (COL1- COL 4) high (set as input) and connected them PORTA (RA1-RA4) on the microcontroller. These four lines are been read in the program. So if no key is pressed, these lines will all read high. The other four pins (ROW-ROW4) are connected to pins on PORTB (RB0-RB3) the PIC18F452 and set as output. The full schematic diagram for this section could be found in the appendix.
To interface the keypad, two main processes listed below must occur:
I. Key press detection II. Key identificationMoreover, there are two ways of performing key press detection:
1) The interrupt method (Port B - Change interrupt can be used)2) Scanning method