TEORI
          Antarmuka keyboard standard adalah hubungan komunikasi serial.  “Serial”            yang menandakan bahwa data dikirim satu bit pada suatu waktu  tertentu            pada satu jalur tunggal. Serial komunikasi dipilih untuk  antara muka            keyboard karena hal ini simple dan mudah diterapkan, dan tidak  banyak            data per detik yang harus dikirimkan pada antar muka keyboard.
          Ada empat jalur yang menghubungkan keyboard dan PC. Dua dari  ini adalah            power supply dan ground, yang digunakan untuk memberikan daya  ke rangkaian            keyboard. Dua sinyal yang lain adalah sebagai berikut:
          1. Data Keyboard: Disinilah jalur bit-bit data dan perintah  yang akan            dikirimkan ke sistem PC dari keyboard.
          2. Clock Keyboard: Ini merupakan sinyal clock regular, dengan  suatu            nilai yang berosilasi dari logika “1” ke “0”            dengan pola yang teratur. Tujuan dari sinyal clock ini adalah  untuk            mensinkronisasi keyboard dan sistem, sehingga merekan selalu  bekerja            secara bersamaan.
          Keyboard PC AT yang terkoneksi, hanya menggunakan empat buah  kabel,            kabel ini ditunjukkan pada gambar dibawah, untuk 5 pin DIM dan  PS/2.           
        
| 5 PIN DIN (a) | 1.KBD Clock 2.KBD Data 3.N/C 4.GND 5. +5V (VCC) | 
| 6 PIN DIN (b) | 1. KBD Clock 2. GND 3. KBD Data 4. N/C 5. +5V (VCC) 6. N/C | 
Gambar 12.1. Keyboard konektor (a) XT (b) PS/2
Diagram dibawah ini menunjukkan kode scan yang menandai tombol individu. Kode scan ditunjukkan pada bagian bawah dari tombol. Contoh kode scan untuk tombol ESC adalah 76. Semua kode scan ditunjukkan dalam Hex.
          
Gambar 12.2. Peta data keyboard PC
 Sebagaimana yang anda lihat, kode scan  ditandai dengan            kode yang random. Pada beberapa kasus, cara yang paling mudah  untuk            menerjemahkan kode scan ke ASCII adalah dengan menggunakan  metode look            up table.
          Transmisi data, dari keyboard ke sistem, dilakukan dengan  frame 11 bit.            Bit pertama adalah bit start ( logika 0 ), diikuti dengan 8  bit data            ( LSB first ), satau bit paristas ( paritas ganjil ) dan bit  stop (            logika 1 ). Setiap bit harus dibaca pada sisi turun dari  clock.
           
Gambar 12.3. Sinyal clock dan data
Gambar 12.4 Interface rangkaian keyboard PC PS/2
Gambar 12.5. Rangkaian interface LCD karakter 2x16
Percobaan 12.1. Pengambilan data karakter keyboard PC dan display ke LED
Pada percobaan ini data keyboard PC  diinterfacekan            ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3.  Hasil pengambilan            data keyboard selanjutnya ditampilkan pada LED.
          Untuk melakukan percobaan ini lakukan beberapa langkah sebagai  berikut:
          1. Hubungkan jumper keyboard dua kabel ke rangkaian  mikrokontroller            bit P3.2 dan bit P3.3.
          2. Pasang jumper LED_EN
          2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord
          3. Hubungkan modul Microcontroller Trainer dengan power supply  +5V
          4. Hubungkan modul Microcontroller Trainer dengan rangkaian  programmer           
          5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan  compiler            program
          6. Ketik program berikut ini: (download            file prog122a.asm)
dispclr equ 00000001b
funcset equ 00111000b
entrmod equ 00000110b
dispon equ 00001100b
KbdData bit P3.2
KbdClock bit INT1;P3.3
DataKeyboard equ 30h
;
org 0h
Forever:
JB KbdClock,$
acall ambilKeyboard
jnc Forever
Mov P0, Datakeyboard
clr C
sjmp Forever
;
;============================================
;Subrutine AmbilKeyboard
;Subrutine berikut berfungsi untuk mendeteksi apakah keyboard
;sedang ditekan atau dilepas. Bila tombol tidak dilepas maka
;akan menuju pada subrutine ;Kybd_tidakLepas
;dan memberi tanda pada bit C = 0 sehingga bila C = 0
; maka data tidak akan dicetak
;Bila tombol keyboard dilepas maka data scan code diambil
;dan dikonversi ke dengan dengan menggunakan
; look up table serta menandai bit C = 1
;===========================================
AmbilKeyboard:
acall ambil_scancode
cjne a,#0F0h,kybd_tidakLepas
JB KbdClock,$
acall ambil_Scancode
Setb C
Acall Konversi_Scancode
ret
;
Kybd_tidakLepas:
Clr C
ret
;
;======================================================
;Subrutine Konversi_ScanCode
;Pada subrutine ini digunakan untuk menerjemahkan scan code ke bentuk
;karakter
; dengan menggunakan look up table.
;======================================================
Konversi_ScanCode:
Mov DPTR,#TableKeyboard
movc A,@A+DPTR
mov DataKeyboard,A
ret
;
Ambil_scanCode:
clr A
Jnb KbdClock,$
mov R0,#08h
Ambil_ScanCode2:
Jb KbdClock,$
Mov C,KbdData
Rr A
mov acc.7,C
Jnb KbdClock,$
Djnz R0,Ambil_ScanCode2
Jb KbdClock,$
Jnb KbdClock,$
Jb KbdClock,$
Jnb KbdClock,$
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,00H,00H
DB 0DH
DB 00H
DB 0FBH
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 0F7H
;
end
7. Simpanlah program yang anda ketik dan beri  nama            : prog122a.asm
          8. Pada program MIDE tersebut pilih Build /F9 atau untuk  melakukan kompilasi            program dari *.asm ke *.hex.
          9. Lakukan pemrograman mikrokontroller dengan menggunakan  Program ISP            Software ( Lihat Petunjuk Penggunaan)
          10. Lakukan pengamatan untuk data keyboard yang ditampilkan.
Percobaan 12.2. Pengambilan data karakter keyboard PC dan display ke LCD Karakter
Pada percobaan ini data keyboard PC  diinterfacekan            ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3.  Hasil pengambilan            data keyboard selanjutnya ditampilkan pada layar LCD Karakter. 
          Untuk melakukan percobaan ini lakukan beberapa langkah sebagai  berikut:
          1. Hubungkan jumper keyboard dua kabel ke rangkaian  mikrokontroller            bit P3.2 dan bit P3.3.
          2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord
          3. Hubungkan modul Microcontroller Trainer dengan power supply  +5V
          4. Hubungkan modul Microcontroller Trainer dengan rangkaian  programmer           
          5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan  compiler            program
          6. Ketik program berikut ini: (download            file prog121a.asm)
           dispclr equ 00000001b
          funcset equ 00111000b
          entrmod equ 00000110b
          dispon equ 00001100b
          KbdData bit P3.2
          KbdClock bit INT1;P3.3
          DataKeyboard equ 30h
          ;
          org 0h
          nop
          call init_LCD
          ;
Forever:
          JB KbdClock,$
          acall ambilKeyboard
          jnc Forever
          acall LCD_Out
          clr C
          sjmp Forever
          ;
          ;============================================
          ;Subrutine AmbilKeyboard
          ;Subrutine berikut berfungsi untuk mendeteksi apakah keyboard
          ;sedang ditekan atau dilepas. Bila tombol tidak dilepas maka
          ;akan menuju pada subrutine ;Kybd_tidakLepas
          ;dan memberi tanda pada bit C = 0 sehingga bila C = 0
          ; maka data tidak akan dicetak
          ;Bila tombol keyboard dilepas maka data scan code diambil
          ;dan dikonversi ke dengan dengan menggunakan
          ; look up table serta menandai bit C = 1
          ;===========================================
AmbilKeyboard:
          acall ambil_scancode
          cjne a,#0F0h,kybd_tidakLepas
          JB KbdClock,$
          acall ambil_Scancode
          Setb C
          Acall Konversi_Scancode
          ret
          ;
          Kybd_tidakLepas:
          Clr C
          ret
          ;
write_char:
          mov dptr,#word1 ;DPTR = [ address word1 ]
          mov r3,#16 ;R3=16,number character to be display
          mov r1,#80h ;R1=80h,address DDRAM start position
          acall write_inst
          ;
write1:
          clr a ; A = 0
          movc a,@a+dptr ; A = [A+ DPTR]
          mov r1,A ; R1 = A
          inc dptr ; DPTR = DPTR +1
          acall write_data;
          djnz r3,write1 ; R3 = R3-1,
          ret
          ;
          ;======================================================
          ;Subrutine Konversi_ScanCode
          ;Pada subrutine ini digunakan untuk menerjemahkan scan code ke bentuk
          karakter
          ; dengan menggunakan look up table.
          ;======================================================
Konversi_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
          ;
Ambil_scanCode:
          clr A
          Jnb KbdClock,$
          mov R0,#08h
          Ambil_ScanCode2:
          Jb KbdClock,$
          Mov C,KbdData
          Rr A
          mov acc.7,C
          Jnb KbdClock,$
          Djnz R0,Ambil_ScanCode2
          Jb KbdClock,$
          Jnb KbdClock,$
          Jb KbdClock,$
          Jnb KbdClock,$
          ret
          ;
Init_lcd:
          mov r1,#00000001b ;Display clear
          acall write_inst ;
          mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7
          acall write_inst ;
          mov r1,#00001100b ;Display on, ;cursor off,cursor blink off
          acall write_inst
          mov r1,#00000110b ;Entry mode, Set increment
          acall write_inst
          ret
          ;
Write_inst:
          clr P3.6 ; RS = P2.0 = 0, write mode instruction
          mov P0,R1 ; D7 s/d D0 = P0 = R1
          setb P3.7 ; EN = 1 = P2.1
          call delay; call delay time
          clr P3.7 ; EN = 0 = P2.1
          ret
          ;
Write_data:
          setb P3.6 ; RS = P2.0 = 1, write mode data
          mov P0,R1 ; D7 s/d D0 = P0 = R1
          setb P3.7 ; EN = 1 = P2.1
          call delay; call delay time
          clr p3.7 ; EN = 0 = P2.1
          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,00H,00H
          DB 0DH
          DB 00H
          DB 0FBH
          DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
          DB 0F7H          word1: DB ' Welcome Home '; here is the data to be            look up
          end          7. Simpanlah program yang anda ketik dan beri  nama            : prog121a.asm
          8. Pada program MIDE tersebut pilih Build /F9 atau untuk  melakukan kompilasi            program dari *.asm ke *.hex.
          9. Lakukan pemrograman mikrokontroller dengan menggunakan  Program ISP            Software ( Lihat Petunjuk Penggunaan)
          10. Lakukan pengamatan untuk data keyboard yang ditampilkan.
          11. Lakukan modifikasi program tersebut untuk menampilkan data  keyboard            PC lebih dari satu karakter ke LCD karakter.
Percobaan 12.3. Pengambilan data karakter keyboard PC dan display ke 7 Segmen
Pada percobaan ini data keyboard PC diinterfacekan ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3. Hasil pengambilan data keyboard selanjutnya ditampilkan pada disply 7 Segmen
Untuk melakukan percobaan ini lakukan  beberapa langkah            sebagai berikut:
          1. Hubungkan jumper keyboard dua kabel ke rangkaian  mikrokontroller            bit P3.2 dan bit P3.3.
          2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord
          3. Pasang jumper 7 SegmenEN
          4. Hubungkan modul Microcontroller Trainer dengan power supply  +5V
          5. Hubungkan modul Microcontroller Trainer dengan rangkaian  programmer           
          6. Buka Program M-IDE Studio for MCS-51, sebagai editor dan  compiler            program
          7. Ketik program berikut ini:
 
 
0 komentar:
Posting Komentar
Anda dapat menggunakan beberapa tag HTML, seperti <b>, <i>, <a>
Penting: Jika anda tidak memiliki account gmail pilih Name/URL pada form ini