TUJUAN:
- Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen
- Mahasiswa dapat memahami program assembly untuk menampilkan data ke 7 segment
- Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan waktu tunda.

7 segmen common anoda

Konfigurasi 74LS138
Tabel 3.1. Tabel kebenaran 74LS138
| INPUT SELECTOR | | | ENABLE | | | OUTPUT | | | | | | | |
|-----------------|---|---|--------|------|------|--------|----|----|----|----|----|----|----|
| C | B | A | G1 | /G2A | /G2B | Y1 | Y2 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
Pada tabel kebenaran tersebut tampak bahwa seven segmen yang hidup tergantung pada output dari dekoder 74LS138, yang sedang mengeluarkan logika low "0", sehingga dari 8 buah display tersebut, selalu hanya satu display yang akan dihidupkan. Agar display tampak nyala secara bersamaan maka ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda tertentu.
Pada gambar tersebut seven segment commont anoda dikendalikan dengan menggunakan transistor PNP melalui decoder 74LS138, apabila ada logika low pada basis transistor, maka 7 segment akan nyala dan sebaliknya akan padam.

Gambar 3.2 Modul 7 Segment tunggal
Tabel 3.2. Data Display 7 Segmen
| P0.6 | P0.5 | P0.4 | P0.3 | P0.2 | P0.1 | P0.0 | Display |
|------|------|------|------|------|------|------|---------|
| g | f | e | d | c | b | a | |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 | 1 | 0 | 0 | 2 |
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 3 |
| : | : | : | : | : | : | : | : |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | A |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | b |
Pada tabel tersebut tampak bahwa untuk menghidupkan sebuah segmen, harus dikirimkan data logika low "0" dan sebaliknya untuk mematikan segmen, harus dikirimkan data logika high "1".
Percobaan 3.1. Tulis Sebuah Karakter pada 7 Segmen (Display 1)
Pada percobaan ini, karakter 'A' akan ditampilkan pada 7 Segmen Display 1. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
- Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog31a.asm)
org 0h
start: clr P3.5 ; P3.5 = '0'
clr P3.6 ; P3.6 = '0'
clr P3.7 ; P3.7 = '0'
mov P0,#10001000b ; Cetak Karakter 'A'
sjmp start ; Lompat ke start
end
- Simpanlah program yang anda ketik dan beri nama : prog31a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada LED.
- Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:
| Nama Karakter | Posisi Display |
|---------------|----------------|
| C | Display 2 |
| E | Display 5 |
| 3 | Display 8 |
Percobaan 3.2. Tulis Tiga Karakter pada 7 Segmen
Pada percobaan ini, karakter 'AbC' akan ditampilkan pada 7 Segmen Display 1, Display 2 dan Display 3 secara berturutan. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
- Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog32a.asm)
org 0h
start: clr P3.5 ; P3.5 = '0'
clr P3.6 ; P3.6 = '0'
clr P3.7 ; P3.7 = '0'
mov P0, #10001000b ; Cetak Karakter 'A'
call delay ; Panggil Waktu Tunda
;
setb P3.5 ; P3.5 = '1'
clr P3.6 ; P3.6 = '0'
clr P3.7 ; P3.7 = '0'
mov P0,#10000011b ; Cetak Karakter 'b'
call delay ; Panggil Waktu Tunda
;
clr P3.5 ; P3.5 = '0'
setb P3.6 ; P3.6 = '1'
clr P3.7 ; P3.7 = '0'
mov P0,#11000110b ; Cetak Karakter 'C'
call delay ; Panggil Waktu Tunda
;
sjmp start ; Lompat ke start
;=============================================
;subroutine delay created to rise delay time
;=============================================
delay: mov R1,#25
del1: mov R2,#25
del2: djnz R2,del2
djnz R1,del1
ret
end
- Simpanlah program yang anda ketik dan beri nama : prog32a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada LED.
- Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:
| Nama Karakter | Posisi Display |
|---------------|---------------------------------|
| EFG | Display 1, Display 2, Display 3 |
| HJL | Display 3, Display 4, Display 5 |
| 1A3 | Display 6, Display 7, Display 8 |
Percobaan 3.3. Tulis 8 Karakter pada 7 Segmen
Pada percobaan ini, karakter '12345678' akan ditampilkan pada 7 Segmen Display 1, Display 2 dan Display 3 s/d Display 8 secara berturutan. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
- Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog33a.asm)
org 0h
start: clr P3.5
clr P3.6
clr P3.7
mov P0,#11111001b ; Cetak Karakter '1'
call delay
;
setb P3.5
clr P3.6
clr P3.7
mov P0,#10100100b ; Cetak Karakter '2'
call delay
;
clr P3.5 ;
setb P3.6
clr P3.7
mov P0,#10110000b ; Cetak Karakter '3'
call delay
;
setb P3.5
setb P3.6
clr P3.7
mov P0,#10011001b ; Cetak Karakter '4'
call delay
;
clr P3.5
clr P3.6
setb P3.7
mov P0,#10010010b ; Cetak Karakter '5'
call delay
;
setb P3.5
clr P3.6
setb P3.7
mov P0,#10000010b ; Cetak Karakter '6'
call delay
;
clr P3.5
setb P3.6
setb P3.7
mov P0,#11111000b ; Cetak Karakter '7'
call delay
;
setb P3.5
setb P3.6
setb P3.7
mov P0,#10000000b ; Cetak Karakter '8'
call delay
;
sjmp start ; Lompat ke Start
;=============================
;subroutine delay created to rise delay time
;=============================
delay: mov R1,#25
del1: mov R2,#25
del2: djnz R2,del2
djnz R1,del1
ret
end
- Simpanlah program yang anda ketik dan beri nama : prog33a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada 7 Segmen.
- Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:
| Nama Karakter | Posisi Display |
|---------------|----------------|
| LAbMIkro | - |
| HAlloguy | - |
| YournAme | - |
Percobaan 3.4. Setting Up/ Dn dan Enter dengan Display ke 7 Segmen
Pada percobaan ini, akan dibuat suatu simulasi setting UP (P2.1)/ DN (P2.2) dan penekanan tombol Enter (P2.0), dan di displaykan ke display 7 Segmen. Data display akan bertambah dari 00 s/d 99 atau berkurang dari 99 s/d 00, sesuai dengan penekanan pada tombol UP/ DN.Bila ditekan tombol Enter, maka tombol UP/ DN tidak akan berfungsi lagi. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
- Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program (download file prog34a.asm)
- Ketik program berikut ini:
Org 0h
ratusan equ 30h
puluhan equ 31h
satuan equ 32h
;
start:
mov R7,#1 ;inisialisasi data setting
Setup: mov A,R7 ;simpan data R7 ke A
call bin2dec
call display2sevensegmen
jnb p2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai)
jb P2.1,SetDn ;bila sw2(P2.1) ditekan mk INC R7
inc R7 ;R7:=R7+1
acall delay ;waktu tunda lama penekanan tombol
cjne R7,#100d,setup;deteksi apakah setting=100d
mov R7,#1 ;reset R7 -> 1
sjmp Setup
;
SetDn: Mov A,R7 ;simpan data R7 ke A
call bin2dec
call display2sevensegmen
jnb P2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai)
jb p2.2,Setup ;bila sw2(P2.1) ditekan mk INC R7
dec R7 ;R7:=R7-1
acall delay ;waktu tunda lama penekanan tombol
cjne R7,#0d,setDn;deteksi apakah setting=0d
mov R7,#99d ;reset R7 -> 99
sjmp Setdn
getout: sjmp getout
;
Display2SevenSegmen:
mov A,puluhan
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
clr P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
mov A,satuan
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
Setb P3.5 ;
Setb P3.6
Setb P3.7
call delay
ret
;
Bin2Dec:
mov b,#100d
div ab
mov ratusan,a
mov a,b
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;
delay: mov R0,#0
delay1:mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret
;
Data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
- Simpanlah program yang anda ketik dan beri nama : prog34a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada 7 Segmen.