Interface Keypad & 7-Segment with Mikroprosesor 8086





1. Tujuan [kembali]

Memahami aplikasi rangkaian decoder interfacing keypad dan seven segment menggunakan PPI 8255 dan Mikroprocessor

2. Komponen [kembali]

a. Mikroprosesor 8086
b. Latch 74273
c. PPI 8255a
d. Decoder 74154

e. 7 Segment
f. Keypad




3. Gambar Rangkaian dan Flowchart [kembali]




4. Video Simulasi [kembali]








5. Prinsip Kerja Rangkaian [kembali]

Prinsip kerja dari rangkaian di atas adalah, ketika tombol pada keypad ditekan maka nilai yang ditekan pada keypad akan ditampilkan pada 7-Segment. Prinsipnya, pertama mikrokontroler mengirimkan alamat untuk mengakses I/O IC 8255 melewati A0-A15, kemudian masuk ke IC 74273 D0-D7. Alamat tersebut akan dilewatkan dari D0-D7 ke Q0-Q7 apabila sinyal kontrol alih dikeluarkan oleh pin ALE mikroprosesor dan diinverterkan sebelum diumpankan ke CLK IC 74273. Apabila telah aktif sinyal CLK, maka alamat akan ditahan di Q0-Q7 IC 74273. kemudian jika Q1-Q5 IC 74273 yang membawa alamat dari AD9-AD11 dihubungkan dengan decoder 74154. maka ketika nilai AD9-AD11 ini berlogika 0 semua dan E1 E1 IC ini juga berlogika 0, maka pin 0 IC 75154 akan berlogika nol yang kemudian pin ini dihubingkan dengan CS pada IC 8255. sehingga alamat yang dikirimkan adalah untuk akses IC 8255.

Kemudian untuk mengirim data dari Mikroprosesor 8086 ke IC I/O 8255, pin AD0-AD7 mikroprosesor dihubungkan dengan pin D0-D7 IC 8255. PORTA IC 8255 menjadi output bagi mikroprosesor untuk kemudian dihubungkan dengan output keypad dan PORTB pada IC ini dihubungkan dengan input Keypad serta PORTC pada IC ini sebagai output yang dihubungkan dengan 7-Segment.

Listing Program

data segment                ; Inisialisasi IC I/O 8255

   PORTA EQU 00H
   PORTB EQU 02H
   PORTC EQU 04H
   PCW   EQU 06H

ends

stack segment
    dw   128  dup(0)
ends

code segment
start:

    mov ax, data                   ; masukkan data ke ax
    mov ds, ax                      ; isi ds dengan ax
    mov es, ax                      ; isi es dengan ax
    MOV DX,PCW              ; masukkan PWC ke DX
    MOV AL,10000010B        ; IC I/O Mode 2 PORTA dan C output, PORTB input
    OUT DX,AL                   ; berikan mode ini ke IC I/O
   BEGIN:
    MOV CX,00FFH            ; isi nilai CX dengan 00ffH
    MOV AL,0FEH              ; nilai agar PA0 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 1 keypad low
    MOV DX,PORTA           ; masukkan PORTA ke DX
    OUT DX,AL                   ; Berikan nilai tadi ke PORTA
   
    EELOOP:

     IN AL,PORTB               ; Dapatkan nilai PORTB
   
     CMP AL,0FEH              ; Apakah PORTB bernilai 0FEH atau tombol 1 Keypad ditekan?
     JNE NEXT1                   ; Jika tidak, pergi ke NEXT1
     MOV AL,006H;             ; Jika iya, berikan nilai PORC 006H atau 7-Segment pada PORTC
     OUT PORTC,AL;          ; Menyalakan angka 1
     JMP GO                         ; Pergi ke GO
   
     NEXT1:
     CMP AL,0FDH             ; Apakah PORTB bernilai 0FDH atau tombol 4 Keypad ditekan?
     JNE NEXT2                  ; Jika tidak, pergi ke NEXT2
     MOV AL,066H;            ; Jika iya, berikan nilai PORC 066H atau 7-Segment pada PORTC
     OUT PORTC,AL;          ; Menyalakan angka 4
     JMP GO                         ; Pergi ke GO
   
     NEXT2:
     CMP AL,0FBH             ; Apakah PORTB bernilai 0FBH atau tombol 7 Keypad ditekan?
     JNE NEXT3                  ; Jika tidak, pergi ke NEXT3
     MOV AL,007H;            ; Jika iya, berikan nilai PORC 007H atau 7-Segment pada PORTC
     OUT PORTC,AL;          ; Menyalakan angka 7
     JMP GO                        ; Pergi ke GO
   
      NEXT3:
      CMP AL,0F7H            ; Apakah PORTB bernilai 0F7H atau tombol bintang Keypad ditekan?
     JNE GO                        ; Jika tidak, pergi ke GO
     MOV AL,07CH;          ; Jika iya, berikan nilai PORC 07CH atau 7-Segment pada PORTC
     OUT PORTC,AL;        ; Menyalakan huruf b
   
     GO:
    LOOP EELOOP            ; Looping ke EELOOP sebanyak CX

    MOV CX,00FFH          ; isi nilai CX dengan 00ffH
    MOV AL,0FDH             ; nilai agar PA1 PORTA IC 8255 berlogika 0, selebihnya 1  atau kolom 2 keypad low

    MOV DX,PORTA         ; masukkan PORTA ke DX
    OUT DX,AL                 ; Berikan nilai tadi ke PORTA
   
    EELOOP2:
                         
     IN AL,PORTB             ; Dapatkan nilai PORTB
     CMP AL,0FEH            ; Apakan PORTB bernilai 0FEH atau tombol 2 Keypad ditekan?
     JNE NEXT12               ; Jika tidak, pergi ke NEXT12
     MOV AL,05BH;          ; Jika iya, berikan nilai PORC 05BH atau 7-Segment pada PORTC
     OUT PORTC,AL;        ; Menyalakan angka 2
     JMP GO2                     ; Pergi ke GO2
   
     NEXT12:
     CMP AL,0FDH           ; Apakah PORTB bernilai 0FDH atau tombol 5 Keypad ditekan?
     JNE NEXT22              ; Jika tidak, pergi ke NEXT22
     MOV AL,06DH          ; Jika iya, berikan nilai PORC 06DH atau 7-Segment pada PORTC
     OUT PORTC,AL         ; Menyalakan angka 5
      JMP GO2     
   
     NEXT22:
     CMP AL,0FBH            ; Apakah PORTB bernilai 0FBH atau tombol 8 Keypad ditekan?
     JNE NEXT32               ; Jika tidak, pergi ke NEXT32
     MOV AL,07FH;           ; Jika iya, berikan nilai PORC 07FH atau 7-Segment pada PORTC
     OUT PORTC,AL;         ; Menyalakan angka 8
     JMP GO2                     ; Pergi ke GO3
   
      NEXT32:             
      CMP AL,0F7H            ; Apakah PORTB bernilai 0F7H atau tombol 0 Keypad ditekan?
     JNE GO2                      ; Jika tidak, pergi ke GO2
     MOV AL,03FH;           ; Jika iya, berikan nilai PORC 03FH atau 7-Segment pada PORTC
     OUT PORTC,AL;         ; Menyalakan angka 0

     GO2:                 
    LOOP EELOOP2          ; Looping ke EELOOP2 sebanyak CX
   
    MOV CX,00FFH           ; isi nilai CX dengan 00ffH
    MOV AL,0FBH             ; nilai agar PA2 PORTA IC 8255 berlogika 0, selebihnya 1   atau kolom 3 keypad low

    MOV DX,PORTA          ; masukkan PORTA ke DX
    OUT DX,AL                  ; Berikan nilai tadi ke PORTA

     EELOOP3:

     IN AL,PORTB              ; Dapatkan nilai PORTB
     CMP AL,0FEH             ; Apakah PORTB bernilai 0FEH atau tombol 3 Keypad ditekan?
     JNE NEXT13                ; Jika tidak, pergi ke NEXT13
     MOV AL,04FH;            ; Jika iya, berikan nilai PORC 04FH atau 7-Segment pada PORTC
     OUT PORTC,AL           ; Menyalakan angka 3
     JMP GO3                       ; Pergi ke GO3
   
     NEXT13:
     CMP AL,0FDH             ; Apakah PORTB bernilai 0FDH atau tombol 6 Keypad ditekan?
     JNE NEXT23                ; Jika tidak, pergi ke NEXT23
     MOV AL,07DH;           ; Jika iya, berikan nilai PORC 07DH atau 7-Segment pada PORTC
     OUT PORTC,AL;          ; Menyalakan angka 6
     JMP GO3                       ; Pergi ke GO3
   
     NEXT23:
     CMP AL,0FBH             ; Apakah PORTB bernilai 0FBH atau tombol 9 Keypad ditekan?
     JNE NEXT33                ; Jika tidak, pergi ke NEXT33
     MOV AL,06FH;            ; Jika iya, berikan nilai PORC 06FH atau 7-Segment pada PORTC
     OUT PORTC,AL;          ; Menyalakan angka 9
     JMP GO3                       ; Pergi ke GO3
   
      NEXT33:                      ; Apakah PORTB bernilai 0F7H atau tombol Pagar Keypad ditekan?
      CMP AL,0F7H             ; Jika tidak, pergi ke GO3
     JNE GO3                       ; Jika iya, berikan nilai PORC 00CH atau 7-Segment pada PORTC
     MOV AL,00CH;            ; Menyalakan huruf A
     OUT PORTC,AL;
   
     GO3:
    LOOP EELOOP3            ; Looping ke EELOOP3 sebanyak CX
    JMP BEGIN                    ; Kembali ulangi program
   



end start


6. Link Download [kembali]

Rangkaian : klik disini

Video: klik disini

Program Mikroprosesor: klik disini




Tidak ada komentar:

Posting Komentar