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

Vi Mạch MCS 51 - Ứng Dụng Thực Tế (Phần 2) part 9 docx

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 (434.17 KB, 9 trang )

N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 3: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của kênh ngõ vào
(kênh IN0) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số phần thập phân).
Sử dụng cơ chế bộ nhớ ngoài.
Giáo trình thực hành vi xử lý. 244 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.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 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 4)


N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thơng qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngồi.
Giáo trình thực hành vi xử lý. 245 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 J76 (MOMENTARY SW) ở khối nút nhấn với J80 (DATA IN) ở khối mở rộng port
I/O.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J49 (DIGITAL OUT) ở khối ADC.
• 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 J90 (DATA OUT) ở khối mở rộng port I/O với J4 (7SEG IN MUL) ở khối LED 7


đoạn.
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 1 nối J77 (V1) ở khối tạo áp với J48 (ANALOG IN) ở khối ADC (chú ý là ta chỉ nối bit 0
(IN0) của J48 và J77 lại với nhau).
• Dùng dây bus 1 nối J78 (V2) ở khối tạo áp với J48 (ANALOG IN) ở khối ADC (chú ý là ta chỉ nối bit 1
(IN1) của J48 và J78 lại với nhau).
• Dùng dây bus 1 nối J93 (CS573B) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 0 (0000H – 1FFFH) của J70 và J93 lại với nhau).
• Dùng dây bus 1 nối J92 (CS573A) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 1 (2000H – 3FFFH) của J70 và J92 lại với nhau).
• Dùng dây bus 1 nối J83 (CS245) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 2 (4000H – 5FFFH) của J70 và J83 lại với nhau).
• Dùng dây bus 1 nối J60 (CS0809) ở khối ADC với J70 (SELECT CHIP) ở khối vi điều khiển (chú ý là ta
chỉ nối bit 4 (6000H – 7FFFH) của J70 và J60 lại với nhau).
• Dùng năm dây bus 3 nối D35 (POWER) ở khối tạo áp, D34 (POWER) ở khối ADC, J114 (POWER) ở
khối nút nhấn, J107 (POWER) ở khối mở rộng port I/O và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.
LED 7 ĐOẠN
7SEG7 IN
SEL IN2POWER SEL IN1
7SEG6 IN 7SEG5 IN 7SEG4 IN
7SEG7 IN
MUL
SEL LED IN
8 8 8 8
VI ĐIỀU KHIỂN
PORT 0
A0 A7
PORT 1PORT 3PORT 2
SELECT

CHIP
CLOCK
OUT
PORT 1PORT 3
40 PINS
20 PINS
POWER
SW
NGUỒN
+5V
3
8
8
MỞ RỘNG PORT I/O
PORT A
DATA IN
PORT CPORT B
DATA OUT
DATA OUT
CS8255
POWER
CS245
CS573A
CS573B
ADC
ANALOG
IN
CS0809
DIGITAL
OUT

POWER
TẠO ÁP
V1 POWERV2V3V4
3
3 3
1
8
1
1
1
8
8
NÚT NHẤN
MOMENTARY
SW
POWER
1
8
1
3

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

N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
Giáo trình thực hành vi xử lý. 246 Biên soạn: Phạm Quang Trí
1.3 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 A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (IN0 và IN1) lên bốn LED 7 đoạn (LED1 và LED0: kênh IN0; LED4 và LED3: kênh IN1; dưới
dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 2: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của ba kênh
ngõ vào (IN2, IN3 và IN4) lên sáu LED 7 đoạn (LED1 và LED0: kênh IN2; LED4 và LED3: kênh IN3;
LED7 và LED6: kênh IN4; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 3: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (kênh IN6, IN7) lên sáu LED 7 đoạn (LED2, LED1 và LED0: kênh IN6; LED7, LED6 và LED5:
kênh IN7; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 4: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn lần lượt
các nút nhấn KEY0 -> KEY7. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 5: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút
KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 6: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của
hai kênh ngõ vào (kênh IN0, IN1) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số
phần thập phân), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách
nhấn nút KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Quá trình biến đổi A/D được thực hiện qua các bước sau:
o Xác lập địa chỉ chọn kênh ngõ vào (A0, A1, A2).
o Tạo xung START/ALE bằng cách xuất một giá trị bất kỳ ra ngoại vi ADC0809 với địa chỉ ngoại vi
đã chọn (CS: Chip Select).
o Tạo thời gian delay 120
µ

s.
o Đọc giá trị từ ngoại vi ADC0809 với địa chỉ ngoại vi đã chọn (giá trị này có tầm từ 0 - 255 tùy
theo điện áp ngõ vào từ 0 - 5V

độ phân giải là 5V/255 = 19,6 mV).
o Đổi giá trị này thành điện áp (tính bằng mV) bằng cách nhân với 19,6

20.
o Đổi giá trị này ra mã BCD nén.
o Xuất ra LED 7 đoạn để hiển thị.
Đổi số nhị phân 8 bit thành mã BCD nén (packed BCD):
o Lấy giá trị cần chuyển đổi (0 – 255) chia cho 10

Số dư sẽ là mã BCD hàng đơn vị.
o Lấy kết quả (thương số) của phép chia trên chia tiếp cho 10

Số dư sẽ là mã BCD hàng chục.
o Kết quả (thương số) của phép chia trên

Mã BCD hàng trăm.
o Kết hợp mã BCD của hàng chục và hàng đơn vị lại thành mã BCD nén. Còn mã BCD của hàng
trăm thì giữ nguyên.
o Chương trình mẫu:
;***************************************************
;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
;***************************************************
;NAME: BIN8TOBCD.
;INPUT: R7 = SO BCD 8 BIT (<= 255).
;OUTPUT: R7,R6 = SO BCD (TRAM - CHUC - DON VI).
;***************************************************

BIN8TOBCD:
PUSH ACC
PUSH B
MOV B,#10
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
Giáo trình thực hành vi xử lý. 247 Biên soạn: Phạm Quang Trí
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
;***************************************************
Đổi số nhị phân 16 bit thành mã BCD nén:
o Công việc thực hiện tương tự như đối với số nhị phân 8 bit là lần lượt chia giá trị cần chuyển đổi
cho 10. Tuy nhiên, cần phải tạo ra một chương trình con thực hiện việc chia số 16 bit cho 10 (vì giá trị cần đổi
lúc này là số 16 bit).
o Chương trình mẫu:

;***************************************************
;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
;***************************************************
;NAME: BIN16TOBCD.
;INPUT: R7,R6 = SO BCD 16 BIT (<= 9999).
;OUTPUT: R7,R6 = SO BCD (NGAN - TRAM - CHUC - DON VI).
;***************************************************
BIN16TOBCD:
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
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 CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
;***************************************************
;NAME: DIV16TO8.
;INPUT: R7,R6: SO BINARY 16 BIT
; B: SO BINARY 8 BIT
;OUTPUT: R7,R6: KET QUA CUA PHEP CHIA
; B: SO DU CUA PHEP CHIA
;***************************************************
DIV16TO8:
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
Giáo trình thực hành vi xử lý. 248 Biên soạn: Phạm Quang Trí
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7

RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************








TRUNG TÂM THÍ NGHIỆM THỰC HÀNH Đ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ý. 250 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 giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục 00H, 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ý. 251 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 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.6 Nạp chương trình vào vi điều khiển.
1.7 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.8 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 giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 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ý. 252 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 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)

×