Anda di halaman 1dari 15

Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

LABORATORIUM TEKNIK LISTRIK


POLITEKNIK NEGERI AMBON
MATAKULIAH SISTEM DIGITAL NO.REG.

SEMESTER 4

NO. JOB. SHEET 4 KONTROL LED DOT MATRIX


KELAS

I. TUJUAN
1. Mampu memprogramkan mikrokontroler MCS-51 untuk menampilkan karakter pada dot
matrix.
2. Mampu menentukan digit untuk membentuk sebuah karakter pada dot matrix dengan
ukuran tertentu.
3. Mampu membuat program delay menggunakan bahasa assembler MCS-51.

II. TEORI
Percobaan ini menggunakan LED dot matrix 8x8 (D3) untuk menampilkan angka desimal.
D3 adalah LED matriks katoda umum. Sinyal pemindaian baris dipancarkan dari P2 dan
sinyal pemindaian kolom dipancarkan dari P0. Sinyal pemindaian baris dan kolom adalah
sinyal aktif-tinggi, yaitu, semua LED dinyalakan ketika sinyal baris dan kolom semuanya
1s. Pasangan Darlington 2803 digunakan untuk menenggelamkan arus kolom. Lihat Gbr. 1
untuk informasi terperinci.

Gambar 1. Rangkaian driver LED dot matrix 8x8

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


1
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Mirip dengan keyboard matriks, LED dot matrix dikonfigurasikan dengan menempatkan
dioda pada setiap persimpangan garis baris dan kolom. Saat anoda LED terhubung ke garis
kolom seperti yang ditunjukkan pada Gbr. 2 (a), LED matriks titik disebut LED matriks
anoda umum. Saat katoda LED adalah terhubung ke garis kolom seperti yang ditunjukkan
pada Gbr. 2 (b), LED matriks titik adalah disebut LED matriks katoda umum.

Gambar 2 (a) Common anode

Gambar 2 (b) Common cathode

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 2


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Dalam praktiknya, jika kita memutar LED dot matrix anoda umum ke kiri atau ke kanan
sebesar 90 derajat dan menetapkan kembali garis kolom dan baris, maka akan diperoleh LED
matriks anoda umum. Dengan cara yang sama, LED matriks katoda umum dapat digunakan
sebagai LED matriks anoda umum.
Untuk melanjutkan ke latihan berikut, SW2_7 harus ditempatkan pada posisi ON.

Deskripsi Fungsional:
Nyalakan LED kolom secara berurutan dari kolom 1 hingga kolom 8 sebanyak delapan kali,
lalu nyalakan LED baris dari baris 1 hingga baris 8 sebanyak delapan kali.

Source Program 1:

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 3


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Deskripsi Program:
Untuk menyalakan LED kolom demi kolom, P2 memancarkan FFH ke baris baris dan P0
memancarkan 1 ke kolom 1, LED di kolom ini dinyalakan. Kemudian 1 digeser ke kolom 2
dengan memutar instruksi untuk menyalakan LED di kolom 2, dan dan seterusnya. Untuk
menyalakan LED baris demi baris, P0 memancarkan FFH ke baris kolom dan P0
memancarkan 1 ke baris 1, LED di baris ini dinyalakan. Lalu 1 adalah digeser ke baris 2
dengan memutar instruksi untuk menyalakan LED di baris 2, dan seterusnya.
Instruksi CLR P1.7 dalam program ini digunakan untuk menonaktifkan Modul LCD (LCM)
selama LED matriks dieksekusi. Ini karena jalur port 0 terhubung ke LED dot matrix 8x8 serta
bus data LCM. Untuk mencegah perubahan potensial tegangan dari gangguan, instruksi ini
mereset input enable (P1.7) dan mengosongkan bus internal LCM. Dapat dilihat pada gambar
3 dibawah ini.

Gambar 3 Rangkaian Skematik LCM

Perhitungan penundaan
Penundaan subrutin penundaan sama dengan hasil kali total siklus mesin dan waktu siklus
mesin sebagai berikut:
Total siklus mesin = 1+200x(1+249x2+2)+2 =100.203. Karena frekuensi osilator Alat Peraga
MTS-51 adalah 12 MHz, 1 s setiap siklus mesin, maka total penundaan sama dengan 0,1
detik (=100.203 x 1s =100.203 s).

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 4


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Subrutin penundaan unit


Dalam aplikasi kontrol komputer mikro, satu atau lebih rutinitas penundaan sering kali
diperlukan. Untuk menyederhanakan perhitungan penundaan, kita dapat menulis subrutin
penundaan unit yang menunda waktu tetap, misalnya 0,1 detik, dan menggunakan penghitung
(register) untuk menentukan waktu eksekusi subrutin penundaan unit. Sebagai contoh, kita
memanggil subrutin penundaan 0.1 detik sebanyak 10 kali untuk penundaan selama satu detik.
Jumlah pemanggilan sudah tersimpan dalam register penghitung. Perhatikan subrutin
penundaan 0.1 detik di bawah ini:

Dua register R6 dan R7 digunakan dalam perulangan bersarang. Jika penundaan 0,5 detik
diperlukan, nilai awal penghitung-R5 harus ditetapkan ke lima seperti yang tercantum di
bawah ini:

Subrutin berikut ini melakukan fungsi yang sama seperti di atas.

III. PERALATAN :
1. Modul/Trainer MTS-51
2. Emulator 8051

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 5


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

IV. LANGKAH-LANGKAH PERCOBAAN


PROCEDURES
1. Gunakan aplikasi MIDE-51 untuk mengedit dan menyimpan

2.

3.
4.
5.

HASIL
Berikan penjelasan untuk percobaan diatas (

Percobaan di atas adalah program untuk menggerakkan efek "running light" pada sebuah
tampilan LED matriks 8x8. Berikut ini adalah penjelasan langkah-langkah yang terjadi
dalam program tersebut:
1. Langkah awal:
o Register R0 diinisialisasi dengan nilai 64, yang akan digunakan sebagai loop counter
untuk mengontrol pergerakan kolom dan baris LED matriks.
o Port P2 diatur dengan nilai FFH (11111111B), yang mengaktifkan semua pin di port
P2 dan menyalakan baris-baris LED matriks.
o Register A diatur dengan nilai 10000000B, yang digunakan untuk mengaktifkan
kolom pertama LED matriks.
2. Menggerakkan efek "running light" pada kolom:
o Label NEXT_COL menandai awal dari loop untuk menggerakkan efek pada kolom.
o Nilai yang ada di dalam register A ditulis ke port P0 untuk menyalakan baris-baris
LED pada kolom yang sedang aktif.
o Program melakukan pemanggilan subrutin DELAY untuk memberikan penundaan.
o Instruksi RR digunakan untuk menggeser bit dalam register A ke kanan, sehingga
efek "running light" berpindah ke kolom berikutnya.
o Instruksi DJNZ R0, NEXT_COL digunakan untuk mengulang loop ini sebanyak 64
kali (sesuai dengan nilai awal di R0). Setiap iterasi menggerakkan efek ke kolom berikutnya.
3. Menggerakkan efek "running light" pada baris:
o Setelah selesai dengan pergerakan kolom, program melakukan langkah yang serupa
untuk menggerakkan efek pada baris.
o Register R0 diatur kembali dengan nilai 64 sebagai loop counter.
o Port P2 diatur kembali dengan nilai FFH untuk menyalakan baris-baris LED matriks.
o Register A diatur kembali dengan nilai 10000000B untuk mengaktifkan baris pertama
LED matriks.
o Label NEXT_ROW menandai awal dari loop untuk menggerakkan efek pada baris.
o Nilai yang ada di dalam register A ditulis ke port P2 untuk menyalakan baris yang
sedang aktif.
o Program melakukan pemanggilan subrutin DELAY untuk memberikan penundaan.
o Instruksi RR digunakan untuk menggeser bit dalam register A ke kanan, sehingga
efek "running light" berpindah ke baris berikutnya.
6
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon
o Instruksi DJNZ R0, NEXT_ROW digunakan untuk mengulang loop ini sebanyak 64
kali (sesuai dengan nilai awal di R0). Setiap iterasi menggerakkan efek ke baris berikutnya.
4. Kembali ke awal:
o Setelah selesai dengan pergerakan baris, program melompat kembali ke label START
untuk memulai ulang proses dari awal.
o Proses ini akan terus berulang, menciptakan efek "running light" pada LED matriks.
5. Subrutin DELAY:
o Subrutin DELAY digunakan untuk memberikan penundaan dalam program.
o Register R6 diatur dengan nilai 200 dan digunakan sebagai loop counter terluar.
o Register R7 diatur dengan nilai 249 dan digunakan sebagai loop counter dalam loop
terdalam.
o Instruksi DJNZ digunakan untuk mengulang loop ini sebanyak 249 kali dalam loop
terdalam, dan loop ini akan diulang sebanyak 200 kali dalam loop terluar.
o Subrutin ini memberikan penundaan sebelum melanjutkan ke langkah selanjutnya
dalam program.
Dengan demikian, program di atas menghasilkan efek "running light" yang bergerak secara
berulang pada tampilan LED matriks 8x8 dengan menggunakan loop, pengaturan port, dan
subrutin penundaan.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

V.
PERCOBAAN 1 : Buat program dan upload ke mikrokontroler

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 7


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

1. Jelaskan cara kerja program mikrokontroler untuk percobaan 1 dikaitkan dengan


sistem perangkat keras pada gambar 1.
Percobaan di atas merupakan program untuk mengendalikan tampilan LED dot matrix
8x8 dengan menggunakan mikrokontroler. Berikut adalah penjelasan cara kerja
program ini terkait dengan perangkat keras yang digunakan:

8
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon
1. Langkah awal:
o Instruksi CLR P1.7 digunakan untuk mengatur pin P1.7 menjadi logika rendah (0),
yang berfungsi sebagai output untuk mengendalikan Darlington 2803 yang
menenggelamkan arus pada kolom LED dot matrix.
o Label START menandai awal program.
2. Inisialisasi:
o Register DPTR diatur dengan alamat memori TABLE, yang digunakan sebagai
penunjuk ke tabel data untuk tampilan angka desimal di LED dot matrix.
o Register R2 diatur dengan nilai 10000000B (bit terkiri aktif), yang akan digunakan
untuk mengendalikan sinyal pemindaian kolom.
o Register R1 diatur dengan nilai 0 sebagai indeks awal untuk mengakses data dalam
tabel.
3. Loop utama:
o Label NEXT menandai awal dari loop utama.
o Instruksi MOV A, R1 digunakan untuk memuat nilai dari R1 ke dalam register A
sebagai indeks untuk mengakses data dalam tabel.
o Instruksi MOVC A, @A+DPTR digunakan untuk mengakses data dari tabel
menggunakan indireksi otomatis dengan DPTR dan A sebagai penunjuk ke alamat
data dalam tabel.
o Nilai yang diambil dari tabel dimuat ke dalam register A.
o Nilai dalam register A ditulis ke port P2 untuk mengendalikan sinyal pemindaian
baris pada LED dot matrix.
o Nilai dalam register R2 (yang mengendalikan sinyal pemindaian kolom) ditulis ke
port P0.
o Program melakukan pemanggilan subrutin DELAY untuk memberikan penundaan.
o Instruksi RR A digunakan untuk menggeser bit dalam register A ke kanan,
sehingga efek "running light" berpindah ke kolom berikutnya.

o Nilai yang ada di dalam register A disimpan kembali di dalam register R2 untuk
digunakan pada iterasi selanjutnya.
o Register R1 diincrement untuk mengakses data selanjutnya dalam tabel.
o Instruksi CJNE R1, #5, NEXT digunakan untuk memeriksa apakah sudah
mencapai akhir dari tabel data (indeks 5). Jika belum mencapai akhir, program
akan melompat kembali ke label NEXT untuk melanjutkan loop.
4. Kembali ke awal:
o Setelah selesai melakukan looping, program melompat kembali ke label START
untuk memulai ulang proses dari awal.
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon
o Proses ini akan terus berulang, menghasilkan efek "running light" pada LED dot
matrix.
5. Subrutin DELAY:
o Subrutin DELAY digunakan untuk memberikan penundaan dalam program.
o Register R6 diatur dengan nilai 10 dan digunakan sebagai loop counter terluar.
o Register R7 diatur dengan nilai 249 dan digunakan sebagai loop counter dalam
loop terdalam.
o Instruksi DJNZ digunakan untuk mengulang loop ini sebanyak 249 kali dalam
loop terdalam, dan loop ini akan diulang sebanyak 10 kali dalam loop terluar.
o Subrutin ini memberikan penundaan sebelum melanjutkan ke langkah selanjutnya
dalam program.
Dengan demikian, program di atas mengendalikan tampilan LED dot matrix 8x8
dengan mengatur sinyal pemindaian baris dan kolom menggunakan port P2 dan P0
pada mikrokontroler, serta menggunakan tabel data untuk menampilkan angka
desimal pada LED dot matrix.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

1. Jelaskan apa fungsi MOV DPTR, #TABLE dan MOVC A,@A+DPTR pada
program mikrokontroler percobaan 1

Pada program mikrokontroler di atas, instruksi MOV DPTR, #TABLE dan MOVC A,
@A+DPTR memiliki fungsi berikut:
1. MOV DPTR, #TABLE: Instruksi MOV DPTR, #TABLE digunakan untuk
menginisialisasi register DPTR dengan alamat memori dari tabel data yang akan digunakan
dalam program. DPTR (Data Pointer) adalah register 16-bit yang digunakan sebagai
penunjuk alamat data dalam memori. Dalam kasus ini, tabel data disimpan pada lokasi
memori yang ditunjukkan oleh label TABLE. Dengan menggunakan instruksi ini, DPTR
akan menunjuk ke tabel data tersebut.
2. MOVC A, @A+DPTR: Instruksi MOVC A, @A+DPTR digunakan untuk mengambil
data dari memori menggunakan indireksi otomatis dengan DPTR dan A sebagai penunjuk
alamat. Instruksi ini secara efektif mengambil data dari alamat yang ditunjukkan oleh DPTR
ditambah dengan nilai yang ada di dalam register A.
o Pertama, instruksi MOV A, R1 mengambil nilai yang ada di dalam register R1 dan
memindahkannya ke register A.
o Kemudian, nilai dalam register A digunakan sebagai offset untuk indireksi otomatis.
DPTR menunjukkan awal alamat tabel data, dan A digunakan untuk menambahkan offset.
o Dengan demikian, instruksi MOVC A, @A+DPTR akan mengambil data dari alamat
yang ditunjukkan oleh DPTR ditambah dengan nilai yang ada di dalam register A, dan
hasilnya akan disimpan di dalam register A.
Dalam konteks program tersebut, instruksi MOV DPTR, #TABLE dan MOVC A,
@A+DPTR digunakan untuk mengakses dan mengambil data dari tabel data yang diperlukan
untuk mengendalikan tampilan LED dot matrix.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


9
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

PERCOBAAN 2 : Buat program dan upload ke mikrokontroler


Menampilkan karakter 5x7-titik A sampai Z dan angka 0 sampai 9 secara berurutan.

Deskripsi Program:

Untuk menampilkan beberapa karakter, kolom spasi di antara karakter harus


disisipkan. Oleh karena itu, nilai 00H mengikuti setiap pola data. Untuk membuat
efek gerakan, delapan byte data berturut-turut dibaca dan ditampilkan satu kali seperti
yang ditunjukkan pada Gbr. 6. Untuk mempercepat gerakan karakter, penundaannya
adalah dimodifikasi menjadi 2 ms.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 10


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Gbr. 6. Membaca byte data secara berurutan untuk efek gerakan

1. Jelaskan cara kerja program mikrokontroler untuk percobaan 2 dikaitkan dengan


sistem perangkat keras pada gambar 1.
Program mikrokontroler akan memulai dengan menginisialisasi mikrokontroler dan periferal
yang diperlukan untuk tampilan karakter. Hal ini dapat melibatkan konfigurasi pin GPIO,
pengaturan tampilan atau layar, dan inisialisasi komunikasi serial atau SPI, tergantung pada
jenis perangkat keras yang digunakan.
Program akan melakukan loop melalui setiap karakter yang ingin ditampilkan. Setiap
karakter akan ditampilkan pada tampilan, dan kemudian kolom spasi akan disisipkan. Jika
karakter tidak sama dengan 00H, program akan menunggu selama 2 ms sebelum
melanjutkan ke karakter berikutnya. Jika karakter adalah 00H, program akan melanjutkan
tanpa penundaan.
Program akan membaca delapan byte data secara berurutan untuk menciptakan efek gerakan
karakter. Pola data ini mungkin berisi informasi yang menggambarkan bagaimana karakter
harus ditampilkan pada tampilan. Setelah membaca pola data, program akan menampilkan
pola tersebut pada tampilan. Setelah menampilkan pola data, program akan menunggu
selama 2 ms sebelum membaca dan menampilkan pola data berikutnya.
Setelah menampilkan karakter dengan spasi dan efek gerakan, program akan kembali ke
awal dan melakukan loop secara terus-menerus untuk menampilkan karakter-karakter dan
efek gerakan. Ini memungkinkan tampilan untuk terus diperbarui dengan pola data terbaru.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


11
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

2. Jelaskan apa fungsi CJNE R1,#5, NEXT dan INC DPTR pada program
mikrokontroler percobaan 2

CJNE R1, #5, NEXT: Instruksi CJNE R1, #5, NEXT adalah instruksi pembandingan dan
loncat bersyarat. CJNE adalah singkatan dari "Compare and Jump if Not Equal". Instruksi ini
membandingkan nilai dalam register R1 dengan konstanta 5. Jika nilai dalam R1 tidak sama
dengan 5, maka program akan melompat ke label NEXT dan melanjutkan eksekusi dari sana.
Jika nilai dalam R1 sama dengan 5, maka program akan melanjutkan eksekusi dari instruksi
berikutnya setelah instruksi CJNE.
INC R1: Instruksi INC R1 digunakan untuk mengincrement nilai dalam register R1. Setelah
eksekusi instruksi ini, nilai dalam R1 akan bertambah satu. Dalam konteks program ini,
instruksi ini digunakan untuk meningkatkan nilai R1 setiap kali program memasuki loop
NEXT. Hal ini bertujuan untuk menggeser offset yang digunakan dalam instruksi MOVC
untuk mengambil data dari tabel data yang berbeda pada setiap iterasi loop.
INC DPTR: Instruksi INC DPTR digunakan untuk mengincrement nilai dalam register
DPTR. DPTR adalah register 16-bit yang digunakan sebagai penunjuk alamat data dalam
memori. Dalam konteks program ini, instruksi INC DPTR digunakan untuk meningkatkan
alamat yang ditunjuk oleh DPTR. Ini berguna ketika program membutuhkan akses ke entri
berikutnya dalam tabel data yang disimpan di memori. Dengan menginkrement DPTR,
program dapat menggeser penunjuk alamat untuk mengakses entri data berikutnya pada
setiap iterasi loop.

3. Jelaskan apa fungsi CJNE R1,#5, NEXT dan INC DPTR pada program delay
mikrokontroler percobaan 1 dan 2;
Instruksi CJNE R1,#5, NEXT dan INC DPTR. Berikut adalah penjelasan fungsinya:
1. CJNE R1,#5, NEXT: Instruksi ini membandingkan nilai yang terdapat dalam
register R1 dengan angka 5. Jika nilai R1 tidak sama dengan 5, program akan melompat ke
label NEXT dan melanjutkan eksekusi dari sana. Jika nilai R1 sama dengan 5, program
akan melanjutkan eksekusi pada instruksi berikutnya setelah instruksi CJNE.
2. INC DPTR: Instruksi ini digunakan untuk menambahkan nilai DPTR (Data
Pointer) sebesar 1. DPTR adalah register yang digunakan untuk mengakses memori
eksternal dalam mikrokontroler. Dengan menggunakan instruksi INC DPTR, nilai DPTR
akan ditambahkan sehingga mengarahkan ke alamat memori selanjutnya.
Dalam konteks program delay yang Anda berikan, instruksi CJNE R1,#5, NEXT
digunakan untuk melakukan pengulangan sebanyak 5 kali. Setiap kali program mencapai
instruksi ini, nilai R1 akan diperiksa apakah sudah mencapai angka 5. Jika belum, program
akan melompat ke label NEXT untuk melanjutkan eksekusi dari sana. Ini memungkinkan
program untuk melakukan pengulangan sebanyak 5 kali sebelum melanjutkan ke instruksi
berikutnya.
Instruksi INC DPTR digunakan untuk mengincrement nilai DPTR setelah setiap iterasi
pengulangan. Hal ini berguna ketika program menggunakan DPTR untuk mengakses
alamat memori yang berbeda pada setiap iterasi pengulangan, seperti dalam program yang
menggunakan tabel data.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 12

Anda mungkin juga menyukai