Wednesday, November 29, 2017

10. TIMER

[KEMBALI KE MENU SEBELUMNYA]

APLIKASI TIMER PADA LED



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]

LED Berkedip terlihat menggunakan mikrokontroler AT89C51 sehingga memerlukan deklarasi register untuk mikrokontroler jenis AT89x51. Setelah mendeklarasi register, program akan mendeklarasi waktu 1 detik. Waktu tersebut berfungsi untuk waktu tunda. Kemudian, mikrokontroler akan mengeksekusi program utama.

Pada program utama, terdapat variabel karakter yang berfungsi menyimpan data 00 dan FF. Data tersebut akan dikeluarkan oleh mikrokontroler dengan menggunakan port 3. Intruksi while merupakan instruksi perulangan sehingga mikrokontroler akan mengeluarkan data yang disimpan oleh variabel karakter secara terus menerus.


C. Listing Program [kembali]

#include <at89x51.h>

void tunda(unsigned int j) //deklarasi 1 ms
{ TMOD=0x11;
  while(j) //kerjakan selama j tidak nol

  {
  TH0=0xfc; //isi TH0 dengan FC
  TL0=0x65; //isi TH0 dengan 65
  TR0=1; //timer 0 mulai mencacah
  while(!TF0);
   TF0=0; //bersihkan flag
   TR0=0; //hentikan mencacah
   j--; //kurangi nilai j dengan 1
  }
}

void main() //program utama
{
 while(1)
 {
 P3 = 0xff;            //led hidup semua
 tunda (1000); //selama 1 detik
 P3 = 0x00;            //led mati semua
 tunda (1000);    //selama 1 detik
 }
}


D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini


7. ADC

[KEMBALI KE MENU SEBELUMNYA]

APLIKASI ADC



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]

Program ini memerlukan deklarasi register untuk mikrokontroler jenis AT89x51. Setelah mendeklarasi register, program akan masuk ke dalam perogram utama. Pada program utama terdapat pendeklarasian variabel data1. Data1 berfungsi untuk mengambil nilai dari ADC0804. Selanjutnya, mode timer diaktifkan dan memanggil prosedur menyalakan LCD. LCD akan mengeluarkan data tulisan, lalu mikrokontroler membaca nilai ADC dan ditampilkan ke mikrokontroler.


C. Listing Program [kembali]

#include <at89x51.h>
#include "lcd.h"


idata at 0x50 unsigned int i;
idata at 0x51 unsigned int k;

void PowerOn()
{
    unsigned char inner, outer;

    for (outer = 0x00; outer < 0x10; outer++)
    {
        for (inner = 0x00; inner < 0xFF; inner++);
    }
 
    LCD_init();
 
    for (inner = 0; inner < 10; inner++)
     LCD_delay(2);
}

void send2lcd(unsigned char value)
{
 unsigned char buf = 0;

 buf = value & 0xF0;  /* Filter for high byte */
 buf = (buf>>4)|(0x30);  /* Convert  to ascii code */

 LCD_putc(buf);   /* Show on LCD */

 buf = value & 0x0F;  /* Filter for low byte */
 buf = buf | 0x30;        /* Convert to ascii code */

 LCD_putc(buf);   /* Show on LCD */
}

void tunda(unsigned int j)
{
  while(j)

  {
  TH0=0xfc;
  TL0=0x65;
  TR0=1;
  while(!TF0);
   TF0=0;
   TR0=0;
   j--;
  }
}

void main()
{
 int  data1;
 TMOD=0x11;
 PowerOn();

 LCD_row1(); LCD_puts("      HALO  ");
 LCD_row2(); LCD_puts("  TEKNIK  ");   
 LCD_delay(2);
 LCD_row1(); LCD_puts(" TEKNIK ELEKTRO");
 LCD_row2(); LCD_puts("  UNAND  ");


 while(1)
 {
 LCD_clear();
 LCD_row1(); LCD_puts("NILAI ADC");
 P3 = 0x00; 
 data1 = P0;
 P3 = 0x0F; 
 LCD_command(0xC6); /* Set LCD cursor at (2,6) */
 send2lcd(data1); /* Show month on LCD */ 
 tunda (1000);
 }
}


D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini


Monday, November 27, 2017

6.MOTOR STEPPER

[KEMBALI KE MENU SEBELUMNYA]

MENGGERAKKAN MOTOR STEPPER



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]

Rangkaian untuk memutar motor stepper dengan mikrokontroler digunakan driver motor stepper, yaitu ULN20032 yang dihubungkan ke port 2 dan motor stepper. Sehingga motor stepper akan dikendalikan dengan 2 saklar yang berfungsi untuk putar kekiri dan putar kekanan.

Pada program motor stepper memerlukan deklarasi register untuk mikrokontroler jenis AT89C51 . setelah mendeklarasi register, program akan masuk ke dalam program utama. Pada program utama terdapat data untuk menggerakkan motor stepper yang dihubungkan ke port 2 pada mikrokontroler. Pada programnya saat port 2 mengeluarkan data, maka data tersebut dikonversi oleh driver motor stepper (ULN20032) sehingga menggerakkan motor stepper berputar kekanan.


C. Listing Program [kembali]


#include <at89x51.h>

void tunda(unsigned int j)
{
  while(j)

  {
  TH0=0xfc;
  TL0=0x65;
  TR0=1;
  while(!TF0);
   TF0=0;
   TR0=0;
   j--;
  }
}

void main()
{
 TMOD=0x11;
 while(1)
 {
 P2 = 0x03;         
 tunda (100);
 P2 = 0x09;         
 tunda (100);
 P2 = 0x0C;       
 tunda (100);
 P2 = 0x06;
 tunda (100);
 }
}



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini


5. MOTOR SERVO

[KEMBALI KE MENU SEBELUMNYA]

MENGGERAKKAN MOTOR SERVO



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]

Program ini memerlukan deklarasi register untuk mikrokontroler jenis AT89C51. Setelah mendeklarasi register, program akan masuk ke dalam program utama. Pada program utama terdapat data untuk menggerakkan motor servo. Pada waktu port 1 mengeluarkan data selama 2 ms, motor servo akan bergerak ke kanan. Saat port 1 mengeluarkan data selama 1,75 ms maka motor servo terletak ditengah.


C. Listing Program [kembali]


#include <at89x51.h>

void tunda(unsigned int j)
{
  while(j)

  {
  TH0=0xfc;
  TL0=0x65;
  TR0=1;
  while(!TF0);
   TF0=0;
   TR0=0;
   j--;
  }
}

void main()
{
 TMOD=0x11;

 while(1)
 {
 P1 = 0x0f;         
 tunda (2);
 P1 = 0x00;         
 tunda (18);     
 tunda (1000);

 P1 = 0x0f;         
 tunda (1.75);
 P1 = 0x00;         
 tunda (18.25); 
 tunda (1000);
 }
} /* End main */



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini




Friday, November 24, 2017

4. DOT MATRIKS

[KEMBALI KE MENU SEBELUMNYA]

MENAMPILKAN KARAKTER



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]


Program Dot Matriks memerlukan deklarasi register untuk mikrokontroler jenis at89x51. Setelah mendeklarasi register, program akan mendeklarasikan waktu kurang lebih per 1 ms. Waktu tersebut berfungsi untuk waktu tunda.
Kemudian mikrokontroler akan mengeksekusi program utama. Di dalam program utama terdapat bebarapa variasi data untuk menapilkan angka 15 dan bentuk persegi pada Dot matriks. Data akan masuk ke port 1 yaitu pada pin 0, saat pin 0 bernilai 1 (aktif) maka mikrokontroler akan menjalankan tampilan angka 15 pada Dot Matriks. Dan pada saat pin 0 bernilai 0 (mati) maka mikrokontroler akan menjalankan tampilan bentuk persegi.

Tampilan angka 15 disusun dengan memberikan data pada baris dan kolom pada dot matriks dengan cara satu per satu pada baris dan kolom yang ingin dihidupkan. Begitu juga dengan tampilan bentuk persegi, yaitu pada data 1 dengan memberikan data pada baris pertama dan akhir, lalu data 2 diberikan data pada kolom pertama dan terakhir. Dengan menggunakan waktu tunda 5 ms, maka tampilan Dot Matris seolah – olah menampilkan bentuk persegi. Di dalam program utama terdapat pernyataan while(1) yang berfungsi melakukan looping terus menerus.

C. Listing Program [kembali]


#include <at89x51.h>         

void tunda1ms() 
{
 int i;
 for(i=0;i<150;i++);
}

void tunda(int n)
{
 int i;
 for (i=0; i<n;i++)
 tunda1ms();
}

void main()
{

while(1)
 {
   if (P1_0 == 1)
   {
P2 = 0x03;
    P3 = 0x20;
    tunda (5);

    P2 = 0x04;
    P3 = 0x27;
  tunda (5);

    P2 = 0x18;
    P3 = 0x20;
    tunda (5);

    P2 = 0x20;
    P3 = 0x3C;
    tunda (5);

    P2 = 0xC0;
    P3 = 0x20;
    tunda (5);
   }

   else
   {
P2 = 0x81;
    P3 = 0x00;
    tunda (5);

P2 = 0x7E;
    P3 = 0x7E;
    tunda (5);
   }
 }
}



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini




3. LCD

[KEMBALI KE MENU SEBELUMNYA]

MENAMPILKAN KARAKTER



A. Gambar Rangkaian [kembali]




B. Prinsip Kerja [kembali]


