Gambar 7.1 Rangkaian interface keypad 4x4
Keypad serig digunakan sebagi suatu input pada beberapa peralatan yang berbasis mikroprosessor atau mikrokontroller. Keypad sesungguhnya terdiri dari sejumlah saklar, yang terhubung sebagai baris dan kolom dengan susuan seperti yang ditunjukkan pada gambar 7.2. Agar mikrokontroller dapat melakukan scan keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai konsekuensi, selama tidak ada tombol yang ditekan, maka mikrokontroller akan melihat sebagai logika high “1” pada setiap pin yang terhubung ke baris.
          
Gambar 7.3. Rangkaian dasar keypad 4x4
7.1. Percobaan scan data keypad 1x4, COR-MEN-UpArrow-DnArrow
Pada percobaan ini, akan dilakukan scan data  keypad            COR-MEN-UpArr.- DnArr. dan mengeluarkan data ke LED.
          Untuk melakukan percobaan ini lakukan beberapa langkah sebagai  berikut:
          1. Buka jumper pada DAC_EN, apabila sedang terpasang.
          2. Hubungkan jumper pada LED_EN.
          3. Hubungkan modul Microcontroller Trainer dengan power supply  +5V
          4. Hubungkan modul Microcontroller Trainer dengan rangkaian  programmer           
        
          
Gambar 7.4. Display LED sebagai Output Data Keypad
          5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan  compiler            program
          6. Ketik program berikut ini:(download            file prog71a.asm)
(a)
(b)
col4 bi P2.0
col3 bit P2.1
col2 bit P2.2
col1 bit P2.3
row1 bit P2.4
row2 bit P2.5
row3 bit P2.6
row4 bit P2.7
;
keydata equ 70h
keybounc equ 71h
keyport equ P2
;
org 0h
mov P2,#11111111b
start: call keypad4x4 ;calling subroutine keypad4x4
Mov A,keydata ;A = keydata
Cjne A,#0FFh,send ;
sjmp start ;LOOPING FOREVER
send: CPL A ;A = NOT A
Mov P0,A ;P0 = A
Sjmp start ;LOOPING FOREVER PART 2
;
;==========================================
; subroutine scan keypad 1 column x 4 row
;==========================================
Keypad4x4:
mov keybounc,#50 ;keybounc = 50
mov keyport,#0FFh ;keyport=P2= FF
clr col4 ;col1= P3.0 = 0
;
keyCOR:
jb row4,keyMEN ; Key COR
djnz keybounc,KeyCOR
mov keydata,#0Ah ;Data Output = 0Ah
ret
;
keyMEN:
jb row3,keyUpA ; Key MEN
djnz keybounc,keyMEN
mov keydata,#0bh ;Data Output = 0bh
ret
;
keyUpA:
jb row2,keyDnA ;
djnz keybounc,keyUpA
mov keydata,#0ch ; Data Output = 0ch
ret
;
keyDnA:
jb row1,Nokey ;
djnz keybounc,keyDnA
mov keydata,#0dh ; Data Output = 0dh
ret
Nokey:mov keydata,#0FFh
ret
;================================
;The end of Keypad 4x4 subroutine
;================================
delay: mov R0,#0
delay1:mov R2,#50
djnz R2,$
djnz R0,delay1
ret
;
end
          7. Simpanlah program yang anda ketik dan beri nama :  prog71a.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 modifikasi pada program tersebut diatas untuk scan  data            keypad 3-6-9-ENT
          11. Lakukan modifikasi pada program tersebut diatas untuk scan  data            keypad 2-5-8-0
          12. Lakukan modifikasi pada program tersebut diatas untuk scan  data            keypad 1-4-7-CAN
7.2. Percobaan scan data keypad 4x4 dan mengeluarkan ke LCD
Pada percobaan ini, akan dilakukan scan data  keypad            dan mengeluarkan data ke LCD Karakter.
          Untuk melakukan percobaan ini lakukan beberapa langkah sebagai  berikut:
          4. Pasang jumper EN_LCD
          5. Buka jumper pada EN_DAC, apabila sedang terpasang
          6. Hubungkan modul Microcontroller Trainer dengan power supply  +5V
          7. Hubungkan modul Microcontroller Trainer dengan rangkaian  programmer
          8. Buka Program M-IDE Studio for MCS-51, sebagai editor dan  compiler            program
          9. Ketik program berikut ini:(download            file prog72a.asm)
col4 bit P2.0
col3 bit P2.1
col2 bit P2.2
col1 bit P2.3
row1 bit P2.4
row2 bit P2.5
row3 bit P2.6
row4 bit P2.7
keydata    equ 70h
keybounc  equ 71h
keyport    equ P2
       org 0h
       mov P2,#11111111b
     call Init_LCD
start:call keypad4x4     ;calling subroutine keypad4x4
       Mov A,keydata      ;A = keydata 
       Cjne A,#0FFh,WrLCD;
       sjmp start          ;LOOPING FOREVER PART 1
