Tutorial Microcontroller 8051
 
 
 
 
 
   

BACK

Interfacing Keyboard to Microcontroller 8051

Microcontroller interface to PC Keyboard and LCD Character

Figure 2. Interafacing Connection Keyboard and Microcontroller

( Download File asm : keyboard.zip , Download Circuit: Keyboard.zip)

dispclr  equ 00000001b
funcset  equ 00111000b
entrmod  equ 00000110b
dispon   equ 00001100b
KbdData  bit P3.3
KbdClock bit INT0;P3.2
DataKeyboard equ 30h
;
        org 0h
        nop
call init_LCD
;
Forever:
        JB KbdClock,$
        call GetDataKeyboard
        jnc Forever
        acall LCD_Out
        clr C
        sjmp Forever
;
;==================================
;Subroutine Get Data From Keyboard
;================================== 
GetDataKeyboard:
         call Get_scancode
         cjne a,#0F0h,kybd_pressed
         JB KbdClock,$ 
         call Get_Scancode
         Setb C
         call Convert_Scancode
         ret
;
Kybd_pressed:
         Clr C
         ret
;
;===============================
;Subroutine Convert Scan Data
;Using Look Up Table
;===============================
Convert_ScanCode:
         Mov DPTR,#TableKeyboard
         movc A,@A+DPTR
         mov DataKeyboard,A
         ret
;
LCD_Out:
         mov R7, #80h
         acall write_inst
         mov R7,DataKeyboard
         acall write_data
         ret
;
init_lcd:
         mov R7,#dispclr
         acall write_inst
         mov R7,#funcset
         acall write_inst
         mov R7,#dispon
         acall write_inst
         mov R7,#entrmod
         acall write_inst
         ret
;
Get_scanCode:
         clr A
         Jnb KbdClock,$
         mov R0,#08h
Get_ScanCode2:
         Jb KbdClock,$
         Mov C,KbdData
         Rr A
         mov acc.7,C
         Jnb KbdClock,$
         Djnz R0,Get_ScanCode2
         Jb KbdClock,$
         Jnb KbdClock,$
         Jb KbdClock,$
         Jnb KbdClock,$
         ret
;
Write_inst:
         Clr P3.6  ; RS = 0, 
         Mov P0,R7 ; D7 s/d D0 = P0 = R1
         Setb P3.7 ; EN = 1 
         call delay; call delay time
         Clr P3.7  ; EN = 0 
         ret
;
Write_data:
         Setb P3.6 ; RS = 1, 
         Mov P0,R7 ; D7 s/d D0 = P0 = R1
         Setb P3.7 ; EN = 1
         call delay; call delay time
         Clr p3.7  ; EN = 0
         ret
;
delay:   mov R5,#0
         delay1:mov R4,#02fh
         djnz R4,$
         djnz R5,delay1
         ret
;
TableKeyboard:
DB 00
DB 0F9H
DB 00
DB 0F5H,0F3H,0F1H,0F2H,0FCH
DB 00H
DB 0FAH,0F8H,0F6H,0F4H
DB 0C0H
DB '~'
DB 00H
DB 00H
DB 0C1H
DB 0C2H
DB 00H
DB 0C3H
DB 'Q1'
DB 00H,00H,00H
DB 'ZSAW2'
DB 00H,00H
DB 'CXDE43'
DB 00H,00H
DB ' VFTR5'
DB 00H,00H
DB 'NBHGY6'
DB 00H,00H,00H
DB 'MJU78'
DB 00H,00H
DB ',KIO09'
DB 00H,00H
DB './L;P-'
DB 00H,00H,00H
DB 27H
DB 00H
DB '[='
DB 00H,00H
DB 0C5H
DB 0C6H
DB 0AH
DB ']'
DB 00H
DB '\'
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 08H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H
DB 0DH
DB 00H
DB 0FBH
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 0F7H
end
Best Link

 



BACK

 

Lesson 1:
T o o l
1.1. Programmer
1.2.
Edsim 51
1.3. MIDE-51
1.4. ATMEL ISP

Lesson 2:
Input Output
2.1.LED
2.2.Swicht
2.3.7 Segmen
2.4.LCD Character
2.5.ADC
2.6.DAC
2.7.Motor Stepper
2.8.Keypad

Lesson 3:

Timer Counter

3.1.Basic
3.2.Mode 0
3.3.Mode 1
3.4.Mode 2
3.5.Mode 3

Lesson 4:

Serial Comm.

4.1.Basic
4.2.LED
4.3.Rotate LED
4.2 ADC
4.3.LCD

Lesson 5:
Interuption

5.1.Basic
5.2.Timer
5.2.External