Soal 2. Rancanglah dan simulasikan suatu rangkaian aplikasi(Tidak boleh sama dengan kelompok lain) sederhana sistem minimum 8086
Membuat rangkaian dot matrik 5x7 pada Proteus bertujuan untuk:
Menampilkan Karakter atau Simbol: Dot matrik 5x7 biasanya digunakan untuk menampilkan karakter huruf, angka, atau simbol grafis sederhana. Dengan menggunakan mikrokontroler, kita dapat mengirim data yang mengontrol titik-titik LED di dalam matrik ini.
Belajar Pemrograman Tampilan: Dengan merancang dan memprogram rangkaian dot matrik, kita dapat mempelajari bagaimana cara mengendalikan display menggunakan kode, seperti bagaimana mengaktifkan setiap LED dengan pola tertentu untuk menampilkan informasi.
Simulasi Sebelum Implementasi: Proteus memungkinkan simulasi rangkaian elektronik tanpa perangkat keras fisik. Simulasi dot matrik 5x7 di Proteus membantu memastikan bahwa rangkaian dan program bekerja sesuai harapan sebelum memproduksi perangkat fisiknya.
Mengembangkan Proyek Mikrokontroler: Penggunaan dot matrik dalam simulasi ini sering kali menjadi bagian dari proyek berbasis mikrokontroler (misalnya, menggunakan Arduino atau PIC). Proyek-proyek ini bisa melibatkan berbagai aplikasi seperti jam digital, running text, atau penunjuk status.
Pemahaman tentang Teknik Multiplexing: Dot matrik menggunakan teknik multiplexing untuk mengurangi jumlah pin kontrol. Dengan merancang rangkaian ini, kita dapat belajar bagaimana cara mengelola beberapa baris dan kolom dengan cara yang efisien.
Eksperimen Visualisasi Data: Dot matrik dapat digunakan untuk menampilkan data secara visual. Misalnya, rangkaian ini bisa diaplikasikan untuk menampilkan informasi sensor, output dari sistem tertentu, atau bahkan animasi sederhana.
- Arduiono
- LED
- Capacitor
- Resistor
- dot matrik
Prosedur Percobaan
1. Membuka Proteus dan Membuat Proyek Baru
- Buka Proteus.
- Pilih opsi New Project.
- Beri nama proyek Anda dan tentukan direktori tempat menyimpan proyek.
- Klik Next dan pilih Create Schematic from Scratch.
2. Menambahkan Komponen Dot Matriks 8x8
- Cari komponen LED Matrix atau Dot Matrix 8x8 di library Proteus.
- Tambahkan komponen ke area kerja.
3. Menambahkan Mikrokontroler
Pilih jenis mikrokontroler yang akan digunakan (misalnya, Arduino UNO atau PIC).
Tambahkan mikrokontroler ke area kerja.
Jika menggunakan Arduino UNO:
- Pilih Arduino UNO dari library.
- Tempatkan di area kerja.
Jika menggunakan PIC atau mikrokontroler lain:
- Pilih model mikrokontroler yang sesuai dari library.
4. Menambahkan Resistor (Opsional)
- Jika rangkaian membutuhkan resistor sebagai pembatas arus untuk tiap LED, tambahkan resistor antara pin keluaran mikrokontroler dan dot matrik.
5. Membuat Koneksi
- Hubungkan setiap baris dan kolom dari dot matrik ke pin digital pada mikrokontroler. Misalnya:
- Kolom dot matrik terhubung ke pin digital D2 hingga D8 pada Arduino.
- Baris dot matrik terhubung ke pin digital D9 hingga D15.
- Pastikan semua pin dihubungkan dengan benar sesuai dengan skema yang diinginkan.
6. Menulis Program (Kode)
- Jika menggunakan Arduino:
- Buka Arduino IDE.
- Tulis kode untuk mengontrol dot matrik 8x8. Kode ini akan mengatur pola bit untuk mengaktifkan LED pada matrik, sesuai dengan karakter atau pola yang diinginkan.
- Berikut adalah contoh kode sederhana untuk menampilkan huruf A pada dot matrik:
#include <delay.h>
#include <string.h>
unsigned int i,j,x,y,z;
unsigned int angka;
char urut;
char kolom[8];
//Baris = PORTB
//KOLOM = PORTC
void nyala_led()//fungsi untuk menyalakan baris
{
if (angka==0)
{
if (urut==0){urut=~(0x3E);}
if (urut==1){urut=~(0x51);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x45);}
if (urut==4){urut=~(0x3E);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==1)
{
if (urut==0){urut=~(0x00);}
if (urut==1){urut=~(0x21);}
if (urut==2){urut=~(0x7F);}
if (urut==3){urut=~(0x01);}
if (urut==4){urut=~(0x00);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==2)
{
if (urut==0){urut=~(0x27);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x31);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==3)
{
if (urut==0){urut=~(0x22);}
if (urut==1){urut=~(0x41);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x36);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==4)
{
if (urut==0){urut=~(0x0C);}
if (urut==1){urut=~(0x14);}
if (urut==2){urut=~(0x24);}
if (urut==3){urut=~(0x7F);}
if (urut==4){urut=~(0x04);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==5)
{
if (urut==0){urut=~(0x72);}
if (urut==1){urut=~(0x51);}
if (urut==2){urut=~(0x51);}
if (urut==3){urut=~(0x51);}
if (urut==4){urut=~(0x4E);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==6)
{
if (urut==0){urut=~(0x1E);}
if (urut==1){urut=~(0x29);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x46);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==7)
{
if (urut==0){urut=~(0x41);}
if (urut==1){urut=~(0x42);}
if (urut==2){urut=~(0x44);}
if (urut==3){urut=~(0x48);}
if (urut==4){urut=~(0x70);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==8)
{
if (urut==0){urut=~(0x36);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x36);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==9)
{
if (urut==0){urut=~(0x30);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x4A);}
if (urut==4){urut=~(0x3C);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
y=0;
PORTC=~(0xFE);
while (1)
{
angka=9;
kolom[0]=~(0xFE);
kolom[1]=~(0xFD);
kolom[2]=~(0xFB);
kolom[3]=~(0xF7);
kolom[4]=~(0xEF);
kolom[5]=~(0xDF);
kolom[6]=~(0xBF);
kolom[7]=~(0x7F);
for (z=0;z<10;++z)
{
//for (x=0;x<10;++x) //untuk menggeser (non aktif)
//{
for (i=0;i<100;++i)
{
y=x;
for (j=0;j<8;++j)
{
//angka=0;
PORTC=kolom[j];
urut=y;
nyala_led();
PORTB=urut;
delay_ms(1);
y=y+1;
//PORTC=kolom[j+1];
if (y==8)
{
y=0;
}
}
PORTC=~(0xFE);
}
//}
//PORTB=0xFF;
angka=angka-1;
delay_ms(1000);
};
}
}
- Hubungkan sumber tegangan virtual dari Proteus ke pin Vin dan GND mikrokontroler (jika diperlukan).
8. Simulasi
- Klik tombol Run di Proteus untuk menjalankan simulasi.
- Lihat apakah LED pada dot matrik menyala sesuai dengan pola yang diinginkan (misalnya, huruf A).
- Jika ada kesalahan, periksa kembali koneksi atau kode yang digunakan.
9. Observasi dan Analisis
- Amati pola nyala LED pada dot matrik 8x8.
- Jika sesuai dengan karakter atau pola yang diinginkan, percobaan berhasil.
- Jika hasil belum sesuai, lakukan debugging baik di bagian koneksi maupun program hingga rangkaian berfungsi dengan baik.
10. Modifikasi (Opsional)
- Setelah percobaan berhasil, coba tampilkan pola atau karakter lain dengan mengubah kode atau menambahkan fitur seperti animasi.
download file [html]download file [dot matrix]download file [listing]download file [rangkaian]
Tidak ada komentar:
Posting Komentar