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);
};
}

3 komentar:

  Zeed

19 April 2012 pukul 04.51

izin coba master....

  Budiono

27 Juli 2012 pukul 21.57

bagi yang berminat membuat running text,, silahkan kunjungi
http://budiono.0fees.net
lengkap dengan penulisan , coding, rangkaian, layout PCB nya
dan faile pendukung lainnya.

  saitama

2 November 2016 pukul 20.21

Ne rangkaian ny beneran berhasil pha gx ya?