Aplikasi Rangkaian interface 8255




  1. Tujuan [kembali]

Mempelajari bagaimana cara interface Keypad & 7-Segment menggunakan Mikroprosesor 8086 dan Rangkaian interface 8255 .

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

 

4. Rangkaian Simulasi [kembali]

 


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]

2. Video Simulasi [Download]

3. Kode Program [Download]

4. Datasheet Mikroprosesor 8086 [Download]

5. Datasheet IC 74154 [Download]

6. Datasheet IC 8255 [Download]

7. HTML [Download]


Tidak ada komentar:

Posting Komentar