Archive

Archive for the ‘MCS51’ Category

Sistem Minimum Mikrokontroler Dengan Bootloader – Praktis, Tak Perlu Lagi ISP Programmer/Downloader

November 2, 2012 1 comment

Memiliki sistem minimum sebuah mikrokontroler dalam proses belajar mikrokontroler mutlak diperlukan. Meskipun kita bisa menggunakan software simulator yang sangat canggih untuk belajar mikrokontroler tanpa hardware, namun dengan praktek secara langsung menggunakan hardware yang sesungguhnya dapat memberikan pengalaman yang baik yang nantinya akan dapat membantu kita dalam pengaplikasian mikrokontroler secara riil.

Pada tulisan ini akan dibahas 3 buah sistem minimum yang dapat digunakan untuk teman belajar mikrokontroler maupun untuk aplikasi sistem berbasis mikrokontroler. Sistem minimum yang dimaksud adalah: Starduino Board, MinSys ATmega8535/16/32, dan MinSys MCS-51 berbasis mikrokontroler STC-51 tipe STC11F32XE.

Ketiganya adalah sistem minimum yang dilengkapi program bootloader sehingga tidak diperlukan lagi rangkaian ISP Downloader/Programmer.

telinks_starduino

STARDUINO BOARD
Starduino Board adalah sistem minimum AVR ATmega8 dengan bootloader Arduino sehingga board ini bisa diprogram langsung menggunakan program IDE Arduino melalui port serial RS232.

Starduino Board memiliki peta I/O yang sama dengan Arduino Duemilanove/UNO. Jadi untuk program-program Arduino bisa dijalankan menggunakan board ini. Akan tetapi tidak semua program yang berjalan di Arduino Duemilanove/UNO bisa berjalan di Starduino. Semata karena Starduino hanya menggunakan ATmega8 sedangkan Arduino Duemilanove/UNO menggunakan ATmega328. Namun demikian, ATmega8 bisa diganti dengan ATmega168 atau ATmega328, sehingga Starduino Board tidak lagi berbeda dengan Arduino Duemilanove/UNO.

Starduino Board memiliki konektor pin-pin I/O berupa deretan header tunggal (male) yang siap dihubungkan ke modul-modul antarmuka pendukung seperti sensor, keypad, LCD, seven-segment, dan lain-lain. Header tunggal (male) dipilih karena konektor ini dapat terhubung dengan sangat baik jika dipasangkan dengan black-housing.

Starduino Board membutuhkan tegangan suplai 7,5-12V DC. Konektor tegangan suplai adalah sebuah terminal-screw sehingga kuat dan tak mudah goyah. Starduino Board juga memiliki 5 buah power-port 5V yang dapat digunakan untuk mensuplai rangkaian-rangkaian pendukung maupun breadboard.

Berikut adalah screenshot program Arduino 1.0.1 ketika meng-upload program pengujian Starduino melalui port serial RS232 (COM1) dan screenshot terminal COM1.

starduino_tester_pde starduino_tester_pde_com1

Starduino Board merupakan pilihan tepat jika Anda membutuhkan sistem minimum dengan jumlah I/O memadai, memori program yang cukup dan tidak memerlukan ISP Programmer. Dengan IDE Arduino, Anda dapat mengubah Starduino Board menjadi prototipe sistem apapun dengan mudah dan handal. Handal, karena library Arduino telah teruji secara internasional!

Untuk informasi harga dan pemesanan Starduino Board, silakan berkunjung ke situs kami di: http://teknikelektrolinks.com.

telinks_msmega MSMEGA (ATmega8535/16/32)
Sistem minimum berikutnya adalah sistem minimum mikrokontroler AVR ATmega8535, ATmega16, atau ATmega32. Seperti terlihat pada foto di samping, sistem minimum ini dilengkapi dengan port serial RS232, 8 buah LED, 3 buah push-button, konektor header tunggal untuk antarmuka I/O, dan port ISP.

Sistem minimum ini juga memiliki bootloader sehingga tidak diperlukan lagi rangkaian ISP Programmer/Downloader. Program bootloader yang digunakan adalah buatan The chip45 GmbH & Co. KG (www.chip45.com). Untuk meng-upload file program mikrokontroler (.HEX) digunakan program chip45boot2 GUI.

Kelebihan bootloader buatan chip45 adalah program menggunakan algoritma autobaudrate sehingga bootloader ini dapat digunakan dengan clock sesuai kebutuhan kita. Pada board MSMEGA digunakan kristal 11.0592 MHz untuk mendapatkan kesempurnaan transfer data serial UART.

Berikut adalah screenshot program chip45boot2 GUI ketika meng-upload file program m16.hex dan screenshot program Hyperterminal pada port COM1 dengan baudrate 9600.

chip45boot2_gui

msmega_com1

Adapun program pengujian sistem minimum MSMEGA di atas adalah sebagai berikut:

m16_c

Program pengujian di atas di-compile menggunakan AVR-GCC dengan perintah-perintah sebagai berikut:

C:\WinAVR\bin>avr-gcc -g -Os -mmcu=atmega16 -c m16.c uart.c
C:\WinAVR\bin>avr-gcc -g -mmcu=atmega16 -o m16.elf m16.o uart.o
C:\WinAVR\bin>avr-objcopy -j .text -j .data -O ihex m16.elf m16.hex

FYI, program ditulis menggunakan editor teks Cream 0.43 (Vim 7.3.107). Program dapat Anda download dari: http://cream.sourceforge.net.

Untuk informasi harga dan pemesanan sistem minimum ATmega8535/16/32, silakan mengunjungi situs kami di: http://teknikelektrolinks.com.

telinks_stc51

MINSYS STC-51
STC-51 adalah produk mikrokontroler buatan Cina berarsitektur MCS-51 dengan berbagai macam pengembangan. STC-51 memiliki tipe mikrokontroler yang beraneka-ragam. Mikrokontroler STC-51 selain lebih cepat dibandingkan dengan mikrokontroler AT89S51/52, juga memiliki fitur-fitur seperti ADC Internal, PWM Generator, dan lain-lain seperti layaknya mikrokontroler PIC dan AVR.

Jadi, jika Anda pengguna mikrokontroler seri AT89S51/52, maka STC-51 merupakan pilihan tepat untuk pengembangan fitur sistem tanpa harus mempelajari lagi pemrograman mikrokontroler dari awal. Dan jika Anda seorang pemula yang ingin mempelajari mikrokontroler MCS-51, sistem minimum ini sangat cocok karena mikrokontroler yang digunakan (STC11F32XE) telah memiliki bootloader sehingga dapat diprogram melalui port serial RS232. Jadi tidak perlu lagi ISP Programmer/Downloader.

Untuk meng-upload file .HEX atau file .BIN, digunakan program STC-ISP sebagai berikut:

stc_isp

Berikut adalah program pengujian sistem minimum MCS-51 berbasis mikrokontroler STC11F32XE yang ditulis menggunakan M-IDE Studio for MCS-51 dengan kompiler SDCC.

mide51_stc51

Dan berikut ini adalah screenshot program Hyperterminal yang terhubung dengan sistem minimum STC11F32XE melalui port serial COM1.

hyperterminal_stc51

Tipe mikrokontroler STC-51 yang dapat digunakan selain tipe 11FxxXE adalah STC89C52RC, STC12C5AxxS2, dan tipe mikrokontroler 40-pin PDIP yang lain asalkan kompatibel dengan pin-pin AT89S51/52.

Dengan mikrokontroler STC-51, kemampuan sistem minimum menjadi semakin hebat. Tak hanya kaya fitur layaknya mikrokontroler PIC dan AVR, kecepatan mikrokontroler STC-51 mencapai 12 kali lipat dari mikrokontroler AT89C51.

Jika Anda berminat, silakan mengunjungi situs kami di: http://teknikelektrolinks.com untuk mengetahui informasi harga dan prosedur pemesanannya.

Selamat belajar dan selamat berkarya!

:)

Tutorial Mikrokontroler 89S51: Mengenal MIDE-51 Development Tools MCS-51 GRATIS Dari OpCUBE

October 12, 2012 Leave a comment

mide51

MIDE-51 adalah sebuah paket program IDE untuk mikrokontroler MCS-51 yang terintegrasi dengan kompiler C MCS-51, assembler MCS-51, dan juga simulator MCS-51.

