Tải bản đầy đủ (.pdf) (12 trang)

vi xử lý hệ thống điều khiển dac

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (560.33 KB, 12 trang )


KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I
I



M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H




















O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Khảo sát nguyên lý hoạt động của vi mạch DAC 0808.
• Thực hiện việc biến đổi từ tín hiệu số (Digital) sang tín hiệu tương tự (Analog).

B. YÊU CẦU:


• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Tham khảo trước và nắm được hoạt động của vi mạch DAC 0808.



O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 1: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục 00H, 01H, 02H, 04H, 08H, 10H, 20H, 40H
,80H, C0H và FFH, mỗi lần cách nhau 2 giây.
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy đo VOM để đo điện áp tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.
VI ÑIEÀU KHIEÅN
PORT 0
A0 A7
PORT 1PORT 3PORT 2
SELECT
CHIP
CLOCK
OUT
PORT 1PORT 3
40 PINS
20 PINS
POWER
SW
DAC

POWER
DIGITAL
IN
ANALOG
OUT
NGUOÀN
5V, 12V
8
8
VOM
1

1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
P1.7

P1.0
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1

38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD

10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14

27
U1
AT89C51
VCC=+5V
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)

A2
6
VREF+
14
VEE
3
A1
5
IOUT
4
A3
7
A4
8
A5
9
A6
10
A7
11
A8
12
VREF-
15
COMP
16
U2
DAC0808
VCC=+12V
+88.8

Volts
DIEN AP ANALOG
R2
2K7
R3
2K7
R4
2K7
R5
2K7
D1
5V
RV2
10K
C4
10uF
C5
100nF
R6
2K7
+12V
C6
100nF
C7
100nF
-12V
C8
100nF
U3
LM741

+88.8
Volts
DIEN AP CHUAN

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN BIEN DOI D/A THONG QUA DAC0808 VA
;HIEN THI GIA TRI ANALOG (DANG DIEN AP) LEN VOLT KE
;***************************************************
;KET NOI: DIGITAL IN -> PORT1
;***************************************************
ORG 00H
MAIN:

MOV DPTR,#MYDATA ;NAP DIA CHI VUNG DU LIEU CAN CHUYEN DOI D/A
MOV R0,#11 ;SO BIEN DU LIEU TRONG VUNG DU LIEU
MP1:
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 1: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục 00H, 01H, 02H, 04H, 08H, 10H, 20H, 40H
,80H, C0H và FFH, mỗi lần cách nhau 2 giây.
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
CLR A
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV P1,A ;XUAT DU LIEU DIGITAL RA DAC0808
ACALL DELAY2S ;TAO THOI GIAN TRE GIUA HAI LAN XUAT DU LIEU
INC DPTR ;CHUAN BI LAY DU LIEU KE TIEP
DJNZ R0,MP1 ;KIEM TRA HOAN TAT MOT CHU TRINH XUAT DU LIEU
SJMP MAIN ;LAP LAI
;****************************************************

DELAY2S: ;CHUONG TRINH CON TAO THOI GIAN TRE 2S
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
MYDATA:
DB 00H,01H,02H,04H,08H,10H,20H,40H,80H,0C0H,0FFH
END
DELAY2S
(XEM CTC NÀY TẠI VÍ DỤ A7.3)
NẠP SỐ DỮ LIỆU TRONG VÙNG
(R0) = 11
BEGIN
NẠP ĐỊA CHỈ VÙNG DỮ LIỆU
(DPTR) = MYDATA
NẠP ĐỊA CHỈ OFFSET BAN ĐẦU
(A) = 0
LẤY DỮ LIỆU
(A) = (@A+DPTR)
O1

XUẤT DỮ LIỆU RA PORT
(P1) = (A)
GỌI CTC TẠO TRỄ
DELAY2S
CHUYỂN SANG DỮ LIỆU KẾ TIẾP
(DPTR) = (DPTR) + 1
MAIN:
MP1:
CHƯA HẾT DỮ LIỆU
(R0) ≠ 0
Đ
S
VÙNG DỮ LIỆU MYDATA
00H,01H,02H,04H,08H,10H,20H,40H,80H,C0H,FFH
GIÃM BIẾN ĐỀM SỐ DỮ LIỆU
(R0) = (R0) - 1

1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi

điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục từ 00H -> FFH, mỗi lần cách nhau 2 giây và
được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J65 (PORT2 / A8 A15) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy đo VOM để đo điện áp tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.
• Dùng dây bus 8 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
POWER
DIGITAL
IN
ANALOG
OUT

1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0
AD1

AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D

E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F

