Professional Documents
Culture Documents
PRAKTIKUM MIKROKONTROLER
Disusun oleh :
2008
PERCOBAAN 3
DISPLAY 7 SEGMEN
I. TUJUAN:
1. Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen
2. Mahasiswa dapat memahami program assembly untuk menampilkan data ke 7 segment
3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan waktu tunda.
(a)
(b)
INPUT
ENABLE OUTPUT
SELECTOR
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.
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”.
II. HASIL PRAKTIKUM III
org 0h
start : clr P3.5 ;P3.5= '0'
clr P3.6 ;P3.6= '0'
clr P3.7 ;P3.7= '0'
mov P2,#11110111b ;Cetak karakter'A'
sjmp start ; Lompat ke start
end
Print Screen :
o Percobaan 3.1.1
org 0h
start: setb P3.5 ;P3.5=A='1'
clr P3.6 ;P3.6=B='0'
clr P3.7 ;P3.7=C='0'
mov P2,#10111001b ; CetakKarakter'C'
sjmp start ; Lompat ke start
end
Print Screen:
o Percobaan 3.1.2
org 0h
start: clr P3.5 ;P3.5=A='0'
clr P3.6 ;P3.6=B='0'
setb P3.7 ;P3.7=C='1'
mov P2,#11111001b ; CetakKarakter'E'
sjmp start ; Lompat ke start
end
Print Screen:
o Percobaan 3.1.3
org 0h
start: setb P3.5 ;P3.5=A='1'
setb P3.6 ;P3.6=B='1'
setb P3.7 ;P3.7=C='1'
mov P2,#11001111b ; CetakKarakter'3'
sjmp start ; Lompat ke start
end
Print Screen:
Print Screen:
o Percobaan 3.2.1
Org 0h
start :clr P3.5 ;P3.5 = '0'
clr P3.6 ;P3.6 = '0'
clr P3.7 ;P3.7 = '0'
Print Screen:
o Percobaan 3.2.3
Org 0h
start :setb P3.5 ;P3.5 = '1'
clr P3.6 ;P3.6 = '0'
setb P3.7 ;P3.7 = '1'
mov P2,#10000110b ;cetak karakter '1'
call delay ;panggil waktu tunda
clr P3.5 ; P3.5='0'
setb P3.6 ; P3.6='1'
setb P3.7 ; P3.7='1'
mov P2,#11110111b ; cetak karakter 'a'
call delay ; panggil waktu tunda
setb P3.5 ; P3.5 = '1'
setb P3.6 ; P3.6 = '1'
setb P3.7 ; P3.7 = '1'
mov P2,#11001111b ; cetak karakter '3'
call delay ; panggil waktu tunda
sjmp start ; lompat ke start
;=====================================
;sub routine delay created to rise delay time
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2, del2
djnz R1, del1
ret
end
Print Screen:
Percobaan 3.3. Tulis 8 Karakte r pada 7 Segmen
o Percobaan 3.3
org 0h
start:
clr P3.5
clr P3.6
clr P3.7
mov P2,#00000110b
call delay
setb P3.5
clr P3.6
clr P3.7
mov P2,#11011011b
call delay
clr P3.5
setb P3.6
clr P3.7
mov P2,#11001111b
call delay
setb P3.5
setb P3.6
clr P3.7
mov P2,#11100110b
call delay
clr P3.5
clr P3.6
setb P3.7
mov P2,#11101101b
call delay
setb P3.5
clr P3.6
setb P3.7
mov P2,#11111101b
call delay
clr P3.5
setb P3.6
setb P3.7
mov P2,#10000111b
call delay
setb P3.5
setb P3.6
setb P3.7
mov P2,#11111111b
call delay
sjmp start
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
end
Print Screen:
o Percobaan 3.3.1
org 0h
start:
clr P3.5
clr P3.6
clr P3.7
mov P2,#10111000b
call delay
setb P3.5
clr P3.6
clr P3.7
mov P2,#11110111b
call delay
clr P3.5
setb P3.6
clr P3.7
mov P2,#11111100b
call delay
setb P3.5
setb P3.6
clr P3.7
mov P2,#11001111b
call delay
clr P3.5
clr P3.6
setb P3.7
mov P2,#10000110b
call delay
setb P3.5
clr P3.6
setb P3.7
mov P2,#11111000b
call delay
clr P3.5
setb P3.6
setb P3.7
mov P2,#11010000b
call delay
setb P3.5
setb P3.6
setb P3.7
mov P2,#11011100b
call delay
sjmp start
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
end
Print Screen:
o Percobaan 3.3.2
org 0h
start:clr P3.5
clr P3.6
clr P3.7
mov P2,#11110110b
call delay
setb P3.5
clr P3.6
clr P3.7
mov P2,#11110111b
call delay
clr P3.5
setb P3.6
clr P3.7
mov P2,#10110000b
call delay
setb P3.5
setb P3.6
clr P3.7
mov P2,#10110000b
call delay
clr P3.5
clr P3.6
setb P3.7
mov P2,#11011100b
call delay
setb P3.5
clr P3.6
setb P3.7
mov P2,#11111011b
call delay
clr P3.5
setb P3.6
setb P3.7
mov P2,#10011100b
call delay
setb P3.5
setb P3.6
setb P3.7
mov P2,#11101110b
call delay
sjmp start
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
end
Print Screen:
o Percobaan 3.3.3
org 0h
start:clr P3.5
clr P3.6
clr P3.7
mov P2,#11101110b
call delay
setb P3.5
clr P3.6
clr P3.7
mov P2,#11011100b
call delay
clr P3.5
setb P3.6
clr P3.7
mov P2,#10011100b
call delay
setb P3.5
setb P3.6
clr P3.7
mov P2,#11010000b
call delay
clr P3.5
clr P3.6
setb P3.7
mov P2,#11010100b
call delay
setb P3.5
clr P3.6
setb P3.7
mov P2,#11110111b
call delay
clr P3.5
setb P3.6
setb P3.7
mov P2,#11001111b
call delay
setb P3.5
setb P3.6
setb P3.7
mov P2,#11111011b
call delay
sjmp start
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
end
Print Screen:
III. ANALISA
F B
G
E C
H
D
Dimisalkan pada gambar diatas, jadi dengan memberikan nilai / bit 1 pada
A,B,C,E,F,G,H sedangkan D diberikan nilai / bit 0, maka akan terbentuk karakter’A’
o Percobaan 3.1.1
Pada percobaan 3.1.1 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’C’ pada posisi atau index kedua pada display. Untuk
menentukan Posisi karakter‘C’ pada display kita harus menuliskan sintax ’setb’ pada
P3.5 sintax ’clr’ pada P3.6, P3.7, sintax ’setb’ ini dimaksudkan untuk
mengeset/memberikan logika’1’, sedangkan sintax ’clr’ ini dimaksudkan untuk
mengeset/memberikan logika’0’, sebagai contoh:
Sedangkan untuk Membentuk karakter’C’ kita harus menuliskan sintax ‘MOV
P2,#10111001b’ .Berhubung dalam praktikum ini kita menggunakan’Display
Commond Catoda’ jadi untuk menyalakan display Commond Catoda kita memberikan
nilai atau bit’1’. Sebagai contoh:
F B
G
E C
H
D
Dimisalkan pada gambar diatas, jadi dengan memberikan nilai / bit 1 pada A,D,E,F,H
sedangkan B,C,G diberikan nilai / bit 0, maka akan terbentuk karakter’C’
o Percobaan 3.1.2
Pada percobaan 3.1.2 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’E’ pada posisi atau index kelima pada display. Untuk
menentukan Posisi karakter‘E’ pada display kita harus menuliskan sintax ’setb’ pada
P3.7 sintax ’clr’ pada P3.5, P3.6, sintax ’setb’ ini dimaksudkan untuk
mengeset/memberikan logika’1’, sedangkan sintax ’clr’ ini dimaksudkan untuk
mengeset/memberikan logika’0’, sebagai contoh:
Sedangkan untuk Membentuk karakter’E’ kita harus menuliskan sintax ’MOV
P2,#11111001b’ .Berhubung dalam praktikum ini kita menggunakan’Display
Commond Catoda’ jadi untuk menyalakan display Commond Catoda kita
memberikan nilai atau bit’1’. Sebagai contoh:
F B
G
E C
H
D
Dimisalkan pada gambar diatas, jadi dengan memberikan nilai / bit 1 pada
A,D,E,F,G,H sedangkan B,C diberikan nilai / bit 0, maka akan terbentuk karakter’E’
o Percobaan 3.1.3
Pada percobaan 3.1.3 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’3’ pada posisi atau index ke delapan pada display. Untuk
menentukan Posisi karakter‘3’ pada display kita harus menuliskan sintax ’setb’ pada
P3.5, P3.6, P3.7 sintax ’setb’ ini dimaksudkan untuk mengeset/memberikan logika’1’,
sebagai contoh:
F B
G
E C
H
D
Dimisalkan pada gambar diatas, jadi dengan memberikan nilai / bit 1 pada
A,B,C,D,G,H sedangkan E,F diberikan nilai / bit 0, maka akan terbentuk karakter’3’
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.2.1
Pada percobaan 3.2.1 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’E,F,G’ secara bergantian pada display dan posisi index
pada masing – masing karakter berbeda, sehingga didapat nyala karakter E,F,G secara
bergantian dengan mengeset DELAY.
Untuk membentuk karakter E,F,G kita harus menuliskan sintax ‘MOV’ sebanyak tiga
kali, contoh : ‘MOV P2,#11111001B’ untuk membentuk karakter E, ‘MOV
P2,#11110001B’ untuk membentuk karakter F, ‘MOV P2,#11111101B’ untuk
membentuk karakter G.
Untuk menentukan masing – masing karakter sehingga menempati posisi atau index
yang berbeda kita harus mengeset atau menuliskan sintax SETB dan CLR sebagai
contoh :
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.2.2
Pada percobaan 3.2.2 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’H,J,L’ secara bergantian pada display dan posisi index
pada masing – masing karakter berbeda, sehingga didapat nyala karakter H,J,L secara
bergantian dengan mengeset DELAY.
Untuk membentuk karakter H,J,L kita harus menuliskan sintax ‘MOV’ sebanyak tiga
kali, contoh : ‘MOV P2,#11110110B’ untuk membentuk karakter H, ‘MOV
P2,#10011110B’ untuk membentuk karakter J, ‘MOV P2,#10111000B’ untuk
membentuk karakter L
Untuk menentukan masing – masing karakter sehingga menempati posisi atau index
yang berbeda kita harus mengeset atau menuliskan sintax SETB dan CLR sebagai
contoh :
Karakter P3.5 P3.6 P3.7 Posisi/index
ke
H 1 1 0 4
J 0 0 1 5
L 1 0 1 6
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.2.3
Pada percobaan 3.2.3 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter’1,a,3’ secara bergantian pada display dan posisi index pada
masing – masing karakter berbeda, sehingga didapat nyala karakter 1,a,3 secara
bergantian dengan mengeset DELAY.
Untuk membentuk karakter H,J,L kita harus menuliskan sintax ‘MOV’ sebanyak tiga
kali, contoh : ‘MOV P2,#10000110B’ untuk membentuk karakter 1, ‘MOV
P2,#11110111B’ untuk membentuk karakter A, ‘MOV P2,#11001111B’ untuk
membentuk karakter 3
Untuk menentukan masing – masing karakter sehingga menempati posisi atau index
yang berbeda kita harus mengeset atau menuliskan sintax SETB dan CLR sebagai
contoh :
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.3.1
Pada percobaan 3.3.1 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter ’Labmikro’ secara bergantian. Karakter ‘L’ akan
menempati display pertama dan seterusnya sampai karakter ‘o’ menempati display ke
delapan. Untuk menentukan posisi display tiap karakter sehingga menempati posisi atau
index yang diinginkan kita harus mengeset atau menuliskan sintax SETB dan CLR
sebagai adalah sbb :
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.3.2
Pada percobaan 3.3.2 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter ’HAlloguy’ secara bergantian. Karakter ‘H’ akan
menempati display pertama dan seterusnya sampai karakter ‘y’ menempati display ke
delapan. Untuk menentukan posisi display tiap karak ter sehingga menempati posisi atau
index yang diinginkan kita harus mengeset atau menuliskan sintax SETB dan CLR
sebagai adalah sbb :
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terlihat nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
o Percobaan 3.3.3
Pada percobaan 3.3.3 program dimulai pada ORG(Origin) 0h yang mana program ini
akan menampilkan karakter ’YournAme’ secara bergantian. Karakter ‘Y’ akan
menempati display pertama dan seterusnya sampai karakter ‘e’ menempati display ke
delapan. Untuk menentukan posisi display tiap karakter sehingga menempati posisi atau
index yang diinginkan kita harus mengeset atau menuliskan sintax SETB dan CLR
sebagai adalah sbb :
NB : untuk memberikan logika 1 pada P3.5, P3.6, atau P3.7 kita harus menuliskan /
memberikan sintax SETB, sebaliknya untuk memberikan logika 0 pada P3.5, P3.6, atau
P3.7 kita harus menuliskan / memberikan sintax CLR.
Untuk mengatur nyala antara karakter satu dengan yang lain sehingga terliha t nyalanya
bergantian kita harus mengeset delay, contoh : delay: mov R1,#255
IV. FLOWCHART
INISIALISASI
AWAL
ALAMAT 0h
AKTIFKAN
DIGIT 1 PADA
7 SEGMENT
CETAK
KARAKTER
“A”
o Percobaan 3.1.1
START
INISIALISASI
AWAL
ALAMAT 0h
AKTIFKAN
DIGIT 2 PADA
7 SEGMENT
CETAK
KARAKTER
“C”
o Percobaan 3.1.2
START
INISIALISASI
AWAL
ALAMAT 0h
AKTIFKAN
DIGIT 5 PADA
7 SEGMENT
CETAK
KARAKTER
“E”
o Percobaan 3.1.3
START
INISIALISASI
AWAL ALAMAT
0h
AKTIFKAN
DIGIT 8 PADA 7
SEGMENT
CETAK ANGKA
“3”
R1 = 255
START
R2 = 255
INISIALISASI
AWAL ALAMAT D E
0h
R2 = R2 - 1
TIDAK
CETAK CETAK CETAK
KARAKTER “A” KARAKTER “B” KARAKTER “C” R1 = R1 - 1
TIDAK
D E RET
o Percobaan 3.2.1
DELAY
R1 = 255
START
R2 = 255
INISIALISASI
AWAL ALAMAT D E
0h
R2 = R2 - 1
TIDAK
CETAK CETAK CETAK
KARAKTER “E” KARAKTER “F” KARAKTER “G” R1 = R1 - 1
TIDAK
D E RET
o Percobaan 3.2.2
DELAY
R1 = 255
START
R2 = 255
INISIALISASI
AWAL ALAMAT D E
0h
R2 = R2 - 1
TIDAK
CETAK CETAK CETAK
KARAKTER “H” KARAKTER “J” KARAKTER “L” R1 = R1 - 1
TIDAK
D E RET
o Percobaan 3.2.3
DELAY
R1 = 255
START
R2 = 255
INISIALISASI
AWAL ALAMAT D E
0h
R2 = R2 - 1
TIDAK
CETAK CETAK CETAK
KARAKTER “1” KARAKTER “A” KARAKTER “3” R1 = R1 - 1
TIDAK
D E RET
INISIALISASI
AWAL D E N
ALAMAT 0h
DELAY
CETAK CETAK CETAK CETAK
KARAKTER KARAKTER KARAKTER KARAKTER
“1” “3” “5” “7” R1 = 255
R2 = R2 - 1
AKTIFKAN AKTIFKAN AKTIFKAN AKTIFKAN
DIGIT 2 PADA DIGIT 4 PADA DIGIT 6 PADA DIGIT 8 PADA
7 SEGMENT 7 SEGMENT 7 SEGMENT 7 SEGMENT
YA
R2 = 0
TIDAK
D E N
RET
o Percobaan 3.2.1
START
INISIALISASI
AWAL D E N
ALAMAT 0h
TIDAK
D E N
RET
o Percobaan 3.2.2
START
INISIALISASI
AWAL D E N
ALAMAT 0h
R1 = 255
CETAK CETAK CETAK
CETAK
KARAKTER KARAKTER KARAKTER
KARAKTER “L”
“H” “O” “U”
R2 = 255
TIDAK
CETAK CETAK CETAK
CETAK KARAKTER KARAKTER
KARAKTER
KARAKTER “L” “G” “Y”
R1 = R1 - 1
“A”
TIDAK
D E N
RET
o Percobaan 3.2.3
START
INISIALISASI
AWAL D E N
ALAMAT 0h
D E N
DELAY
R1 = 255
R2 = 255
R2 = R2 - 1
YA
R2 = 0
TIDAK
R1 = R1 - 1
YA
R1 = 0
TIDAK
RET
V. KESIMPULAN
ORG ( ORIGINAL )
ORG singkatan dari ORIGINAL adalah perintah pada assembler agar berikutnya assembler
bekerja pada memori-program nomor yang disebut di belakang ORG.
Sebagai contoh :
org 0h
…
end
(dalam hal ini meminta assembler berikutnya bekerja pada memori-program nomor 0h / atau program
dimulai pada 0h).
MOV ( MOVE )
MOV merupakan singkatan dari MOVE artinya memindahkan data
Sebagai contoh :
- Mov a, b data dari b dimasukkan di a
- Mov a,#2 a diisi oleh angka 2
- Mov a,2 a diisi oleh datanya yang ada dialamat 2
- Mov a,@b b isinya alamatnya apa? Kemudian alamat tersebut ditunjuk dan data dari alamat
b yang telah ditunjuk diisikan di a
SUB-RUTIN
Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari
program utama. Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin, artinya
mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi
dalam sub-rutin, selesai mengerjakan sub-rutin mikrokontroler kembali ke alur program utama.
Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program
sub-rutin.
WAKTU TUNDA
Waktu tunda digunakan untuk delay atau waktu jeda, jadi nya la LED atau display bisa diatur
dengan mengeset waktu tunda atau delaynya.
A A
F B F B
G G
E C E C
H H
D D
Untuk Commond Katoda :
Untuk menghidupkan display CC ( Commond Catoda ) kita harus memberikan nilai bit”1”
Untuk Commond Anoda :
Untuk menghidupkan display CA ( Command Anoda ) kita harus memberikan nilai bit”0”