Ta sử dụng OP-AMP LM 358 để lập lại điện áp nhằm phối hợp tổng trở với
ngõ vào REF+ của ADC 0809: đồng thời cung cấp mức áp chuẩn để đưa vào REF+
để tạo các mức logic ở ngõ ra tương ứng.
Các điện trở 1K, 2K. 10K và VR 10K nhằm tạo cầu phân áp và chọn mức
áp chuẩn đưa vào REF+
VZ = 5,6V ổn áp, giữ điện áp cố đònh
Ngõ ra bộ so sánh là 5V. Với giá trò này ta có sự thay đổi AV ở ngõ vào
để thay đổi 1 mức logic ở ngõ ra là:
AV = 5/256 20mV
5 – Mạch tạo giao tiếp với KIT 8051:
8 bit ra của 0809 được nối với PortA của 8255 –1
3 chân chọn kênh A0, A1, A2 của 0809 được nối PB0 PB2. Vì vậy khi
ghi một dữ liệu vào vùng nhớ của 0809 tức chọn kênh của nó.
Chân Start nối PC4, ALE nối PC5
Chân OE được nối lên Vcc. Luôn ở trạng thái cho phép đọc dữ liệu.
Chân EOC được nối với PCC. Trong quá trình thực hiện chuyển đổi vi
điều khiển sẽ đọc giá trò EOC tại PCO. Nếu EOC = 1: hoàn thành quá
trình chuyển đổi, vi điều khiển sẽ đọc dữ liệu lưu trữ vào RAM để xử lý.
PC1 được nối qua R1K đưa lên +5V (PC1 = 1). Khi có ấn phím PC1 = 0,
được đưa vào vi điều khiển để báo chọn kênh.
II – MẠCH CHUYỂN ĐỔI DA 0808
Chương trình hiển thò thứ tự
kênh chọn tại LED 8 Chương trình chuyển đổi data
Chương trình xuất data ra D/A
Chương trình đổi HEX-BCD
Chương trình giải mã LED 7 đoạn
Chương trình hiển thò
Chương trình delay
Khởi động Port C Kiểm tra nhấn phím N
PC4 = 0
Y
Khởi động Port
B
Ghi A vào 0809
Chọn kênh
Khởi động
Chuyển đổi N
kết thúc
Y
END
II- CHƯƠNG TRÌNH:
Chương trình chính chuyển đổi A/D – D/A:
ORG 4000H
MOV A, #91H ; Khởi tạo 8255-1 port A
MOV DPTR, #8003H
MOV @DPTR, A
X1 : MOV R7, #00H ; Nạp đòa chỉ để chọn kênh quét
X2: LCALL CLEAR ; Gọi chương trình xóa
LCALL DISPLAY – 1 ; Hiển thò số kênh chọn ở LED
LCALL CHUYENDOI ; Gọi chương trình chuyển đổi
LCALL OUT ; Gọi chương trình xuất ra D/A
LCALL HEX – BCD ; Gọi chương trình chuyển số hex
sang BCD
LCALL DECODE ; Gọi chương trình giải mã 7 đoạn
LCALL DISPLAY – 2 ; Gọi chương trình hiển thò dữ liệu
vừa chuyển đổi
LCALL DELAY ; Gọi chương trình delay
ORL A, #10H ; Cho ALE =1
MOVX @DPTR, A
ORL A, #20H ; Cho ALE =1, ST =1
MOVX @DPTR, A
NOP
NOP
NOP
CLR A ; Cho ALE =0, ST =0
MOVX @DPTR, A
; Kiểm tra quá trình chuyển đổi kết thúc hay chưa
CTC1:MOV DPTR, #PORTC
MOVX A, @DPTR
ANL A, #01H
JZ CTC1 ; Nếu chưa xong thì quay lại
; Xong quá trình biến đổi bắt đầu nhận dữ liệu
MOV DPTR, #PORTA
MOVX A,@DPTR
RET
***********************************************************
Chương trình hiển thò thứ tự số kênh chọn
***********************************************************
ORG 4100H
MOV A, #80H ; Chọn vò trí led để hiển thò
MOV DPTR, C001
MOVX @DPTR, A
MOV A, R7
MOV 83, 43 ; Nạp byte cao đòa chỉ chứa mã hiển thò
MOV 82, A ; Nạp byte thấp đòa chỉ chứa mã hiển thò
MOV A, @DPTR ; Hiển thò ra Led
MOV B, #10 ; Nạp 10 vào thanh ghi B
DIV AB
MOV R0, A ; Cất tạm A sang R0
MOV A, B
MOVX @DPTR, A ;Cất data hàng chục vào 5009H
INC DPTR ;Tăng lên để lưu hàng trăm
MOV A, R0 ;Lấy lại data hàng trăm
MOVX @DPTR, A ;Cất data hàng trăm vào 500AH