tugas 5 (Aplikasi Rangkaian Keypad)




1. Tujuan [kembali]
Mempelajari bagaimana cara interface Keypad & 7-Segment menggunakan Mikroprosesor 8086 dan cara kerjanya serta programmnya.

2. Alat dan Bahan [kembali]
  • Mikroprosesor 8086
  • Keypad
  • Resistor
  • Seven Segment
  • IC 8255
  • IC 74154
    3. Landasan Teori [kembali]

    3.1. Mikroprosesor 8086

    Mikroprosesor atau CPU adalah “otak” yang merupakan pengendali utama semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi biner dari memori, menerjemahkannya menjadi serangkaian aksi dan menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke memori, operasi aritmatika dan logika, atau pembangkitan sinyal kendali. Intel 8086 adalah mikroprosesor 16 bit, di mana dia dapat bekerja secara internal menggunakan operasi 16 bit dan secara eksternal dapat mentransfer data 16 bit melalui bus data dibahas kemudian.

    Pin Diagram Mikroprosessor 8086



    Mikroprosesor 8086 mempunyai 40 kaki (pin) yang masing-masing digunakan untuk melewatkan sinyal tertentu. Setiap pin sinyal diberi nama berupa mnemonic yang sesuai dengan fungsinya. Sistem komputer 8086 mempunyai bus data selebar 16 bit dan bus alamat selebar 20 bit, sehingga dapat mengalamati memori sampai dengan 220 atau 1 Mb. Untuk menghemat jumlah pin, maka antara pin untuk data dan pin untuk alamat digabungkan dengan diberi nama AD0-AD15 (dari kata address data), sedangkan 4 bit alamat sisanya diberi nama A16-A19 (pin-pin ini juga digunakan untuk sinyal status).
    Terdapat juga pin-pin untuk catu daya yang disuplaikan, yaitu VCC dan GND, masing-masing untuk tegangan catu daya dan pentanahan. Untuk dapat bekerja, selain membutuhkan catu daya, mikroprosesor 8086 juga memerlukan sinyal detak (clock) secara eksternal dengan frekuensi sampai 10 MHz. Sinyal clock ini dilewatkan ke pin CLK yang ada pada kaki nomor 19.
    Pin-pin lainnya digunakan untuk sinyal kendali. Mikroprosesor 8086 dapat digunakan dalam 2 mode, minimum dan maksimum, yang masing-masing menggunakan pin kendali secara berbeda. Mode ini ditentukan dengan memberi nilai pada pin MXMN/ ( ) 1 , nilai 1 (dihubungkan dengan Vcc) untuk mode minimum dan nilai 0 (ditanahkan) untuk mode maksimum. Kebanyakan aplikasi menggunakan mode minimum. Pada mode ini, nama pin yang dipakai pada kaki nomor 24 sampai dengan 31 adalah yang berada di dalam tanda kurung (sebelah kanan)
    Sinyal RESET digunakan untuk memerintah mikroprosesor agar melakukan inisialisasi dengan cara memberi nilai 0 pada register DS, SS, ES, IP, dan flag; serta nilai $FFFF untuk CS( ) 2 . Pin INTR dan NMI digunakan untuk menginterupsi kerja mikroprosesor. Jika ada sinyal pada kedua pin itu, maka mikroprossor akan menghentikan eksekusi program yang sedang dijalankannya, kemudian menjalankan subrutin sesuai yang dikehendaki, dan setelah selesai kembali ke tempat semula di mana program diinterupsi. Sinyal INTR (interrupt) berupa permintaan untuk melakukan interupsi yang dapat dianulir /tidak dipenuhi jika flag IF direset, sedangkan sinyal NMI (non maskable interrupt) tidak dapat ditutup/ditolak, artinya interupsi harus dilakukan. Pin INTA (interrupt acknowledge) digunakan oleh mikroprosesor untuk menjawab bahwa permintaan interupsi dari sinyal INTR dapat diterima/dijalankan
    Pin IO M/ (memory/IO), RD (read), dan WR (write) digunakan untuk mengendalikan memori dan port pada saat pemindahan data. Sinyal IO M/ digunakan untuk memilih apakah memori atau port yang akan diakses oleh mikroprosesor. Jika hendak menghubungi memori, maka mikroprosesor memberi nilai tinggi (1) pada sinyal ini dan jika port yang hendak diakses maka sinyal ini diberi nilai rendah (0). Sinyal RD akan diaktifkan (bernilai rendah) jika operasi yang dilakukan adalah membaca, yaitu transfer data dari memori/port ke mikroprosesor. Sementara sinyal WR digunakan untuk menulis, tranfer data dari mikroprosesor ke memori/port, jika aktif. Sinyal-sinyal lain adalah R DT/ (data transmit/receive), DEN (data enable), ALE (address latch enable), dan BHE (bus high enable) yang akan dibahas kemudian.

    3.2. IC Latch 74273

    Untuk menghubungkan address ke memori atau I-O maka diperlukan pemisahan address rendah yang multiplek dengan data dengan memakai rangkaian latch. Rangkaian latch akan selalu aktif dengan terhubungnya ke ground kaki LE maka untuk bekerjanya IC latch ini diperlukan sinyal kontrol yang di-input-kan ke kaki –OE. Pin -OE mendapat input dari pin ALE yang merupakan sinyal kontrol yang artinya pin ini akan aktif setiap mikroprosesor meng-output-kan address.

    3.3. IC Decoder 74154

    IC 74154 merupakan salah satu keluarga TTL yang dimana fungsi dari IC ini adalah sebagai dekoder/demultiplexter 4-16 saluran. Tiap decoder 4-saluran-ke 16-saluran monolit ini menerapkan rangkaian TTL untuk mengubah 4 input biner menjadi 16 jalur keluar, bila kedua input E1 dan E2 adalah rendah. Setiap komponen I-O harus diberi address. Misalkan, ada tiga komponen I-O yang yaitu PPI 8255, PIT 8253 dan PIC 8259 seperti maka untuk membedakannya dapat dibuatkan rangkaian decoder dengan memakai IC decoder 74154 yang keluarannya ada 16 .

    3.4. PPI (Programmable Pheriperal Interface)

    Untuk hubungan input-output, mikroprosesor memerlukan suatu rangkaian interface. Interface menggunakan IC Programmable Peripheral Interface (PPI) 8255 yang mempunyai 3 port dengan masing-masing berkapasitas 8-bit. Jika dalam merancang sistem minimum 8088 ternyata memerlukan interface lebih dari 3 port maka dapat ditambahkan IC PPI 8255 sesuai kebutuhan dengan menambahkan rangkaian decoder-nya

    3.5 7-Segment.

    Tujuh Segmen adalah komponen Elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital

    3.5 Keypad.

    a.       Rangkaian KeyPad (Numeric Pad) 3x4
    3x4 Keypad Module merupakan suatu modul keypad berukuran 3 kolom x 4 baris. Modul ini dapat difungsikan sebagai input dalam aplikasi seperti pengaman digital, absensi, pengendali kecepatan motor, robotik, dan sebagainya.
    Table 3.1. keypad 3x4
    Kolom
    C1
    C2
    C3
    Row (baris)
    R1
    1
    2
    3
    R2
    4
    5
    6
    R3
    7
    8
    9
    R4
    *
    0
    #
    Penggunaan Keypad dilakukan dengan cara menjadikan tiga buah kolom sebagai output scanning dan empat buah baris sebagai input scanning.
    Cara kerja rangkaian Keypad 3x4 :
    ·         Apabila Kolom 1 diberi logika ‘0’, kolom kedua dan kolom ketiga diberi logika ‘1’ maka program akan mengecek tombol 1, 4, 7, dan *, sehingga apabila salah satu baris berlogika '0' maka ada tombol yang ditekan.
    ·         Apabila Kolom 2 diberi logika ‘0’, kolom pertama dan kolom ketiga diberi logika ‘1’ maka program akan mengecek tombol 2, 5, 8, dan 0, sehingga apabila salah satu baris berlogika '0' maka ada tombol yang ditekan.
    ·         Apabila Kolom 3 diberi logika ‘0’, kolom pertama dan kolom kedua diberi logika ‘1’ maka program akan mengecek tombol 3, 6, 9, dan #, sehingga apabila salah satu baris berlogika '0' maka ada tombol yang ditekan.
    Kemudian kembali ke semula, artinya program looping terus mendeteksi data kolom dan data baris, cara ini disebut scaning atau penyapuan keypad untuk mendapatkan saklar mana yang ditekan. Berikut ini tabel kebenaran hasil dari scaning keypad 3x4.
    Tabel 3.2. Data Keypad
    No
    Col 1
    Col 2
    Col 3
    Row 1
    Row 2
    Row 3
    Row 4
    1
    0
    1
    1
    0
    1
    1
    1
    4
    0
    1
    1
    1
    0
    1
    1
    7
    0
    1
    1
    1
    1
    0
    1
    *
    0
    1
    1
    1
    1
    1
    0
    2
    1
    0
    1
    0
    1
    1
    1
    5
    1
    0
    1
    1
    0
    1
    1
    8
    1
    0
    1
    1
    1
    0
    1
    0
    1
    0
    1
    1
    1
    1
    0
    3
    1
    1
    0
    0
    1
    1
    1
    6
    1
    1
    0
    1
    0
    1
    1
    9
    1
    1
    0
    1
    1
    0
    1
    #
    1
    1
    0
    1
    1
    1
    0
     

    5. Prinsip Kerja [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. 

    6. Listing Program [kembali]

    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

    7. Video Simulasi [kembali]


    8. Link Download [kembali]
    1. File Rangkaian Simulasi
        Download File
    2. Video Simulasi
        Download File
    3. Data sheet Mikroprosesor 8086
        Download File
    4. Kode Program
        Download File
    3. HTML
        Download File

    Tidak ada komentar:

    Posting Komentar