Wednesday, August 17, 2011

Pembuatan Scrolling Text Pada Dot Matrix [1] 


Scrolling text pada dot matrix ini menggunakan IC 74HC595 sebagai shift register untuk mengatur kolom ( Driver kolom ).PortB di set sebagai output yang terhubung pada 74HC595. PortB.0 sebagai data yang dikeluarkan, PortB.1 sebagai clock dan PortB.2 diset sebagai latch atau data kebalikan dari data yang dikeluarkan clock pada PortB.1. Data dari PortB.0 akan dikeluarkan secara paralel namun bergantian (shift register) pada pin output 74HC595 yang berjumlah 8 pin sehingga dapat menghidupkan 8 buah kolom pada dot matrix secara bergantian. trik untuk menyalakan kolom diatur dengan delay yang sangat cepat sehingga terlihat kolom dot matrix itu menyala berbarengan, padahal data dikeluarkan secara bergantian namun data tersebut berganti dengan sangat cepat karena telah diatur delay. Karakter pada dot matrix diatur pada driver baris. Data pada driver baris disimpan mengguanakan array  dan data dikeluarkan melalui portA pada atmega8535.PortA di set sebagai driver baris yang mengeluarkan logika 0 “low”. PortA tersebut terhubung dengan rangkaian penguat (transistor 2N3906) yang mengubah logika 0 ke logika 1 “high”dikarenakan driver kolom dot matrix yang di set 0 “low” agar dapat menyalakan dot matrix. Oleh karena itu data output pada driver baris menggunakan tanda “~” agar data yang keluar adalah data kebalikan dari data yang ada pada array ( PORTA=~fonts[c]; ).

Berikut ini adalah contoh coding untuk menyalakan dot matrix yang datanya langsung mengambil dari array, bila data yang ada pada array dirubah maka tampilan dot matrix itu juga akan berubah.
———————————————————————————————–
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#include <string.h>
//#include “font5x8.h”
void main(void)
{
int i=0;
int j=0;
int n;
int z;
int y;
int c;
//char fonts[5]={0x7E, 0×11, 0×11, 0×11, 0x7E};
char fonts[] = {
0x7F, 0×49, 0×49, 0×49, 0×41,0×00,// E
0×46, 0×49, 0×49, 0×49, 0×31,0×00,// S
0x7F, 0×09, 0×19, 0×29, 0×46,0×00,// R
0x3E, 0×41, 0×41, 0×51, 0×32,0×00,// G
0×00, 0×00, 0×00, 0×00, 0×00,0×00,// spase
0×00, 0×41, 0x7F, 0×41, 0×00,0×00,// I
0×46, 0×49, 0×49, 0×49, 0×31,0×00,// S
0×00, 0×00, 0×00, 0×00, 0×00,0×00,// spase
0x3E, 0×41, 0×41, 0×41, 0×22,0×00,// C
0x3E, 0×41, 0×41, 0×41, 0x3E,0×00,// O
0x3E, 0×41, 0×41, 0×41, 0x3E,0×00,// O
0x7F, 0×40, 0×40, 0×40, 0×40,0×00,// L
0×00, 0×30, 0×30, 0×00, 0×00, 0×00,// .
0×00, 0×30, 0×30, 0×00, 0×00, 0×00// .
};
DDRB=0xFF;
DDRA=0xFF;
PORTA=0xFF;
PORTB=0xFF;
// USART 9600
UCSRA=0×00;
UCSRB=0xD8;
UCSRC=0×86;
UBRRH=0×00;
UBRRL=0×47;
while(1)
{
for(n=0; n<167; n++)         // jumlah karakter yg mau tampil
{
y=n*1;     //y=faktor geser
z=0;
while(z<2) //speed
{
z=z+1;                  //scroll
// baris aktif low
// kolom aktif high
// CETAK DOT MATRIK
for(i=0;i<81;i++)  // i=jumlah kolom dot matrix
{
c=i+y;
c=c-81;      // biar mulainya dari ujung kanan
// printf(“i:%d”,i);
// printf(” y:%d”,y);
// printf(” c1:%d”,c);
if(c<0)
{
PORTA=0xff;  // biar ketika awal, sebelah kiri ujung awal kosong
}
if(c>83)           // Pemotongan Ekor
{
c=c-84;
PORTA=0xff;
}
else
{
PORTA=~fonts[c];
}
//  printf(” c2:%d”,c);
//  printf(“\n\r”);
// KOLOM,nyala jika 0
if(i==0)
PORTB.0=0;
else
PORTB.0=1;
// Generate clock
PORTB.1=0;    //Clock
PORTB.2=1;    //Clock
PORTB.1=1;    //Clock
PORTB.2=0;    //Clock
delay_us(200);
} //end looping for shift register
};  //end while setelah 300
if(n==166)
{
n=0;
}
}   //end for
};     //end while
}      // end void main
———————————————————————————————–
Berikut ini adalah rangkaian skematik dari dot matrixnya.
schematic-4-dot-matrix1
dot matrix pada coding tersebut akan mengeluarkan karakter ” ESRG IS COOL..” ( lihat coding pada array char fonts) yang berjalan dari kiri ke kanan pada pada 4 buah dot matrix.

2 comments: