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