Tuesday, September 16, 2008

ADC 8bit 0804


Bill of Material ADC 0804:

  • IC ADC0804

  • Resistor 10k 2 bh

  • Resistor 1k 2 bh

  • Kapasitor 150p 1bh

  • Potongan Soket IC 3pin 1 bh

  • konektor SIL 8 pin/M 1 bh

  • Kabel Flat + konektor SIL 8 pin/F 2 bh

  • VR 10k Ohm 1 bh

Untuk merubah tegangan analog ke Digital dalam rangkaian ini dipakai ADC 0804 dengan ketelitian 8 bit. artinya:

tegangan input Vin berasal dari "sensor" (dalam rangkaian ini di ganti dengan VR 10k Ohm) akan memberikan tegangan berkisar 0 sampai 5 volt .

Ketelitian = (Tegangan Max - Tegangan Min) / 2 Pangkat 8

= 5/256

=20 mv

Jadi setiap kenaikan tegangan pada Vin sebesar 20 mv, outputnya akan naik 1 digit.

Tegangan (v) Bits
0 0000 0000
0,02 0000 0001
0,04 0000 0010
... ...
5 1111 1111

Saat memulai konversi, pin WR di beri logika 0, setelah selesai ADC akan mengirim sinyal INT.

Cara mengetes ADC:

Sambungkan konektor SIL 8 pin ADC dengan konektor SIL 8 pin ADC memakai Kabel Flat + konektor SIL 8 pin.

Pada saat Resistansi VR Paling besar (10K ohm) atau putar berlawanan jarum jam, lampu LED mati semua.

Pada saat Resistansi VR paling kecil (0 ohm) atau putar searah jarum jam, lampu LED nyala semua.

Contoh program 1:

Pin INT dan WR tidak perlu di hubungkan ke AT89S52, dan Pin RD di hubungkan ke ground

; program mengambil data analog ke ADC (pakaidelay)

; di sambungkan dengan modul 7segment untuk tampilannya

#include


digit0 equ 30h ;inisialisasi internal RAM untuk 7 Segment
digit1 equ 31h
digit2 equ 32h
digit3 equ 33h

org 0
ljmp main

Main:
ACALL ADC_Delay
ACALL Display7 ; panggil DISPLAY 7 untuk di isikan data dari A
sjmp Main


;display
Display7:
MOV Digit3,#0 ;Digit3=7s sebelah kiri
MOV B,#100
DIV AB
MOV Digit2,A ;Digit2=7s ke-2sebelah kiri
MOV A,B
MOV B,#10
DIV AB ;A bagi B Hasilnya di A, sisanya di B-
MOV Digit1,a ;- Cth 125/100 = A=1, B=25
MOV Digit0,B ;Digit0=7s sebelah kanan


MOV A,Digit0
ORL A,#0E0h ;1110 0000b = posisi 7s paling kanan
MOV P2,A
ACALL Delay
MOV A,Digit1
ORL A,#0D0h ;1101 0000b
MOV P2,A
ACALL Delay
MOV A,Digit2
ORL A,#0B0h ;1011 0000b
MOV P2,A
ACALL Delay
MOV A,Digit3
ORL A,#70h ;0111 0000b = posisi 7s paling kiri
MOV P2,A
ACALL Delay
RET


; +:+:+::+:+:+:+:+:+:+:+SUBRUTIN DELAY pakai timer
DELAY:
MOV R0,#00h
LAGI:
MOV TMOD,#01h
MOV TL0,#0dfh ;menentukan besarnya timer
MOV TH0,#0b1h
SETB TR0
Ulang:
NOP
JBC TF0,Hitung
SJMP Ulang
Hitung:
INC R0
CLR TR0
CJNE R0,#01h,Lagi ; 64 kali looping
Ret


;ADC_Delay: - selama menunggu konversi dari analog ke digital
ADC_Delay:
setb p3.6 ;penanda ADC untuk mulai konversi
clr p3.6 ;penanda ADC untuk mulai konversi
setb p3.6 ;penanda ADC untuk mulai konversi
acall delay
setb p3.7
clr p3.7
mov a,p0
setb p3.7
ret
end
 

Contoh program 2:

Pin INT dan di hubungkan ke AT89S52, dan Pin RD di hubungkan ke ground

; program mengambil data analog ke ADC dengan teknik polling
;sama dengan yang pakai
#include


digit0 equ 30h ;INISIALISASI MIS DIGIT 0 ADA DIALAMAT 30H
digit1 equ 31h
digit2 equ 32h
digit3 equ 33h

org 0
ljmp main


Main:
ACALL ADC_poling
ACALL Display7 ; panggil DISPLAY 7 untuk di isikan data dari A
sjmp Main


;display
Display7:
MOV Digit3,#0 ;Digit3=7s sebelah kiri
MOV B,#100
DIV AB
MOV Digit2,A ;Digit2=7s ke-2sebelah kiri
MOV A,B
MOV B,#10
DIV AB ;A bagi B Hasilnya di A, sisanya di B-
MOV Digit1,a ;- Cth 125/100 = A=1, B=25
MOV Digit0,B ;Digit0=7s sebelah kanan


MOV A,Digit0
ORL A,#0E0h ;1110 0000b = posisi 7s paling kanan
MOV P2,A
ACALL Delay
MOV A,Digit1
ORL A,#0D0h ;1101 0000b
MOV P2,A
ACALL Delay
MOV A,Digit2
ORL A,#0B0h ;1011 0000b
MOV P2,A
ACALL Delay
MOV A,Digit3
ORL A,#70h ;0111 0000b = posisi 7s paling kiri
MOV P2,A
ACALL Delay
RET


; SUBRUTIN DELAY pakai timer
DELAY:
MOV R0,#00h
LAGI:
MOV TMOD,#01h
MOV TL0,#0dfh ;223 menentukan besarnya timer
MOV TH0,#0b1 ;177
SETB TR0
Ulang:
NOP
JBC TF0,Hitung
SJMP Ulang
Hitung:
INC R0
CLR TR0
CJNE R0,#01h,Lagi ; 64 kali looping
Ret


;ADC_poling
ADC_Poling:
setb p3.6
clr p3.6
setb p3.6
JB INT0,$
setb p3.7
clr p3.7
mov a,p0
setb p3.7
ret
end
 

0 comments: