Rabu, 05 Februari 2014

Jam Digital Berbasis AT89s52


Komponen yang perlu disisapkan adalah:

  • 1 biji ic AT89S52
  • 1 biji x-tal 12MHz
  • 2 biji kapasitor keramik 30pF
  • 1 biji Resistor 10K
  • 1 biji elco 50v/10uF
  • 1 biji elco 16v/100uF
  • PCB secukupnya
  • power supply 5 volt

Ic AT89S52 harus kita isikan program dulu menggunakan peralatan berupa :

  • Downloader (saya menggunakan downloader usb asp ic atmega8, beli nya dari jogja)
  • komputer. Ga usah tanya belinya di mana ? Hehe :p

Dan ini dia program/source kode yang harus dimasukkan nanti ke ic AT89S52 (dicopas dari blognya bang nugros. Terima kasih banyak untuk bang nugros)

; Project name : Digital Clock.A51
; By : nugroho adi samekto
; Date : march 09, 2000
; ==========================
Sat_detik    equ    60h
Pul_detik    equ    61h
Sat_menit    equ    62h
Pul_menit    equ    63h
Sat_jam    equ    64h
Pul_jam    equ    65h
;
Buffer1        equ    66h
Buffer2        equ    67h
Buffer3        equ    68h
Buffer4        equ    69h
Buffer5        equ    6ah
Buffer6        equ    6bh
;
Cacah        equ    6ch
Info        equ    6dh
Waktu        equ    -50000
;
    org    0h
    ljmp    awal
;
    org    3h
    ljmp    ext_int0
;
    org    13h
    ljmp    ext_int1
;
    org    0bh
    ljmp    timer_int0
;
    org    30h
Awal:    mov    tmod,#1
    mov    th0,high waktu
    mov    tl0,low waktu
    mov    cacah,#20
    setb    ea
    setb    ex0
    setb    ex1
    setb    it0
    setb    it1
    setb    et0
    setb    tr0
    call    clear
    mov    dptr,#angka
;
Scan:    mov    a,sat_detik
    movc    a,@a+dptr
    mov    buffer1,a    
    mov    p0,buffer1
    mov    p1,#11111110b
    call    delay
;
    mov    a,pul_detik
    movc    a,@a+dptr
    mov    buffer2,a
    mov    p0,buffer2
    mov    p1,#11111101b
    call    delay
;
    mov    p0,#0fdh
    mov    p1,#11111011b
    call    delay
;
    mov    a,sat_menit
    movc    a,@a+dptr
    mov    buffer3,a
    mov    p0,buffer3
    mov    p1,#11110111b
    call    delay
;
    mov    a,pul_menit
    movc    a,@a+dptr
    mov    buffer4,a
    mov    p0,buffer4
    mov    p1,#11101111b
    call    delay
;
    mov    p0,#0fdh
    mov    p1,#11011111b
    call    delay
;
    mov    a,sat_jam
    movc    a,@a+dptr
    mov    buffer5,a
    mov    p0,buffer5
    mov    p1,#10111111b
    call    delay
;
    mov    a,pul_jam 
    movc    a,@a+dptr
    mov    buffer6,a
    mov    p0,buffer6
    mov    p1,#01111111b
    call    delay
;
    jmp    scan
;
Ext_int0:
    inc    sat_menit
    mov    a,sat_menit
    cjne    a,#10,back
    mov    sat_menit,#0
;
    inc    pul_menit
    mov    a,pul_menit
    cjne    a,#6,back
    mov    pul_menit,#0
Back:    call    debounce
    reti    
;
Ext_int1:
    inc    sat_jam
    mov    a,sat_jam
    cjne    a,#10,uji
    mov    sat_jam,#0
;
    inc    pul_jam
    mov    a,pul_jam
    cjne    a,#3,uji
    mov    pul_jam,#0
;
    jmp    back1
;
Uji:    mov    a,sat_jam
    cjne    a,#4,back1
    mov    a,pul_jam
    cjne    a,#2,back1
    call    clear
Back1:    call    debounce
    reti
;
Timer_int0:
    clr    tr0
    clr    tf0
    mov    th0,#high waktu
    mov    tl0,#low waktu
    djnz    cacah,selesai
    mov    cacah,#20
    call    proses
Selesai:
    setb    tr0
    reti
;
Proses:    mov    dptr,#angka
    inc    sat_detik
    mov    a,sat_detik
    cjne    a,#10,tamat
    mov    sat_detik,#0
;
    inc    pul_detik
    mov    a,pul_detik
    cjne    a,#6,tamat
    mov    pul_detik,#0
;
    inc    sat_menit
    mov    a,sat_menit
    cjne    a,#10,tamat
    mov    sat_menit,#0
;
    inc    pul_menit
    mov    a,pul_menit
    cjne    a,#6,tamat
    mov    pul_menit,#0
;
    inc    sat_jam
    mov    a,sat_jam
    cjne    a,#6,check
    mov    sat_jam,#0
;
    inc    pul_jam
    mov    a,pul_jam
    cjne    a,#2,check
    mov    pul_jam,#0
;
    jmp    tamat
;
Check:    mov    a,sat_jam
    cjne    a,#4,tamat
    mov    a,pul_jam
    call    clear
Tamat:    
    ret
;
Clear:    mov    sat_detik,#0
    mov    pul_detik,#0
    mov    sat_menit,#0
    mov    pul_menit,#0
    mov    sat_jam,#0
    mov    pul_jam,#0
    mov    buffer1,#22h
    mov    buffer2,#22h
    mov    buffer3,#22h
    mov    buffer4,#22h
    mov    buffer5,#22h
    mov    buffer6,#22h
    ret
;
Delay:
    mov    r0,#0
Loop:    djnz    r0,$
    mov    p0,#0ffh
    mov    p1,#0ffh
    ret
;
Debounce:
    mov    r1,#0
Tunggu:    djnz    r1,tunggu
    ret
;
Angka:
    db    22h,0fah,0a4h,25h,71h,29h,28h,67h,20h,21h,22h
End

source kode di atas harus kita ubah dulu menjadi bahasa mesin (file hex), istilah kerennya di compile (kalo ga salah sih)

Untuk meng compile source kode di atas, saya menggunakan aplikasi MIDE-51
Tp bagi yang tak mau repot-repot, silakan langsung saja sedot file hex nya di sini

Berikutnya yang perlu kita siapkan adalah komponen untuk displaynya:6 biji 7 segmen common anode. Saya menggunakan LED yang dirangkai membentuk 7 segmen. 

  • transistor pnp 6 biji. Saya menggunakan transistor S8550
  • 6 biji resistor 22k
  • 6 biji resistor 1k
  • 7 biji resistor 220 ohm

Langsung saja rangkai seperti skema ini (skema juga dari blognya bang nugros. Terima kasih untuk bang nugros):

skema jam digital

skema display jam digital


Pada gambar di atas, jalur nomer 1 (warna hijau) dihubungkan ke pin 1 ic AT89S52.
Jalur 2 (warna hijau) dihubungkan ke pin 2 ic AT89S52.
Begitu seterusnya sampai ke pin 8
sedangkan jalur A ke pin 35, B ke pin 36, C ke pin 32 , D ke pin 33 , E ke pin 39, F ke pin 37, dan G ke pin 38 

Kalau sudah siap,,silakan download program berupa file hex tadi ke ic AT89S52 nya mengguanakan downloader dan komputer (petunjuknya sudah disertakan dalam paket pembelian downloader)
kalau sudah, silakan coba hidupkan rangkaiannya menggunakan power supply 5 volt.

PROSES DOWNLOAD FILE HEX KE  IC AT89S52 SEDANG BERLANGSUNG SECARA HIKMAT  :D

Selamat, kini jam digital udah jadi. Keren kan? Apalagi kalo dilihatnya di tempat gelap,,wuiiiihhh,,nikmatnya,,hehe :D

Uji coba jam digital awipunna
O iya, jam digital ini kalau dihidupkan selama 3 jam, dia balik lagi ke waktu nol. Ada lagi kekurangannya: kalau jamnya disetel, menitnya juga ikut.

Mungkin ada para pakar yang baik hati yang bersedia mengedit source kode di atas?
Monggo,,,


Tapi sebagai pemula, saya sudah cukup senang karena sudah bisa tahu cara mendownload program ke ic mikrokontroller,,hehe
Demikian sedikit pengalaman saya, semoga bermanfaat,,amin


Dan berikut hasil jepret-jepret:

Uji coba menggunakan 7 segmen darurat



Perakitan 7 segmen mengguanakan LED ala Awipunna
Perakitan 7 segmen mengguanakan LED ala Awipunna

  • Referensi: http://awipunna.blogspot.com/

Tidak ada komentar:

Posting Komentar