;
WrLCD:  Mov R1,#80h      ;Pick DDRAM 1st row and 1st col
       call write_inst
       Mov R1,#30h
       Add A,R1
       Mov R1,A
       call write_data     ;write data
       Sjmp start          ;LOOPING FOREVER PART 2;
;
Init_lcd:
     mov r1,#00000001b  ;Display clear
     call write_inst   ;
     mov r1,#00111000b  ;Function set, Data 8 bit,2 line font 5x7
        call write_inst  ;
     mov r1,#00001100b  ;Display on, cursor off,cursor blink off
     call write_inst
     mov r1,#00000110b  ;Entry mode, Set increment
     call write_inst
     ret
;
Write_inst:
     clr P3.6    ; P3.6 = RS =0
     mov P0,R1   ; P0 = D7 s/d D0 = R1
     setb P3.7   ; P3.7 =EN = 1
     call delay  ; call delay time
     clr P3.7    ; P3.7 =EN = 0
     ret
;
Write_data:
     setb P3.6   ; P3.6 = RS =1
     mov P0,R1   ; P0 = D7 s/d D0 = R1
     setb P3.7   ; P3.7 =EN = 1
     call delay  ; call delay time
      call delay   ; call delay time
     clr p3.7    ; P3.7 =EN = 0
     ret
;====================================
; subroutine scan keypad 4x4
;====================================
Keypad4x4:
       mov keybounc,#50      ;keybounc = 50         
       mov keyport,#0FFh    ;keyport=P2= FF
       clr col4               ;col4 =  0
;
keyCOR: jb row4,keyMEN       ; Key COR
      djnz keybounc,KeyCOR
      mov keydata,#0Ah  ;Data Output
      ret
;
keyMEN: jb row3,keyUpA       ; Key MEN
      djnz keybounc,keyMEN
      mov keydata,#0bh  ;Data Output
      ret         keyUpA: jb row2,keyDnA ;            Key Up Arrow
          djnz keybounc,keyUpA
          mov keydata,#0ch ;Data Output
          ret
          ;
keyDnA: jb row1,key3 ; Key Down Arrow
          djnz keybounc,keyDnA
          mov keydata,#0dh ;Data Output
          ret
          ;==========================================
key3: setb col4
          clr col3
          jb row4,key6
          djnz keybounc,key3 ; Key 3
          mov keydata,#03h ;Data Output
          ret
          ;
key6: jb row3,key9
          djnz keybounc,key6 ; Key 6
          mov keydata,#06h ;Data Output
          ret
          ;
key9: jb row2,keyENT
          djnz keybounc,key9 ; Key 9
          mov keydata,#09h ;Data Output
          ret
          ;
keyENT: jb row1,key2
          djnz keybounc,keyENT ; Key ENT
          mov keydata,#0eh ;Data Output
          ret
          ;============================================
key2: setb col3
          clr col2
          jb row4,key5
          djnz keybounc,key2
          mov keydata,#02h ;Data Output
          ret
          ;
key5: jb row3,key8
          djnz keybounc,key5
          mov keydata,#05h ; Data Output
          ret
          ;
key8: jb row2,key0
          djnz keybounc,key8
          mov keydata,#08h ;Data Output
          ret
          ;
key0: jb row1,key1
          djnz keybounc,key0
          mov keydata,#00h ;Data Output
          ret
          ;==============================================
key1: setb col2
          clr col1
          jb row4,key4
          djnz keybounc,key1
          mov keydata,#01h ;Data Output
          ret
key4: jb row3,key7
          djnz keybounc,key4
          mov keydata,#04h ;Data Output
          ret
key7: jb row2,keyCAN
          djnz keybounc,key7
          mov keydata,#07h ;Data Output
          ret
keyCAN: jb row1,Nokey
          djnz keybounc,keyCAN
          mov keydata,#0Fh ;Data Output
          ret
Nokey: mov keydata,#0FFh
          ret
;================================
;The end of Keypad 4x4 subroutine
;================================
delay: mov R0,#0
delay1: mov R2,#50
          djnz R2,$
          djnz R0,delay1
          ret
          end         5. Simpanlah program yang anda ketik dan beri  nama            : prog72a.asm
          6. Pada program MIDE tersebut pilih Build /F9 atau untuk  melakukan kompilasi            program dari *.asm ke *.hex.
          7. Lakukan pemrograman mikrokontroller dengan menggunakan  Program ISP            Software ( Lihat Petunjuk Penggunaan)
          8. Lakukan pengamatan pada LCD
          9. Lakukan modifikasi pada program tersebut untuk menampilkan  data keypad            ke lokasi DDRAM LCD:
| No | Lokasi Display LCD  Karakter Data                  Keypad | 
| 1 | Baris 2 Kolom 2 | 
| 2 | Baris 2 Kolom 16 | 
10. Lakukan modifikasi pada rangkaian tersebut untuk menampilan data keypad ke display 7 segmen sesuai dengan percobaan 3.
 
 
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