Kondisi sistem: Mikrokontroler yang digunakan adalah ATmega8535, dalam hal ini untuk memudahkan digunakan DI-Smart AVR System. Tujuan pemrogram adalah untuk menampilkan tulisan “Apa Kabar Dunia? SEMANGAT!” di LCD yang terhubung dengan PORTB dari mikrokontroler ATmega8535 pada DI-Smart AVR System. Tulisan akan ditampilkan pada LCD 16X2 Karakter yang pada latihan ini digunakan DI-Smart LCD16X2 Board. Langkah-langkah pemrograman: 1. Pilih File >> New:
2. Pilih Project >> OK:
3. Pilih Yes untuk menggunakan CodeWizardAVR:
4. Pilih AT90, ATtiny, ATmega, FPSLIC >> OK:
5. Pilih Tab Chip kemudian set Chip >> Atmega8535 dan Clock >> 11.059200 MHz:
6. Pilih Tab Ports kemudian pilih Tab Alphanumeric LCD kemudian klik Enable Alphanumeric LCD Support pada kotak Characters/Line pilih 16 kemudian pada kotak PORT ubah seluruhnya ke PORTB (disesuaikan dengan rangkaian) sedangkan pada bagian bit biarkan seperti default-nya (RS:0, RW:1, EN:2, D4:4, D5:5, D6:6, D7:7):
7. Klik lambang roda gigi untuk meng-Generate program, save and exit:
8. Simpan file skrip program dalam extensi *.c (contoh OUTPUT LCD PORTB.c) :
9. Simpan file project dalam extensi *.prj (contoh OUTPUT LCD PORTB.prj):
10. Simpan file linker yang dibutuhkan CVAVR dalam extensi *.cwp (contoh OUTPUT LCD PORTB.cwp):
11. Berikut adalah tampilan awal:
12. Tambahkan library delay.h:
13. Berikut adalah skrip program lengkapnya:
14. Setelah selesai penulisan skrip program, lanjutkan dengan Build all project files:
15. Berikut jika program terjadi Error:
16. Klik pada tulisan Error pada layar bawah dan dengan otomatis CVAVR menunjukkan pada baris mana terjadinya Error (penunjukkan baris Error tidak selamanya pada baris tersebut bisa saja error sebenarnya terjadi pada 1 baris sebelum ataupun 1 baris setelahnya seperti pada contoh):
17. Berikut tampilan saat skrip program telah sukses:
18. Setelah sukses, selanjutnya adalah mengunduh (men-download) program ke IC dengan meng-klik Run the chip programmer:
/***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Evaluation Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 4/21/2012 Author : Freeware, for evaluation and non-commercial use only Company : Comments:
Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size :0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> //DITAMBAHKAN OLEH PROGRAMMER // Alphanumeric LCD functions #include
// Declare your global variables here 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=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; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTB Bit 0 // RD - PORTB Bit 1 // EN - PORTB Bit 2 // D4 - PORTB Bit 4 // D5 - PORTB Bit 5 // D6 - PORTB Bit 6 // D7 - PORTB Bit 7 // Characters/line: 16 lcd_init(16); while (1) { // Place your code here lcd_clear(); // Membersihkan layar LCD dan memposisikan kursor pada koordinat baris pertama awal (0,0)
delay_ms(250); // Menunda layar kosong selama 250 milidetik lcd_putsf("Apa Kabar Dunia?"); // Menampilkan tulisan "Apa Kabar Dunia?" pada baris atas LCD lcd_gotoxy(0,1); // Memposisikan kursor pada koordinat baris kedua awal (0,1) lcd_putsf("SEMANGAT!"); // Menampilkan tulisan "SEMANGAT!" pada baris bawah LCD delay_ms(500); // Menunda layar bertulisan selama 500 milidetik } }