Counting Number 0 to 9 on LED matrix

   Menghitung angka dari 0 sampai 9 pada LED matix. Menggunakan IC mikrokontrol PIC16F628A, dan decade counter 4017. Berikut ini gambar skema rangkaian elektronikanya.

dotmatrixcounter

   LED matrix di hubungkan secara Common Cathode.

Berhubung vidionya belum bisa di upload maka cukup gambarnya dulu.

Berikut Fotonya.

SnapShot_Image30

SnapShot_Image24

SnapShot_Image25

Dan seterusnya samapi angka 9, dan kemudian kembali ke angka 0, dengan jeda delay 1 detik.

   Untuk menjalankan rangkaian di atas, kita harus memprogram mikrokontrol PIC16F628A dengan program pada list di bawah. Perogram ini menggunakan bahasa C dari mikroC compiler.

/*******************************************************************************
Counting number 0-9 on 5×7 dot matrix Common Cathode
16F628A & Decade counter 4017
PORTB -> Cathode, Output 4017 -> Anoda
External Osc. 4MHz X-tall.
mikroC PRO for PIC v. 561
Wawan H. Gufran 01 July  2013 / revisi stop counting pada 15 September 2013
*******************************************************************************/

sbit Clock at RA0_bit;
sbit Reset at RA1_bit;
sbit Clock_Direction at TRISA0_bit;
sbit Reset_Direction at TRISA1_bit;

char nomor0[]= {  0b01000001, 0b00101110, 0b00110110, 0b00111010, 0b01000001 }, // 0
     nomor1[]= {  0b01111110, 0b01111110, 0b00000000, 0b01011110, 0b01011110 }, // 1
     nomor2[]= {  0b01000110, 0b00111010, 0b00111010, 0b00111010, 0b00111100 }, // 2
     nomor3[]= {  0b01001001, 0b00110110, 0b00110110, 0b00110110, 0b00111110 }, // 3
     nomor4[]= {  0b01111011, 0b01100000, 0b01111011, 0b00001011, 0b01110011 }, // 4
     nomor5[]= {  0b00110001, 0b00101110, 0b00101110, 0b00101110, 0b00001110 }, // 5
     nomor6[]= {  0b00110001, 0b00101110, 0b00101110, 0b00101110, 0b01000001 }, // 6
     nomor7[]= {  0b00011111, 0b00101111, 0b00110111, 0b00111000, 0b00111111 }, // 7
     nomor8[]= {  0b01001001, 0b00110110, 0b00110110, 0b00110110, 0b01001001 }, // 8
     nomor9[]= {  0b01000001, 0b00111010, 0b00111010, 0b00111010, 0b01000110 }; // 9

unsigned int i, loop;

unsigned short mask( unsigned short angka){
switch (angka){
case 0 :  // Number 0
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB=nomor0[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 1 :  // Number 1
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor1[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 2 :  // Number 2
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor2[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 3 :  // Number 3
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor3[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 4 :  // Number 4
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor4[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 5 :  // Number 5
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor5[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 6 :  // Number 6
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor6[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 7 :  // Number 7
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor7[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

case 8 :  // Number 8
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor8[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;
       
case 9 :  // Number 9
        for(loop=0;loop<100;loop++){
        Reset =1;
        Reset = 0;
        for(i=0;i<5;i++){
        PORTB = nomor9[i];
        Clock=1;
        delay_ms(2);
        Clock=0;
        delay_ms(2);
        }
        }
        break;

     }
}
void main(){
    int cnt;
    CMCON = 0x07;               // Disable Comparator
    PORTA = 0;                  // Initialize PORT A
    TRISA = 0;                  // PORT A pins are configured as outputs
    PORTB = 0;                  // Initial value of port B bits
    TRISB = 0;                  // Port B pins are configured as outputs
    delay_ms(500);
    while(1) {                  // Endless loop

       // menghitung sampai 9
       PORTB=mask(cnt);
       cnt++;
        if(cnt>9)cnt=0;
      

   }
}// End main

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s