Untuk kompiler C, MIDE-51 menggunakan program SDCC dan untuk assembler, MIDE-51 menggunakan ASEM51. Baik SDCC maupun ASEM51, keduanya termasuk program-program terbaik yang tersedia secara gratis (freeware). ASEM51 adalah assembler yang pernah digunakan untuk memprogram Mobot Mars!

Untuk simulator, MIDE-51 mengintegrasikan program TS Controls Emulator 8051 dan JSim51. Meskipun kedua simulator ini dibuat pada tahun 1998 dan 1999, namun masih layak kita gunakan dalam proses debugging. Software TS Controls Emulator 8051 adalah simulator yang dulu menemani saya bertahun-tahun dalam mempelajari pemrograman 8051, termasuk juga saya gunakan dalam pekerjaan secara profesional.

MIDE-51 menganut sistem single-file project, jadi dalam pembuatan program kita hanya perlu membuat sebuah file program saja, sehingga sangatlah cocok digunakan untuk pemula. Namun demikian, bukan berarti MIDE-51 tidak layak digunakan untuk membuat program 8051 yang kompleks.

Membuat Program BLINK.C

mide51_new

Sebagai contoh, mari kita membuat program BLINK.C. Program ini sederhana saja, hanya mengubah-ubah kondisi logika PORT1 dari logika HIGH ke logika LOW dan sebaliknya secara terus-menerus dengan interval tertentu. Atau biasa disebut sebagai blinking led kalau pada pin PORT1 kita berikan rangkaian LED.

Langkah pertama adalah memilih menu File –> New atau bisa juga dilakukan dengan menekan tombol shortcut Ctrl-N.

Selanjutnya, MIDE-51 akan membuka window editor baru yang belum bertitel apapun (Untitled).

Langkah selanjutnya adalah mengetik listing program berikut ini:

/* BLINK.C */

#include <at89x51.h>

void delay(int n)
{
  int i, j;
  for (i=1;i<=n;i++)
    for (j=1;j<=10;j++);
}

/* PROGRAM UTAMA */
int main(void)
{
  while(1)
  {
    P1 = 0;
    delay(5000);
    P1 = 0xff;
    delay(5000);
  }
}

Setelah selesai mengetik program di atas, simpan dengan nama blink.c dan kompilasi dengan memilih menu Build –> Build and Sim.

mide51_save      mide51_build

Selesai melakukan kompilasi, MIDE-51 akan mengeksekusi program TS Controls Emulator 8051 dan otomatis membuka file hexa hasil kompilasi SDCC sebagai berikut:

image

Untuk melakukan simulasi (debugging), terdapat beberapa perintah yang dapat kita gunakan yakni:

  • Step Into Next Instruction (F11)
  • Step Over CALL (F10)
  • Step Over CALL/DJNZ (Shift-F10)
  • Reset (Ctrl-Shift-F5)

Dengan perintah-perintah tersebut kita dapat mengikuti jalannya program dengan tujuan agar kita dapat lebih memahami bagaimana program mikrokontroler bekerja. TS Controls Emulator 8051 juga dapat mensimulasikan kerja TIMER dan juga INTERRUPT. Memang bukan software emulator yang ‘DAHSYAT’, tapi layak untuk digunakan.

Jika Anda mengikuti jalannya program assembler pada simulator, nantinya akan terlihat perubahan nilai pada register P1 (PORT1) yang berubah-ubah dari FF ke 00 dan sebaliknya. Nilai register ini dapat di lihat pada Window SF Registers.

Untuk simulator JSIM-51 dapat Anda coba dan bandingkan sendiri.

Btw, File hexa hasil kompilasi program dapat langsung diprogram ke memori mikrokontroler menggunakan rangkaian dan program downloader ISP untuk dilihat hasil kerjanya secara langsung menggunakan board mikrokontroler 89S51.

Sekian perkenalan singkat kita dengan MIDE-51. Anda dapat mengunduh paket program MIDE-51 menggunakan download link berikut ini.

Download MIDE-51
( ~4 MB )

Selamat belajar dan selamat berkarya!

:)

Tutorial Mikrokontroler 89S51: Contoh Program Komunikasi Data Serial UART

October 9, 2012 Leave a comment

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: http://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 = 0×52;
   TMOD = (TMOD & 0x0F) | 0×20;
   PCON = 0×80;
   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!

:)

Follow

Get every new post delivered to your Inbox.

Join 153 other followers