Anda di halaman 1dari 3

l Pembelajaran Pembuat Blog Sendiri.

Search

LATIHAN CODEVISION AVR (RUNNING TEXT)

Latihan berikut ini untuk membuat tampilan LCD berjalan di baris ke 2 nya (running text).
LCD 16x2 diletakan di PortB sedangkan mikrokontroler memakai ATmega8535. Untuk
merubah kecepatan dalam menjalankan text-nya dirubah dengan nilai di delay-nya. Delay
dalam satuan ms.
Compiler yang dipakai adalah Codevision AVR dan simulasi Proteus.
Jika ada yang ingin men-download program dan simulasi di proteus silahkan ke link berikut
ini:
http://www.4shared.com/rar/n9yqh5_b/Text_Running.html
Berikut Listing Program Running Text di Codevision AVR;
/*****************************************************
Chip type : ATmega8535
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/
#include (mega8535.h>
#include (lcd.h>
#include (delay.h>
#include (string.h>
#include (stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB

#endasm
// Standard Input/Output functions
// Global variables
char buffer_lcd[]="Selamat datang di Blogger Mohammad Ardi.Berbagi dalam ilmu
pengetahuan.Semoga latihan ini bisa memperdalam ilmu pemprograman di codevision avr.";
// Function prototype
void sett_REGs(void);
void tampilan(void);
// Main routine (super loop)
void main(void){
sett_REGs();
lcd_init(16);
_lcd_ready();
lcd_clear();
for(;;){// Endless loop, podo karo "while(1)"
tampilan();
}
}
// Setting register
void sett_REGs(void){
//Define I/O
DDRA = 0x00;
PORTA = 0x00;
DDRB = 0xFF;
PORTB = 0x00;
DDRC = 0x00;
PORTC = 0x00;
DDRD = 0xFF;
PORTD = 0x00;
}
// Display routine :D
void tampilan(void){
unsigned int i,j,k;
char lcd_number = 16;
unsigned int data_len = strlen(buffer_lcd);
_lcd_ready();
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Codevision AVR");
for (i=lcd_number; i>=1; --i){
lcd_gotoxy(i,1);
for (j=0; j<(lcd_number-i); j++){
lcd_putchar(buffer_lcd[j]);
}

delay_ms(100);
};
k=0;
for (i=0; i<=data_len; i++){
k++;
lcd_gotoxy(0,1);
for (j=0; j<16; j++){
if (buffer_lcd[j+k] == NULL){
return;
}
lcd_putchar(buffer_lcd[j+k]);
}
delay_ms(100);
};
}

Anda mungkin juga menyukai