Rabu, 30 Mei 2018

AKSES LCD




LAPORAN
PRAKTIK MIKROKONTROLLER
DOSEN PENGAMPU MUSLIKHIN, M.Pd.



AKSES LCD

Disusun oleh:
Istiqomah        16507134035  Angkatan 2016



TEKNIK ELEKTRONIKA-D3
PENDIDIKAN TEKNIK ELEKTRONIKA DAN INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
2018


A.    TUJUAN

Setelah melakukan praktik mahasiswa diharapkan dapat:

a.     Memahami konfigurasi LCD
b.     Menguasai animasi tampilan data pada LCD

B.     DASAR TEORI
Mengakses LCD pada AVR dapat dilakukan dengan mode 4 bit. Untuk menggunakan mode 4 bit, kita dapat menggunakan library built in pada Code Vision. Library ini telah terdapat berbagai fungsi untuk menampilkan karakter ke LCD. Beberapa perintah dasar akses LCD antara lain;
1)                   Membersihkan layar LCDClear();

2)                   Set cursor pada posisi tertentu LCDGotoXY(x,y); x merupakan colom pada LCD, y adalah barisnya. Pada LCD 16x2, terdapat 16 yakni 0-15 dan 0-1.

3)                   Inisialisasi LCD lcd_init(void)
4)                   Menuliskan  karakter   ke LCD  lcd_putchar(char c). Misalnya
lcd_putchar(”C”) akan menuliskan karakter C ke LCD.

5)                   Menuliskan string ke LCD lcd_putsf(char*str). Misalnya, lcd_putsf(“TEMPERATURE”) akan menuliskan string TEMPERATURE pada LCD. Sebelum dapat menggunakan berbagai fungsi tersebut, pada bagian header dari program kita harus menginclude librarynya.


C.    ALAT DAN BAHAN
a.    Modul AVR Atmega8535/8/16/32
b.    PC (Personal computer)/laptop

c.    Jumper


D.    SKEMA RANGKAIAN








E.     LANGKAH KERJA

a.         Merangkai alat dan bahan seperti rangkaian di atas;

b.        Membuat program seperti yang tertulis berikut, uji cobakan/simulasikanlah di Proteus lalu coba pada hardware nyata;
c.         Membuat program berikut;
*****************************************************/
#include <mega8535.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
.equ lcd_port=0x12 ;PORTD
#endasm
#include <lcd.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=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);
{
lcd_gotoxy(0,0);     //masuk ke i digit pertama lcd_putsf("KELAS B 2012");  //

lcd_gotoxy(0,1);
delay_ms(100);     //delay akhir tampilnya 100ms lcd_clear();                    //    bersihkan      LCD  untuk  tampilan berikutnya
}

lcd_putsf("BELAJAR AVR..!"); delay_ms(500);
lcd_clear();

lcd_gotoxy(0,0); lcd_putsf("SUKSES BRO"); lcd_gotoxy(0,1); lcd_putsf("PT. ELKA 2012"); delay_ms(1000); lcd_clear();

lcd_gotoxy(0,0); lcd_putsf("Sinau sregep.."); lcd_gotoxy(0,1); lcd_putsf("by Muslikhin"); delay_ms(500);
lcd_clear();

while (1)
{
// Place your code here

};
}

F.     DATA HASIL PRAKTIKUM
Berikut hasil simulasi menggunakan Proteus 8


/*****************************************************
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 :
Version :
Date    : 15/02/2018
Author  : tyery08
Company : embeeminded.blogspot.com
Comments:


Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega16.h>
#include <delay.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 - PORTD Bit 2    //2
// RD - PORTD Bit 1     //1
// EN - PORTD Bit 3     //3
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
{
      lcd_gotoxy(0,0); //masuk ke i digit pertama
lcd_putsf("KELAS B3 2016"); //
lcd_gotoxy(0,1);
delay_ms(100); //delay akhir tampilnya 100ms
lcd_clear(); // bersihkan LCD untuk tampilan berikutnya
}

lcd_putsf("ISTIQOMAH");
delay_ms(500);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("SUKSES SELALU");
lcd_gotoxy(0,1);
lcd_putsf("TE 2016");
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Sinau sregep..");
lcd_gotoxy(0,1);
lcd_putsf("by Isti");
delay_ms(500);
lcd_clear();
while (1)
      {
        }
}

Pragram 2
/*****************************************************
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 :
Version :
Date    : 22/02/2018
Author  : tyery08
Company : embeeminded.blogspot.com
Comments:


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 8,000000 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 - PORTD Bit 2
// RD - PORTD Bit 1
// EN - PORTD Bit 3
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 8
lcd_init(8);

while (1)
      {
lcd_gotoxy(0,0);
lcd_putsf("PRAKTIK MIKROKONTROLER B3");
      // Place your code here

      }
}






G.    ANALISA DATA

Dalam praktikum mikrokontroller pada job LCD hal pertama yang dilakukan adalah memahami teori dasar dari LCD. Mikrokontroler yang digunakan adalah ATMega16. Selanjutnya membuat rangkaian pada proteus dan selanjutnya mensimulasikannya. Sebelum disimulasikan dibuat programnya terlebih dahulu di CVAVR. Setelah program berhasil dibuat selanjutnya dijalankan di proteus terlebih dahulu sebelum ke hardware. Jika berhasil disimulasikan akan muncul tampilan pada LCD dengan tulisan “KELAS B3 2016 ISTIQOMAH SUKSES SELALU TE 2016 Sinau sregep by Isti”. Jika telah benar selanjutnya menghubungkan kabel USB ke laptop dan trainer mikrokontroler dan menampilkannya. Pada praktik LCD ini pada atmega16 PORTD digunakan sebagai port output. Disini RS digunakan PORTD Bit 2, RD - PORTD Bit 1, EN - PORTD Bit 3, D4 - PORTD Bit 4, D5 - PORTD Bit 5, D6 - PORTD Bit 6, dan D7 - PORTD Bit 7.

H.    KESIMPULAN
Berdasarkan hasil praktikum yang telah dilakukan dan teori yang telah ada maka dapat disimpulkan:
1.      Dalam mengakses LCD pada AVR dapat dilakukan dengan mode 4 bit pada library built di Code Vision. Beberapa perintah dasar untuk akses LCD yaitu dengan membersihkan layar LCD, set cursor pada posisi tertentu, inisialisasi LCD, menuliskan karakter ke LCD, dan menuliskan string ke LCD.
2.      Pada output dimikrokontroler harus diperhatikan pula port output serta bitnya sesuai dengan hardware yang digunakan.



Tidak ada komentar:

Posting Komentar