Kamis, 27 Juli 2017

Counter Up and Down 7 - Segment Menggunakan Button Berbasis Mikrokontroller AT Mega 32

Counter Up and Down 7 - Segment Menggunakan Button Berbasis Mikrokontroller AT Mega 32




Teori [kembali]


Seven Segment Display
Seven Segment Display (7 Segment Display) dalam bahasa Indonesia disebut dengan Layar Tujuh Segmen adalah komponen Elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital.
Seven Segment Display memiliki 7 Segmen dimana setiap segmen dikendalikan secara ON dan OFF untuk menampilkan angka yang diinginkan. Angka-angka dari 0 (nol) sampai 9 (Sembilan) dapat ditampilkan dengan menggunakan beberapa kombinasi Segmen. Selain 0 – 9, Seven Segment Display juga dapat menampilkan Huruf Hexadecimal dari A sampai F. Segmen atau elemen-elemen pada Seven Segment Display diatur menjadi bentuk angka “8” yang agak miring ke kanan dengan tujuan untuk mempermudah pembacaannya. Pada beberapa jenis Seven Segment Display, terdapat juga penambahan “titik” yang menunjukan angka koma decimal.  Terdapat beberapa jenis Seven Segment Display, diantaranya adalah Incandescent bulbs, Fluorescent lamps (FL), Liquid Crystal Display (LCD) dan Light Emitting Diode (LED).
Pada rangkaian ini saya menggunakan 7 segment tipe common anode. Pada LED 7 Segmen jenis Common Anode (Anoda), Kaki Anoda pada semua segmen LED adalah terhubung menjadi 1 Pin, sedangkan kaki Katoda akan menjadi Input untuk masing-masing Segmen LED. Kaki Anoda yang terhubung menjadi 1 Pin ini akan diberikan Tegangan Positif (+) dan Signal Kendali (control signal) akan diberikan kepada masing-masing Kaki Katoda Segmen LED.

Button Switch
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0).

AT Mega 32
AVR Atmega32 merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
·            Menggunakan arsitektur AVR RISC
-       131 perintah dengan satu clock cycle
-       32 x 8 register umum
·                 Data dan program memori
-          32 Kb In-System Programmable Flash
-          2 Kb SRAM
-          1 Kb In- System EEPROM
·         8 Channel 10-bit ADC
·         Two Wire Interface
·         USART Serial Communication
·         Master/Slave SPI Serial Interface
·         On-Chip Oscillator
·         Watch-dog Timer
·         32 Bi-directional I/O
·         Tegangan operasi 2,7 – 5,5 V


Arsitektur AVR ini menggabungkan perintah secara efektif dengan 32 register umum. Semua register tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa.

Rangkaian Simulasi [kembali]




Pada postingan kali ini kita akan membahas tentang counter up and down dengan 7 - segment dengan menggunakan button sebagai switch up/down. Button juga berperan sebagai input dan outputnya akan ditampilkan pada 7 - segment. Mikrokontroller yang digunakan yaitu AT Mega 32. Untuk compiler saya menggunakan CodeVision AVR.
Dalam rangkaian kita menggunakan 4 buah 7-segmen sebagai output yang masing - masingnya menampilkan bilangan satuan, puluhan, ratusan dan ribuan. Program akan di-compile dengan CodeVision AVR, setelah itu program akan di-input ke mikrokontroller yang nantinya akan memproses intpu/output. Terdapat 2 button, button up dan down yang akan memberikan input ke mikrokontroller. Jika kita menekan button up, maka 7 - segment menampilkan counter up. Dan jika menekan button down, maka 7 segment menampilkan counter down.
Untuk lebih jelasnya, mari kita perhatikan listing programnya.

Listing Program
[kembali]


#include <mega32.h>;
#include <delay.h>;

#define yes 1;
#define no  0;

int data, data_temp, tampil;
int status_in;
char ribuan=0, ratusan=0, puluhan=0, satuan=0, ubah;

void data_counter ();
void Display_7segment ();

void data_counter ()
{
    if (TCNT1==10000)
    {
        TCNT1=0;
    }
    if (PINA.0==1)
    {
        status_in=1;
    }
    if ((PINA.0==0)&&(status_in==1))
    {
        status_in=0;
        if (TCNT1>=1)  
        {
            TCNT1--;  
        }
        if (TCNT1<=0)
        {
            TCNT1=0;  
        }            
    }
    data=TCNT1;
}

void Display_7segment ()
{
      PORTC=ribuan;
      PORTD=0b11110111;
      delay_ms(5);

      PORTC=ratusan;
      PORTD=0b11111011;
      delay_ms(5);

      PORTC=puluhan;
      PORTD=0b11111101;
      delay_ms(5);

      PORTC=satuan;
      PORTD=0b11111110;
      delay_ms(5);
}

void Convert_ke_7segment ()
{
      if (ubah==0){tampil=0x3f;}
      if (ubah==1){tampil=0x79;}
      if (ubah==2){tampil=0x24;}
      if (ubah==3){tampil=0x30;}
      if (ubah==4){tampil=0x66;}
      if (ubah==5){tampil=0x6d;}
      if (ubah==6){tampil=0x7d;}
      if (ubah==7){tampil=0x07;}
      if (ubah==8){tampil=0x7f;}
      if (ubah==9){tampil=0x6f;}
}

void Kirim_data_Perdigit ()
{
      data_temp=data;
      satuan=data_temp%10;
      ubah=satuan;
      Convert_ke_7segment ();
      satuan=tampil;

      data_temp=data_temp/10;
      puluhan=data_temp%10;
      ubah=puluhan;
      Convert_ke_7segment ();
      puluhan=tampil;

      data_temp=data_temp/10;
      ratusan=data_temp%10;
      ubah=ratusan;
      Convert_ke_7segment ();
      ratusan=tampil;

      data_temp=data_temp/10;
      ribuan=data_temp%10;
      ubah=ribuan;
      Convert_ke_7segment ();
      ribuan=tampil;
}

void main(void)
{
    PORTA=0xff;
    DDRA=0xff;

    PORTC=0xff;
    DDRC=0xff;

    PORTD=0x0f;
    DDRD=0x0f;

    TCCR1A=0x00;
    TCCR1B=0x06;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    ACSR=0x80;
    SFIOR=0x00;

    status_in=0;

    while (1)
    {
        data_counter ();
        Kirim_data_Perdigit ();
        Display_7segment ();
    }
}
ter
Video [kembali]

Agar lebih memahami simulasi percobaan ini, anda dapat melihat video simulasi berikut.

Kesalahan dapat terjadi pada saat simulasi rangkaian. Diantaranya disebabkan oleh kesalahan dalam listing untuk output 7 segment (binary) atau pada aplikasi simulator maupun kemampuan processing komputer.


Link Download [kembali]

Untuk mempelajari lebih lanjut, anda dapat mendownload file c dan rangkaian simulasinya melalui link berikut.
http://www.mediafire.com/file/fg6qxnd9ypnmdw9/counter.rar

Jika terjadi kesalahan, mohon dimaafkan. Semoga bermanfaat! ;)

Selasa, 25 Juli 2017

Display LCD Menggunakan Button Switch Berbasis Mikrokontroller AT Mega 32


Display LCD Menggunakan Button Switch Berbasis Mikrokontroller AT Mega 32 

[kembali]

