Percobaan 3 (Seven Segmen)



PERCOBAAN 3
Seven Segmen dengan Mikrokontroler AT89S51

Pada dasarnya seven segmen ialah 8 buah led yang dikemas dalam membentuk digit digital yang dikemas dalam satu kemasan kotak plastik, sehingga dalam pemrograman mikrokontroler perlakuan seven segmen akan sama dengan melakukan pemrograman led.





Dalam aplikasinya sebuah mikrokontroler AT89S51 jika digunakan semua port untuk mengontrol seven segmen secara paralel makan jumlah digit maksimum hanyalah 4digit. disisi lain aplikasi menggunakan lebih dari 4digit, maka diperlukanlah cara lain untuk mengatasi hal ini.

 
Berikut ini merupakan tabel data penggunaan seven segmen :
Untuk menghemat penggunaan port maka diperlukan teknik MULTIPLEXING dalam mengontrol display seven segmen, sehingga digit yang dikontrol bisa lebih dari 4digit tetapi menggunakan port pada mikrokontroler yang minimal. teknik multiplexing ini di tunjukan pada gambar uji coba di bawah ini :

Langkah Percobaan :
Program 1 :
Menampilkan angka 0 pada digit 1 dan angka 0 pada digit 2

 
org    0h
$mod51

start:
mov    p2,#00000001b    ;aktifkan digit 1
mov    p1,#10000001b    ;tampilkan angka 0 pada digit 1 (lihat tabel)
call    delay           ;render
mov    p2,#00000010b    ;aktifkan digit 2
mov    p1,#10011111b    ;tampilkan angka 1 pada digit 2
call    delay           ;render
sjmp    start

;-------------------------------
;---Sub rutin waktu tunda-------
;-------------------------------
delay: mov R1,#255
ret1: mov R2,#255
ret2: djnz R2,ret2
      djnz R1,ret1
      ret
end

Program 2:
Counter 0 - 99


Percobaan 2 (Push Button)

PERCOBAAN 2
Push Button dengan Mikrokontroler AT89S51

Pada percobaan kali ini mikrokontroler AT89S51 akan ditambahkan komponen input push button, push button akan mengirimkan kondisi low "0" ketika ditekan dan kondisi high "1" ketika tidak ditekan.

Untuk menghindari pembacaan error dalam mikrokontroler pada penekanan push button diakibatkan ketidak stabilan tegangan dapat ditambahkan pull up resistor, sehingga kondisi high "1" ketika push button tidak ditekan akan tetap terjaga.

Langkah percobaan
Ketikan program berikut ini pada program Top View Simulator dan lakukan simulasi (cara melakukan simulasi klik disini)

Program 1 :
Dalam percobaan ini penekanan push button akan ditampilkan dengan nyala led.
org 0h
$mod51
start:
mov    a,p1   ; ambil data penekanan dari push button
mov    p0,a   ; kirim data dari akumulator pada led
sjmp    start   
end

Program 2 :
Lampu flip flop dengan tombol on off.
org    0h
$mod51

start:
SW1:    jb    p1.0,SW2    ; Cek SW1 apakah ditekan jika tidak cek PB2
        call    blink     ; jika SW1 ditekan led flip flop
SW2:    jb    p1.1,SW1    ; Cek SW2 apakah ditekan jika tidak cek SW1
        mov    p0,#0ffh   ; jika SW2 ditekan led off
sjmp    start

blink:
mov    p0,#00001111b      ;LED D5-D8 On D1-D4 off
call    delay             ;Panggil Delay (jeda waktu)
mov    p0,#11110000b      ;LED D1-D4 On D5-D8 off
call    delay
sjmp    start             ;kembali ke start

;-------------------------------
;---Sub rutin waktu tunda-------
;-------------------------------
delay: mov R1,#255
ret1: mov R2,#255
ret2: djnz R2,ret2
      djnz R1,ret1
      ret
end

Program 3:
Kontrol led dengan push button dan register geser 

org    0h
$mod51
mov    a,#11111110b
start:
SW1:    jb    p1.0,SW2      ; Cek SW1 apakah ditekan jika tidak cek SW2
        call    kiri        ; jika SW1 ditekan panggil led geser kiri
SW2:    jb    p1.1,SW3      ; Cek SW2 apakah ditekan jika tidak cek SW3
        call    kanan       ; jika SW2 ditekan panggil led geser kanan
SW3:    jb    p1.2,SW1      ; CEK SW2 apakah ditekan jika tidak cek SW1
        mov    p0,#0ffh     ; Jika SW3 ditekan led off
sjmp    start
;------------led geser kiri--------
kiri:
mov    p0,a
rl    a
call    delay
sjmp    start
;------------led geser kanan-------
kanan:
mov    p0,a
rr    a
call    delay
sjmp    start

;-------------------------------
;---Sub rutin waktu tunda-------
;-------------------------------
delay: mov R1,#255
ret1: mov R2,#255
ret2: djnz R2,ret2
      djnz R1,ret1
      ret
end
Jika tidak ada masalah led akan bergeser ke kiri ketika SW1 ditekan, bergeser ke kanan ketika SW2 ditekan dan off ketika SW3 ditekan.