Senin, 19 November 2012

Fungsi Input dan Output Mikrokontroller.



Setelah pada postingan terdahulu saya telah berbagi postingan dengan fasilitas output mikrokontroller, maka pada postingan sekarang saya akan coba menambahkan fasilitas input kemudian data dikeluarkan ke output. Untuk contoh komponen input saya akan menggunkan tombol Pushbutton sementara komponen output menggunkan LED.
Perlu temen –temen ketahui dalam dunia digital ada dua kondisi (logik) yang digunakan yaitu kondisi high disimbolkan dengan angka (1) dan kondisi low dengan simbol 0. Dalam pelaksanaannya (tegangan Analog) pada rangkaian elektronika logika high adalah tegangan 5 V sementara low adalah 0 V atau ground.
Jadi sebelum kita membuat program kita harus tahu dulu rangkaian yang kita rancang logicnya high atau low. Untuk lebih jelasanya saya coba gambarkan ilustrasi rangkainya sebagai berikut:
Rangkaian input high (5V).
Berikut ini adalah rangkaian input high, ketika tombol ditekan maka rangkaian akan tersambung dengan tegangan 5 V ( logic high) yang dikirim sebagai data input high ke mikrokontroller.


Gambar : Rangkaian Input High (1)
Rangkaian input low (gnd).
Jika Input high rangkaian disambungkan ke tegangan 5V, maka untuk rangkaian input low sumber data input kemikrokontroller adalah dengan disambungkan ke ground. Rangkaiannya seperti pada gambar dibawah ini
Gambar: rangkaian Input Low (0)

Rangkaian Output high (5V).
Yang saya maksud dengan rangkaian output high adalah mikrokontroller mengeluarkan logic high untuk menjalankan sebuah komponen dalam hal ini saya mencontohkan dengan led. pada pelaksanaannya kita bisa mengontroll apa saja bebas contohnya untuk mengontrol motor, relay, selinoid dll.
Rangkaian Led ini akan menyala jika mikrokontroller mengeluarkan logic High, dan akan mati jika mikrokontroller mengeluarkan logic low.

Gambar: Rangkaian Output High (5V)
Rangkaian output low(gnd).
Rangkaian Led ini akan menyala jika mikrokontroller mengeluarkan logic low (di groundkan,) dan akan mati jika mikrokontroller mengeluarkan logic high (mendapat tegangan 5V).
Gambar: Rangkaian Output Low (Gnd)


Oke saya rasa sudah cukup jelas untuk dasar teori sederhananya, kalau masih kurang jelas silahkan Tanya saja jangan sungkan –sukan kawan. Maklum saya juga masih belum fasih dalam menjelaskannya he…

Sekarang kita langsung saja ke contoh sistem kontrollnya.
Pada contoh kali ini saya akan menggunkan PORTA sebagai input dan PORTC sebagai output.
Prinsip kerja rangkaian kontrollnya simple saja PORTA = PORTC. Artinya jika input pada PORTA = 0 maka output pada port C = 0, begitu juga sebaliknya. Rangkaian yang akan dibuat adalah aktif low berarti mikrokontroller diseting Default  PORTA dan PORTC high.

Contohnya :
Jika PINA.0 = 0 maka PORTC.0 =0,
Jika PINA.0 = 1 maka PORTC.0 =1,
Jika PINA.1 = 0 maka PORTC.1 =0,
Ngertikan maksud saya. He…
Untuk skematiknya sebagai berikut: 

   
Membuat Program:
Untuk membuat program Silahkan Setting Penggunaan Chip dan Fungsi IO Seperti gambar berikut:

Gambar : Seting Chip dan nilai Cristal yang digunakan


Gambar : Seting PORTA Sebagai Input dan Pullup diaktifkan,

Gambar : Seting PORTC Sebagai Output dan Pullup diaktifkan,

Kemudian Generate,Save and Exit

Listing Program:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Fungsi Input - Output
Version : V01
Date    : 10/30/2012
Author  : Aris Munandar
Company : Les Elektronika
Comments: " Semoga Bermanfaat"
Informasi Lanjut: - www.leselektronika.blogspot.com
                  - munandar89@yahoo.com

Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 11.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/
#include
#include
void main(void)
{
PORTA=0xFF; //PORTA diseting Awal High
DDRA=0x00;  // PORTA sebagai input

PORTB=0x00;
DDRB=0x00;

PORTC=0xFF;//PORTC diseting awal high
DDRC=0xFF;// PORTC sebagai output

PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

while (1)
      {
      // Place your code here
      PORTC = PINA; // Logic Pin pada Port A sama dengan Logic Pin pada PORTC 
            }
}

Untuk rangkaian simulasi dan program lengkapnya bisa didownload disini.
Tambahan:
Jika kawan – kawan ingin belajar coba sekarang rubah menjadi rangkaian aktif High.  



15 komentar:

  1. q baru belajar..... dan mengerti sedikt2
    tolong bantu diajari????

    BalasHapus
    Balasan
    1. Insyaallah, semampu saya...
      dishare z...

      Hapus
    2. assalamualaikum..

      mas aku juga minta tolong ajari boleh ga?
      pliss . .

      Hapus
    3. waalaikum salam,
      boleh kang syafik, semampu saya, soalnya saya juga sama masih belajar..

      Hapus
  2. saya masi super newbie nih kaka, saya butuh simulasi proteusnya donk. udah saya kirim ke email kaka.
    makasi kaka :)

    BalasHapus
  3. Boleh kursus ke tempat suhu gak ya?

    BalasHapus
  4. tks @ materinya,ijin copy untuk referensi pembelajaran, smg Tuhan membalas kebaikan Mas Aris Munandar.

    BalasHapus

Silahkan tinggalkan komentar kawan - kawan, baik berupa pertanyaan ataupun saran yang sifatnya membangun. komentar kawan - kawan sangat berharga untuk kemajuan blog ini. kalau bisa mohon hindari penggunaan Anonim. Semoga bermanfaat untuk kita semua...
Terimakasih....