Archive for the ‘Development System’ Category

DASAR PEMROGRAMAN BAHASA C PADA MIKROKONTROLER (2)

Tuesday, February 25th, 2020

Variabel, Tipe Data dan Konstanta

Variabel, tipe data, konstanta

Variabel, tipe data, konstanta

Gambar di atas adalah cara penulisan variable, setiap variable terlebih dahulu dituliskan dengan diawali tipe data dari variable dan kemudian dilanjutkan dengan nama variable. Variabel juga dapat langsung diberi nilai awal.

Hal yang perlu diperhatikan dalam membuat variable adalah:

- Jangan menggunakan angka di bagian awal variable

- Jangan menggunakan kata-kata khusus yang sudah digunakan pada bahasa C seperti if, void, for dll

- Penulisan huruf kecil dan besar sifatnya sensitive sehingga variable yang tertulis dengan huruf besar akan berbeda dengan variable yang tertulis dengan huruf kecil.

- Disarankan menggunakan underscore untuk variable yang lebih dari satu kata

Contoh program yang menggunakan variable adalah sebagai berikut

#include <avr/io.h>

Int main (){

Unsigned char data_port;

data_port=PINB;

Artinya data pada Port B diambil dan diisikan ke variable data_port yang tipenya unsigned char.

Tipe data dalam Bahasa C

Tipe Data

Ukuran

Panjang

Contoh

Char

1 byte

-128 – 127

A’,'a’,'3′

int

2 byte

– 32768 – 32767

32, 256, 100

float

4 byte

1.2E-38 – 3.4E+38

3.5, 5.6, 7.5

double

8 byte

2.3E-308 – 1.7E+308

2.56, 3.57, 4.12

void

tidak ada data

array

tergantung nilai ukuran array

Konstanta dalam Bahasa C

Konstanta adalah sebuah variable yang sifatnya permanen dan tidak dapat diubah-ubah. Terdapat dua cara untuk mendefinisikan konstanta.

  1. Menggunakan Define

#define BAUD 115200

#define MYUBRR FOSC/8/BAUD-1

Di sini konstanta BAUD diisi dengan 115200 dan MYUBRR diisi dari persamaan MYUBRR=FOSC/8/BAUD-1

2. Menggunakan Const

Const data_port = 0×55;

Const menggunakan “;” sebagai penutup

Operator dalam Bahasa C

1. Operator Aritmatika:
Penjumlahan +
Pengurangan -
Perkalian *
Pembagian /
Sisabagi %
2. Operator Penugasan:
Pengisian Nilai =
Pengisian dan Penambahan +=
Pengisian dan Pengurangan -=
Pengisian dan Perkalian *=
Pengisian dan Pembagian /=
Pengisian dan SisaBagi %=
Pengisian dan Shift Left <<=
Pengisian dan Shift Right >>=
Pengisian dan bitwise AND &=
Pengisian dan bitwise OR |=
Pengisian dan bitwise XOR ^=
2. Operator Pembanding
Lebih Besar >
Lebih Kecil <
Sama dengan ==
Tidak sama dengan !=
Lebih Besar sama dengan >=
Lebih Kecil sama dengan <=
3. Operato Logika
Logika AND &&
Logika OR ||
Negasi/kebalikan !
4. Operator Bitwise
AND &
OR |
XOR ^
Not/komplemen ~
Left Shift <<
Right Shift >>
5. Operator Lain lain
Alamat Memori & untuk mengambil alamat memori
Pointer * untuk membuat pointer
Ternary ?: untuk membuat kondisi
Increment ++ untuk menambah 1
Decrement untuk mengurangi 1

Paulus Andi Nalwan, DELTA ELECTRONIC

DASAR PEMROGRAMAN BAHASA C PADA MIKROKONTROLER

Tuesday, February 25th, 2020

1. Struktur Dasar Program C

Struktur dasar Program C terdiri dari bagian-bagian berikut:

  • Bagian include
  • Bagian fungsi
  • Bagian Blok Main
  • Bagian Komentar
Struktur Data Bahasa C

Struktur Data Bahasa C

Bagian Include

Bagian include biasanya terdiri dari header file, yaitu sebuah file yang berisi fungsi-fungsi yang sering dipakai dan dikelompokkan pada file-file tertentu agar dapat digunakan oleh program C yang lain

Bagian deklarasi

Merupakan bagian yang mendeklarasikan label menjadi konstanta-konstanta tertentu di mana konstanta tersebut bisa berupa nilai atau dapat juga berupa sebuah kalimat.

Contoh:

#define TXD_OUT            1                                                              //label TXD_OUT didefinisikan sebagai nilai 1

#define TXD_HIGH          PORTD|=(1<<TXD_OUT)            //label TXD_HIGH didefinisikan menjadi kalimat

//PORTD|=(1<<TXD_OUT) sehingga dengan me

//nuliskan TXD_HIGH berarti sama dengan

//menuliskan syntax PORTD|=(1<<TXD_OUT)

Bagian Fungsi

Merupakan bagian dari program yang akan sering digunakan dan dipanggil berulang-ulang sehingga sebaiknya ditulis sebagai fungsi agar dapat dipanggil setiap saat tanpa harus menuliskan ulang isinya.

Contoh di atas adalah fungsi Inisialisasi USART . Nama Fungsi diawali dengan void artinya fungsi tersebut tidak memiliki nilai yang harus dikembalikan. Di depan nama fungsi terdapat deklarasi variable yaitu unsigned int baud di mana variable tersebut harus diisi nilai tertentu sebelum fungsi dipanggil. Dalam fungsi USART_INIT ini  variable baud diisi dengan nilai MYUBRR terlebih dahulu sebelum dipanggil, sehingga pada saat fungsi dijalankan variable Baud telah terisi dengan nilai MYUBRR.

Untuk fungsi yang membutuhkan nilai yang harus dikembalikan contohnya adalah sebagai berikut.

unsigned char USART_Receive (void){

while(!(UCSRA&(1<<RXC)));

return(UDR);

}

Nilai yang akan dikembalikan ditentukan dalam bentuk unsigned char sehingga nama fungsi akan diawali dengan tipe tersebut. Karena tidak membutuhkan nilai yang harus dibawa saat dipanggil maka di sebelah kanan nama fungsi diberikan (void) yang berarti kosong.

Setelah fungsi dijalankan, di bagian akhir ditambahkan return (UDR) artinya nilai yang dikembalikan saat fungsi ini selesai dijalankan adalah data yang tersimpan pada register UDR, di mana pada ATMega8535 nilai ini adalah nilai yang diterima pada register data USART.

Blok Main

Merupakan bagian dari jalannya program utama di mana bagian adalah tempat kita menuliskan program. Bagian ini diawali dengan { dan diakhiri dengan }.

Bagian Komentar

Bagian ini adalah bagian yang menyimpan catatan dari pemrogram agar dapat dengan mudah diingat cara kerja pada program tersebut. Bagian ini diawali dengan tanda // yang merupakan indikasi sebagai bagian yang tidak perlu diproses saat compile.

2. Variabel, tipe data dan konstanta

Variabele, tipe data dan konstanta

Variabele, tipe data dan konstanta

Gambar di atas adalah cara penulisan variable, setiap variable terlebih dahulu dituliskan dengan diawali tipe data dari variable dan kemudian dilanjutkan dengan nama variable. Variabel juga dapat langsung diberi nilai awal.

Hal yang perlu diperhatikan dalam membuat variable adalah:

- Jangan menggunakan angka di bagian awal variable

- Jangan menggunakan kata-kata khusus yang sudah digunakan pada bahasa C seperti if, void, for dll

- Penulisan huruf kecil dan besar sifatnya sensitive sehingga variable yang tertulis dengan huruf besar akan berbeda dengan variable yang tertulis dengan huruf kecil.

- Disarankan menggunakan underscore untuk variable yang lebih dari satu kata

Contoh program yang menggunakan variable adalah sebagai berikut

#include <avr/io.h>

Int main (){

Unsigned char data_port;

data_port=PINB;

Artinya data pada Port B diambil dan diisikan ke variable data_port yang tipenya unsigned char.

Tipe data dalam Bahasa C

Tipe Data

Ukuran

Panjang

Contoh

Char

1 byte

-128 – 127

A’,'a’,'3′

int

2 byte

– 32768 – 32767

32, 256, 100

float

4 byte

1.2E-38 – 3.4E+38

3.5, 5.6, 7.5

double

8 byte

2.3E-308 – 1.7E+308

2.56, 3.57, 4.12

void

tidak ada data

array

tergantung nilai ukuran array

Konstanta dalam Bahasa C

Konstanta adalah sebuah variable yang sifatnya permanen dan tidak dapat diubah-ubah. Terdapat dua cara untuk mendefinisikan konstanta.

1. Menggunakan define

#define BAUD 115200

#define MYUBRR FOSC/8/BAUD-1

Di sini konstanta BAUD diisi dengan 115200 dan MYUBRR diisi dari persamaan MYUBRR=FOSC/8/BAUD-1

2. Menggunakan const

Const data_port = 0×55;

Const menggunakan “;” sebagai penutup

Operator dalam Bahasa C

1. Operator Aritmatika:

Penjumlahan                     +

Pengurangan                     -

Perkalian                             *

Pembagian                         /

Sisabagi                                               %

2. Operator Penugasan:

Pengisian Nilai                 =

Pengisian dan Penambahan       +=

Pengisian dan Pengurangan       -=

Pengisian dan Perkalian                               *=

Pengisian dan Pembagian           /=

Pengisian dan SisaBagi                  %=

Pengisian dan Shift Left                                <<=

Pengisian dan Shift Right             >>=

Pengisian dan bitwise AND         &=

Pengisian dan bitwise OR            |=

Pengisian dan bitwise XOR         ^=

3. Operator Pembanding

Lebih Besar                                        >

Lebih Kecil                                          <

Sama dengan                                     ==

Tidak sama dengan                         !=

Lebih Besar sama dengan            >=

Lebih Kecil sama dengan              <=

4. Operato Logika

Logika AND                                         &&

Logika OR                                            ||

Negasi/kebalikan                            !

5. Operator Bitwise

AND                                                       &

OR                                                          |

XOR                                                       ^

Not/komplemen                             ~

Left Shift                                             <<

Right Shift                                           >>

6. Operator Lain lain

Alamat Memori                                                &             untuk mengambil alamat memori

Pointer                                                 *              untuk membuat pointer

Ternary                                                                ?:            untuk membuat kondisi

Increment                                           ++           untuk menambah 1

Decrement                                         —             untuk mengurangi 1

Paulus Andi Nalwan, DELTA ELECTRONIC

Struktur dasar Program C terdiri dari bagian-bagian berikut:

- Bagian include

- Bagian fungsi

- Bagian Blok Main

- Bagian Komentar

Bagian Include

Bagian include biasanya terdiri dari header file, yaitu sebuah file yang berisi fungsi-fungsi yang sering dipakai dan dikelompokkan pada file-file tertentu agar dapat digunakan oleh program C yang lain

Bagian deklarasi

Merupakan bagian yang mendeklarasikan label menjadi konstanta-konstanta tertentu di mana konstanta tersebut bisa berupa nilai atau dapat juga berupa sebuah kalimat.

Contoh:

#define TXD_OUT 1 //label TXD_OUT didefinisikan sebagai nilai 1

#define TXD_HIGH PORTD|=(1<<TXD_OUT) //label TXD_HIGH didefinisikan menjadi kalimat

//PORTD|=(1<<TXD_OUT) sehingga dengan me

//nuliskan TXD_HIGH berarti sama dengan

//menuliskan syntax PORTD|=(1<<TXD_OUT)

Bagian Fungsi

Merupakan bagian dari program yang akan sering digunakan dan dipanggil berulang-ulang sehingga sebaiknya ditulis sebagai fungsi agar dapat dipanggil setiap saat tanpa harus menuliskan ulang isinya.

Contoh di atas adalah fungsi Inisialisasi USART . Nama Fungsi diawali dengan void artinya fungsi tersebut tidak memiliki nilai yang harus dikembalikan. Di depan nama fungsi terdapat deklarasi variable yaitu unsigned int baud di mana variable tersebut harus diisi nilai tertentu sebelum fungsi dipanggil. Dalam fungsi USART_INIT ini variable baud diisi dengan nilai MYUBRR terlebih dahulu sebelum dipanggil, sehingga pada saat fungsi dijalankan variable Baud telah terisi dengan nilai MYUBRR.

Untuk fungsi yang membutuhkan nilai yang harus dikembalikan contohnya adalah sebagai berikut.

unsigned char USART_Receive (void){

while(!(UCSRA&(1<<RXC)));

return(UDR);

}

Nilai yang akan dikembalikan ditentukan dalam bentuk unsigned char sehingga nama fungsi akan diawali dengan tipe tersebut. Karena tidak membutuhkan nilai yang harus dibawa saat dipanggil maka di sebelah kanan nama fungsi diberikan (void) yang berarti kosong.

Setelah fungsi dijalankan, di bagian akhir ditambahkan return (UDR) artinya nilai yang dikembalikan saat fungsi ini selesai dijalankan adalah data yang tersimpan pada register UDR, di mana pada ATMega8535 nilai ini adalah nilai yang diterima pada register data USART.

Blok Main

Merupakan bagian dari jalannya program utama di mana bagian adalah tempat kita menuliskan program. Bagian ini diawali dengan { dan diakhiri dengan }.

Bagian Komentar

Bagian ini adalah bagian yang menyimpan catatan dari pemrogram agar dapat dengan mudah diingat cara kerja pada program tersebut. Bagian ini diawali dengan tanda // yang merupakan indikasi sebagai bagian yang tidak perlu diproses saat compile.

2. Variabel, Tipe Data dan Kontanta

Gambar di atas adalah cara penulisan variable, setiap variable terlebih dahulu dituliskan dengan diawali tipe data dari variable dan kemudian dilanjutkan dengan nama variable. Variabel juga dapat langsung diberi nilai awal.

Hal yang perlu diperhatikan dalam membuat variable adalah:

- Jangan menggunakan angka di bagian awal variable

- Jangan menggunakan kata-kata khusus yang sudah digunakan pada bahasa C seperti if, void, for dll

- Penulisan huruf kecil dan besar sifatnya sensitive sehingga variable yang tertulis dengan huruf besar akan berbeda dengan variable yang tertulis dengan huruf kecil.

- Disarankan menggunakan underscore untuk variable yang lebih dari satu kata

Contoh program yang menggunakan variable adalah sebagai berikut

#include <avr/io.h>

Int main (){

Unsigned char data_port;

data_port=PINB;

Artinya data pada Port B diambil dan diisikan ke variable data_port yang tipenya unsigned char.

Tipe data dalam Bahasa C

Tipe Data

Ukuran

Panjang

Contoh

Char

1 byte

-128 – 127

A’,'a’,'3′

int

2 byte

- 32768 – 32767

32, 256, 100

float

4 byte

1.2E-38 – 3.4E+38

3.5, 5.6, 7.5

double

8 byte

2.3E-308 – 1.7E+308

2.56, 3.57, 4.12

void

tidak ada data

array

tergantung nilai ukuran array

Konstanta dalam Bahasa C

Konstanta adalah sebuah variable yang sifatnya permanen dan tidak dapat diubah-ubah. Terdapat dua cara untuk mendefinisikan konstanta.

1. Menggunakan define

#define BAUD 115200

#define MYUBRR FOSC/8/BAUD-1

Di sini konstanta BAUD diisi dengan 115200 dan MYUBRR diisi dari persamaan MYUBRR=FOSC/8/BAUD-1

2. Menggunakan const

Const data_port = 0×55;

Const menggunakan “;” sebagai penutup

Operator dalam Bahasa C

1. Operator Aritmatika:

Penjumlahan +

Pengurangan -

Perkalian *

Pembagian /

Sisabagi %

2. Operator Penugasan:

Pengisian Nilai =

Pengisian dan Penambahan +=

Pengisian dan Pengurangan -=

Pengisian dan Perkalian *=

Pengisian dan Pembagian /=

Pengisian dan SisaBagi %=

Pengisian dan Shift Left <<=

Pengisian dan Shift Right >>=

Pengisian dan bitwise AND &=

Pengisian dan bitwise OR |=

Pengisian dan bitwise XOR ^=

3. Operator Pembanding

Lebih Besar >

Lebih Kecil <

Sama dengan ==

Tidak sama dengan !=

Lebih Besar sama dengan >=

Lebih Kecil sama dengan <=

4. Operato Logika

Logika AND &&

Logika OR ||

Negasi/kebalikan !

5. Operator Bitwise

AND &

OR |

XOR ^

Not/komplemen ~

Left Shift <<

Right Shift >>

6. Operator Lain lain

Alamat Memori & untuk mengambil alamat memori

Pointer * untuk membuat pointer

Ternary ?: untuk membuat kondisi

Increment ++ untuk menambah 1

Decrement untuk mengurangi 1

Percabangan dalam Bahasa C

1. Percabangan if

Contoh flowchartnya adalah sebagai berikut

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){ //apabila data serial = ‘0’ maka

USART_Transmit(‘O’); //jalankan blok instruksi yang

USART_Transmit(‘F’); //mengirimkan ‘OFF’ ke port

USART_Transmit(‘F’); //serial

while(1); //

}

USART_Transmit(‘O’); //apabila data serial =buka ‘0’

USART_Transmit(‘N’); //maka kirim ON

while(1);

}

2. Percabangan if else

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘N’);

}

unsigned char tabel_data [16]={0×0D,0×0A,’t',’o',’m',’b',’o',’l',’ ‘,’s’,'e’,'l’,'e’,’s’,'a’,'i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Pada contoh di atas artinya apabila data serial = ‘0’ maka kirim “OFF” dan akhiri dengan “tombol selesai” namun else apabila ‘1’ maka kirim “ON” dan akhiri dengan “tombol selesai”

3. Percabangan if else if

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

}

else if (data_serial==’1′){

USART_Transmit(‘O’);

USART_Transmit(‘N’);

}

else if (data_serial==’2′)

USART_Transmit(‘?’);

else

USART_Transmit(‘*’);

unsigned char tabel_data [16]={0×0D,0×0A,’t',’o',’m',’b',’o',’l',’ ‘,’s’,'e’,'l’,'e’,’s’,'a’,'i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

4. Percabangan switch case

Percabangan ini hanyalah merupakan bentuk lain dari if else if, hanya saja pada setiap case harus diakhiri dengan break kecuali di bagian akhir yang merupakan default

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

}

else if (data_serial==’1′){

USART_Transmit(‘O’);

USART_Transmit(‘N’);

}

else if (data_serial==’2′)

USART_Transmit(‘?’);

else

USART_Transmit(‘*’);

unsigned char tabel_data [16]={0×0D,0×0A,’t',’o',’m',’b',’o',’l',’ ‘,’s’,'e’,'l’,'e’,’s’,'a’,'i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

5. Percabangan nested

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

data_serial=USART_Receive();

if (data_serial==’A'){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

USART_Transmit(‘ ‘);

USART_Transmit(‘A’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

USART_Transmit(‘ ‘);

USART_Transmit(‘B’);

}

}

else{

data_serial=USART_Receive();

if (data_serial==’A'){

USART_Transmit(‘O’);

USART_Transmit(‘N’);

USART_Transmit(‘ ‘);

USART_Transmit(‘A’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘N’);

USART_Transmit(‘ ‘);

USART_Transmit(‘B’);

}

}

unsigned char tabel_data [16]={0×0D,0×0A,’t',’o',’m',’b',’o',’l',’ ‘,’s’,'e’,'l’,'e’,’s’,'a’,'i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Perulangan dalam C

1. Perulangan For

int main (void){

USART_INIT(MYUBRR);

for (int i=0;i<5;i++)

USART_Transmit(i);

while(1);

}

2. Perulangan While

Memiliki bentuk yang sama dengan for hanya saja pada while proses perulangan terus dilanjutkan hingga diperoleh kondisi false

int main (void){

USART_INIT(MYUBRR);

int counter=0;

while (counter<5){

USART_Transmit(counter);

counter++;

}

while(1);

}

3. Perulangan Do/While

Perulangan ini dilakukan dengan terlebih dahulu melakukan satu kali proses dan selanjutnya diulang hingga diperoleh nilai yang false dari while

int main (void){

USART_INIT(MYUBRR);

int counter=0;

do{

USART_Transmit(counter);

counter++;

}

while(counter<5);

while(1);

}

4. Perulangan Nested

Merupakan perulangan yang dilakukan di dalam perulangan sebagai berikut

int main (void){

USART_INIT(MYUBRR);

int counter=0;

do{

USART_Transmit(counter);

counter++;

}

while(counter<5);

while(1);

}

Di sini proses perulangan dilakukan sebanyak I x j

AN-0202 Mempelajari Teori Dasar LCD 16×2 karakter M1632 dengan Delta Robotic Studio

Wednesday, October 11th, 2017

Pada artikel AN-201 Teori Dasar LCD 16×2 karakter M1632 telah kita ketahui bahwa untuk membuat tampilan pada LCD ini dibutuhkan program yang berbeda pada mikrokontroler yang berbeda. Pada mulanya pemrograman mikrokontroler masih menggunakan bahasa assembly, kemudian C dan yang marak dewasa ini adalah C yang disederhanakan oleh Arduino. Akan lebih mudah lagi bagi kita apabila dapat membuat program mikrokontroler tanpa harus memikirkan mikrokontroler apa dan bahasa apa yang digunakan?

Delta Robotic Studio adalah sebuah Software IDE yang dibuat oleh Delta Electronic untuk mempermudah pengguna mikrokontroler dalam hal ini dapat menghadapi masalah ini. Hanya dengan menggunakan Flowchart dan gambar-gambar saja anda sudah dapat memprogram mikrokontroler dengan mudah. Untuk compiler dari berbagai jenis mikrokontroler dan bahasanya telah diatur oleh Program Mikrokontroler Delta Robotic Studio.

Langkah-langkah yang perlu dilakukan adalah:

1. Pilih Bahasa, Keluarga Mikrokontroler, Jenis Mikrokontroler  dan Board Mikrokontroler yang digunakan

Setup IDE Program Mikrokontroler Delta Robotic Studio

Setup IDE Program Mikrokontroler Delta Robotic Studio

2. Kemudian pilih group makro yang akan digunakan. Dalam hal ini apabila kita akan mengakses LCD, maka cari group makro untuk akses LCD

pilih-makro-program-mikrokontroler

Pilih Kelompok Makro yang akan digunakan

3. Ambil makro yang akan digunakan dan letakkan di bawah makro start. Panah akan otomatis terbentuk yang menunjukkan hubungan antara makro yang di atas dan dibawahnya

flowchart-program-mikrokontroler

Panah akan langsung terbentuk saat makro diletakkan dibawahnya

4. Apabila kita membutuhkan info lebih detail mengenai makro dapat dilakukan dengan klik kanan dan pilih help pada makro tersebut sehingga layar sebelah kanan akan menampilkan informasi lebih detail. Contohnya pada LCD akan diberikan informasi semacam datasheet dari LCD tersebut dalam Bahasa Indonesia

help-makro-program-mikrokontroler

Fungsi Help pada Delta Robotic Studio

5. Berikut adalah Contoh Program untuk mengakses LCD yang dibuat dengan menggunakan Delta Robotic Studio

demo-lcd-program-mikrokontroler

Contoh Program Mikrokontroler LCD 16x2 karakter M1632



Program LCD dapat didownload di sini

Software Delta Robotic Studio dapat didownload di sini

Penambahan Makro

Delta Robotic Studio memang memudahkan bagi para pemula yang belum familiar dengan Bahasa C maupun Assembly dalam merancang program mikrokontroler. Namun bagi pengguna tingkat advance kadang-kadang dibutuhkan makro-makro khusus sesuai kebutuhan. Hal ini dapat dilakukan dengan langkah-langkah berikut.



Untuk membeli LCD 16×2 karakter M1632 dapat dilakukan pada link berikut ini

LCD 16×2 karakter M1632 backlight hijau

LCD 16×2 karakter M1632 backlight biru

LCD 16×2 karakter M1632 backlight putih

Berikut adalah demo program pada Modul Trainer Board TRN-02

Paulus Andi Nalwan, DELTA ELECTRONIC

AN0175 Penggunaan I2C pada DST-ARM

Tuesday, November 22nd, 2011

Pada artikel kali ini saya akan membahas cara penggunaan I2C yang tersedia di modul DST ARM. Pada DST ARM telah tersedia IC DS1307 dan juga LCD 16×2 karakter, kedua komponen ini dapat dijadikan aplikasi jam digital dengan arm sebagai mikrokontrolernya.

Pada DST ARM telah disediakan 2 komponen yang dapat di coba untuk penggunaan komunikasi serial (I2C) yaitu EEPROM, RTC DS1307. Dimana untuk penggunaannya kita hanya cukup menjumper koneksi yang telah disediakan, dalam hal ini pin SDA, SCL. Jadi kita tidak lagi direpotkan untuk penyolderan kabel lagi. Pin SDA,SCL dari kedua IC dikeluarkan melalui header 2 pin yaitu JP8, dan juga pin SDA,SCL ini tersambung lagi ke header 4 pin, yaitu JP7. JP7 ini berfungsi untuk menyambungkan pin SDA,SCL dari IC RTC maupun EEPROM ke pin SDA,SCL pada mikrokontroler ARM. Jadi untuk konfigurasi hardware untuk artikel ini, anda hanya cukup menambahkan jumper pada JP7.

Sedangkan konfigurasi hardware untuk LCD anda dapat lihat pada artikel penggunaan LCD pada mikrokontroler ARM. Setelah semua tersambung, pastikan tidak ada koneksi yang salah.

Artikel ini dapat didownload di sini

Penulis: Januar Susanto

Modul-modul yang digunakan

- Modul DST-ARM

- Modul LCD M1632

- Switch Pushbutton

AN0174 Pengaturan Register Mikrokontroler ARM

Thursday, October 27th, 2011

Artikel kali ini akan membahas cara pengaturan register yang ada pada mikrokontroler arm. Fungsi register dalam hal ini adalah untuk mengatur fungsi masing-masing port pada arm dan fungsi-fungsi lainnya seperti interupsi, serial maupun timer.

Modul pendukung artikel ini adalah

- DST-ARM Development Board

- atau DST ARM Stamp LPC1114 ARM Low Cost System

Detail artikel dapat didownload di sini

Penulis: Januar Susanto

AN0173 Antarmuka LCD M1632 dengan LPC1114 pada Modul DST-ARM

Thursday, September 8th, 2011

Artikel kali ini saya akan membahas cara pemakaian LCD M1632 pada LPC1114 dengan Modul DST-ARM. LCD yang digunakan adalah LCD 16×2 karakter atau M1632. LCD ini sangat popular pemakaiannya, disatu sisi dikarenakan pemogramannya yang gampang, dan harganya yang tidak terlalu mahal.

Modul Pendukung Artikel ini adalah:

- DST ARM Development Board

- LCD M1632

Source code dapat didownload di sini

Artikel lengkap dapat didownload di sini

Penulis Januar Susanto

AN0165 APLIKASI DGPS-508 sebagai penanda lokasi kecelakaan kapal (Beacon Locator Position)

Sunday, January 30th, 2011

Informasi posisi kapal pada saat terjadi kecelakaan adalah suatu hal yang sangat penting bagi Tim SAR agar dapat segera memutuskan tindakan yang dilakukan. Dalam kondisi darurat, kemungkinan untuk melaporkan posisi bisa saja mengalami kegagalan, oleh karena itu pada aplikasi ini modul DGPS-508 digunakan sebagai beacon locator di mana saat terjadi kecelakaan modul ini akan mengirimkan posisi koordinat kapal ke operator.

Modul DGPS-508 akan memperoleh koordinat posisi dirinya dengan menghitung posisinya terhadap satelit-satelit. Modul ini menggunakan SIM508 produksi SIMCOM sebagai GPS & GSM Interface. SIM508 akan mengeluarkan sederetan informasi melalui port serialnya dalam format NMEA0183. Data-data ini dimonitor dan disimpan dalam mikrokontroler dan dikirimkan ke bagian antarmuka GSM dari SIM508 saat kondisi-kondisi tertentu contohnya saat sensor mendeteksi sesuatu.

Gambar 1 Alur Data

Modul DGPS-508 memiliki interface mikrokontroler, power regulator, USB Port untuk komunikasi dengan PC, 3 port RS232 untuk debug GSM dan GPS data, antarmuka voice untuk dihubungkan dengan handset telephone ataupun handsfree, ADC input dan 2 input sensor. Mikrokontroler pad disediakan di mana pengguna dapat memasang AT89S51/52 atau ATMega8515 dalam package TQFP. Pada aplikasi ini yang digunakan adalah AT89S52 TQFP.

Gambar 2. Bagian-bagian D-GPS508

Terdapat banyak data yang dikirimkan dalam format NMEA0183 namun yang dibutuhkan untuk mengetahui posisi adalah sebagai berikut:

$GPRMC,183729,A,3907.356,N,12102.482,W,000.0,360.0,080301,015.5,E*6F

Angka-angka dengan font bold (sesudah A) adalah merupakan koordinat posisi di mana sesuai pada contoh di atas adalah 39° 07.356” North atau Lintang Utara dan 121° 02.482” West atau Bujur Barat. Pada kondisi awal GPS akan melakukan pencarian posisi, pada saat ini karakter “A” atau Active yang menandakan posisi telah akurat belum tampak. Karakter “V” atau inValid yang masih terlihat dan pada saat itu angka-angka koordinat masih belum menunjukkan data yang akurat. Mikrokontroler baru menyimpan angka-angka koordinat tersebut setelah karakter “A” tampil pada paket GPRMC.

Cara kerja sistem dalam aplikasi ini adalah sebagai berikut yang dijelaskan pada gambar 3 bagian flowchart. Pada saat kondisi awal akan ditentukan apakah sistem bekerja pada mode program atau mode RUN (operasi). Mode program adalah mode yang digunakan untuk mendownload data-data (bukan firmware) berupa nomor-nomor HP operator, sedangkan mode RUN adalah mode di mana sistem beroperasi. Pada awal mode ini LCD akan menampilkan pesan standby dan lampu beacon maupun  GSM dimatikan untuk menghemat energi. Sistem ini biasanya terpasang dengan sumber daya dari battery atau ACCU sehingga penghematan energi adalah hal yang penting. Saat sensor air mendeteksi adanya air yang merupakan indikasi bahwa kapal tenggelam, maka GSM diaktifkan.

Mikrokontroler akan menunggu GSM aktif dan memperoleh sinyal dari provider. Saat sinyal diperoleh bagian GSM dari SIM508 akan mengirimkan pesan “Call Ready” dan sistem mikrokontroler akan menampilkan pesan “Aktif” di LCD. Di kondisi siang hari, tentunya lampu beacon tidak diperlukan, oleh karena itu untuk menghemat energi mikrokontroler akan memeriksa kondisi sensor cahaya. Apabila sensor cahaya tidak aktif yang merupakan indikasi kondisi malam hari, maka lampu beacon akan diaktifkan, namun bila sensor cahaya aktif maka lampu beacon tidak perlu diaktifkan.

Posisi koordinat diambil dari bagian GPS SIM508 dan ditampilkan ke LCD. Untuk menghemat energi, sistem ini tidak terlus menerus mengirimkan posisi namun hanya sekali saat terjadinya kondisi tenggelam dan mengirim lagi apabila terjadi perubahan posisi yang bisa saja terjadi karena gelombang laut. Proses ini dilakukan dengan membandingkan posisi koordinat GPS dengan posisi sebelumnya, saat terjadi perubahan maka sistem akan mengirimkan ulang koordinat tersebut dan setiap kali proses pengiriman maka koordinat akan disimpan ke dalam memori.

Gambar 3 Diagram Alir

Untuk sensor air dapat dibangun dengan menggunakan GP2D12 yang mengubah jarak dari obyek di depannya kedalam bentuk tegangan. GP2D12 menggunakan teknik inframerah di mana kuat lemah pantulan inframerah yang diterima merupakan indikasi jarak antara sensor dengan obyek (dalam hal ini air). Sensor ini dapat mendeteksi obyek dengan jarak maksimum 80 cm dan mengubahnya menjadi tegangan analog.


Gambar 4 GP2D12

Semakin dekat obyek (semakin dekat dengan permukaan air) maka akan semakin besar nilai tegangannya. Sensor ini akan dihubungkan pada bagian input logic dari D-GPS508 oleh karena itu terlebih dahulu perlu dilewatkan ke rangkaian pengkondisi signal yang dapat dibentuk dengan op amp dalam Mode Comparator seperti pada gambar 5.

Namun bila diinginkan yang sudah siap pakai, maka rangkaian ini dapat diperoleh dengan sedikit memodifikasi Modul DSF-01 yaitu dengan melepas bagian phototransistor atau opto coupler modul ini dan menghubungkan keluaran GP2D12 ke kolektor phototransistor atau optocoupler, GND dan VCC

VR berfungsi untuk mengatur nilai tegangan pembanding komparator sehingga level ketinggian kapan sensor aktif dapat diatur dalam range 0 – 80 cm.

Sedangkan sensor cahaya dapat menggunakan EL7900, keluaran dari sensor ini berupa arus yang dapat dikonversi menjadi tegangan dengan menambahkan RL (Resistor Load)

Vsup = Tegangan power supply = VCC = 5 Volt

Apabila kondisi cahaya normal = 1000 Lux maka akan diperoleh R Load = 7.8k atau dapat digunakan resistor 8.2K.

Agar keluaran tegangan dapat diubah menjadi kondisi logic, maka digunakan Op Amp dengan Mode Comparator. Seperti halnya pada sensor air, Op Amp ini dapat diperoleh dengan memodifikasi Modul DSF-01.

Gambar 7 Wiring Diagram Sistem

Mode program pada sistem ini adalah mode di mana Modul D-GPS508 bekerja mendownload data-data seperti nomor HP operator dan data-data kapal. Sebagai contoh pada gambar 8, nama kapal USS Enterprise dengan lokasi di Atlantic. Status tenggelam akan dikirimkan saat sensor air terdeteksi.

Proses download data ini dilakukan dengan menghubungkan kabel USB ke Port USB D-GPS508 dan memindah saklar Serial Selector ke mode MCU-PC. Apabila proses ini baru pertama kali dilakukan maka akan diminta driver USB dari modul ini dan anda dapat mengarahkan ke CD yang menjadi paket modul ini.

Buka Program AutoSMS.exe dan menu seperti pada gambar 8 akan tampil. Komunikasi antara PC dan Modul D-GPS508 akan terbuka dengan menekan Open COM. Selanjutnya proses download, erase atau upload data dapat dilakukan.

Agar Modul D-GPS508 dapat beroperasi seperti pada aplikasi ini, maka terlebih dahulu ditanamkan firmware ke dalam mikrokontroler AT89S52 yang dipasang ke dalamnya. Untuk mendownload firmware ini dibutuhkan Modul Downloader. Modul yang paling efektif untuk aplikasi tersebut adalah DU ISP yang dapat mendownload firmware AT89S52 melalui Port USB.

Hubungkan konektor 11 pin dari DU ISP ke ISP Port dari D-GPS508 dan download file gpsbeacn.hex ke dalam modul ini. File gpsbeacn.hex ini dibentuk dengan meng-assembly file gpsbeacn.asm, lebih detail mengenai proses ini dapat dipelajari di AN0160 Penggunaan IDE Software JFE pada DST-51 USB Version.

Mengingat signal GSM hanya dapat diperoleh pada jarak yang tidak terlalu jauh dari daratan, maka aplikasi ini hanya dapat dilakukan pada area yang masih terjangkau provider GSM yaitu beberapa kilometer dari daratan. Untuk jarak yang lebih jauh dapat digunakan beberapa alternatif.

-          Radio SSB untuk komunikasi kecepatan rendah dengan menumpangkan sinyal pada radio komunikasi kapal (dapat menempuh jarak puluhan Km)

-          RF Modem untuk komunikasi kecepatan tinggi tanpa mengganggu jalur komunikasi kapal (dapat menempuh hingga 100 Km)

Telephone Satelit untuk komunikasi kecepatan tinggi dan hampir menjangkau segala lokasi.

Untuk membangun aplikasi ini dapat dilakukan dengan menggabungkan modul-modul dan komponen berikut:

atau memesan langsung dalam bentuk siap pakai (hubungi paulus@delta-electronic.com)

Software pendukung:

Dokumentasi dalam PDF dapat didownload di sini

Penggunaan IDE Software JFE pada DST-51 USB Version

Thursday, March 4th, 2010

AN0160

Pada pemrograman mikrokontroler dibutuhkan sebuah software untuk editor, assembly / compiler dan downloader. Biasanya vendor-vendor mikrokontroler banyak menyediakan software-software tersebut, namun akan lebih mudah bagi programmer bila proses-proses tersebut terintegrasi dalam sebuah software yang biasa disebut IDE (Integrated Development Environment).

Pada artikel-artikel sebelumnya telah dibahas penggunaan JFE pada DST-51, di mana proses download program dilakukan melalui serial maupun ISP parallel. Saat ini telah diluncurkan DST-51 USB Version di mana proses pemrograman dilakukan melalui USB ISP oleh karena itu pada artikel ini akan dibahas mengenai setting JFE untuk mendownload program melalui USB port DST-51.

Detail artikel dapat didownload di sini

Modul pendukung

- Modul DST-51

Fasilitas-fasilitas Tambahan DST-51 (2)

Tuesday, February 16th, 2010

AN0159

Pada artikel ini akan dibahas fasilitas-fasilitas tambahan DST-51 selain sebagai Developement System yaitu:

- Universal Programmer untuk keluarga MCS-51 tipe C maupun S serta AVR

- Penampil isi Serial EEPROM

Detail aplikasi dapat didownload di sini

Modul yang digunakan adalah:

- Modul DST-Uniprog

Fasilitas-fasilitas tambahan pada Modul DST-51 V3.7

Tuesday, February 16th, 2010

AN0158

Artikel berikut ini membahas mengenai fasilitas-fasilitas tambahan Modul DST-51 V3.7 selain berfungsi sebagai Development System.

Modul DST-V3.7 juga dapat berfungsi sebagai:

- Backup data UV EPROM

- I2C Serial EEPROM Copier

- Pemeriksa jalur PCB

Detail aplikasi dapat didownload di sini

Software pendukung dapat didownload di sini

Modul-modul yang digunakan adalah:

- Keypad 4×4

- Modul LCD M1632

- DST-51 Pro 2 USB

- SEE-24