G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
P1.0
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1

AD6
AD0
AD1
AD2
AD3
AD4
AD5
P1.7
P2.7
P2.0
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
XTAL2
18
XTAL1
19
ALE
30

EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4

P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22

P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V

LED7
Q1
A1015
+5V
LED6
Q2
A1015
+5V
R2
1K
R3
1K
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
LED5
Q3
A1015
+5V

LED4
Q4
A1015
+5V
R11
1K
R12
1K
LED3
Q5
A1015
+5V
LED2
Q6
A1015
+5V
R13
1K
R14
1K
LED1
Q7
A1015
+5V
LED0
Q8
A1015
+5V
R15
1K

R16
1K
C3
10uF
R1
10k
+5V
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
A2
6
VREF+
14
VEE
3
A1
5
IOUT
4
A3
7
A4
8
A5
9
A6
10
A7
11

A8
12
VREF-
15
COMP
16
U3
DAC0808
VCC=+12V
+88.8
Volts
DIEN AP ANALOG
R21
2K7
R20
2K7
R19
2K7
R18
2K7
D1
5V
RV1
10K
C5
10uF
C?
100nF
R17
2K7

+12V
C7
100nF
C4
100nF
-12V
C6
100nF
U2
LM741
+88.8
Volts
DIEN AP CHUAN

O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục từ 00H -> FFH, mỗi lần cách nhau 2 giây và
được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
BEGIN
ĐẶT GIÁ TRỊ SỐ BAN ĐẦU
(A) = 0
O2
MAIN:
MP1:
XUẤT GIÁ TRỊ SỐ RA DAC
(P2) = (A)
LẤY GIÁ TRỊ SỐ ĐỂ GIẢI MÃ - HIỂN THỊ
(R7) = (A)

GỌI CTC GIẢI MÃ GIÁ TRỊ SANG BCD
BIN8TOBCD
GỌI CTC GIẢI MÃ BCD SANG MÃ 7 ĐOẠN
BCD3ADCTO7SEG
GỌI CTC HIỂN THỊ
DELAY_SCAN
LẤY GIÁ TRỊ KẾ TIẾP
(A) = (A) + 1
BIN8TOBCD
(XEM CTC NÀY TẠI PHẦN HƯỚNG
DẪN CỦA VÍ DỤ G)
DISP7SEGMUL8
(XEM CTC NÀY TẠI VÍ DỤ B8 MBI)
DELAYLED
(XEM CTC NÀY TẠI VÍ DỤ B3.1 MBI)
DELAY_SCAN
(XEM CTC NÀY TẠI VÍ DỤ B6 MBO)
XỬ LÝ ĐỂ LẤY GIÁ TRỊ THỨ NHẤT TRONG
SỐ BCD NÉN (4 BIT THẤP)
(A) =
XỬ LÝ ĐỂ LẤY GIÁ TRỊ THỨ HAI TRONG SỐ
BCD NÉN (4 BIT CAO)
(A) =
CẤT TẠM GIÁ TRỊ CỦA DPH,
DPL, ACC VÀO STACK
BCD3ADCTO7SEG
NAME: BCD3ADCTO7SEG - GIẢI MÃ SANG MÃ 7 ĐOẠN.
INPUT: R7,R6 = SỐ BCD (TRĂM/CHỤC/ĐƠN VỊ).
OUTPUT: 67H, 66H = CHUỖI KÝ TỰ “AD”.
65H, 64H = CHUỖI KÝ TỰ “C=“.

63H = CHUỖI KÝ TỰ “ “.
62H = MÃ 7 ĐOẠN (TRĂM).
61H, 60H = MÃ 7 ĐOẠN (CHỤC/ĐƠN VỊ).
BCD3ADCTO7SEG:
LẤY LẠI GIÁ TRỊ CHO DPH, DPL,
ACC TỪ STACK
NẠP ĐỊA CHỈ VÙNG MÃ
(DPTR) = CODE7SEG
RET
NẠP SỐ BCD NÉN CẦN GIẢI MÃ
(A) = (R6) = X Y
0 Y
GIẢI MÃ DỮ LIỆU
(A) = (@A+DPTR)
CẤT MÃ 7 ĐOẠN CỦA BCD HÀNG ĐƠN VỊ
VÀO Ô NHỚ
(60H) = (A)
NẠP SỐ BCD NÉN CẦN GIẢI MÃ
(A) = (R6) =
X Y
0 X
GIẢI MÃ DỮ LIỆU
(A) = (@A+DPTR)
CẤT MÃ 7 ĐOẠN CỦA BCD HÀNG CHỤC VÀO
Ô NHỚ
(61H) = (A)
CẤT MÃ 7 ĐOẠN CỦA KÝ TỰ “ “ VÀO Ô NHỚ
(63H) = FFH
CẤT MÃ 7 ĐOẠN CỦA KÝ TỰ “=“ VÀO Ô NHỚ
(64H) = FFH

