Power Supply Digital dengan AT89S51 [3]

hei sobat. hehehe. maaf lanjutannya lama. tapi kan admin masih menunaikan janjinya. ok. nih sob lanjutannya


1.      DAC
            DAC (Digital to Analog Converter)  merupakan rangkaian pengubah data-data digital menjadi besaran tegangan analog.  Sama dengan ADC, DAC juga mempunyai resolusi untuk setiap bitnya. Dengan DAC 8 bit, maka resolusi yang didapat adalah sebesar 5/2n  atau sebesar 5/256 = 0,02 Volt.
            DAC pabrikan sudah banyak yang beredar misalnya DAC0808 yang merupakan 8 bit DAC. Namun dengan perkembangan teknologi digital, terutama mikrokontroller berjenis AVR yang sudah menyediakan fasilitas PWM (Pulse Width Modulation) sebagai pengganti DAC-nya.
            Dalam pembuatan Power Suply ini DAC yang digunakan bukanlah jenis IC seperti DAC0808 ataupun jenis PWM namun masih menggunakan DAC R-2R yang merupakan DAC yang sangat sederhana dan murah.

       I.            RANGKAIAN POWER SUPPLY

Penguat Tegangan dan Penguat arus

Rumus Penguatan Non-Inverting

Av

Vout = Av . Vin

Keterangan: Av = Penguatan

ü  DAC (Digital To Analog Converter)


ü  Minimum System Microcontroller AT 89s51





ü  Display 7 Segment dengan IC 7447 (Serial In Paralel Out)

ü  Display 7 Segment dengan sistem Scanning adalah cara menyalakan seven segmen secara bergantian dengan cepat sehingga tidak nampak perubahanya.
ü  IC SIPO digunakan untuk menghemat port pada mikrokontroller, hanya menggunakan 2 jalur untuk mengirimkan data secara serial yaitu jalur data dan jalur clock.  
dan ini dia sobat kode programnya
KODE PROGRAM



$mod51
;+++++++++++++++++++++++++++++++++++
; PROGRAM PSU DIGITAL
;+++++++++++++++++++++++++++++++++++
;================
;konfigurasi port
;================
dt_adc        equ p1
out_dac              equ p3
keyport              equ p2
;================
;flag
;================
f_stop bit 20h.0
f_dac  bit 20h.1
rst    bit 20h.2
f_start       bit 20h.3
f_key  bit 20h.4
;================
;keypad
;================
row1   bit p2.0
row2   bit p2.1
row3   bit p2.2
row4   bit p2.3

col1   bit p2.4
col2   bit p2.5
col3   bit p2.6
col4   bit p2.7
;================
;bit sipo
;================
clk    bit p0.0
data7  bit p0.1

;================
;bit scaning
;================
s0     bit p0.2
s1     bit p0.3
s2     bit p0.4
s3     bit p0.5
s4     bit p0.6
s5     bit p0.7



       dseg
       org 30h
      
d_sat: ds 1
d_pul: ds 1
d_rat: ds 1

a_sat: ds 1
a_pul: ds 1
a_rat: ds 1

atulis:       ds 1
keydata:ds 1
sv:    ds 1
dac:   ds 1
adc:   ds 1
bounce:       ds 1
putar: ds 1


       cseg
       org 00h
       jmp mulai
      
;========================
;Main Program
;========================
mulai: mov out_dac,#00h
       mov d_sat,#0
       mov d_pul,#0
       mov d_rat,#0
       mov a_sat,#0
       mov a_pul,#0
       mov a_rat,#0
       mov putar,#0

      
star:  call display
call adc_in
       call display
       call action

;-------------------
;input data
       clr row4
       jb col1,start
       call sett
       sjmp start

;========================
;setting & display
;========================
sett: call nool
setting:call keypad4x4
       call dsp_set

;-------------------
;start konversi
       clr col3
       jb row4,setting
       call convert_sv
       ret


dsp_set:mov dptr,#tabel

       mov a,d_sat
       movc a,@ a+dptr
       mov atulis,a
       call send
       clr s2
       call delay
       setb s2

       mov a,d_pul
       movc a, @ a+dptr
       mov b,#01111111b
       anl a,b
       mov atulis,a
       call send
       clr s1
       call delay
       setb s1

       mov a,d_rat
       movc a,@ a+dptr
       mov atulis,a
       call send
       clr s0
       call delay
       setb s0
       ret

;========================
;program action
;========================
action:       mov a,adc
       mov b,sv
       clr cy
       subb a,b

       jb cy,tam_dt  ;milih
;========================
;kurangi dac
;------------------------
       DEC dac              ;jika cy>0const(positif)
       mov r7,dac
       cjne r7,#255,ex_act
       mov dac,#0
       jmp ex_act


;========================
;tambah dac
;------------------------
tam_dt:       INC dac              ;jika cy<0const(negatif)
       mov r7,dac
       cjne r7,#0,ex_act
       mov dac,#255


ex_act:       mov dptr,#keliru
       mov a,dac
       movc a,@ a+dptr
       mov out_dac,a
       ret
;-----------------------

;========================
;Geser Seven segmen
;========================
geser: mov d_rat,d_pul
       mov d_pul,d_sat
       mov d_sat,keydata
       call tw
       ret
;==========================
;setting point
;==========================

convert_sv:
              mov a,d_rat
              mov b,#100
              mul ab
              mov sv,a

              mov a,d_pul
              mov b,#10
              mul ab

              mov b,sv
              add a,b
              mov sv,a
             
              ;clr cy

              mov a,sv
              mov b,d_sat
              add a,b
              ;jb cy,nool
              mov sv,a
              ret

nool:         mov sv,#0
              mov p3,#0
              mov d_sat,#0
              mov d_pul,#0
              mov d_rat,#0

              ret
;==========================
;Scaning data keypad matrix
;==========================
keypad4x4:

       mov bounce,#50
       mov keyport,#0ffh

       setb col4
       clr col1      ;(colom satu logika low)

detec: jb row1,key1
       djnz bounce,detec
       mov keydata,#01h     ;angka 1
       call geser
       ret

key1:  jb row2,key2
       djnz bounce,key1
       mov keydata,#04h     ;angka 4
       call geser
       ret

key2:  jb row3,key3
       djnz bounce,key2
       mov keydata,#07h     ;angka 7
       call geser
       ret


key3:  jb row4,key4
       djnz bounce,key3
       mov keydata,#0             ;angka *
       call geser
       ret

;===========================
key4:  setb col1
       clr col2
       jb row1,key5
       djnz bounce,key4
       mov keydata,#02h     ;angka 2
       call geser
       ret

key5:  jb row2,key6
       djnz bounce,key5
       mov keydata,#05h     ;angka 5
       call geser
       ret

key6:  jb row3,key7
       djnz bounce,key6
       mov keydata,#08h     ;angka 8
       call geser
       ret

key7:  jb row4,key8
       djnz bounce,key7
       mov keydata,#00h     ;angka 0
       call geser
       ret

;==========================
key8:  setb col2
       clr col3
       jb row1,key9
       djnz bounce,key8
       mov keydata,#03h     ;angka 3
       call geser
       ret

key9:  jb row2,keyA
       djnz bounce,key9
       mov keydata,#06h     ;angka 6
       call geser
       ret

keyA:  jb row3,keyB
       djnz bounce,keyA
       mov keydata,#09h     ;angka 9
       call geser
       ret

keyB:  jb row4,keyC
       djnz bounce,keyB
       mov keydata,#0             ;angka #
       call geser
       ret

;=========================
keyC:  setb col3
       clr col4
       jb row1,keyD
       djnz bounce,keyC
       mov sv,#50
       call conv_cpt
       ljmp start
       ;mov keydata,#07h    ;huruf a
       ;call geser
       ret

keyD:  jb row2,keyE
       djnz bounce,keyD
       mov sv,#60
       call conv_cpt
       ljmp start
       ;mov keydata,#07h    ;huruf b
       ;call geser
       ret

KeyE:  jb row3,keyF
       djnz bounce,keyE
       mov sv,#90
       call conv_cpt
       ljmp start
       ;mov keydata,#07h    ;huruf c
       ;call geser
       ret

keyF:  jb row4,nokey
       djnz bounce,keyF
       mov sv,#120
       call conv_cpt
       ljmp start
       ;mov keydata,#07h    ;huruf d
       ;call geser
      

nokey: setb col4
       ret



;========================
;scaning seven segment
;========================
display:
       inc putar
       mov a,putar
       cjne a,#100,nxdsp
       call convert
       mov putar,#0
nxdsp:
mov dptr,#tabel

       mov a,d_sat
       movc a,@ a+dptr
       mov atulis,a
       call send
       clr s2
       call delay
       setb s2

       mov a,d_pul
       movc a, @ a+dptr
       mov b,#01111111b
       anl a,b
       mov atulis,a
       call send
       clr s1
       call delay
       setb s1

       mov a,d_rat
       movc a,@ a+dptr
       mov atulis,a
       call send
       clr s0
       call delay
       setb s0
      
;=========================



       mov a,a_sat
       movc a,@ a+dptr
       mov atulis,a
       call send
       clr s5
       call delay
       setb s5

       mov a,a_pul
       movc a, @ a+dptr
       mov b,#01111111b
       anl a,b
       mov atulis,a
       call send
       clr s4
       call delay
       setb s4

       mov a,a_rat
       movc a, @ a+dptr
       mov atulis,a
       call send
       clr s3
       call delay
       setb s3
       ret

;========================
;kirim data serial
;========================
send: 
       mov a,atulis
       mov r5,#8
lagi:  rrc a
       MOV data7,c
       call clock
       djnz r5,lagi

       ret

;========================
       ;Clock SIPO
       ; --------
       clock:
              clr    clk
              nop
              nop
              nop
              nop
              nop
              setb   clk
              nop
              nop
              nop
              nop
              nop
              ret


;=========================
;adc input
;=========================
adc_in:       clr col4
       nop
       nop
       nop
       nop
       setb col4
       nop
       nop
       nop
       nop
       ret
;==========================
convert:
       mov a,dt_adc
       mov adc,a
       mov b,#10
       div ab
       mov a_sat,b
       mov b,#10
       div ab
       mov a_pul,b
       mov a_rat,a
ex_adc:       ret



conv_cpt:
       mov a,sv
       mov adc,a
       mov b,#10
       div ab
       mov d_sat,b
       mov b,#10
       div ab
       mov d_pul,b
       mov d_rat,a
       ret

;==========================
;Tunda Waktu
;==========================
delay: mov r6,#250
       djnz r6,$
       ret

TW:    MOV    R1,#100
TW1:   MOV    R2,#250
TW2:   MOV    R3,#10
       DJNZ   R3,$
       DJNZ   R2,TW2
       DJNZ   R1,TW1
       RET

tabel:        db 0c0h
              db 0f9h
              db 0a4h
              db 0b0h
              db 99h
              db 92h
              db 82h
              db 0f8h
              db 80h
              db 90h
             

keliru:       db     0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168
       db     104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84
       db     212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252
       db     2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170
       db     106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214
       db     54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129
       db     65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233
       db     25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181
       db     117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195
       db     35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155
       db     91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247
       db     15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255

Ninja Saga

Cheat

Kontes SEO

Tips n Trik

Ayo Dance

Lost Saga

Prediksi

Recent Post