UTS uP Soal 2

[menuju akhir]

Soal 2. Rancanglah dan simulasikan suatu rangkaian aplikasi(Tidak boleh sama dengan kelompok lain) sederhana sistem minimum 8086



1. Tujuan [kembali]

  • Membuat rangkaian dot matrik 5x7 pada Proteus bertujuan untuk:

    1. 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.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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.

2. Alat dan Bahan [kembali]

  
  • Arduiono
  • LED
  • Capacitor

  • Resistor
  • dot matrik

3. Dasar Teori [kembali]

Dot Matrik

Dot matrik 8x8 adalah satu dot matrik yang berukuran 8 kolom x 8 baris susunan LED. Jadi 1 dot matrik terdapat 35 buah LED seperti gambar 22. Dengan dot matrik 8x8 dapat ditampilkan berbagai macam karakter angka, husuf maupun simbol.

Prinsip kerja dot matrik disini menggunakan proses scanning kolom. Scanning kolom adalah mengaktifkan setiap kolom secara bergantian.

Proses pergantian pengaktifan kolom dari kolom 1 sampai kolom 8 begitu cepat dan berulang-ulang sehingga misalkan huruf "A" yang terdiri dari 8 kolom tampak nyala secara bersamaan. Apabila proses scanning kolom dipelankan maka akan terlihat pergeseran penyalaan kolom per kolom.


Gambar 22 Rangkaian dasar 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 <mega32.h>
#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);}  
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);}
      if (urut==8){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);
kolom[8]=~(0x8F);

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);
  };
 }
}

Unggah kode ke Arduino UNO dalam Proteus dengan memilih file hex dari hasil compile di Arduino IDE.
7. Menambahkan Sumber Tegangan
  • 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.



Kaki reset pada AT Mega berguna untuk mengulangi proses pembacaan program pada AT Mega, (AT Mega terlebih dahulu diberi program yang sudah dibuat di CV AVR).

Kaki XTAL1 dan XTAL2 dihubungkan ke crystal yang gunanya untuk memberikan clock ekstenal yang stabil nilainya. dan kaki kaki pada PORT B dan PORT C digunakan sebagai output yang akan ditampilkan ke DOT Matrix 8x8. Jadi rangkaian tersebut sudah diisi dengan program untuk menampilkan angka desimal dimulai dari 9 sampai 0, dan setelah sampai ke 0 akan terjadi looping, mengulang dari angka 9 lagi.

c. Video 






download file [html]
download file [dot matrix]
download file [listing]
download file [rangkaian]


Tidak ada komentar:

Posting Komentar

MEMAHAMI ETIKA DI ERA DIGITAL

Menyelami Dunia Digital dengan Bertanggung Jawab: Memahami Etika Berkomunikasi di Era Digital (Lebih Detail) Memasuki Era Digital yang Pen...