Tuesday, December 20, 2011

Bahasa C untuk MC Atmega8535

ATMEGA8535/L

Atmel merupakan vendor yang mengembangkan AVR (Alf and Vegard's Risc processor) pada tahun 1997 dengan menggunakan arsitektur RISC (Reduce Instruction Set Computer)yang mempunyai lebar bus data 8 bit. AVR mempunyai kecepatan 12 kali lebih cepat dibandingkan dengan MC MCS51.

Secara umum AVR dibagi menjadi 4 kelas, yaitu:
1. ATtiny
2. AT90Sxx
3. ATmega
4. AT86RFxx
Perbedaannya terletak pada fitur-fitur yang ditawarkan, sementara arsitektur dan set intruksi hampir sama.


PROGRAM BANTU

AVR STUDIO 4

AVR STUDIO adalah suatu proram bantu yang terintegrasi untuk menulis sekaligus debug aplikasi AVR dengan SO Windows 9x/Me/NT/XP/Vista/7. AVR STUDIO diperlukan karena Code Vision AVR-Eval memerlukan source cide dari AVR STUDIO untuk komplikasi. Untuk download AVR STUDIO 4 klik disini

CODE VISION AVR EVAL

Code Vision AVR C Compiler (CVAVR) adalah kompiler bahasa C untuk AVR. Meski hanya program evaluasi tetapi program ini cukup untuk belajar pemrograman AVR.
Untuk mendapatkan CVAVREval klik disni

Sebelum Mengaplikasikan tentukan terlebih dahulu clock dan boundrate sismin yang anda pakai....

PENAMPIL PADA LCD 2X16





Untuk menampilkan karakter atau string ke LCD sangat mudah karena didukung pustaka yang telah disediakan oleh CodeVision AVR. Tidak harus memahami karakteristik LCD secara mendalam dan tidak perlu mengetahui cara inisialisasi dan akses memori LCD. Cukup memperlakukan LCD seperti halnya monitor pada komputer.

Ayo kita praktekkan.....

RANGKAIAN LCD KE SISTEM MINIMUM

Buat proyek baru dengan setting chip, clock dan bagian LCD seperti gambar berikut:


Setelah itu Generate file, save and exit. Simpan sesuai dengan keinginan anda.


Lisiting Program:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :LCD1
Version :1
Date :9/20/2011
Author :Efniko Supratama
Company :
Comments:Dasar Penampil ke LCD


Chip type : ATmega8535
Program type : Application
Clock frequency : 11.059000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/

#include
#include //untuk pemanggilan delay
#include //untuk memakai library stdio.h untuk menyimpan ke SRAM

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include

// Declare your global variables here
char buf[33]; //deklarasi variabel buf untuk menyimpan string
//yg akan ditampilkan ke lcd
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

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

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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: Timer 2 Stopped
// Mode: Normal top=FFh
// 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;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16); //inisialisasi LCD 2x16
lcd_gotoxy(1,0); //menempatkan posisi di 0,0
//kolom 0, baris 0
lcd_putsf("TESTING"); //menampilkan string TESTING
lcd_gotoxy(0,1); //menempatkan posisi di kolom 0, baris 1
lcd_putsf("MICROCONTROLLER"); //menampilkan string
delay_ms(2000); //untuk set delay
lcd_clear(); //untuk menghapus tampilan LCD
lcd_gotoxy(0,0);
sprintf(buf,"\x7f9101152620017"); //untuk pemanggilan karakter pada library x7f
lcd_puts(buf); //untuk menampilkan karakter yg telah di panggil
delay_ms(100);lcd_clear();


while (1)
{
// Place your code here

};
}


SEVEN SEGMENT




Seven segmen merupakan suatu sistem yang smart, selain dapat dihubungkan dengan sistem minimum atau sistem mikrokontroleryang lain. Seven segment dapat juga di hubungka dengan komputer.
Seven segment dapat di operasi dalam 2 mode, mode display dan mode stand alone counter. Pemilihan ini diatur dengan cara mengganti setting jumper. Pada mode stand-alone counter, hanya berfungsi sebagai counter yang dikendalikan melalui header.
Pada mode display, dikendalikan oleh mikrokontroler atau komputer melalui antarmuka yang dikehendaki. Penggunaan antarmuka tidak dapat dilakukan bersamaan, pemilihan antara antarmuka diatur dengan cara mengganti setting jumper.

RANGKAIAN SEVEN SEGMEN KE SISTEM MINIMUM



LISTING PROGRAM SEVEN SEGMENT

Buat proyek baru. Jangan lupa setting chip dan clock dan kemudian setting bagian PORT seperti gambar berikut:


href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp1Vq2Xoxf86752dOEtJONa0FhYauhBsZqfAISBV-rkuQ5URr34vnjfCrlitp5FEzd5UOLPgt4m0-ghI1nMrzoWpIK_pQKJOHDQfz980ludEwdSd9iqpR_6vidXkd0_Vi2rA3ILGcq4vrF/s1600/Untitled2.png">