LCD memerlukan deklarasi register untuk mikrokontroler jenis AT89C51. Setelah mendeklarasi register, program akan mendeklarasi LCD dan masuk ke dalam program utama. Di dalam program utama, mikrokontroler akan berfungsi mengeluarkan data yang akan ditampilkan dengan LCD. Tampilan pada LCD sesuai dengan kondisi pada Port 1 apakah pada kondisi 1 (aktif)  atau 0 (mati) yang mana dihubungkan dengan switch sebagai input pada port 1.

C. Listing Program [kembali]


#include <at89x51.h> //pemanggilan header library AT89C51
#include "lcd.h" //pemanggilan header library LCD

void PowerOn() //fungsi PowerOn
{ unsigned char inner, outer;
  for (outer = 0x00; outer < 0x10; outer++)
  {
      for (inner = 0x00; inner < 0xFF; inner++);
  }
  LCD_init(); //pemanggilan fungsi LCD_init dari library LCD
  for (inner = 0; inner < 10; inner++)
     LCD_delay(1);
}

void send2lcd(unsigned char value) //fungsi send2lcd
{ unsigned char buf = 0;
  buf = value & 0xF0;
  buf = (buf>>4) | (0x30);
  LCD_putc(buf);
}

void main(void) //fungsi utama
{ PowerOn(); //pemanggilan fungsi PowerOn

 LCD_clear(); //LCD dibersihkan dari karakter sebelumnya
 while(1)
  {
    if (P1_0 == 0)
    { LCD_row1(); LCD_puts("    ALFARIZI    "); //Tampilan LCD baris 1
      LCD_row2(); LCD_puts("   1510952064   "); //Tampilan LCD baris 2
    }
 

    else if (P1_5 == 0)
    { LCD_row1(); LCD_puts("     JURUSAN    ");
      LCD_row2(); LCD_puts(" TEKNIK ELEKTRO ");
    }


    else
    { LCD_row1(); LCD_puts("      TEKAN     ");
      LCD_row2(); LCD_puts("    SWITCH..    ");
    }
  }
}



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini




2. Seven Segment

[KEMBALI KE MENU SEBELUMNYA]

MENAMPILKAN ANGKA



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]


Seven segmen memerlukan deklarasi register untuk mikrokontroler jenis AT89x51. Setelah dideklarasi, program akan masuk ke dalam program utama. Di dalam program utama, mikrokontroler akan mengeluarkan data berupa beberapa angka. Data tersebut dikeluarkan oleh mikrokontroler dengan menggunakan port 3. Kemudian, mikrokontroler memanggil tunda 1 detik lalu memanggil data angka tersebut. Intruksi while merupakan intruksi perulangan sehingga mikrokontroler akan  mengeluarkan data secara terus menerus.

C. Listing Program [kembali]


#include <at89x51.h> //deklarasi register AT89c51

void tunda1ms() //fungsi tunda 1 milidetik
{ int i;
  for (i=0; i<100; i++);
}

void tunda(int n) //fungsi tunda n milidetik
{ int i;
  for (i=0; i<n; i++)
  tunda1ms();
}


void main() //fungsi utama
{
while(1)
{
  if (P1_0 == 0)
  {
  P3=0xf9; tunda(1000);  //angka 1
  P3=0x24; tunda(1000); //angka 2
  }
  else if (P1_1 == 0)
  { P3=0x30; tunda(1000); // angka 3
    P3=0x19; tunda(1000); // angka 4
  }
  else
  {P3 =0x00; // angka 8
  }
}
}



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini




1. LED

[KEMBALI KE MENU SEBELUMNYA]

RUNNING LED



A. Gambar Rangkaian [kembali]



B. Prinsip Kerja [kembali]


Program Led Berjalan memerlukan deklarasi register untuk mikrokontroler jenis at89x51. Setelah mendeklarasi register, program akan mendeklarasikan waktu kurang lebih per 1 ms. Waktu tersebut berfungsi untuk waktu tunda.

Kemudian mikrokontroler akan mengeksekusi program utama. Di dalam program utama terdapat variabel karakter yang berfungsi menyimpan data 0x01. Data tersebut akan dikeluarkan oleh mikrokontroler dengan menggunakan port 2. Kemudian mikrokontroler akan menjalankan operasi led berjalan. Diantara operasi led berjalan terdapat waktu tunda kurang lebih 100 ms. Di dalam program utama terdapat pernyataan while(1) yang berfungsi melakukan looping terus menerus.

C. Listing Program [kembali]


#include <at89x51.h>

void feel1ms()
{
  int i;
  for (i=0; i<150; i++);
}

void feel(int n)
{
  int i;
  for (i=0; i<n; i++)
  feel1ms();
}

void main()
{
  volatile unsigned char a=0x82;
  
  while(1)
  {
   if (P1_0 == 0)
   {
   a=((a>>7)|(a<<1));
   feel(100);
   P2=a;
   }

   else 
   { P2 = 0xaa;
   }
  }
}



D. Flowchart [kembali]




E. Link Download [kembali]

     File Program silahkan download disini
     File Rangkaian silahkan download disini
     HTML silahkan download disini