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
DAC 0808 có nhiệm vụ biến đổi mã nhò phân thành dòng (tín hiệu analog).
Dòng này có chiều chạy vào Iout của DAC 0808 và có cường độ thay đổi theo tỉ lệ
với data ở ngã vào. Khi data thay đổi từ 0 255 Iref, ở mạch dòng mã nhò phân
được đưa từ KIT 8051 qua Port A của 8255-2 để đưa vào DAC 0808.
Tín hiệu DAC 0808 tạo ra dòng nên còn phải có mạch chuyển dòng thành áp
dùng LM324. Ta cần điện áp thay đổi từ 0-5V mà dòng thay đổi từ 0 2mA nên ta
cần điều chỉnh VR 5K cho phù hợp.
Sô ñoà nguyeân lyù card chuyeån ñoåi A/D – D/A
SÔ ÑOÀ BOÁ TRÍ LINH KIEÄN
Sễ ẹO MAẽCH IN MAậT TREN
Chương II
THIẾT KẾ PHẦN MỀM
I – LƯU ĐỒ GIẢI THUẬT
1 – Lưu đồ chương trình chính:
START
Khởi động 8255-1
MODE0
Nạp đòa chỉ cho kênh
đầu tiên vào r7
Chương trình xóa 8LED
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
0809
Lưu kết quả
Tăng R7 để dò kênh kế
N
R7= 08
Y
2 – Lưu đồ chương trình con chuyển đổi:
START
Nhập kênh cần quét
r7 a
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
MOV DPTR, #8002 ; Kiểm tra nhấn phím
MOV A, @DPTR
ANL A, 02H
JNZ X2
INC R7 ; Tăng lên để dò kênh kế
CJMP 08, X2 ; Kiểm tra đã dò hết kênh chưa
LJMP X1 ; quay trở lại
***********************************************************
Các chương trình con phục vụ cho chương trình chính
***********************************************************
Chương trình con xóa vùng data hiển thò cho 8 kênh từ 5000h – 507Fh
ORG 4880H
MOV DPTR, #5000H ; Dùng ram ngoài để lưu trữ
MOV A, #00H
MOV R0, #80H ; Xóa từ 5000h đến 507Fh
CLE1: MOVX @DPTR, A
INC DPTR
DJNZ R0, CLE1
RET
***********************************************************
Chương trình con thực hiện quá trình chuyển đổi kênh thứ n trong R7
***********************************************************
ORG 4500H
MOV A, R7 ;Chọn kênh thứ n, ALE =0
MOV DPTR, A ; Điều khiển quá trình chuyển đổi cho kênh
thứ n
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 DPTR, C000
MOVX @DPTR, A
LCALL DELAY
RET
***********************************************************
Chương trình xuất ra D/A
***********************************************************
ORG 4200H
MOV R0, A ; Cất dữ liệu vào thanh ghi R0
MOV A, #80 ; Khởi tạo 8255 – 2 Mode 0
MOV DPTR, A003
MOV @DPTR, A
MOV A, R0 ; Nạp trở lại dữ liệu vào thanh ghi A
MOV DPTR, A000 ; Xuất dữ liệu ra Port A
MOV @DPTR, A
RET
***********************************************************
Chương trình chuyển số HEX sang số BCD
***********************************************************
ORG 4600H
MOV DPTR, #5008H
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 đơn vò vào 5008H
INC DPTR ; Tăng lên để lưu hàng chục
MOV A, R0 ; Lấy lại data hàng chục, hàng trăm
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