14965031 Scrolling Text Pada Led Dot Matrix

13
Scrolling Text pada Led Dot Matrix Berbasis Mikrokontroler & Komunikasi Serial Kebutuhan akan media penyampai informasi yang menarik seperti untuk kebutuhan iklan membutuhkan kreativitas tersendiri. Awalnya banyak menggunakan lampu hias berupa lampu neon yang dibentuk karakter khusus yang disesuaikan kebutuhan. Teknologi dengan lampu neon terdapat banyak kekurangan diantaranya adalah tidak dapat diupdate informasinya dan membutuhkan tenaga listrik yang relativ besar. Teknologi led dotmatrix yang dikendalikan dengan mikrokontroller menutup kekurangan tersebut, informasi dapat dengan mudah diupdate melalui PC dan led tidak membutuhkan daya listrik besar. Blok diagram Blok diagram sistem yang dibangun sebagai berikut Gambar 1. Blok diagram sistem

Transcript of 14965031 Scrolling Text Pada Led Dot Matrix

Page 1: 14965031 Scrolling Text Pada Led Dot Matrix

Scrolling Text pada Led Dot MatrixBerbasis Mikrokontroler & Komunikasi Serial

Kebutuhan akan media penyampai informasi yang menarik seperti

untuk kebutuhan iklan membutuhkan kreativitas tersendiri. Awalnya

banyak menggunakan lampu hias berupa lampu neon yang dibentuk

karakter khusus yang disesuaikan kebutuhan. Teknologi dengan lampu

neon terdapat banyak kekurangan diantaranya adalah tidak dapat

diupdate informasinya dan membutuhkan tenaga listrik yang relativ

besar. Teknologi led dotmatrix yang dikendalikan dengan

mikrokontroller menutup kekurangan tersebut, informasi dapat dengan

mudah diupdate melalui PC dan led tidak membutuhkan daya listrik

besar.

Blok diagram

Blok diagram sistem yang dibangun sebagai berikut

Gambar 1. Blok diagram sistem

Page 2: 14965031 Scrolling Text Pada Led Dot Matrix

Hardware

• Dot matrix 5x7, Led yang tersusun dalam 5 kolom dan 7 baris.

• Mikrokontroller dengan eeprom internal, dalam hal ini digunakan

ATMega 8535

• Untuk mengendalikan led yang akan dinyalakan dibutuhkan driver

baris dan kolom. Pada driver kolom menggunakan shift register

untuk menggilir led mana yang akan dinyalakan, sedangkan pada

driver baris yang dikuatkan arusnya.

• Interface ke serial port

Software

Gambar 2. Diagram alir program utama dapat dilihat pada gambar di

samping.

• Fungsi untuk memasukkan, mengubah dan menghapus text dari PC

ke eeprom mikrokontroller

• Fungsi untuk menyusun index text pada eeprom dengan library font

1

2

Start

Inisisalisasi Port Serial

Tekan “m” untuk masuk ke menu

utama

End

Buat Index Text

Buat Index Scroll

KonsoleY

N

3Tampilkan karakter ke dot matrix

Data

Page 3: 14965031 Scrolling Text Pada Led Dot Matrix

• Fungsi untuk menyusun array berupa library font yang telah

disusun sesuai dengan text yang dimasukkan pengguna melalui PC

ke eeprom

• Fungsi untuk menampilkan array ke led dot matrix

• Fungsi untuk memberikan animasi scroll

Cara Kerja Sistem

Alat penampil karakter maupun animasi yang dapat diinput dari suatu

PC yang terhubung dengan mikrokontroler melewati port serial.

Karakter diinput pada suatu aplikasi di PC dimana aplikasi tersebut

telah di set untuk dapat menerima dan mengirimkan data melalui port

serial. Aplikasi tersebut mengirimkan data yang membuat

mikrokontroler yang terhubung komunikasi serial tersebut merespon

dengan mengirimkan data yang membentuk suatu kalimat (karakter)

dan menu untuk memasukan karakter. Di dalam menu tersebut

terdapat beberapa pilihan yaitu :

