RUNNING TEXT IC 4094


Gambar Rangkaian

Pin yang disambungkan ke LED pada gambar diatas adalah PIN 4, 5, 6, 7, 11, 12, 13, 14 dengan arah penyambungan adalah Anoda LED ke PIN dan Katoda LED ke GND. Untuk lebih jelasnya dapat diperhatikan pada gambar atau pun foto PCB letak komponen berikut ini. Satu papan PCB terdiri dari 8 IC 4094 yang disambung secara seri, sehingga setiap papan akan tampil sebagai LED matriks ukuran 8 x 8 LED.

Pada PCB ada 2 jalur GND, hal ini dimaksudkan untuk memudahkan dalam pemasangan komponen juga untuk mendapatkan hasil yang lebih baik, yaitu lebih kebal terhadap noise. 

Gambar PCB dilihat dari sisi bagian tembaga atau bagian bottom copper layer, jalur yang terhubung dari IC 4094 ke LED dipilih jalur yang paling dekat, dengan demikian hanya satu saja yang diperlukan. Urutan letak LED menjadi 1, 2, 3, 4, 8, 7, 6, 5, jadi untuk mengembalikan susunan LED dengan urutan yang benar  1, 2, 3, 4, 5, 6, 7, 8, diperlukan program konversi pada program.

dalam hal ini sudah dibuatkan program konversi dengan nama function kar_conv(xkar) yang tinggal pakai saja.

Pengiriman data secara serial dari mikrokontroller ke IC 4094 display dilakukan dengan cara parallel to serial shift register, yaitu dengan menggunakan function shift_out(xkar).

kedua function tersebut dapat digunakan dengan cara #include <serialout.h> pada awal program, dengan cara tersebut program yang bersesuaian akan diambil secara otomatis dari file serialout.lib.

contoh pemakaiannya dapat dilihat pada contoh program menguji baris-baris dan kolom, serta program penampilan huruf R dibagian bawah dari tulisan ini.

 

#include <mega8535.h>
#include <delay.h>
#include <serialout.h>
#define sdt    PORTC.2
#define sclk   PORTC.3
#define soe    PORTC.4

 

dipilih PORTC.2, PORTC.3, dan PORTC.4 sebagai saluran pengiriman data serial, karena PORTC.0, dan PORTC.1 digunakan untuk keperluan meng_akses data waktu dari DS1307, dimana SCL dan SDA berada pada PORC.0 dan PORTC.1

Sebenarnya pada PORT yang lain juga bisa digunakan, coba saja, tetapi PORTC menurut saya paling bebas untuk digunakan tanpa akan terganggu dengan kemungkinan pengembangan program. Misalnya jika diperlukan pengukuran melalui ADC di PORTA, atau SPI di PORTB, atau kemungkinan INTERRUPT, dan PWM di PORTD, dan lain sebagainya.

 


Setelah dipasang jumper, PCB kemudian dicat dengan warna hitam, biar sekalian jumpernya tidak kelihatan jelas.

Bagian sisi atas atau bagian top overlayer, tidak dicetak gambar ataupun tata letak komponen karena bagian tersebut akan di cat dengan warna hitam.

 

Lapisan sebelah komponen dicat dengan warna hitam DOF agar tulisan kelihatan tidak berbayang dan tulisan atau display huruf dan karakter lainnya menjadi lebih jelas.

Bagian atas setelah dipasang komponen, pada gambar disebelah kanan, kelihatan pcb berwarna seperti biru, tetapi sebenarnya warnanya adalah hitam, hanya saja karena foto diambil dengan menggunakan kamera handphone ada perubahan warna akibat warna LED yang berwarna merah.

Berikut ini adalah per_kabel_an untuk rangkaian diatas.


Sesuai dengan gambar rangkaian diatas kabel hitam adalah GND, oranye ke DATA, kuning ke CLOCK, hijau ke OE, untuk lebih jelas perhatikan gambar disebelahnya.


Selanjutnya dihubungkan dengan system minimum ATMega8535, berikut ini:

Resistor pull up pada pin PC.2, PC.3, PC.4 bisa dengan nilai R = 4k7 s/d 10k ohm 

Sambungan kabel dengan trainer lebih jelas adalah seperti pada kedua gambar disamping dan diatas

Gambar disamping adalah penggabungan blok display dengan blok display sehingga menjadi 2 blok atau 8 baris x 16 kolom, cara penyambungan tersebut dapat dilanjutkan sampai jumlah kolom yang dibutuhkan terpenuhi.

 

Program untuk keperluan test baris adalah sebagai berikut, tapi bagian yang dihasilkan oleh program generator dihapus untuk kemudahan dalam membaca programnya, tujuan program hanya untuk menentukan baris 1 sampai baris ke 8 pada display.

 

/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Standard
Automatic Program Generator
Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 16.000000 MHz
*******************************************************/
#include <mega8535.h>
#include <delay.h>
#include <serialout.h>
#define led PORTD.7
#define sdt    PORTC.2
#define sclk   PORTC.3
#define soe    PORTC.4
void main(void)
{
// Declare your local variables here
unsigned char  xkar;
while (1)
      {
      // Place your code here  
          soe = 0;    
          xkar = kar_conv(0x01);
          shift_out (xkar);   // baris 01
          soe = 1;
          delay_ms(50);
          soe = 0;    
          xkar = kar_conv(0x02);
          shift_out (xkar);   // baris 02
          soe = 1;
          delay_ms(50);
                         
          soe = 0;
          xkar = kar_conv(0x04);
          shift_out (xkar);   // baris 03
          soe = 1;     
          delay_ms(50);
                    
          soe = 0;    
          xkar = kar_conv(0x08);
          shift_out (xkar);   // baris 04
          soe = 1;
          delay_ms(50);
                         
          soe = 0;
          xkar = kar_conv(0x10);
          shift_out (xkar);   // baris 05
          soe = 1;     
          delay_ms(50);
          
          soe = 0;    
          xkar = kar_conv(0x20);
          shift_out (xkar);   // baris 06
          soe = 1;
          delay_ms(50);
                         
          soe = 0;
          xkar = kar_conv(0x40);
          shift_out (xkar);   // baris 07
          soe = 1;     
          delay_ms(50);
          
          soe = 0;
          xkar = kar_conv(0x80);
          shift_out (xkar);   // baris 08
          soe = 1;     
          delay_ms(50);
      }
}
 
 

Setelah diketahui kelompok baris yang digunakan, selanjutnya kita akan membuat huruf yang pertama yaitu huruf R

Berikut ini adalah program untuk menampilkan huruf R pada display tersebut

 

/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Standard
Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 16.000000 MHz
*******************************************************/
#include <mega8535.h>
#include <delay.h>
#include <serialout.h>
#define led PORTD.7
#define sdt    PORTC.2
#define sclk   PORTC.3
#define soe    PORTC.4
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char  xkar;
while (1)
      {
      // Place your code here  
          soe = 0;    
          xkar = kar_conv(0x00);
          shift_out (xkar);   
          soe = 1;
          delay_ms(250);
                         
          soe = 0;
          xkar = kar_conv(0xff);
          shift_out (xkar);   
          soe = 1;     
          delay_ms(250);
                    
          soe = 0;    
          xkar = kar_conv(0x31);
          shift_out (xkar);   
          soe = 1;
          delay_ms(250);
                         
          soe = 0;
          xkar = kar_conv(0x51);
          shift_out (xkar);   
          soe = 1;     
          delay_ms(250);
          
          soe = 0;    
          xkar = kar_conv(0x8e);
          shift_out (xkar);   
          soe = 1;
          delay_ms(250);
                         
          soe = 0;
          xkar = kar_conv(0x00);
          shift_out (xkar);   
          soe = 1;     
          delay_ms(250);
          
          soe = 0;
          xkar = kar_conv(0x00);
          shift_out (xkar);   
          soe = 1;     
          delay_ms(2250);
      }
}

 


Setelah program diatas dijalankan pada trainer akan kelihatan tulisan R pada display seperti pada gambar diatas.

untuk keperluan display, dapat digabung semua blok, tetapi ingat power supply juga harus disesuaikan, supply yang berasal dari sytem minimum hanya sanggup mensuply 2 atau 3 blok display saja.

program untuk menampilkan huruf S

 

#include <mega8.h>
#include <delay.h>
#include <serialout.h>
#define sdt    PORTC.2
#define sclk   PORTC.3
#define soe    PORTC.4
// Declare your global variables here
void main(void)
{
// bagian program yang dihasilkan oleh CodeVision generator dihapus
// untuk lebih mudah membaca program
while (1)
      {
      // Place your code here
          
         soe = 0;          
         shift_out(kar_conv(0x4c));
         soe = 1;
         delay_ms(250);    
         soe = 0;          
         shift_out(kar_conv(0xde));
         soe = 1;
         delay_ms(250);    
                                   
         soe = 0;          
         shift_out(kar_conv(0x92));
         soe = 1;
         delay_ms(250);            
         
         soe = 0;          
         shift_out(kar_conv(0x92));
         soe = 1;
         delay_ms(250);    
         
         soe = 0;          
         shift_out(kar_conv(0xf6));
         soe = 1;
         delay_ms(250);    
         soe = 0;          
         shift_out(kar_conv(0x64));
         soe = 1;
         delay_ms(250);    
         soe = 0;          
         shift_out(kar_conv(0x00));
         soe = 1;
         delay_ms(250);    
         soe = 0;          
         shift_out(kar_conv(0x00));
         soe = 1;
         delay_ms(250);    
         soe = 0;          
         shift_out(kar_conv(0x00));
         soe = 1;
         delay_ms(250);    
         
      }
}

 

Untuk program menampilkan ucapan SELAMAT adalah sebagai berikut

#include <mega8535.h>
#include <delay.h>
#include <serialout.h>
#define sdt    PORTC.2
#define sclk   PORTC.3
#define soe    PORTC.4
unsigned char flash selamat[] = {
0x46,0xcf,0x89,0x89,0x89,0xfb,0x72,0x00,0x00,              //S   
0xff,0xff,0x99,0x99,0x99,0x81,0x00,0x00,                   //E   
0xff,0xff,0x80,0x80,0x80,0x80,0x00,0x00,                   //L   
0xfe,0xff,0x11,0x11,0x11,0xff,0xfe,0x00,0x00,              //A
0xff,0xff,0x06,0x0c,0x18,0x0c,0x06,0xff,0xff,0x00,0x00,    //M
0xfe,0xff,0x11,0x11,0x11,0xff,0xfe,0x00,0x00,              //A
0x01,0x01,0x01,0xff,0xff,0x01,0x01,0x01,0x00,0x00,         //T
0x00,0x00,0x00,0x00,0x00,0x55};
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char  cnt, xkar;
// bagian yang dikerjakan oleh generator program CodeVision dibuang untuk
// lebih memudahkan membaca program
while (1)
      {
      // Place your code here
          for (cnt = 0; cnt < 200; cnt++)
          { 
            soe = 0;
            xkar = selamat[cnt];
            if (xkar == 0x55) break;
            xkar = kar_conv(xkar);
            shift_out (xkar);   // bawah   
            soe = 1;
            delay_ms(75);
          }    
      }
}