8051 Virtual Lab

4ร—4 Matrix Keypad Interfacing with LCD (Assembly Concept)

๐Ÿงช Experiment Description

This experiment demonstrates interfacing of a 4ร—4 matrix keypad with an LCD display using the 8051 microcontroller. Key scanning is done by grounding rows sequentially and reading columns. The detected key is converted to ASCII and displayed on the LCD.

; ROWS -> P1.0 - P1.3
; COLS -> P1.4 - P1.7
; LCD DATA -> P2
; RS -> P3.0
; EN -> P3.1

ORG 0000H
ACALL LCD_INIT

MAIN:
ACALL GET_KEY
MOV A,R7
ACALL LCD_DATA
SJMP MAIN

; -------- KEYPAD SCAN --------
GET_KEY:
MOV P1,#0F0H      ; Columns high

ROW1:
MOV P1,#0FEH
JB P1.4,ROW2
MOV R7,#'1'
RET

ROW2:
MOV P1,#0FDH
JB P1.5,ROW3
MOV R7,#'5'
RET

ROW3:
MOV P1,#0FBH
JB P1.6,ROW4
MOV R7,#'9'
RET

ROW4:
MOV P1,#0F7H
JB P1.7,GET_KEY
MOV R7,#'D'
RET

; -------- LCD ROUTINES --------
LCD_INIT:
MOV P2,#38H
ACALL CMD
MOV P2,#0CH
ACALL CMD
MOV P2,#06H
ACALL CMD
MOV P2,#01H
ACALL CMD
RET

CMD:
CLR P3.0
SETB P3.1
CLR P3.1
ACALL DELAY
RET

LCD_DATA:
SETB P3.0
SETB P3.1
CLR P3.1
ACALL DELAY
RET

DELAY:
MOV R5,#255
DJNZ R5,$
RET

END
1
2
3
A
4
5
6
B
7
8
9
C
*
0
#
D
Rows โ†’ P1.0โ€“P1.3
Columns โ†’ P1.4โ€“P1.7
LCD Data โ†’ P2