• Lihat Text, yaitu untuk melihat text yang telah dimasukan,

• Ganti Text, yaitu untuk meng-input, menambahkan dan

mengganti suatu karakter yang akan ditampilkan pada dot

matrix,

• Hapus Text, adalah pilihan yang berguna untuk menghapus

karakter atau kalimat yang telah kita masukan sebelumnya.

Setelah karakter diinput pada aplikasi tersebut, karakter yang berupa

data tersebut dikirim melalui port serial menuju mikrokontroler.

Mikrokontroler yang diset untuk menerima data dari PC akan mengolah

data yang akan disimpan pada memori yang ada pada mikrokontroler.

Hasil dari proses pada mikrokontroler tersebut adalah output hexa

yang akan dikeluarkan pada Port A sebagai pengaturan baris dot

matrix dan Port B mikrokontroler sebagai pengaturan data yang akan

diproses kembali pada driver kolom. Data yang dikirim pada Port A

inilah yang dapat menghidupkan dot matrix. Led–led yang menyala

akan membentuk suatu karakter dan karakter tersebut akan sama

dengan karakter yang diinputkan pada aplikasi di PC.

Page 4: 14965031 Scrolling Text Pada Led Dot Matrix

Gambar 3. Memasukkan text melalui PC ke mikrokontroller

Adapun untuk memberikan efek scroll, maka dibuat array yang akan

dipanggil dengan index yang increment sehingga karakter yang

muncul di led dot matrix tampil secara bergeser.

Rangkaian Skematik

Gambar 4. Rangkaian skematik display dot matrix

Source Code

#include <mega8535.h>

#include <delay.h>

#include <stdio.h>

#include <string.h>

int a,i,n,k,l,y,x,c,z;

int n_font=96; //STATIS

Page 5: 14965031 Scrolling Text Pada Led Dot Matrix

int jumlah_urutan;

int flag=0;

char data;

eeprom int n_text,j=0;

eeprom char text[80]={'0','1'};

unsigned char scroll[250]={'0','1'};

flash char font_greeting1[] = {

0x00,

0x7F, 0x20, 0x18, 0x20, 0x7F, 0x00,// W

0x7E, 0x11, 0x11, 0x11, 0x7E ,0x00,// A

0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,// H

0x03, 0x04, 0x78, 0x04, 0x03, 0x00,// Y

0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,// U

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x7F, 0x09, 0x09, 0x01, 0x01, 0x00,// F

0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,// I

0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,// R

0x7F, 0x41, 0x41, 0x22, 0x1C, 0x00,// D

0x7E, 0x11, 0x11, 0x11, 0x7E ,0x00,// A

0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,// U

0x46, 0x49, 0x49, 0x49, 0x31, 0x00,// S

0x00

};

flash char font_greeting2[] ={

0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x08,

0x08, 0x08, 0x08, 0x08, 0x7F, 0x3E,// Diode

0x1C, 0x08, 0x7F, 0x08, 0x08, 0x08,

0x08, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x00, 0x00, 0x00, 0x00, 0x00

};

flash char font[] = {

0x9C, 0xBE, 0xFC, 0xBE, 0x9C,0x00,//heart (~)

0x08, 0x08, 0x2A, 0x1C, 0x08,0x00,// ->

0x08, 0x1C, 0x2A, 0x08, 0x08,0x00,// <-

0x00, 0x08, 0x36, 0x41, 0x00,0x00,// {

0x00, 0x00, 0x7F, 0x00, 0x00,0x00,// |

0x00, 0x41, 0x36, 0x08, 0x00,0x00,// }

0x00, 0x00, 0x7F, 0x41, 0x41,0x00,// [

Page 6: 14965031 Scrolling Text Pada Led Dot Matrix

0x02, 0x04, 0x08, 0x10, 0x20,0x00,// \

0x41, 0x41, 0x7F, 0x00, 0x00,0x00,// ]

0x04, 0x02, 0x01, 0x02, 0x04,0x00,// ^

0x40, 0x40, 0x40, 0x40, 0x40,0x00,// _

0x00, 0x01, 0x02, 0x04, 0x00,0x00,// `

0x00, 0x07, 0x00, 0x07, 0x00,0x00,// "

0x00, 0x00, 0x5F, 0x00, 0x00,0x00,// !

0x14, 0x7F, 0x14, 0x7F, 0x14,0x00,// #

0x24, 0x2A, 0x7F, 0x2A, 0x12,0x00,// $

0x23, 0x13, 0x08, 0x64, 0x62,0x00,// %

0x36, 0x49, 0x55, 0x22, 0x50,0x00,// &

0x00, 0x1C, 0x22, 0x41, 0x00,0x00,// (

0x00, 0x41, 0x22, 0x1C, 0x00,0x00,// )

0x08, 0x2A, 0x1C, 0x2A, 0x08,0x00,// *

0x08, 0x08, 0x3E, 0x08, 0x08,0x00,// +

0x00, 0x50, 0x30, 0x00, 0x00,0x00,// ,

0x08, 0x08, 0x08, 0x08, 0x08,0x00,// -

0x00, 0x30, 0x30, 0x00, 0x00,0x00,// .

0x20, 0x10, 0x08, 0x04, 0x02,0x00,// /

0x3E, 0x51, 0x49, 0x45, 0x3E,0x00,// 0

0x00, 0x42, 0x7F, 0x40, 0x00,0x00,// 1

0x42, 0x61, 0x51, 0x49, 0x46,0x00,// 2

0x21, 0x41, 0x45, 0x4B, 0x31,0x00,// 3

0x18, 0x14, 0x12, 0x7F, 0x10,0x00,// 4

0x27, 0x45, 0x45, 0x45, 0x39,0x00,// 5

0x3C, 0x4A, 0x49, 0x49, 0x30,0x00,// 6

0x01, 0x71, 0x09, 0x05, 0x03,0x00,// 7

0x36, 0x49, 0x49, 0x49, 0x36,0x00,// 8

0x06, 0x49, 0x49, 0x29, 0x1E,0x00,// 9

0x00, 0x36, 0x36, 0x00, 0x00,0x00,// :

0x00, 0x56, 0x36, 0x00, 0x00,0x00,// ;

0x00, 0x08, 0x14, 0x22, 0x41,0x00,// <

0x14, 0x14, 0x14, 0x14, 0x14,0x00,// =

0x41, 0x22, 0x14, 0x08, 0x00,0x00,// >

0x02, 0x01, 0x51, 0x09, 0x06,0x00,// ?

0x32, 0x49, 0x79, 0x41, 0x3E,0x00,// @

0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// SPASI

0x7E, 0x11, 0x11, 0x11, 0x7E ,0x00,// A

0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,// B

0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,// C

0x7F, 0x41, 0x41, 0x22, 0x1C, 0x00,// D

0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,// E

0x7F, 0x09, 0x09, 0x01, 0x01, 0x00,// F

0x3E, 0x41, 0x41, 0x51, 0x32, 0x00,// G

0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,// H

0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,// I

0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,// J

0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,// K

0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,// L

0x7F, 0x02, 0x04, 0x02, 0x7F, 0x00,// M

0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,// N

Page 7: 14965031 Scrolling Text Pada Led Dot Matrix

0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,// O

0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,// P

0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,// Q

0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,// R

0x46, 0x49, 0x49, 0x49, 0x31, 0x00,// S

0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,// T

0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,// U

0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,// V

0x7F, 0x20, 0x18, 0x20, 0x7F, 0x00,// W

0x63, 0x14, 0x08, 0x14, 0x63, 0x00,// X

0x03, 0x04, 0x78, 0x04, 0x03, 0x00,// Y

0x61, 0x51, 0x49, 0x45, 0x43, 0x00,// Z

0x20, 0x54, 0x54, 0x54, 0x78, 0x00,// a

0x7F, 0x48, 0x44, 0x44, 0x38, 0x00,// b

0x38, 0x44, 0x44, 0x44, 0x20, 0x00,// c

0x38, 0x44, 0x44, 0x48, 0x7F, 0x00,// d

0x38, 0x54, 0x54, 0x54, 0x18, 0x00,// e

0x08, 0x7E, 0x09, 0x01, 0x02, 0x00,// f

0x08, 0x14, 0x54, 0x54, 0x3C, 0x00,// g

0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,// h

0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,// i

0x20, 0x40, 0x44, 0x3D, 0x00, 0x00,// j

0x00, 0x7F, 0x10, 0x28, 0x44,0x00,// k

0x00, 0x41, 0x7F, 0x40, 0x00,0x00,// l

0x7C, 0x04, 0x18, 0x04, 0x78,0x00,// m

0x7C, 0x08, 0x04, 0x04, 0x78,0x00,// n

0x38, 0x44, 0x44, 0x44, 0x38,0x00,// o

0x7C, 0x14, 0x14, 0x14, 0x08,0x00,// p

0x08, 0x14, 0x14, 0x18, 0x7C,0x00,// q

0x7C, 0x08, 0x04, 0x04, 0x08,0x00,// r

0x48, 0x54, 0x54, 0x54, 0x20,0x00,// s

0x04, 0x3F, 0x44, 0x40, 0x20,0x00,// t

0x3C, 0x40, 0x40, 0x20, 0x7C,0x00,// u

0x1C, 0x20, 0x40, 0x20, 0x1C,0x00,// v

0x3C, 0x40, 0x30, 0x40, 0x3C,0x00,// w

0x44, 0x28, 0x10, 0x28, 0x44,0x00,// x

0x0C, 0x50, 0x50, 0x50, 0x3C,0x00,// y

0x44, 0x64, 0x54, 0x4C, 0x44,0x00// z

};

char font_index[96]={'~','-

>','<-','{','|','}','[','"\"',']','^','_','`','"','!','#','$','%','&','

(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',

':',';','<','=','>','?','@','

','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','

R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',

'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

char index_text[]={''};

void tampilkan(void);

Page 8: 14965031 Scrolling Text Pada Led Dot Matrix

void buat_index_scroll(void);

void cek_scroll(void);

void tampilkan_index_text(void);

void buat_index_text(void);

void cek_index_text(void);

void konsole(void);

void tampilkan_greeting1(void);

void tampilkan_greeting2(void);

void tampilkan_dot_matrix(void);

void main(void)

{

// USART 9600

UCSRA=0x00;

UCSRB=0xD8;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x47;

DDRC=0xFF; // Driver Baris

PORTC=0xFF;

DDRA=0xFF; // Driver Kolom

PORTA=0xFF;

buat_index_text();

buat_index_scroll();

while(1)

{

delay_ms(50);

data=UDR;

delay_ms(50);

if(data=='m')

{

konsole();

}

tampilkan_greeting1();

tampilkan_greeting2();

tampilkan_dot_matrix();

};

}

void buat_index_text(void)

{

for (i=0; i < n_text;i++)

{

//printf("\n\r");

for (j=0;j<n_font;j++)

Page 9: 14965031 Scrolling Text Pada Led Dot Matrix

{

//printf(" %c",text[i]);

//printf("->%c",font_index[j]);

if(text[i]==font_index[j])

{

//printf(" Match"); // cek karakter yg match

index_text[i]=j;

}

}

}

}

// Temukan Indek Text

void cek_index_text(void)

{

printf("\n\r");

printf("Index:");

for (i=0; i < n_text; i++)

{

printf(" %d",index_text[i]); // Unsigned dalam desimal

}

}

void tampilkan(void)

{

for (n=0;n<60;n++)

{

printf("%u",font[n]); // Unsigned dalam desimal

printf("->%u",&font[n]); // Unsigned dalam desimal

/*

p=&font[n];

printf("P:%u",p); // Unsigned dalam desimal

printf("\n\r");

delay_ms(100);

*/

}

}

void buat_index_scroll(void)

{

for (i=0;i<n_text;i++)

{

a=(int)index_text[i]*6;

for(n=0;n<6;n++) // 6 Kolom

{

jumlah_urutan=a+n;

scroll[z]=font[jumlah_urutan];

z++;

}

Page 10: 14965031 Scrolling Text Pada Led Dot Matrix

}

}

void cek_scroll(void)

{

for (i=0;i<z;i++)

{

printf("-%x",scroll[i]); // Unsigned dalam desimal

}

}

void konsole(void)

{

printf("\n\r\n\r");

printf("Pilih menu:"); // Jumlah pulsa

printf("\n\r");

printf("[1].Lihat Text"); // Jumlah pulsa

printf("\n\r");

printf("[2].Ganti Text"); // Jumlah pulsa

printf("\n\r");

printf("[3].Hapus Text"); // Jumlah pulsa

printf("\n\r");

while(1)

{

while(UCSRA.7)

{

data=UDR;

delay_ms(50);

if((flag==1) && (data!=0x1b))

{

text[n_text]=data;

printf("%c",text[n_text]);

n_text=n_text+1;

}

if((flag==0)&& (data=='1'))

{

printf("\n\r");

printf("Isi Text:");

for(j=0; j< n_text; j++)

{

printf("%c",text[j]);

}

}

if((flag==0) &&(data=='2'))

{

printf("\n\r");

Page 11: 14965031 Scrolling Text Pada Led Dot Matrix

printf("Masukan Text:");

flag=1;

}

if((flag==0)&&(data=='3'))

{

n_text=0;

j=0;

printf("\n\r");

printf("Text telah dihapus:");

flag=0;

}

if(data==0x1b)

{

printf("\n\r");

printf("Data telah tersimpan");

flag=0;

}

};

};

}

void tampilkan_dot_matrix(void)

{

for(l=0; l<(n_text*6); l++) // jumlah karakter yg mau tampil

{

y=l*1; //y=faktor geser

x=0;

while(x<4) //speed

{

x=x+1; //scroll

// baris aktig low

// kolom aktif high

// CETAK DOT MATRIK

for(k=0;k<81;k++) // k=jumlah kolom dot matrix

{

c=k+y;

if(c<0)

{

PORTC=0xFF;

}

if(c>n_text*6-1) // Pemotongan Ekor

{

c=c-(n_text*6);

PORTC=0xFF;

}

Page 12: 14965031 Scrolling Text Pada Led Dot Matrix

else

{

PORTC=~scroll[c];

}

// KOLOM,nyala jika 0

if(k==0)

{

PORTA.0=0;

}

else

{

PORTA.0=1;

}

// Generate clock

PORTA.1=0; //Clock

PORTA.2=1; //Latch

PORTA.1=1; //Clock

PORTA.2=0; //Latch

delay_us(100);

} //end looping for shift register

}; //end while setelah 100

if(l==(n_text*6))

{

l=0;

}

} //end for

}

void tampilkan_greeting1(void)

{

z=0;

while(z<80) //speed

{

z=z+1;

for(i=0;i<81;i++) // i=jumlah kolom dot matrix

{

c=i-1;

PORTC=~font_greeting1[c];

if(i==0)

PORTA.0=0;

else

PORTA.0=1;

// Generate clock

Page 13: 14965031 Scrolling Text Pada Led Dot Matrix

PORTA.1=0; //Clock

PORTA.2=1; //Latch

PORTA.1=1; //Clock

PORTA.2=0; //Latch

delay_us(100);

} //end looping for shift register

}; //end while setelah 200

}

void tampilkan_greeting2(void)

{

z=0;

while(z<80) //speed

{

z=z+1;

for(i=0;i<81;i++) // i=jumlah kolom dot matrix

{

c=i-1;

PORTC=font_greeting2[c];

if(i==0)

PORTA.0=0;

else

PORTA.0=1;

// Generate clock

PORTA.1=0; //Clock

PORTA.2=1; //Latch

PORTA.1=1; //Clock

PORTA.2=0; //Latch

delay_us(100);

} //end looping for shift register

}; //end while setelah 200

}

Penulis

Wahyu Firdaus, Teknik Informatika 2006 STMIK-AMIKBANDUNG