EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / interface

interface

|

Microcontroller › 8051 › interface

  • This topic has 2 replies, 3 voices, and was last updated 11 years, 7 months ago by chandrasekhar.
Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • September 4, 2014 at 11:30 am #3168
    Prachi
    Participant

    I want to interface 4 x 3 keypad and LCD display with 8051 plz send me assembly codes for it

     

    September 6, 2014 at 7:34 pm #12134
    Ashutosh Bhatt
    Participant

    refer good books – ebooks – reference materials on 

    assembly language programming of 8051

    take help of online tutorials on 8051 assembly language

    September 12, 2014 at 7:19 am #12156
    chandrasekhar
    Participant

    The subroutine check_keypad can be used to directly interface any 4X3 matrix keypad. It checks if any switch on the matrix keypad is pressed. If any of the switch is pressed then the switch is debounced and we wait until the switch has been released. Once the switch has been released the switch number is loaded into the accumulator and the carry flag is set to indicate that a switch has been pressed. If NO switch has been pressed then the accumulator is cleared and the carry flag is also cleared to indicate no switch has been pressed.

     

    column1 bit P1.0
    column2 bit P1.1
    column3 bit P1.2
         
    row1 bit P1.3
    row2 bit P1.4
    row3 bit P1.5
         
    row4 bit P1.6

    check_keypad:

     

    clr column1

     
    setb column2 ;Select Column 1
    setb column3  
       

    jnb row1,c1_check_keypad

    jnb row2,c2_check_keypad

    jnb row3,c3_check_keypad

    jnb row4,c4_check_keypad

     
       
    setb column1  
    clr column2 ;Select Column 2
    setb column3  
       

    jnb row1,c5_check_keypad

    jnb row2,c6_check_keypad

    jnb row3,c7_check_keypad

    jnb row4,c8_check_keypad

     
     
    setb column1  
    setb column2 ;Select Column 3
    clr column3  
       
    jnb row1,c9_check_keypad

    jnb row2,c10_check_keypad

    jnb row3,c11_check_keypad

    jnb row4,c12_check_keypad

     
     

    setb column1

    setb column2

    setb column3

     
     
    mov a,#00h ;Since no switch has been pressed so Acc=00h
    clr c ;and C=0
    ret  
       
    c1_check_keypad: //column 1, row 1
    mov r7,#00h  
       

    deb1_check_keypad:

    ;debounce row 1 switch
    jb row1,r1_check_keypad

    djnz r7,deb1_check_keypad

     
       
    jnb row1,$ ;wait till switch is released
    mov a,#1 ;since switch pressed is 1, Acc =1
    setb c ;Indicating switch has been pressed
    setb column1  
    ret  
       

    r1_check_keypad:

     
    setb column1 ;Error while debouncing so return
    mov a,#0

    clr c

    ret

     
     
    c2_check_keypad: //column 1, row2
    mov r7,#00h  
       
    deb2_check_keypad: ;debounce row 2 switch

    jb row2,r2_check_keypad

    djnz r7,deb2_check_keypad

     
       
    jnb row2,$ ;wait till switch is released
    mov a,#4 ;since switch pressed is 4, Acc =4
    setb c ;Indicating switch has been pressed
    setb column1  
    ret  
       

    r2_check_keypad:

     

    setb column1

    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

     
       
    c3_check_keypad: //column 1, row3
    mov r7,#00h  

     

     
    deb3_check_keypad: ;debounce row 3 switch

    jb row3,r3_check_keypad

    djnz r7,deb3_check_keypad

     

    jnb row3,$                                                     ;wait till switch is released

    mov a,#7                                                      ;since switch pressed is 7, Acc =7

    setb c                                                            ;Indicating switch has been pressed

    setb column1

    ret

     

    r3_check_keypad:

    setb column1                                             ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c4_check_keypad:                                             //column 1, row4

    mov r7,#00h

     

    deb4_check_keypad:                                       ;debounce row 4 switch

    jb row4,r4_check_keypad

    djnz r7,deb4_check_keypad

    jnb row4,$                                                ;wait till switch is released

    mov a,#10                                               ;since switch pressed is 10, Acc =10

    setb c                                                       ;Indicating switch has been pressed

    setb column1

    ret

     

    r4_check_keypad:

    setb column1                                       ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c5_check_keypad:                                            //column 2, row 1

    mov r7,#00h

     

    deb5_check_keypad:                                        ;debounce row 1 switch

    jb row1,r5_check_keypad

    djnz r7,deb5_check_keypad

    jnb row1,$                                                 ;wait till switch is released

    mov a,#2                                                  ;since switch pressed is 2, Acc =2

    setb c                                                        ;Indicating switch has been pressed

    setb column2

    ret

     

    r5_check_keypad:

    setb column2                                          ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c6_check_keypad:                                          //column 2, row2

    mov r7,#00h

     

    deb6_check_keypad:                                    ;debounce row 2 switch

    jb row2,r6_check_keypad

    djnz r7,deb6_check_keypad

    jnb row2,$                                            ;wait till switch is released

    mov a,#5                                             ;since switch pressed is 5, Acc =5

    setb c                                                   ;Indicating switch has been pressed

    setb column2

    ret

     

    r6_check_keypad:

    setb column2                                   ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c7_check_keypad:                                   //column 2, row3

    mov r7,#00h

     

    deb7_check_keypad:                              ;debounce row 3 switch

    jb row3,r7_check_keypad

    djnz r7,deb7_check_keypad

    jnb row3,$                                          ;wait till switch is released

    mov a,#8                                           ;since switch pressed is 8, Acc =8

    setb c                                                 ;Indicating switch has been pressed

    setb column2

    ret

     

    r7_check_keypad:

    setb column2                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c8_check_keypad:                                     //column 2, row4

    mov r7,#00h

     

    deb8_check_keypad:                                ;debounce row 4 switch

    jb row4,r8_check_keypad

    djnz r7,deb4_check_keypad

    jnb row4,$                                          ;wait till switch is released

    mov a,#11                                         ;since switch pressed is 11, Acc =11

    setb c                                                 ;Indicating switch has been pressed

    setb column2

    ret

     

    r8_check_keypad:

    setb column2                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c9_check_keypad:                                    //column 3, row 1

    mov r7,#00h

     

    deb9_check_keypad:                              ;debounce row 1 switch

    jb row1,r9_check_keypad

    djnz r7,deb9_check_keypad

    jnb row1,$                                         ;wait till switch is released

    mov a,#3                                           ;since switch pressed is 3, Acc =3

    setb c                                                 ;Indicating switch has been pressed

    setb column3

    ret

     

    r9_check_keypad:

    setb column3                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c10_check_keypad:                                   //column 3, row2

    mov r7,#00h

     

    deb10_check_keypad:                             ;debounce row 2 switch

    jb row2,r10_check_keypad

    djnz r7,deb10_check_keypad

    jnb row2,$                                          ;wait till switch is released

    mov a,#6                                           ;since switch pressed is 6, Acc =6

    setb c                                                 ;Indicating switch has been pressed

    setb column3

    ret

     

    r10_check_keypad:

    setb column3                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c11_check_keypad:                                   //column 3, row3

    mov r7,#00h

     

    deb11_check_keypad:                              ;debounce row 3 switch

    jb row3,r11_check_keypad

    djnz r7,deb11_check_keypad

    jnb row3,$                                          ;wait till switch is released

    mov a,#9                                           ;since switch pressed is 9, Acc =9

    setb c                                                 ;Indicating switch has been pressed

    setb column3

    ret

     

    r11_check_keypad:

    setb column3                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

    c12_check_keypad:                                 //column 3, row4

    mov r7,#00h

     

    deb12_check_keypad:                           ;debounce row 4 switch

    jb row4,r12_check_keypad

    djnz r7,deb12_check_keypad

    jnb row4,$                                          ;wait till switch is released

    mov a,#12                                         ;since switch pressed is 12, Acc =12

    setb c                                                 ;Indicating switch has been pressed

    setb column3

    ret

     

    r12_check_keypad:

    setb column3                                    ;Error while debouncing so return

    mov a,#0

    clr c

    ret

     

  • Author
    Posts
Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • Getting into an LED bulb April 21, 2026
  • understanding of resonance in time domain April 21, 2026
  • Beginner Questions About CNC Machines – G-code, Control Systems & Accuracy April 21, 2026
  • A Must-Watch Video Showing Dangerous Construction of Cheap Lithium-Ion Cells April 21, 2026
  • S1MJ ? April 20, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise