jump to navigation

antarmuka LED September 20, 2007

Posted by edipermadi in Uncategorized.
add a comment

LED merupakan singkatan dari Light Emitting Diode. LED merupakan komponen aktif semikonduktor bipolar. LED hanya dapat menghantarkan arus 1 arah saja.

Karena hemat daya, ekonomis dan tahan lama. LED banyak digunakan sebagai indikator visual, transmisi sinyal bahkan penerangan.

Artikel ini membahas bagaimana membuat antarmuka rangkaian digital dengan LED.

Secara umum antamuka rangkaian digital dengan LED dapat dilakukan dengan 2 cara:

  1. Menghubungkan anoda dengan Vcc dan keluaran rangkaian digital dengan katoda. Pada modus ini, LED akan menyala jika keluaran rangkaian digital berada pada kondisi logika “0”
  2. Menghubungkan katoda dengan Gnd dan keluaran rangkaian digital dengan anoda. Pada modus ini, LED akan menyala jika keluaran rangkaian digital berada pada kondisi logika “1”

Pada rangkaian digital, cara pengantarmukaan yang pertama memberikan lebih banyak keuntungan, sehingga lebih banyak diterapkan. Pada modus ini rangkaian digital hanya difungsikan untuk menyerap arus dan mengubungkan rangkaian ke ground.

Lebih jauh lagi, dalam pengantarmukaan LED dikenal juga multiplexing. multiplexing

merupakan cara pendayagunaan I/O yang terbatas jumlahnya, untuk menangani jumlah LED yang banyak. Prinsipnya, LED dinyalakan satu per satu pada frekwensi tertentu hingga seolah olah terlihat menyala semua.

Jika dikelompokkan cara pengantarmukaan LED secara multipleks datat diimplementasikan dengan 6 cara:

  1. multiplexing paralel ke serial, dengan bantuan shift register.
  2. multiplexing semi serial, dengan bantuan shift register.
  3. multiplexing coded paralel & paralel, dengan bantuan decoder/demultiplexer
  4. multiplexing dengan matrikx LED.
  5. multiplexing multibit synchronous shifting, dengan bantuan shift register/flip-flop
  6. multiplexing dengan pemasangan LED secara komplementer

artikel selengkapnya dapat dibaca dan didownload dari link berikut:

File : antarmuka LED

Program LED jalan pakai Assembly September 11, 2007

Posted by eepu in 8051 arch.
1 comment so far

Program berikut digunakan untuk menyalakan 32 lampu LED yang bergerak secara satu-persatu. Program ini belum melalui proses optimisasi, tapi semoga berguna.

2007-09-11_111318 

;by Fandi Gunawan

mulai:
    mov p0,#0 ; pindah “0” -> register port 0
    mov p1,#0
    mov p2,#0
    mov p3,#0

inisialisasi:
    mov p0,#255
    mov p1,#255
    mov p2,#255
    mov p3,#255

putar_lagi:

geser_led_0 :
    mov a,#254 ; pindah “FE” hex -> akumulator
    mov p0,a   ; pindah isi reg akumulator -> register port 0
    mov r0,#8  ; pindah “8” -> register 0
putar0:   
    call delay ; panggil rutin delay
    rl   a       ;geser kiri akumulator
    mov  p0,a  ; pindahkan isi akumulator ke register port 0
    djnz r0,putar0 ;kurangi isi r0 jika tidak 0 maka lompat ke putar 0

    mov p0,#255
    mov p1,#255
    mov p2,#255
    mov p3,#255
geser_led_1 :
    mov a,#254 ; pindah “FE” hex -> akumulator
    mov p1,a   ; pindah isi reg akumulator -> register port 1
    mov r0,#8  ; pindah “8” -> register 0
putar1:   
    call delay ; panggil rutin delay
    rl   a       ;geser kiri akumulator
    mov  p1,a  ; pindahkan isi akumulator ke register port 1
    djnz r0,putar1 ;kurangi isi r0 jika tidak 0 maka lompat ke putar1

    mov p0,#255
    mov p1,#255
    mov p2,#255
    mov p3,#255

geser_led_2 :
    mov a,#254 ; pindah “FE” hex -> akumulator
    mov p2,a   ; pindah isi reg akumulator -> register port 2
    mov r0,#8  ; pindah “8” -> register 0
putar2:   
    call delay ; panggil rutin delay
    rl   a       ;geser kiri akumulator
    mov  p2,a  ; pindahkan isi akumulator ke register port 2
    djnz r0,putar2 ;kurangi isi r0 jika tidak 0 maka lompat ke putar2

    mov p0,#255
    mov p1,#255
    mov p2,#255
    mov p3,#255

geser_led_3 :
    mov a,#254 ; pindah “FE” hex -> akumulator
    mov p3,a   ; pindah isi reg akumulator -> register port 3
    mov r0,#8  ; pindah “8” -> register 0
putar3:   
    call delay ; panggil rutin delay
    rl   a       ;geser kiri akumulator
    mov  p3,a  ; pindahkan isi akumulator ke register port 3
    djnz r0,putar3 ;kurangi isi r0, jika tidak 0 maka lompat ke putar3

    mov p0,#255
    mov p1,#255
    mov p2,#255
    mov p3,#255

    sjmp putar_lagi

delay:   
    mov r1,#255
lompat2:mov b,#0ah
lompat1:djnz b,lompat1
    djnz r1,lompat2
    ret

end

Electrical Engineering Student Gathering September 11, 2007

Posted by eepu in Misc.
add a comment

Electrical Engineering Student Gathering (EE StutGarg) is an event in which EE students share their knowledge and experiences as well as a place for increase student’s relationship.

The first gathering will be this Saturday in Old Canteen in President University dormitory at 9.30 PM. The event will be held periodically.

Cheap emergency lamp using double NiCd batteries September 10, 2007

Posted by eepu in Project.
add a comment

final emergency lamp - 2 nicad

This circuit in the left side is the solution to cheap emergency lamp which utilize no transformer.

During these several weeks I was doing emergency lamp which should follow the following specification:

 

 1. Supplied by 2 NiCd batteries

 2. The batteries should be charged 

 3. It has some modes which can be customized by the user

 4. The lamp is LED (super bright) 

Holtek HT48C50 C code for Piano September 10, 2007

Posted by eepu in Microcontroller.
add a comment

Currently I (Fandi Gunawan) am playing around with Holtek’s microcontroller series. This is the example of Piano’s code in C language since I do not want to touch assembly language.

//Piano.c
//
//Body: HT48C50-1
//Mask option
//BZ/BZB : All Disable
//the others use the default value

#include <ht48c50-1.h>

#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8
#pragma vector isr_c @ 0xc

//ISR for safequard
void isr_4(){} // external ISR
void isr_8(){} // timer/event 0

//initialize registers for safeguard
void safeguard_init(){
        _intc = 0;
        _tmr0c = 0;
        _tmr0 = 0;
        _tmr1c = 0;
        _tmr1h = 0;
        _tmr1l = 0;
        _pac = 0xff;
        _pbc = 0xff;
        _pcc = 0xff;
        _pdc = 0xff;
}

#define _tmr1c4 _11_4  //timer1 enable bit

const unsigned char frq[16] = {
0x21, 0xfe, 0x58, 0xfe, 0x84, 0xfe, 0x99, 0xfe,
0xc1, 0xfe, 0xe3, 0xfe, 0x2, 0xff, 0x11, 0xff};

unsigned char frq_idx;

void initial();
void wait_key_press();
void wait_key_release();
void start_sound();
void stop_sound();

void main(){

        safeguard_init();
        initial();

        while(1){
                wait_key_press();
                start_sound();
                wait_key_release();
                stop_sound();
        }
}

void wait_key_press(){
        unsigned char i, key;

        key = 0;
        while(!key)
                key = ~_pa;

        for(i=0; i<8; i++){
                if (key & 0x1){
                        frq_idx = i << 1;                                                  
                        break;
                }
                key >>= 1;
        }
}

void wait_key_release(){
        unsigned char key;
        key = 1;
        while(key)
                key = ~_pa;
}

void start_sound(){
        _intc = 9;              //enable timer1
        _tmr1c = 0x80;          //timer mode
        _tmr1l = frq[frq_idx];  //load sound freq.
        _tmr1h = frq[frq_idx+1];
        _tmr1c4 = 1;            //start timer1
}

void stop_sound(){
        _tmr1c4 = 0;            //stop timer1
        _pb = 0;
}

void isr_c(){                   // timer1                  
        _pb = ~_pb;             // generate square wave
}

void initial(){
        _pac = 0xff;    //set port A to input port
        _pbc = 0;       //set port B to output port
        _pb = 0;
}

The first post for EEPU weblog September 10, 2007

Posted by eepu in Misc.
add a comment

This is the first post for EEPU weblog. Some contributors has been invited to join this weblog. This weblog is designed as a medium for Electrical Engineering students of President University to bound their relation and share knowledge.

Follow

Get every new post delivered to your Inbox.