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