CẤT MÃ 7 ĐOẠN CỦA KÝ TỰ “C“ VÀO Ô NHỚ
(65H) = C6H
CẤT MÃ 7 ĐOẠN CỦA KÝ TỰ “A“ VÀO Ô NHỚ
(66H) = 88H
CẤT MÃ 7 ĐOẠN CỦA KÝ TỰ “D“ VÀO Ô NHỚ
(67H) = A1H
XỬ LÝ ĐỂ LẤY GIÁ TRỊ THỨ NHẤT TRONG
SỐ BCD NÉN (4 BIT THẤP)
(A) =
NẠP SỐ BCD NÉN CẦN GIẢI MÃ
(A) = (R7) =
X Y
0 Y
GIẢI MÃ DỮ LIỆU
(A) = (@A+DPTR)
CẤT MÃ 7 ĐOẠN CỦA BCD HÀNG TRĂM VÀO
Ô NHỚ
(62H) = (A)
VÙNG DỮ LIỆU CODE7SEG
C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H

;***************************************************
;CHUONG TRINH DIEU KHIEN BIEN DOI D/A THONG QUA DAC0808 VA
;HIEN THI GIA TRI ANALOG (DANG DIEN AP) LEN VOLT KE
;HIEN THI GIA TRI DIGITAL (DANG DEC) LEN BO HIEN THI LED 7 DOAN
;***************************************************
;KET NOI: DIGITAL IN -> PORT1
; 8 LED -> PORT0
; SEL LED -> PORT1
; MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0

;***************************************************
ORG 00H
MAIN:
CLR A ;GIA TRI DIGITAL BAN DAU ACC = 0
MP1:
MOV P2,A ;XUAT GIA TRI DIGITAL RA DAC0808 DE CHUYEN DOI D/A
MOV R7,A ;LAY GIA TRI DIGITAL DE GIAI MA VA HIEN THI
ACALL BIN8TOBCD ;GIAI MA GIA TRI DIGITAL (DANG BIN) SANG MA BCD
ACALL BCD3ADCTO7SEG ;GIAI MA GIA TRI DIGITAL (DANG BCD) SANG MA 7 DOAN
ACALL DELAY_SCAN ;TAO TRE GIUA HAI LAN XUAT GIA TRI VA GOI CTC QUET HIEN THI GIA TRI
INC A ;TANG LEN DE XUAT GIA TRI KE TIEP
SJMP MP1 ;LAP LAI
;***************************************************
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục từ 00H -> FFH, mỗi lần cách nhau 2 giây và
được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
;***************************************************
;NAME: BIN8TOBCD.
;INPUT: R7 = SO BIN 8 BIT (<= 255).
;OUTPUT: R7,R6 = SO BCD (TRAM - CHUC - DON VI).
;***************************************************
BIN8TOBCD:
PUSH ACC
PUSH B
MOV B,#10
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10

PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET

MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL

POP 01H
POP 00H
RET
;***************************************************
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục từ 00H -> FFH, mỗi lần cách nhau 2 giây và
được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).

Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 2S CO GOI CTC GIAI MA VA QUET HIEN THI
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
ACALL DISP7SEGMUL8 ;HIEN THI GIA TRI LEN LED 7 DOAN
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (3 SO BCD) CO KEM CHUOI "DAC= ".
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD3ADCTO7SEG.
;INPUT: R7,R6 = SO BCD (TRAM - CHUC - DON VI).
;OUTPUT: 67H,66H = CHUOI KY TU "DA".
; 65H,64H = CHUOI KY TU "C=".
; 63H = CHUOI KY TU " ".
; 62H = MA 7 DOAN (TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI).

;***************************************************
BCD3ADCTO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD NEN 1 (CHUC - DON VI) CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT HANG DON VI VAO O NHO

MOV A,R6 ;LAY SO BCD NEN 1 (CHUC - DON VI) CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD NEN 2 (TRAM) CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT HANG TRAM VAO O NHO

MOV 63H,#0FFH ;CAT MA KY TU " "
MOV 64H,#0B7H ;CAT MA KY TU "="
MOV 65H,#0C6H ;CAT MA KY TU "C"
MOV 66H,#88H ;CAT MA KY TU "A"
MOV 67H,#0A1H ;CAT MA KY TU "D"


POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi các giá trị lưu trong vi
điều khiển thành điện áp tương tự. Giá trị thay đổi liên tục từ 00H -> FFH, mỗi lần cách nhau 2 giây và
được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng có tần số tự chọn tại
ngõ ra.
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy hiện sóng (Oscilloscope) để kiểm tra dạng sóng tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.
VI ÑIEÀU KHIEÅN
A0 A7
SELECT
CHIP

CLOCK
OUT
POWER
SW
DAC
NGUOÀN
5V, 12V
8
8
1
OSC

1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
P1.7

P1.0
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1

38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD

10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14

27
U1
AT89C51
VCC=+5V
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)
MAÏCH ÑIEÀU KHIEÅN DAC (DIGITAL TO ANALOG CONVERTER)

A2
6
VREF+
14
VEE
3
A1
5
IOUT
4
A3
7
A4
8
A5
9
A6
10
A7
11
A8
12
VREF-
15
COMP
16
U2
DAC0808
VCC=+12V
R2

2K7
R3
2K7
R4
2K7
R5
2K7
D1
5V
RV2
10K
C4
10uF
C5
100nF
R6
2K7
+12V
C6
100nF
C7
100nF
-12V
C8
100nF
U3
LM741
+88.8
Volts
DIEN AP CHUAN

A
B
DANG TIN HIEU ANALOG

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN BIEN DOI D/A THONG QUA DAC0808 VA
;UNG DUNG TAO RA TIN HIEU SONG SIN TUAN HOAN (TUONG DOI)
;***************************************************
;KET NOI: DIGITAL IN -> PORT1
;***************************************************
ORG 00H
MAIN:
MOV R0,#0 ;BIEN DEM SO MAU DU LIEU
MOV DPTR,#MYDATA ;NAP DIA CHI VUNG MAU DU LIEU
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng có tần số tự chọn tại
ngõ ra.
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
LOOP:
MOV A,R0
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO MAU DU LIEU
MOV P1,A ;HIEN THI
LCALL DELAY
INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#128,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;***************************************************
DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 0.1MS

PUSH 00H
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
POP 00H
RET
;***************************************************
MYDATA: ;VUNG MAU DU LIEU DE TAO TIN HIEU SIN (128 MAU).
;MAU DU LIEU THU X = SIN((X*360)/128)*127,5+127,5
DB 127,134,140,146,152,158,164,170,176,182
DB 187,193,198,203,208,213,218,222,226,230
DB 233,237,240,243,245,247,249,251,252,253
DB 254,255,255,255,254,253,252,251,249,247
DB 245,243,240,237,233,230,226,222,218,213
DB 208,203,198,193,187,182,176,170,164,158
DB 152,146,140,134,127,121,115,109,103,096
DB 090,084,079,073,067,062,057,051,047,042
DB 037,033,029,025,021,018,015,012,010,007
DB 005,004,002,001,001,000,000,000,001,001
DB 002,004,005,007,010,012,015,018,021,025
DB 029,033,037,042,047,051,057,062,067,073
DB 079,084,090,096,103,109,115,121
END

O. HỆ THỐNG ĐIỀU KHIỂN DAC.

Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng có tần số tự chọn tại
ngõ ra.
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
tam giác có tần số bất kỳ.
• Bài 2: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
vuông có tần số bất kỳ.
• Bài 3: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện biến đổi
giá trị lưu trong thanh ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi theo việc nhấn nút
KEY0 hoặc KEY1 (KEY0: tăng giá trị, KEY1: giãm giá trị) từ 00H -> FFH và được hiển thị lên ba LED 7
đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
• Bài 4: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
sin có tần số thay đổi trong một khoảng tần số tự chọn tùy theo việc nhấn nút KEY0 hoặc KEY1 (KEY0:
tăng tần số, KEY1: giãm tần số ) và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng
số thập phân từ 0 -> 255)
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần tạo sóng sin:
o Tạo một bảng dữ liệu gồm 128 bytes là giá trị của 128 mẫu có được từ hình sin, đỉnh cao nhất của
hình sin có giá trị là 255 (FFH), đỉnh thấp nhất của hình sin có giá trị là 0 (00H). Do đó trục của hình sin có
giá trị là 127,5 (80H hay 7FH).
o Giá trị của mẫu thứ x là:
5,1275,127
128
360
sin +×









×
O
x

o Liên tục xuất bảng giá trị này ra vi mạch DAC0808, thay đổi thời gian delay giữa các lần xuất sẽ
tạo ra các tần số khác nhau.

×