Professional Documents
Culture Documents
Praktek 6 AVR Display Data Pada LCD-1
Praktek 6 AVR Display Data Pada LCD-1
Tujuan:
Mahasiswa mengerti cara membuat program C pada mikrokontroller AVR untuk
melakukan pemrograman pada modul LCD
Pins Description
1 Ground
2 Vcc
3 Contrast Voltage
4 "R/S" _Instruction/Register Select
5 "R/W" _Read/Write LCD Registers
6 "E" Clock
7 - 14 Data I/O Pins (D0..D7)
Pins Description
15 Anoda (+) backlight
16 Katoda (-) backlight
Enable Display/Cursor
D - Turn Display On(1)/Off(0)
C - Turn Cursor On(1)/Off(0)
B - Cursor Blink On(1)/Off(0)
PERCOBAAN 1
#include <mega128.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
lcd_init(20); // Inisialisasi LCD
lcd_putchar('s'); // Tampilkan karakter s di baris 0 kolom 0
lcd_gotoxy(5,0); // Ke kolom 5 baris 0
lcd_putchar('t'); // Tampilkan karakter t di kolom 5 baris 0
lcd_gotoxy(3,1); // Ke kolom 3 baris 1
lcd_putchar('t'); // Tampilkan karakter t di kolom 3 baris 1
while(1)
{
};
}
Hasilnya:
PERCOBAAN 2
#include <mega128.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
Hasilnya :
PERCOBAAN 3
#include <mega128.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
while(1)
{
};
}
Hasilnya :
PERCOBAAN 4
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
while(1)
{
};
}
Hasilnya :
PERCOBAAN 5
Animasi garis yang berputar.
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
while (1)
{
lcd_gotoxy(10,0);
lcd_putchar('-');
delay_ms(100);
lcd_gotoxy(10,0);
lcd_putchar('|');
delay_ms(100);
lcd_gotoxy(10,0);
lcd_putchar('/');
delay_ms(100);
};
}
Hasilnya :
PERCOBAAN 6
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
int a;
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
while (1)
{
lcd_putsf ("Loading.. ");
lcd_gotoxy(0,1);
for (a=1;a<=20;a++)
{
lcd_putchar(0xff);
delay_ms(300);
}
lcd_gotoxy(0,0);
lcd_putsf ("Process Complete. ");
delay_ms(2000);
lcd_clear();
};
}
Hasilnya :
PERCOBAAN 7
Menampilkan angka desimal dari 0 sampai 999 dan berulang. ( ratusan / 3 digit )
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
///////////////////////////////
void H2BCD(int bilangan)
{
int ratusan,puluhan,satuan;
lcd_putchar(ratusan+0x30);
lcd_putchar(puluhan+0x30);
lcd_putchar(satuan+0x30);
}
void main(void)
{
int a;
lcd_init(20);
while (1)
{
for(a=0;a<=999;a++)
{ lcd_gotoxy(0,0);
H2BCD(a);
delay_ms(100);
}
}
}
Hasilnya :
PERCOBAAN 8
Menampilkan angka desimal dari 0 sampai 2999 dan berulang. ( ribuan / 4 digit )
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
///////////////////////////////
void H2BCD(int bilangan)
{
int ratusan,puluhan,satuan,ribuan;
ribuan=bilangan/1000;
ratusan= (bilangan - (ribuan*1000))/100; // misal bilangan=231
// 231/100= 2
puluhan=(bilangan-(ribuan*1000)-(ratusan*100))/10; // (231-(2*100))/10
// (231-200)/10 = 31/10 = 3
satuan = bilangan - (puluhan*10) - (ratusan*100)- (ribuan*1000);
lcd_putchar(ribuan+0x30);
lcd_putchar(ratusan+0x30);
lcd_putchar(puluhan+0x30);
lcd_putchar(satuan+0x30);
}
void main(void)
{
int a;
lcd_init(20);
while (1)
{
for(a=0;a<=2999;a++)
{ lcd_gotoxy(0,0);
H2BCD(a);
delay_ms(50);
}
}
Hasilnya :
PERCOBAAN 9
Menampilkan tulisan “COBA LCD” scroll dari kanan ke kiri.
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
/////////////////////////
void main(void)
{
int a,i;
flash unsigned char *pesan;
PORTA=0x00; // semua bit jadi output
DDRA=0xFF;
lcd_init(20);
while (1)
{
for(a=0;a<20+8;a++) // 20 + Jmlh karakter
{
for(i=0;i<=19;i++)
{
lcd_putchar(pesan[a+i]);
}
delay_ms(100);
lcd_clear();
}
}
}
Hasilnya :
PERCOBAAN 10
Menampilkan tulisan “COBA LCD” scroll dari kanan ke kiri.
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
/////////////////////////
void main(void)
{
int a,i;
flash unsigned char *pesan;
Hasilnya :
PERCOBAAN 11
Program untuk menampilkan tulisan
“TEKNIK ELEKTRO INDUSTRI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA”
scroll dari kiri ke kanan.
Program :
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
int a,i;
flash unsigned char *pesan;
PERCOBAAN 12
Program untuk menampilkan tulisan
“TEKNIK ELEKTRO INDUSTRI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA”
scroll dari kanan ke kiri.
Program :
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
void main(void)
{
int a,i;
flash unsigned char *pesan;
while (1)
{
for(a=0;a<=82;a++) // 40 + Jmlh karakter (62)
{
for(i=0;i<=19;i++)
{
lcd_putchar(pesan[a+i]);
}
delay_ms(10);
lcd_clear();
}
}
}
Hasilnya :
PERCOBAAN 13
Program untuk menampilkan tulisan
“TEKNIK ELEKTRO INDUSTRI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA”
scroll dari kiri ke kanan., dan setelah sampai ujung kanan kembali ke kiri.
Program :
#include <mega128.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
/////////////////////////
void main(void)
{
int a,i;
flash unsigned char *pesan;
lcd_init(80);
while (1)
{ //kiri ke kanan
for(a=100;a>=21;a--)
{
for(i=19;i>=0;i--)
{
lcd_putchar(pesan[a-i]);
}
delay_ms(7);
lcd_clear();
}
//kanan ke kiri
for(a=1;a<=81;a++)
{
for(i=0;i<=19;i++)
{
lcd_putchar(pesan[a+i]);
}
delay_ms(7);
lcd_clear();
}
}
}
Hasilnya :