LCD (Liquid Crystal Display)
Display elektronik adalah salah satu komponen elektronika yang berfungsi sebagai tampilan suatu data, baik karakter, huruf ataupun grafik. LCD (Liquid Cristal Display) adalah salah satu jenis display elektronik yang dibuat dengan teknologi CMOS logic yang bekerja dengan tidak menghasilkan cahaya tetapi memantulkan cahaya yang ada di sekelilingnya terhadap front-lit atau mentransmisikan cahaya dari back-lit. LCD (Liquid Cristal Display) berfungsi sebagai penampil data baik dalam bentuk karakter, huruf, angka ataupun grafik.
Dalam modul LCD (Liquid Cristal Display) terdapat microcontroller yang berfungsi sebagai pengendali tampilan karakter LCD (Liquid Cristal Display). Microntroller pada suatu LCD (Liquid Cristal Display) dilengkapi dengan memori dan register. Memori yang digunakan microcontroler internal LCD adalah :
  • DDRAM (Display Data Random Access Memory) merupakan memori tempat karakter yang akan ditampilkan berada.
  • CGRAM (Character Generator Random Access Memory) merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai dengan keinginan.
  • CGROM (Character Generator Read Only Memory) merupakan memori untuk menggambarkan pola sebuah karakter dimana pola tersebut merupakan karakter dasar yang sudah ditentukan secara permanen oleh pabrikan pembuat LCD (Liquid Cristal Display) tersebut sehingga pengguna tinggal mangambilnya sesuai alamat memorinya dan tidak dapat merubah karakter dasar yang ada dalam CGROM.
Button Switch
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0).

AT Mega 32
AVR Atmega32 merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
·            Menggunakan arsitektur AVR RISC
-       131 perintah dengan satu clock cycle
-       32 x 8 register umum
·                 Data dan program memori
-          32 Kb In-System Programmable Flash
-          2 Kb SRAM
-          1 Kb In- System EEPROM
·         8 Channel 10-bit ADC
·         Two Wire Interface
·         USART Serial Communication
·         Master/Slave SPI Serial Interface
·         On-Chip Oscillator
·         Watch-dog Timer
·         32 Bi-directional I/O
·         Tegangan operasi 2,7 – 5,5 V



Arsitektur AVR ini menggabungkan perintah secara efektif dengan 32 register umum. Semua register tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa. 

Rangkaian Simulasi [kembali]


Pada postingan kali ini saya akan menampilkan percobaan display LCD dengan menggunakan button. Komponen penting yang terdapat pada percobaan ini diantaranya LCD sebagai output, beberapa button sebagai input dan AT Mega sebagai mikrokontrollernya. Untuk compiler, saya menggunakan CodeVision AVR.
Pada rangkaian terdapat 8 button yang terhubung ke seluruh pin yang ada di PORT C. Button berfungsi untuk memasukkan input yang nanti outputnya akan ditampilkan pada LCD. LCD akan menampilkan output jika kita mengaktifkan beberapa button yang ditentukan pada listing program. Contohnya, pada rangkaian ini jika button 1 (Pin 0 Port C) dan button 8 (Pin 7 Port C) diaktifkan, maka LCD akan menampilkan tulisan "Mikrokontroller 2017".
Untuk lebih jelasnya, mari kita perhatikan listing program yang digunakan.

Listing Program
[kembali]


#include <mega32.h>            //mendeklarasikan penggunaan AT Mega 32
#include <mega32_bits.h>    //mendeklarasikan penggunaan AT Mega 32
#include <alcd.h>                  //mendeklarasikan penggunaan LCD
#include <delay.h>                //mendeklarasikan fungsi delay

char kolom=0;                        //mendeklarasikan fungsi char
void main(void)                     //fungsi utama
{
    PORTA=0x00;DDRA=0xff;       //menentukan PORT A sebagai output
    PORTC=0x00;DDRC=0xff;       //menentukan PORT C sebagai input
    lcd_init(16);                                //menentukan LCD yang digunakan (2x16)
    while(1)                                      //fungsi while
    {
        for (kolom=0;kolom<=15;kolom++)            //fungsi for, char kolom=0 (kolom 0-15)
        {
            lcd_clear();                                      //tampilan LCD dikosongkan
            if (PINC.07==1)                              //fungsi if, jika Button 1 dan 8 aktif/Pin C 07(binary) high
            {
            lcd_gotoxy(1,0);                                     //penulisan LCD dimulai dari kolom 1 baris 0
            lcd_putsf("MICROCONTROLLER");  //karakter yang ditampilkan LCD
            lcd_gotoxy(kolom,1);                            //penulisan  LCD dari kolom 0 (char kolom) baris 1
            lcd_putsf("2017");                                 //karakter yang ditampilkan LCD
            delay_ms(100);                                      //waktu delay (100 ms)
            }
            if (PINC.05==1)                              //fungsi if, jika Button 1 dan 6 aktif/Pin C 05(binary) high
            {
            lcd_gotoxy(3,0);                             //penulisan LCD dimulai dari kolom 3 baris 0
            lcd_putsf("AGUNG ISWAR");      //karakter yang ditampilkan LCD
            lcd_gotoxy(kolom,1);                     //penulisan  LCD dari kolom 0 (char kolom) baris 1
            lcd_putsf("1310952041");              //karakter yang ditampilkan LCD
            delay_ms(100);                               //waktu delay (100 ms)
            }
        }
    }
}    

Video
[kembali]


Anda juga dapat menyaksikan simulasi percobaan diatas melalui video berikut.


Link Download
[kembali]


Jika anda ingin mempelajari lebih lanjut tentang topik ini, anda dapat mendownload rangkaian dan listing programnya melalui link dibawah.

Semoga bermanfaat! ;)

Kamis, 20 Juli 2017

Switch LED Menggunakan Button Berbasis Mikrokontroller AT MEGA 32

Switch LED Menggunakan Button Berbasis Mikrokontroller AT MEGA 32




1. Teori 
[kembali]

LED
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.
LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang dimaksud dengan proses doping dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).

Button Switch
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0).

AT Mega 32
AVR Atmega32 merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
·            Menggunakan arsitektur AVR RISC
-       131 perintah dengan satu clock cycle
-       32 x 8 register umum
·                 Data dan program memori
-          32 Kb In-System Programmable Flash
-          2 Kb SRAM
-          1 Kb In- System EEPROM
·         8 Channel 10-bit ADC
·         Two Wire Interface
·         USART Serial Communication
·         Master/Slave SPI Serial Interface
·         On-Chip Oscillator
·         Watch-dog Timer
·         32 Bi-directional I/O
·         Tegangan operasi 2,7 – 5,5 V

Arsitektur AVR ini menggabungkan perintah secara efektif dengan 32 register umum. Semua register tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa.

2. Rangkaian Simulasi [kembali]


Pada postingan kali ini saya akan menampilkan bagaimana switch LED menggunakan button. Pada percobaan kali ini saya menggunakan mikrokontroller AT Mega 32 dan button sebagai switch LED.
Fungsi switch button pada percobaan ini adalah untuk merubah pola ON/OFF pada LED. Untuk rangkaiannya, saya menggunakan 8 LED dan 3 switch button, yang mana ke-3 switch button tersebut dapat menampilkan pola yang berbeda - beda. Untuk rangkaiannya dapat dilihat diatas.

Agar rangkaian diatas tersebut dapat berjalan sesuai dengan yang diinginkan, maka perlu dibuat semacam listing program untuk di-upload ke mikrokontroller yang digunakan. Pada percobaan ini, saya menggunakan CodeVision AVR untuk membuat listing program dan sebagai compiler-nya. Berikut listing program yang digunakan.
[kembali]


#include <mega32.h>     //mendeklarasikan penggunaan AT Mega 128
#include <delay.h>         //mendeklarasikan fungsi delay
int shift=128;                  //integer shift

void main(void)         //fungsi utama
{
    PORTA=0x00;DDRA=0xff; //PORT A sebagai output
    PORTD=0x00;DDRD=0xf8; //PORT D sebagai input
    while(1)                 //fungsi while
    {
        PORTA=0x00;        //kondisi awal PORT A dimana semua pin dalam kondisi low
        if (PIND.0==1)        //fungsi if jika Pin 0 pada PORT D bernilai high
        {
            PORTA=shift;                //perintah PORT A untuk bergeser
            shift>>=1;                //pergeseran setiap satu langkah
            delay_ms(100);                //waktu delay yang digunakan setiap pergeseran (100 ms)
            if (shift<1)                        //fungsi if jika shift<1
            {
            shift=128;                //pergerseran kembali ke awal
            }                      
        }
        if (PIND.1==1)        //fungsi if jika Pin 1 pada PORT D bernilai high
        {
            PORTA=0xff;        //semua PORT A bernilai high
            delay_ms(200);                //waktu delay kondisi high (200 ms)
            PORTA=0x00;        //semua PORT A bernilai low
            delay_ms(200);            //waktu delay kondisi low (200 ms)
        }
        if (PIND.2==1)        //fungsi if  jika Pin 2 pada PORT D bernilai high
        {
            PORTA=0xff;        //semua PORT A bernilai high (semua LED hidup)
            delay_ms(100);                //waktu delay kondisi high
            PORTA=0x01;        //LED 1 hidup
            delay_ms(100);                //waktu delay LED 1
            PORTA=0x02;        //LED 2 hidup
            delay_ms(100);                //waktu delay LED 2
            PORTA=0x04;        //LED 3 hidup
            delay_ms(100);                //waktu delay LED 3
            PORTA=0x08;        //LED 4 hidup
            delay_ms(100);                //waktu delay LED 4
            PORTA=0x10;        //LED 5 hidup
            delay_ms(100);                //waktu delay LED 5
            PORTA=0x20;        //LED 6 hidup
            delay_ms(100);                //waktu delay LED 6
            PORTA=0x40;        //LED 7 hidup
            delay_ms(100);                //waktu delay LED 7
            PORTA=0x80;        //LED 8 hidup
            delay_ms(100);                //waktu delay LED 8
            PORTA=0x40;        //LED 7 hidup
            delay_ms(100);                //waktu delay LED 7
            PORTA=0x20;        //LED 6 hidup
            delay_ms(100);                //waktu delay LED 6
            PORTA=0x10;        //LED 5 hidup
            delay_ms(100);                //waktu delay LED 5
            PORTA=0x08;            //LED 4 hidup
            delay_ms(100);                //waktu delay LED 4
            PORTA=0x04;        //LED 3 hidup
            delay_ms(100);                //waktu delay LED 3
            PORTA=0x02;        //LED 2 hidup
            delay_ms(100);                //waktu delay LED 2
            PORTA=0x01;        //LED 1 hidup
            delay_ms(100);                //waktu delay LED 1
            PORTA=0x18;        //LED 5 dan 4 hidup
            delay_ms(100);                //waktu delay LED 5 dan 4
            PORTA=0x24;        //LED 6 dan 3 hidup
            delay_ms(100);                //waktu delay LED 6 dan 3
            PORTA=0x42;        //LED 7 dan 2 hidup
            delay_ms(100);                //waktu delay LED 7 dan 2
            PORTA=0x81;        //LED 8 dan 1 hidup
            delay_ms(100);                //waktu delay LED 8 dan 1
        }
    }
}


Penasaran? Anda dapat melihat simulasi percobaan tersebut dengan menonton video berikut.

4. Video
[kembali]



[kembali]


Jika anda ingin mempelajari lebih lanjut, anda dapat mendownload rangkaian dan listing program melalui link dibawah ini.
http://www.mediafire.com/file/3dmz3q17d2ana28/16-led.rar

Semoga bermanfaat! :)

Praktikum Mikroprosesor dan Mikrokontroller: Modul I

MODUL I MIKROKONTROLLER ATMEGA128 [KEMBALI KE HOME] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Prosedur...