Setelah itu Generate file, Save and exit.
Lisiting Program:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :7S
Version :1
Date :11/4/2011
Author :Efniko Supratama
Company :
Comments:Dasar Penampil 00-99


Chip type : ATmega8535
Program type : Application
Clock frequency : 11.059000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/
#include
#include
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Timer 1 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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

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

while (1)
{
PORTA=0x01;
delay_ms(500);
PORTA=0x02;
delay_ms(500);
PORTA=0x03;
delay_ms(500);
PORTA=0x04;
delay_ms(500);
PORTA=0x05;
delay_ms(500);
PORTA=0x06;
delay_ms(500);
PORTA=0x07;
delay_ms(500);
PORTA=0x08;
delay_ms(500);
PORTA=0x09;
delay_ms(500);
PORTA=0x10;
delay_ms(500);
PORTA=0x11;
delay_ms(500);
PORTA=0x12;
delay_ms(500);
PORTA=0x13;
delay_ms(500);
PORTA=0x14;
delay_ms(500);
PORTA=0x15;
delay_ms(500);
PORTA=0x16;
delay_ms(500);
PORTA=0x17;
delay_ms(500);
PORTA=0x18;
delay_ms(500);
PORTA=0x19;
delay_ms(500);
PORTA=0x20;
delay_ms(500);
PORTA=0x21;
delay_ms(500);
PORTA=0x22;
delay_ms(500);
PORTA=0x23;
delay_ms(500);
PORTA=0x24;
delay_ms(500);
PORTA=0x25;
delay_ms(500);
PORTA=0x26;
delay_ms(500);
PORTA=0x27;
delay_ms(500);
PORTA=0x28;
delay_ms(500);
PORTA=0x29;
delay_ms(500);
PORTA=0x30;
delay_ms(500);
PORTA=0x31;
delay_ms(500);
PORTA=0x32;
delay_ms(500);
PORTA=0x33;
delay_ms(500);
PORTA=0x34;
delay_ms(500);
PORTA=0x35;
delay_ms(500);
PORTA=0x36;
delay_ms(500);
PORTA=0x37;
delay_ms(500);
PORTA=0x38;
delay_ms(500);
PORTA=0x39;
delay_ms(500);
PORTA=0x40;
delay_ms(500);
PORTA=0x41;
delay_ms(500);
PORTA=0x42;
delay_ms(500);
PORTA=0x43;
delay_ms(500);
PORTA=0x44;
delay_ms(500);
PORTA=0x45;
delay_ms(500);
PORTA=0x46;
delay_ms(500);
PORTA=0x47;
delay_ms(500);
PORTA=0x48;
delay_ms(500);
PORTA=0x49;
delay_ms(500);
PORTA=0x50;
delay_ms(500);
PORTA=0x51;
delay_ms(500);
PORTA=0x52;
delay_ms(500);
PORTA=0x53;
delay_ms(500);
PORTA=0x54;
delay_ms(500);
PORTA=0x55;
delay_ms(500);
PORTA=0x56;
delay_ms(500);
PORTA=0x57;
delay_ms(500);
PORTA=0x58;
delay_ms(500);
PORTA=0x59;
delay_ms(500);
PORTA=0x60;
delay_ms(500);
PORTA=0x61;
delay_ms(500);
PORTA=0x62;
delay_ms(500);
PORTA=0x63;
delay_ms(500);
PORTA=0x64;
delay_ms(500);
PORTA=0x65;
delay_ms(500);
PORTA=0x66;
delay_ms(500);
PORTA=0x67;
delay_ms(500);
PORTA=0x68;
delay_ms(500);
PORTA=0x69;
delay_ms(500);
PORTA=0x70;
delay_ms(500);
PORTA=0x71;
delay_ms(500);
PORTA=0x72;
delay_ms(500);
PORTA=0x73;
delay_ms(500);
PORTA=0x74;
delay_ms(500);
PORTA=0x75;
delay_ms(500);
PORTA=0x76;
delay_ms(500);
PORTA=0x77;
delay_ms(500);
PORTA=0x78;
delay_ms(500);
PORTA=0x79;
delay_ms(500);
PORTA=0x80;
delay_ms(500);
PORTA=0x81;
delay_ms(500);
PORTA=0x82;
delay_ms(500);
PORTA=0x83;
delay_ms(500);
PORTA=0x84;
delay_ms(500);
PORTA=0x85;
delay_ms(500);
PORTA=0x86;
delay_ms(500);
PORTA=0x87;
delay_ms(500);
PORTA=0x88;
delay_ms(500);
PORTA=0x89;
delay_ms(500);
PORTA=0x90;
delay_ms(500);
PORTA=0x91;
delay_ms(500);
PORTA=0x92;
delay_ms(500);
PORTA=0x93;
delay_ms(500);
PORTA=0x94;
delay_ms(500);
PORTA=0x95;
delay_ms(500);
PORTA=0x96;
delay_ms(500);
PORTA=0x97;
delay_ms(500);
PORTA=0x98;
delay_ms(500);
PORTA=0x99;
};
}

No comments:

Post a Comment