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.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.
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 Digital3.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
|
#
|
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.
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