Display pressed key on lcd:

/************************************************************************************/
//            PROGRAM TO  DEMONSTRATE  INTERFACING OF HEX DISPALY WITH MCS51       
/************************************************************************************/


ORG 0000H


/************************************************************************************/
/*                                           I/O PIN INITIALISATIONS AND DECLARATIONS                                                                                                                   */
/************************************************************************************/

C1 EQU P2.0
C2 EQU P2.1
C3 EQU P2.2
C4 EQU P2.3
ROW1 EQU P2.4
ROW2 EQU P2.5
ROW3 EQU P2.6
ROW4 EQU P2.7
LCD EQU P0
RS EQU P1.0
RW EQU P1.1
EN EQU P1.2
MOV LCD,#80H
ACALL CMD
ACALL DELAY
MOV LCD,#08H
ACALL CMD
ACALL DELAY
MOV LCD,#01H
ACALL CMD
ACALL DELAY
MOV LCD,#0EH
ACALL CMD
ACALL DELAY
MOV LCD,#80H
ACALL CMD
ACALL DELAY
MOV P2,#00H
MOV P0,#00H
MOV DPTR,#MSG
CLR A
MOV B,#00H
MOV R3,#00H

MOV R0,#02
H2: ACALL KEYPAD
DJNZ R0,H2
MOV LCD,#'='
ACALL DISP
ACALL DELAY
MOV A,R4
MOV B,#10
MUL AB
ADD A,R5
MOV B,#10
DIV AB
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
MOV A,B
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
ALT: SJMP ALT

/************************************************************************************/
/*                                           READING COLUMN VALUE                                                                                                                                                                                                          */
/************************************************************************************/


KEYPAD:ACALL DELAY           
       MOV P2, #0FH
                   ACALL DELAY
K1:             MOV A,P2
                   CJNE A,#0FH,KK1
                   SJMP K1
KK1:   JB C1,N1
                   MOV B,#00h
                   ACALL DELAY
N1:            JB C2,N2
                   MOV B,#01h
                   ACALL DELAY
N2:            JB C3,N3
                   MOV B,#02h
                   ACALL DELAY
N3:            JB C4,N4
                   MOV B,#03h
                   ACALL DELAY

/************************************************************************************/
/*                                           READING ROW VALUE                                                                                                                                                                                                                   */
/************************************************************************************/
                              
N4:   MOV P2, #0F0H
K11:  MOV A,P2
                  CJNE A,#0F0H,KK11
                  SJMP K11
KK11: ACALL DELAY
                  JB ROW1,NR1
                  MOV R3,#00h
                  ACALL DELAY
NR1:  JB ROW2,NR2
                  MOV R3,#04h
                  ACALL DELAY
NR2:  JB ROW3,NR3
                  MOV R3,#08h
                  ACALL DELAY
NR3:  JB ROW4,NR4
                  MOV R3,#0Ch
                  ACALL DELAY
NR4:  MOV A,R3

/************************************************************************************/
/*                           SENDING KEYVALUE TO PORT 0 AND SERAIL PORT                                                                                                                                            */
/************************************************************************************/
                 
                  ADD A,B
                  CJNE R0,#02,H3
                  MOV R4,A
                  H3: CJNE R0,#01,H4
                  MOV R5,A
                 
  H4: MOVC A,@A+DPTR
                  MOV LCD,A
                  ACALL DISP
                  ACALL DELAY
                  CLR A
                  RET

/************************************************************************************/
/*                                           DELAY SUBROUTINE                                                                                                                                                                                                                       */
/************************************************************************************/


DELAY:  MOV R1,#5FH
a1:     MOV R2,#0FEH
a2:     DJNZ R2,a2
        DJNZ R1,a1
                    RET

CMD:     CLR RS
        CLR RW
                                SETB EN
                                NOP
                                CLR EN
                                RET
DISP:   SETB RS
        CLR RW
                                SETB EN
                                NOP
                                CLR EN
                                RET

/************************************************************************************/
/*                                           LOOKUP TABLE W.R.T 0-15 SWITCHES IN HEX KEYPAD                                                                                                     */
/************************************************************************************/

MSG: DB '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',0

      END

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Microcontroller Projects -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan -