Tutorial Microcontroller MCS-51 ATMEL ISP


Microcontroller Kits

Programmer and Target 89s51

Simple Mikrokontroller 89s51 Trainer


Standart
Mikrokontroller 89s51 Trainer

Super Mikrokontroller Trainer 89s51

Dot matrix Trainer
ATMEGA8

All Kits
+
Programmer via USB Port

 

 

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.

 

BACK NEXT

Komentar, pertanyaan dan diskusi tentang topik tersebut. Klik disini

 

 

PERCOBAAN 1
LED

PERCOBAAN 2
SAKLAR

PERCOBAAN 3
7 Segmen

PERCOBAAN 4
LCD Character

PERCOBAAN 5
ADC

PERCOBAAN 6
DAC

PERCOBAAN 7
Keypad

PERCOBAAN 8
Motor Stepper

PERCOBAAN 9
Timer Counter

PERCOBAAN 10
Komunikasi Serial

PERCOBAAN 11
Interupsi

PERCOBAAN 12
Keyboard PC

PERCOBAAN 13
Printer Dot Matr.

PERCOBAAN 14
RTC12C887

PERCOBAAN 15
P W M

APLIKASI