Tutorial Mikrokontroler 89S51: Contoh Program Komunikasi Data Serial UART


89s51_rs232

Komunikasi data serial UART merupakan salah satu fitur mikrokontroler 89S51 yang sangat penting karena dengan adanya fitur ini mikrokontroler dapat melakukan komunikasi data secara serial dengan  komputer, dengan sesama mikrokontroler, ataupun dengan piranti-piranti kontrol dan otomasi seperti PLC, Temperature Controller, Power Meter, dan lain-lain.

Gambar disamping adalah skematik rangkaian mikrokontroler AT89S51 dengan konverter tegangan TTL-to-RS232 menggunakan IC Maxim MAX232. Kapasitor C1, C2, C3, dan C4 adalah kapasitor elektrolit dengan nilai 1uF/25V atau 22uF/25V. Konektor J1 terhubung ke port serial RS232 komputer.

Untuk menguji rangkaian di atas, berikut adalah contoh program komunikasi data serial yang ditulis dalam bahasa C. Program dikompilasi menggunakan kompiler freeware SDCC. Untuk memudahkan proses pengembangan program, saya menggunakan IDE yang juga freeware yakni MIDE-51. Sedikit pengantar mengenai MIDE-51 beserta download link-nya dapat Anda baca pada postingan berikut ini: https://telinks.wordpress.com/2012/10/12/tutorial-mikrokontroler-89s51-mengenal-mide-51-development-tools-mcs-51-gratis-dari-opcube/

image 

LISTING PROGRAM

/*
  Contoh program komunikasi data serial
http://teknikelektrolinks.com
*/
#include <at89x51.h>
#include <stdio.h>

void delay(unsigned int n)
{
   unsigned int i, j;

   for (i=1;i<=n;i++) for (j=1;j<=10;j++);
}

void putchar (char c)
{
  while (!TI);
  TI = 0;
  SBUF = c;
}

char getchar(void)    // Get Character from UART
{
  if (RI!=0)
  {
    RI = 0;
    return SBUF;
  }
  else
    return -1;
}

void initseri()
{
   SCON = 0x52;
   TMOD = (TMOD & 0x0F) | 0x20;
   PCON = 0x80;
   TH1 = 0xFD;
   TR1 = 1;
   ES = 1;
   TI = 1;
   RI = 0;
   EA = 1;
}

/* PROGRAM UTAMA */
int main()
{
  int x = 0, c;

  initseri();

  printf_tiny("Minsys AT89S51\n\r");
  printf_tiny("Teknik Elektro Links\n\r");
  printf_tiny("http://teknikelektrolinks.com\n\r");

  while(1)
  {
    c = getchar();
    if (c!=-1)
    {
      printf_tiny("\n\rTerima data = %d\n\r", c);
    }
    P1 = ~P1;
    P2 = ~P2;
    P0 = ~P0;
    x++;
    printf_tiny("%d", x);
    delay(5000);
    if (x==10)
    {
      x = 0;
      printf_tiny("\n\r\n\r");
      printf_tiny("Minsys AT89S51\n\r");
      printf_tiny("Teknik Elektro Links\n\r");
      printf_tiny("http://teknikelektrolinks.com\n\r");
    }
  } 
}

Sebelum dapat digunakan, UART perlu diinisialisasi terlebih dahulu, termasuk juga fungsi TIMER1 untuk pembangkit clock baudrate. Pada contoh ini digunakan baudrate 2×9600=19200 pada sistem dengan kristal 11,0592MHz. Pada percobaan ini saya menggunakan kristal 22,1184MHz sehingga baudrate yang dihasilkan adalah 38400.

Berikut adalah screenshot program Hyperterminal yang berkomunikasi dengan mikrokontroler melalui port serial RS232.

89s51_rs232_hyperterminal

Inisialisasi UART dilakukan dengan memanggil fungsi initseri(). Selanjutnya mikro akan mengirimkan tulisan: “Minsys AT89S51… dst.”, dan menampilkan deretan angka mulai dari 1 hingga 10. Mikrokontroler akan terus-menerus mengirimkan data tersebut.

Selain mengirimkan data tulisan, mikrokontroler juga senantiasa mengecek apakah ada data yang diterima dari komputer. Jika mikrokontroler menerima data dari komputer, maka mikrokontroler akan mengirimkan tulisan: “Terima data = <data>”. <data> adalah nilai integer dari data karakter yang diterima oleh mikrokontroler.

Perlu diperhatikan juga bahwa dalam contoh program ini digunakan fungsi printf_tiny(), yakni fungsi untuk menampilkan atau mengeluarkan data karakter atau string ke standard output yang ditentukan, dalam hal ini adalah port serial UART. SDCC memiliki banyak jenis fungsi printf() yang dapat Anda pelajari pada dokumentasi SDCC.

telinks_ms89s51

Modul Minimum System 89S51 lengkap dengan rangkaian RS232 seperti di atas dapat Anda dapatkan di: http://teknikelektrolinks.com.

Semoga bermanfaat, selamat belajar dan selamat berkarya!

🙂

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , , , , ,
Ditulis dalam Elektronika, MCS51, Mikrokontroler, uCheap51

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Blog Stats
  • 1,298,748 hits

Bergabunglah dengan 2.490 pengikut lainnya

NEO STARDUINO
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5°C

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: