Archive for the ‘MCS-51’ 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

Teori Dasar LCD 16×2 karakter M1632 Arduino

Monday, October 9th, 2017

Artikel berikut ini akan menjelaskan mengenai Dasar Teori LCD 16×2 karakter M1632 Arduino yang pernah kami bahas dalam AN-0034 LCD Module 16×32 (M1632) di mana dalam artikel ini akan kami bahas lebih detail mengenai struktur memori, register-register, inisialisasi dan teknik antar mukanya ke mikrokontroler / arduino.

  1. DDRAM (Data Display Random Access Memory), DDRAM dalam dasar teori LCD 16×2 karakter M1632 Arduino adalah merupakan memori tempat karakter yang ditampilkan berada. Contoh, untuk karakter ‘A’ atau 41H yang ditulis pada alamat 00, maka karakter tersebut akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis di alamat 40h, maka karakter tersebut akan tampil pada baris kedua kolom pertama dari LCD.
    DDRAM (Teori Dasar LCD 16x2 karakter M1632 arduino)

    DDRAM (Teori Dasar LCD 16x2 karakter M1632 Arduino)

  2. CGROM (Character Generator Read Only Memory), CGROM dalam dasar teori LCD 16×2 karakter M1632 Arduino adalah merupakan memori permanen yang menggambarkan pola tiap karakter pada LCD yang tersimpan pada chipset LCD HD44780 dan tidak dapat diubah oleh pengguna. Karena sifatnya permanen, maka pola ini tidak akan hilang walau power supply dimatikan. Yang dimaksud dengan pola di sini adalah bagaimana bentuk karakter, contohnya ‘A’ dibentuk.

    CGROM Teori Dasar LCD 16x2 karakter M1632 Arduino

    Gambar 2 CGROM Teori Dasar LCD 16x2 karakter M1632 Arduino

    Contoh pada gambar 2 di atas, terlihat bagaimana pola karakter ‘A’ atau kode biner 0100 0001b ditampilkan dalam layar LCD. Pola tersebut adalah tampilan pada saat kode biner 0100 0001b atau 41h dituliskan ke dalam DDRAM dengan posisi sesuai Address Counter DDRAM saat itu

  3. CGRAM (Character Generator Randem Access Memory, CGRAM dalam teori dasar LCD 16×2 karakter M1632 arduino sama halnya dengan CGROM merupakan memori untuk menggambarkan pola sebuah karakter yang akan ditampilkan pada layar saat data dituliskan ke dalam DDRAM. Namun pada CGRAM  bentuk dari karakter dapat diubah-ubah sesuai keinginan dengan mengubah data pada CGRAM. Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang. Untuk mengantisipasi kondisi tersebut biasanya pola karakter di simpan pada memori sistem minimum atau mikrokontroler yang mengakses LCD ini dan selalu diupdate saat power pertama kali diaktifkan

Register-register pada LCD 16×2

Pada artikel Teori Dasar LCD 16×2 karakter M1632 Arduino ini terdapat dua buah register yaitu Register Data dan Register Perintah. Register Data, dalam Teori Dasar LCD 16×2 karakter M1632 Arduino adalah register di mana mikrokontroler ataupun arduino dapat menuliskan atau membaca data ke atau dari DDRAM ataupun CGRAM. Akses data ke DDRAM baik penulisan maupun pembacaan adalah merupakan akses ke bagian memori dari tampilan pada layar LCD. Sedangkan akses ke CGRAM adalah merupakan proses untuk meng-edit pola karakter yang ada pada lokasi CGRAM tersebut. Register Data diakses dengan kondisi nilai RS (Register Select = 0)

Register Perintah dalam Teori Dasar LCD 16×2 karakter M1632 Arduiono adalah register di mana perintah-perintah dari mikrokontroler ataupun arduino ke chipset HD44780 selaku pengendali modul LCD 16×2 karakter M1632 diberikan. Perintah-perintah tersebut berfungsi untuk mengatur tampilan pada LCD 16×2 karakter M1632 atau alamat dari DDRAM dan CGRAM. Selain itu register ini juga merupakan tempat di mana status dari HD44780 dapat dibaca. Bit ketujuh dari data status yang terbaca adalah merupakan busy flag (tanda sibuk) yaitu suatu tanda yang mengindikasikan bahwa chipset HD44780 masih dalam kondisi sibuk sehingga proses akses data lebih lanjut dari mikrokontroler yang terhubung pada Modul LCD 16×2 karakter M1632 harus menunggu hingga tanda sibuk ini selesai. Sedangkan bit keenam hingga bit nol adalah merupakan Address Counter (Penghitung Alamat) dari DDRAM. Address Counter ini menunjukkan lokasi dari DDRAM yang sedang ditunjuk pada saat tersebut.

Address Counter LCD 16x2 karakter M1632

Gambar 3. Address Counter LCD 16x2 karakter M1632

Perintah-perintah pada LCD 16×2 karakter M1632

Berikut ini adalah daftar perintah yang dapat dikirimkan ke Register Perintah LCD 16×2 karakter M1632 arduino dengan tujuan untuk mengatur tampilan pada LCD tersebut.

Perintah D7 D6 D5 D4 D3 D2 D1 D0 Deskripsi
Hapus Display 0 0 0 0 0 0 0 1 Hapus Display dan DDRAM
Posisi Awal 0 0 0 0 0 0 1 X Set Alamat DDRAM di 0
Set Mode 0 0 0 0 0 1 I/D S Atur arah pergeseran cursor dan display
Display On/OFF 0 0 0 0 1 D C B Atur display (D) On/OFF, cursor (C) ON/OFF, Blinking (B)
Geser Cursor/Display 0 0 0 1 S/C R/L X X Geser Cursor atau display tanpa merubah alamat DDRAM
Set Fungsi 0 0 1 DL N F X X Atur panjang data, jumlah baris yang tampil, dan font karakter
Set Alamat CGRAM 0 1 ACG ACG ACG ACG ACG ACG Data dapat dibaca atau ditulis setelah alamat diatur
Set Alamat DDRAM 1 ADD ADD ADD ADD ADD ADD ADD Data dapat dibaca atau ditulis setelah alamat diatur

X = diabaikan

I/D 1=Increment, 0=Decrement

S  0=Display tidak geser

S/C 1=Display Shift, 0=Geser Cursor

R/L 1=Geser Kiri, 0=Geser Kanan

DL 1=8 bit, 0=4bit

N 1=2 baris, 0=1 baris

F 1=5×10, 0=5×8

D 0=Display OFF, 1=Display ON

C 0=Cursor OFF, 1=Cursor ON

B 0=Blinking OFF, 1=Blinking ON

Data pada tabel di atas adalah data yang harus dituliskan ke Register Perintah untuk mengatur tampilan LCD 16×2 karakter M1632

Mengatur posisi karakter pada layar LCD 16×2 karakter M1632

Untuk menentukan posisi tampilan pada layar LCD 16×2 karakter M1632 dilakukan dengan menuliskan data ke Address Counter dari LCD. Address Counter dapat diakses dengan membuat bit 7 dari data yang ditulis ke Register Perintah berlogika 1.

Pengaturan posisi karakter pada LCD 16x2 karakter M1632

Pengaturan posisi karakter pada LCD 16x2 karakter M1632

Contoh apabila kita ingin menampilkan karakter ‘D’ di kolom kedua baris pertama di layar LCD maka terlebih dahulu Address Counter kita set 01h atau 0000 0001b dan bit ke 7 diberi logika 1 sehingga menjadi 1000 0001b atau 81h. Data tersebut dituliskan pada Register Perintah agar Address Counter menunjuk ke kolom dua baris pertama dari layar LCD 16×2 karakter M1632

Kemudian data karakter ‘D’ atau 41h atau 0100 0001b dituliskan ke Register Data sehingga tersimpan dalam DDRAM pada alamat 01h dan tampil pada layar di kolom kedua baris pertama.

Posisi Karakter pada Layar LCD 16x2 karakter M1632

Posisi Karakter pada Layar LCD 16x2 karakter M1632

Inisialisasi LCD 16×2 Karakter M1632

Untuk menggunakan sebuah modul LCD 16×2 karakter M1632 maka terlebih dahulu dilakukan proses inisialisasi yang digunakan untuk mempersiapkan modul tersebut. Selain itu juga digunakan untuk  mode kerja dari  LCD 16×2 karakter M1632. Pengaturan mode ini harus ditentukan pada hanya pada saat inisialisasi awal saja yaitu:

  • Panjang Data
  • Jumlah baris LCD yang aktif
  • Bentuk Font (5×8 atau 5×10)

Diagram alir pada gambar 6 menunjukkan proses yang selalu terjadi (secara standard) pada saat inisialisasi modul LCD ini dilakukan sebelum masuk ke bagian pengaturan mode. Sistem harus menunggu selama 15 mS atau lebih setelah sumber daya mencapai tegangan 4,5 Volt agar chipset HD44780 siap untuk berhubungan dengan  mikrokontroler yang mengendalikannya.

Data 0011xxxx di mana x adalah kondisi tidak menentu (bisa 0 atau 1) dikirimkan 2 kali dengan waktu tunda 4,1 mS atau lebih dan 100 uS atau lebih. Pada bagian ini proses pembacaan status sibuk memang belum dapat dilakukan sehingga mikrokontroler harus memberikan waktu tunda terlebih dahulu.

Kemudian dilanjutkan dengan data 0010xxxx yang membuat modul ini berada pada kondisi pengaturan mode. Pada saat ini, status sibuk sudah dapat dibaca sehingga tidak harus digunakan waktu tunda. Proses pengaturan fungsi dan dilanjutkan dengan mode juga sudah dapat mulai dilakukan dengan mengirimkan data-data ke register perintah.

Inisialisasi LCD 16x2 karakter M1632

Gambar 6. Inisialisasi LCD 16x2 karakter M1632

Pengaturan Fungsi digunakan untuk mengatur panjang data, jumlah baris dan font sedangkan pengaturan mode digunakan untuk mengatur arah pergeseran kursor maupun display. Listing 4 menunjukkan bagian pengaturan fungsi dan mode pada potongan program inisialisasi LCD 16×2 karakter M1632. Pada contoh di listing ini, proses dilakukan dengan mengatur font 8×5, dua baris LCD dan panjang data 4 bit (antarmuka 4 bit). Kemudian layar LCD 16×2 karakter M1632 dimatikan dan data 01h dikirim ke register perintah untuk memastikan bahwa memori data dalam DDRAM dihapus sekaligus dan Address Counter berada pada posisi awal. Kemudian dilanjutkan dengan mengirimkan data 0Eh atau 00001110 yang berfungsi untuk mengaktifkan kembali layar LCD 16×2 karakter M1632.

Selanjutnya pengaturan mode dilakukan dengan mengirimkan data 06h atau 00000110 dalam biner di mana dalam hal ini kursor aktif dengan mode auto increment (otomatis bertambah). Yaitu posisi Address Counter akan bertambah secara otomatis saat setiap kali proses penampilan data ke layar LCD 16×2 karakter M1632 dilakukan sehingga kursor juga akan bergeser ke kanan. Pada saat ini layar LCD 16×2 karakter M1632 akan menampilkan kursor di pojok kiri atas (alamat awal) yang menandakan bahwa proses inisialisasi LCD 16×2 karakter M1632 telah berhasil dilakukan

Cara penulisan dan pembacaan data ke dan dari register-register LCD 16×2 karakter M1632

Setelah kita mengetahui data-data apa saja yang harus dikirimkan ke register-register LCD 16×2 karakter M1632 untuk mengatur LCD tersebut, berikut perlu kita pelajari bagaimana menulis dan membaca data ke register-register tersebut

1. Penulisan data ke Register Perintah

Penulisan data ke Register Perintah digunakan untuk memberikan perintah-perintah pada LCD 16×2 karakter M1632 sesuai dengan data-data yang dikirimkan ke register tersebut. (lihat tabel  Perintah-perintah LCD 16×2 karakter M1632).

Gambar 7 menunjukkan proses penulisan data ke register perintah dengan menggunakan mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke Register Perintah. RW berlogika 0 yang menunjukkan proses penulisan data akan dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu dikirimkan dengan diawali pulsa logika 1 pada E Clock. Kemudian Nibble rendah (bit 3 sampai bit 0) dikirimkan dengan diawali pulsa logika 1 pada E Clock lagi. Untuk mode 8 bit interface, proses penulisan dapat langsung dilakukan secara 8 bit (bit 7 … bit 0) dan diawali sebuah pulsa logika 1 pada E Clock.

Menulis data ke Register Perintah LCD 16x2 karakter M1632

Menulis data ke Register Perintah LCD 16x2 karakter M1632

2. Penulisan data ke Register Data

Penulisan data ke Register Data digunakan dalam proses penulisan data karakter yang akan ditampilkan ke LCD (DDRAM) atau proses penulisan data pola karakter ke CGRAM. Proses diawali dengan adanya logika 1 pada RS yang menunjukkan akses ke Register Data, kondisi R/W diatur pada logika 0 yang menunjukkan proses penulisan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dikirim dengan diawali pulsa logika 1 pada sinyal E Clock dan kemudian diikuti 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali pulsa logika 1 pada sinyal E Clock.

Menulis data ke Register Data LCD 16x2 karakter M1632

Menulis data ke Register Data LCD 16x2 karakter M1632

3. Pembacaan data dari Register Perintah

Proses pembacaan data dari Register Perintah ini digunakan untuk membaca status sibuk LCD 16×2 karakter M1632 dan Address Counter  saja. RS diatur pada logika 0 untuk akses ke Register Perintah, R/W diatur pada logika 1 yang menunjukkan proses pembacaan data. 4 bit nibble tinggi dibaca dengan diawali pulsa logika 1 pada E Clock dan kemudian 4 bit nibble rendah dibaca dengan diawali pulsa logika 1 pada E Clock. Untuk Mode 8 bit interface, pembacaan 8 bit (nibble tinggi dan rendah) dilakukan sekaligus dengan diawali sebuah pulsa logika 1 pada E Clock.

Membaca data dari register perintah LCD 16x2 karakter M1632

Membaca data dari register perintah LCD 16x2 karakter M1632

4. Membaca data dari Register Data

Pembacaan data dari Register Data dilakukan untuk membaca kembali data yang tampil pada LCD. Proses dilakukan dengan mengatur RS pada logika 1 yang menunjukkan adanya akses ke Register Data. Kondisi R/W diatur pada logika tinggi yang menunjukkan adanya proses pembacaan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dibaca dengan diawali adanya pulsa logika 1 pada E Clock dan dilanjutkan dengan data 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali dengan pulsa logika 1 pada E Clock.

Membaca data dari register data LCD 16x2 karakter M1632

Membaca data dari register data LCD 16x2 karakter M1632

ANTARMUKA LCD 16X2 KARAKTER M1632

Berikut ini adalah contoh-contoh antarmuka LCD 16×2 karakter M1632 beserta contoh programnya dengan sistem minimum / sistem mikrokontroler. Yang menjadi perbedaan adalah setiap contoh memiliki koneksi I/O yang berbeda sehingga terdapat perbedaan juga pada bagian deklarasi I/O di tiap contoh program.

Antarmuka LCD 16×2 karakter M1632 dengan DST-51 / DST-52

Antarmuka LCD 16x2 karakter M1632 dengan DST-51 / DST-52

Antarmuka LCD 16x2 karakter M1632 dengan DST-51 / DST-52

Contoh Program:

- hd44783-asm511.asm contoh program dengan menggunakan bahasa assembly dan compiler ASM51

- lcd.c contoh program dengan menggunakan bahasa C

Antarmuka LCD 16×2 karakter M1632 dengan mikrokontroler AT89S51, AT89S52

Antarmuka LCD 16x2 karakter M1632 dengan AT89S51 / AT89S52

Antarmuka LCD 16x2 karakter M1632 dengan AT89S51 / AT89S52

Contoh Program:

- lcd.asm contoh program dengan menggunakan bahasa assembly

Antarmuka LCD 16×2 karakter M1632 dengan mikrokontroler ATMega8515

Antarmuka LCD 16x2 karakter M1632 dengan ATMega8515

Antarmuka LCD 16x2 karakter M1632 dengan ATMega8515

Contoh Program:

- lcd-44780-4bit-avr.asm contoh program dengan menggunakan bahasa assembly

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

Paulus Andi Nalwan, DELTA ELECTRONIC

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

Belajar Mikrokontroler dengan menggunakan Delta System Tools (DST-Series)

Tuesday, February 16th, 2010

AN0127

Mikrokontroler apa yang cocok untuk saya?
Dengan maraknya variasi mikrokontroler yang ada saat ini, pertanyaan ini sering muncul di dalam pikiran pemula. Tidak ada patokan khusus mengenai mikrokontroler apa yang sesuai bagi pemula. Semua mikrokontroler dapat digunakan untuk pemula. Namun ada beberapa hal yang perlu dipertimbangkan dalam memilih mikrokontroler di mana setiap pengguna tentu memiliki pertimbangan yang berbeda-beda.
1. Apakah tujuan anda belajar mikrokontroler?

2. Apa saja dukungan yang ada pada mikrokontroler tersebut?

3. Aplikasi apa yang akan anda  buat?

Detail mengenai hal ini dapat dilihat di sini

Modul yang digunakan adalah DST Multi Microcontroller Set

PENGHITUNG WAKTU DENGAN TAMPILAN LCD M1632 OLEH DST-51

Sunday, February 14th, 2010

AN0044

Penghitung waktu yang dimulai dengan menekan tombol start dan stop atau lebih dikenal dengan stop watch sudah banyak terdapat pada arloji-arloji digital memang sudah banyak terdapat di pasaran. Namun dalam aplikasinya, sebuah sistem elektronik seringkali membutuhkan bagian penghitung waktu yang terintegrasi dengan sistem tersebut. Untuk itu dalam artikel ini akan dibahas bagaimana kita merancang sebuah penghitung waktu dengan menggunakan Modul DST-51 sehingga penghitung waktu ini dapat diintegrasikan dengan perangkat elektronik lain.

Detail aplikasi dapat didownload di sini

Aplikasi ini dirancang dengan menggunakan:

- Modul DST-51 Economic

- Modul LCD M1632

Aplikasi pada Flash PEROM 89C51

Saturday, August 16th, 2008

Aplikasi-aplikasi ini dirancang dengan menggunakan built in routine DST-51. Built in routine adalah kumpulan-kumpulan program yang telah tersedia di dalam Flash PEROM AT8951 dan siap digunakan sebagai fungsi-fungsi yang siap pakai. Contoh:

Serial_Out  EQU 1C8H    ; Rutin Serial Out berada di alamat 1C8H
; dari Flash PEROM DST-51)
Lcall     Serial_Out          ; fungsi pengiriman data akumulator ke port
; serial AT8951 secara asynchnronous

Untuk mempermudah anda dalam merancang software menggunakan built in routine yang tersedia pada DST-51/2 maka gunakan template-template berikut:

Dasar Mikrokontroler AT89S51/AT89C51

Sunday, August 10th, 2008

Sebelum merancang sebuah system berbasis mikrokontroler, perancang system terlebih dahulu harus mengenal dasar-dasar dari mikrokontroler yang digunakan. Bagian ini adalah merupakan pembahasan dasar-dasar mikrokontroler AT89S51/AT89C51

  • I/O dan Structure Memory AT89S51/AT89C51
    Mikrokontroler 89C51 adalah mikrokontroler dengan arsitektur MCS51 seperti 8031 dengan memori Flash PEROM (Programmable and Erasable Read Only Memory).
    Detail Deskripsi pin dan struktur memori AT89C51/AT89S51 ada di an0015
  • Interrupt AT89S51/AT89C51
    Detail Interupsi pada AT89C51/AT89S51  ada di an0016
  • Serial AT89C51/AT89S51
    Detail Serial Port AT89C51/AT89S51 ada di an0017
  • Timer AT89C51/AT89S51
    Detail Timer AT89C51 ada di an0018
  • Instruction Set AT89C51/AT89S51
    Detail Instruction set AT89C51/AT89S51 ada di inst01

Keterangan lebih lanjut bisa hubungi support@delta-electronic.com

Untuk dapat menggunakan mikrokontroler dibutuhkan beberapa hal

1. Software Assembler / Compiler yaitu software yang mengubah bahasa pemrograman, yaitu bahasa yang manusiawi (dikenali dan ditulis oleh manusia) seperti Assembly dan C yang dikenal sebagai Kode Sumber (Source Code) menjadi Program Obyek dalam bentuk Hexa yang dikenali oleh mikrokontroler.

Untuk keluarga AT89S51/AT89S52/AT89S8252/AT89C51/AT89C2051/AT89C4051/AT89C2051/AT89S2051 dapat digunakan software-software berikut:

- ASM51 untuk assembler kode sumber assembly ke dalam bentuk hex keluaran Metalink Corporation dapat didownload di link berikut. User manual untuk software ini dapat didownload di sini

- SDCC untuk compiler kode sumber dalam C ke bentuk hex keluaran Sandeep Dutta, dapat didownload di link berikut. Untuk user manual dapat didownload di sini

- RIDE untuk compiler kode sumber dalam bentuk C ke bentuk hex keluaran Raisonance dapat didownload di sini

2. Software Downloader yaitu software yang mendownload program obyek dalam bentuk hex yang merupakan hasil compile / assembly ke dalam mikrokontroler

- ISPPRog keluaran Adam Dybkowski yang dapat digunakan untuk AVR, AT89S51/AT89S52/AT89S53/AT89S8252/AT89S8253/AT89S2051/AT89S4051/AT45DBxx dapat didownload di sini. Software ini menggunakan Parallel Port PC sebagai media komunikasi antara PC dan Modul Downloader. Modul Downloader untuk unit ini adalah Uni ISP Cable

- DSTUniprog keluaran Delta Electronic yang dapat digunakan untuk AT89C1051/AT89C2051/AT89C2051/AT89C51/AT89C52/AT89LV51/AT89LV52/AT8955/AT89LV55/AT90S1200/AT90LS1200/AT90S2313/AT90LS2313/AT90S8515/AT90LS8515/AT90S8535, AT90LS8535, IS89C51, IS89C52, AT89S8252, AT89LS8252, AT89S53, AT89LS53, AT89S2333, AT89S4433, AT89LS4433, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, ATTiny15L, AT89C55WD, AT89C51RC, AT89S51, AT89LS51, AT89S52, AT89LS52 dapat didownload di sini. Software ini menggunakan RS232/Serial Port sebagai media komunikasi antara PC dan Modul Downloader. Modul Downloader untuk unit ini adalah DST Uniprog

Untuk PC / Laptop yang tidak memiliki port RS232/Serial maka dapat ditambahkan Modul DU-232 USB to RS232 Converter

- AVRStudio 4.16 keluaran Atmel yang dapat digunakan untuk AT89S51/AT89S52/AT86RF401/AT90CAN128/AT90CAN64/AT90CAN32/AT90PWM2/AT90PWM216/AT90PWM2B/AT90PWM3/AT90PWM316/AT90PWM3B/AT90USB1286/AT90USB1287/AT90USB162/AT90USB646/AT90USB647/AT90USB82/ATMega128/ATMega1280/ATMega1281/ATMega1284P/ATMega128A/ATMega16/ATMega162/ATMega164P/ATMega164PA/ATMega165/ATMega165P/ATMega168/ATMega168P/ATMega168PA/ATMega169/ATMega169P/ATMega16A/ATMega16HVA/ATMega16M1/ATMega16U2/ATMega16U4/ATMega2560/ATMega2561/ATMega32/ATMega324P/ATMega324PA/ATMega325/ATMega3250/ATMega3250P/ATMega325P/ATMega328P/ATMega329/ATMega3290/ATMega3290P/ATMega329P/ATMega32A/ATMega32C1/ATMega32HVB/ATMega32M1/ATMega32U2/ATMega32U4/ATMega32U6/ATMega48/ATMega48P/ATMega48PA/ATMega64/ATMega640/ATMega644/ATMega644P/ATMega645/ATMega6450/ATMega649/ATMega6490/ATMega64A/ATMega64C1/ATMega64M1/ATMega8/ATMega8515/ATMega8535/ATMega88/ATMega88P/ATMega88PA/ATMega8A/ATMega8HVA/ATTiny12/ATTiny13/ATTiny13A/ATTiny15/ATTiny167/ATTiny22/ATTiny2313/ATTiny24/ATTiny24A/ATTiny25/ATTiny26/ATTiny261/ATTiny43U/ATTiny44/ATTiny44A/ATTiny45/ATTiny461/ATTiny48/ATTiny84/ATTiny85/ATTiny861/ATTiny87/ATTiny88/ATxmega18A1/ATxmega128A3/ATxMega164A/ATxMega192A3/ATxMega256A3/ATxMega256A3B/ATxMega32A4/ATxMega64A1/ATxMega64A3 menggunakan Port USB untuk komunikasi antara PC dan Modul Downloader. Modul Downloader untuk software ini adalah DU ISP V3 untuk Win XP dan DU ISP V4 untuk Win Vista/ 7

Untuk menuliskan source code atau kode sumber diperlukan software teks editor yang biasanya dapat menggunakan notepad. Namun untuk mempermudah proses pengguna banyak lebih menyukai software yang telah terintegrasi antara Editor, Assembler/Compiler  dan Downloader. Software tersebut disebut dengan IDE (Integrated Development Environtment). Beberapa software IDE adalah sbb:

- Delta Studio keluaran Delta Electronic untuk AT89S51/AT89S52/AT89C51/AT89C52/AT89S53/AT89s8252/AT89S8253 dengan Modul Downloader yang sesuai adalah DST-51 Pro 2

- DST Tools.zip yang diintegrasi oleh Delta Electronic di mana bagian downloadernya dapat digunakan untuk AT89S51/AT89S52/AT86RF401/AT90CAN128/AT90CAN64/AT90CAN32/AT90PWM2/AT90PWM216/AT90PWM2B/AT90PWM3/AT90PWM316/AT90PWM3B/AT90USB1286/AT90USB1287/AT90USB162/AT90USB646/AT90USB647/AT90USB82/ATMega128/ATMega1280/ATMega1281/ATMega1284P/ATMega128A/ATMega16/ATMega162/ATMega164P/ATMega164PA/ATMega165/ATMega165P/ATMega168/ATMega168P/ATMega168PA/ATMega169/ATMega169P/ATMega16A/ATMega16HVA/ATMega16M1/ATMega16U2/ATMega16U4/ATMega2560/ATMega2561/ATMega32/ATMega324P/ATMega324PA/ATMega325/ATMega3250/ATMega3250P/ATMega325P/ATMega328P/ATMega329/ATMega3290/ATMega3290P/ATMega329P/ATMega32A/ATMega32C1/ATMega32HVB/ATMega32M1/ATMega32U2/ATMega32U4/ATMega32U6/ATMega48/ATMega48P/ATMega48PA/ATMega64/ATMega640/ATMega644/ATMega644P/ATMega645/ATMega6450/ATMega649/ATMega6490/ATMega64A/ATMega64C1/ATMega64M1/ATMega8/ATMega8515/ATMega8535/ATMega88/ATMega88P/ATMega88PA/ATMega8A/ATMega8HVA/ATTiny12/ATTiny13/ATTiny13A/ATTiny15/ATTiny167/ATTiny22/ATTiny2313/ATTiny24/ATTiny24A/ATTiny25/ATTiny26/ATTiny261/ATTiny43U/ATTiny44/ATTiny44A/ATTiny45/ATTiny461/ATTiny48/ATTiny84/ATTiny85/ATTiny861/ATTiny87/ATTiny88/ATxmega18A1/ATxmega128A3/ATxMega164A/ATxMega192A3/ATxMega256A3/ATxMega256A3B/ATxMega32A4/ATxMega64A1/ATxMega64A3

3. Sistem Minimum yaitu modul tempat IC mikrokontroler terpasang. Biasanya modul ini juga dilengkapi dengan downloader dan beberapa antarmuka sebagai pelengkap untuk mempermudah pengguna dalam mempelajari mikrokontroler.

Sistem minimum yang tidak dilengkapi downloader (perlu ditambahkan modul downloader seperti DU ISP V3 atau DU ISP V4 untuk download program) adalah:

- ST-51 Small System AT89S51 yang merupakan versi ekonomis dari sistem mikrokontroler AT89S51

- DST-51 Economic Version yang didisain dengan PCB Through hole FR4 dan dilengkapi pad untuk memasang LED SMD

Sistem minimum yang telah dilengkapi downloader adalah:

- DST-51 Economic USB Version yang didisain dengan PCB Through hole FR4 dan dilengkapi pad untuk memasang LED SMD serta USB Downloader

- DST-51 Pro 1 USB Version yang didisain dengan PCB Through hole FR4 dan dilengkapi dengan LED SMD serta USB Downloader

- DST-51 Pro 2 USB Version yang didisain dengan PCB Through hole FR4 dan dilengkapi dengan LED SMD serta USB Downloader dan 8Kb Memory External

Untuk sistem minimum yang telah dilengkapi antarmuka-antarmuka seperti ADC, DAC, RTC dan lain-lain adalah:

- TRN-02 TRaniner Board Professional Version