Kali ini saya akan membahas tentang cara antarmuka/interface antara mikrokontroler seri AT-Mega (dalam post ini mengunakan At-Mega 16) dengan LCD Karakter dan mengunakan complier CodeVision AVR. Pada post ini saya mengunakan LCD karakter 2x16 dimana “2” merupakan lebar display LCD 2 kolom dan “16” merupakan banyak kolom display.

Terlihat dari gambar di atas terdapat 16 pin konektor dimana tiap pin memiliki fungsi-fungsi sebagai berikut :

Oke jika kita sudah mengetahui fungsi tiap Pinnya maka sekarang kita rangkaian lcd dengan mikrokontrolernya sebagai berikut :

LCD Display kita hubungkan dengan PORT.A dengan pin terhubung sesuai diatas (interface dengan lcd tidak harus dengan PORT .A bisa saja PORT.B , PORT.C , PORT.D bahkan jika kita mengunakan Codewizard AVR tiap Pin bisa berbeda-beda PORT). Jika hardware sudah beres sekarang tinggal mengatur konfigurasi Pinya pada programnya.

Setelah itu kita atur fungsi port yang terhubung dengan LCD. Setelah itu klik Generate.

Setelah itu akan keluar perintah save C source code(.c), Project(.prj) dan Codewizard(.cwp) . Save pada direktori yang kalian inginkan. Maka akan muncul sederetan bahasa program hasil codewizard. Sekarang kita edit menjadi seperti berikut :
/***************************************************** 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 : Akses Simple LCD karakter dengan Codewizard Version : Date : 8/14/2013 Author : Electro-Bee.blogspot.com Company : Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega16.h> // Alphanumeric LCD functions #include <alcd.h> // 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 - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 4 // D5 - PORTA Bit 5 // D6 - PORTA Bit 6 // D7 - PORTA Bit 7 // Characters/line: 16 lcd_init(16); while (1) { // Place your code here lcd_gotoxy(0,0); //merupakan perintah untuk mengatur baris/ kolom pada display,"0" pertama untuk baris dan "0" kedua untuk kolom lcd_putsf("Hello Word");//merupakan perintah untuk menampilkan karakter yang ingin ditampilkan. lcd_gotoxy(4,1); lcd_putsf("Electro-Bee"); } }

Simpel kand ? yup karena library lcd dan konfigurasi pinya sudah diatur mengunakan CodeWizard AVR. Tidak ada salahnya saat kita ”mahir” nanti library hasil buat sendiri librarynya dengan bahasa assembly. To Be Continue….. ^_^ CMIIW
Post a Comment
Silahkan tinggalkan komentar jika ada pertanyaan, saran atau kritikan yang sifatnya membangun.
Berkomentarlah dengan sopan, AMAT SANGAT DILARANG berkomentar berbau POLITIK,KONSPIRASI,SARA dan PORNOGRAFI.
Terima Kasih Atas Kunjunganya. Jangan lupa tekan CTRL+D yaa...
Salam @dmin electro-bee.blogspot.com