IV. Các chú ý:
CHƯƠNG TRÌNH ĐIỀU KHIỂN ADC0809 CHUYỂN ĐỔI DỮ LIỆU KÊNH THỨ 0 – HIỂN THỊ KẾT QUẢ BẰNG SỐ THẬP PHÂN
Begin
Chọn kênh thứ 0, tạo xung ALE, Star
End Đọc kết quả Chờ chuyển đổi xong, giải
mov 23h,#0c0h ;luu thu tu kenh so 0 mov 24h,#0ffh
mov 25h,#0ffh
main: lcall ctcd_adc ;goi chtr con chuyen doi du lieu
lcall gma_hex_bcd ;goi chtrinh con chuyen so hex sang ma 7 doan ljmp main ;nhay ve chuyen doi tro lai
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con chuyen doi du lieu analog sang so ket qua luu trong A
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ctcd_adc: mov control,#00000000B ;goi ra port 3
setb ale cho ALE=1
nop ;delay 1 it thoi gian nop
setb start ;start = 1 nop
nop
clr ale clr start
lcall delayhthi ;goi chtr con delay co hien thi mov a,inadc ;doc du lieu sau khi chuyen doi ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtrinh con chuyen so hex thanh so BCD va sau do thi chuyen
;ma BCD thanh ma 7 doan de hien thi so thap phan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx gma_hex_bcd:
mov b,#10 ;chuyen so hex sang ma BCD div ab
mov 10h,b ;luu hang don vi BCD mov b,#10
div ab ;(a) chua so hang tram, (b) chua hang chuc movc a,@a+dptr
mov 25h,a ;cat so hang tram mov a,b movc a,@a+dptr mov 26h,a mov a,10h movc a,@a+dptr mov 27h,a ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delayhthi: mov 7eh,#1
pqn: mov 7fh,#30
delpqn: lcall hthi ;goi chuong trinh con hien thi djnz 7fh,delpqn djnz 7eh,pqn ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx hthi: mov r0,#27h mov a,#01111111b
hth: mov led7,@r0 ;lay du lieu mov quet,a
dec r0 setb c rrc a jc hth ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay10: mov 7ch,#50h djnz 7ch,$ ret
;khai bao ma 7 doan tu so '0' den so '9'
ma7doan: db 0C0h,0F9h,0A4h,0B0h,099h,092h,082h,0F8h db 080h,090h,088h,083h,0c6h,0a1h,086h,08eh end
4. Thực hiện các bước giống như các bài chuẩn cho đến khi mạch chạy đúng yêu cầu.
Chú ý: nếu muốn làm mạch đo nhiệt độ chỉ cần xử lý phần cảm biến và khuếch đại tín hiệu cho tương thích với độ phân giải của ADC và dùng hệ thống vi điều khiển và dùng chương trình này là có thể thực hiện được quá trình đo. Nếu muốn khống chế điều khiển thì thêm chương trình và ngõ ra điều khiển.
III. Bài tập:
1. Hãy viết chương trình điều khiển ADC chuyển đổi dữ liệu 2 kênh thứ 0 và thứ 1 – hiển thị bằng số thập phân.
I. Mục đích yêu cầu:
Biết được cách viết chương trình điều khiển ADC 0809 chuyển đổi lần lượt từng kênh sang dữ liệu số và kết hợp với các chương trình giải mã, hiển thị kết quả bằng số thập phân.
II. Trình tự thực hiện:
1. Kết nối mạch theo trình tự :
- Kết nối mạch giống bài 7-1 .
2. Khởi động phần mềm, viết chương trình như sau:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;Chuong trinh dieu khien ADC 0809 chuyen doi tin hieu kenh lan luot 8 kenh
;dung he thong 1: vi dieu khien 8951 ket noi voi khoi ADC0809 va 8 led 7 doan ;nhap du lieu tu 8 kenh ngo vao lien tuc
;hien thi tren 8 led 7 doan so nhi phan la ket qua sau khi chuyen doi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx led7 equ p1 ;dieu khien cac doan a,b,c,...
quet equ p2 ;dieu khien quet transistor inadc equ p3 ;nhap du lieu tu adc
control equ p0 ALE bit p0.3 start bit p0.4
org 0000h
mov dptr,#ma7doan
mov 20h,#88h ;nap ma chu A mov 21h,#0a1h ;nap ma chu d mov 22h,#0c6h ;nap ma chu C mov 24h,#0ffh
mov 25h,#0ffh
mov r6,#000 ;bien dem thu tu kenh can chuyen maina: mov r5,#200 ;so lan lap lai cho moi kenh main: lcall ctcd_adc ;goi chtr con chuyen doi du lieu
lcall gma_hex_bcd ;goi chtrinh con chuyen so hex sang ma 7 doan djnz r5,main
inc r6 ;khoa gia tri R7 chi trong vung[0->7] mov a,r6 anl a,#7 NGÀY : SỐ TIẾT : LỚP : MSSV : THỰC HÀNH VI ĐIỀU KHIỂN BÀI SỐ : 7-3
CHƯƠNG TRÌNH ĐIỀU KHIỂN ADC0809 CHUYỂN ĐỔI DỮ LIỆU 8 KÊNH– HIỂN THỊ KẾT QUẢ LẦN LƯỢT TỪNG KÊNH BẰNG SỐ THẬP PHÂN
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con chuyen doi du lieu analog sang so ket qua luu trong A
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ctcd_adc: mov control,r6 ;goi ma chon kenh ra port 3
setb ale ;cho ALE=1 nop ;delay 1 it thoi gian nop
setb start ;start = 1 nop
nop
clr ale clr start
lcall delayhthi ;goi chtr con delay co hien thi mov a,inadc ;doc du lieu sau khi chuyen doi ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtrinh con chuyen so hex thanh so BCD va sau do thi chuyen
;ma BCD thanh ma 7 doan de hien thi so thap phan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx gma_hex_bcd:
mov b,#10 ;chuyen so hex sang ma BCD div ab
mov 10h,b ;luu hang don vi BCD mov b,#10
div ab ;(a) chua so hang tram, (b) chua hang chuc movc a,@a+dptr
mov 25h,a ;cat so hang tram mov a,b movc a,@a+dptr mov 26h,a mov a,10h movc a,@a+dptr mov 27h,a
mov a,r6 ;giai ma thu tu kenh tuong ung movc a,@a+dptr
mov 23h,a ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh co delay co hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delayhthi: mov 7eh,#1
pqn: mov 7fh,#30
delpqn: lcall hthi ;goi chuong trinh con hien thi djnz 7fh,delpqn
djnz 7eh,pqn ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx hthi: mov r0,#27h
mov a,#01111111b
hth: mov led7,@r0 ;lay du lieu mov quet,a
lcall delay10
dec r0 setb c rrc a jc hth ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay10: mov 7ch,#50h djnz 7ch,$ ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;khai bao ma 7 doan tu so '0' den so '9'
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ma7doan: db 0C0h,0F9h,0A4h,0B0h,099h,092h,082h,0F8h
db 080h,090h,088h,083h,0c6h,0a1h,086h,08eh end
3. Thực hiện các bước giống như các bài chuẩn cho đến khi mạch chạy đúng yêu cầu.
III. Bài tập:
1. Thay led 7 đoạn bằng LCD, hãy viết lại chương trình trên cho phù hợp.
2. Viết chương trình điều khiển ADC chuyển đổi 8 kênh hiển thị trên LCD, mỗi kênh sử dụng 4 kí tự: 1 kí tự cho số thứ tự kênh và 3 số còn lại là dữ liệu số chuyển đổi.
3. Hãy kết nối vi điều khiển với ADC (8 đường data số, 2 đường điều khiển), kết nối với LCD (8 đường data, 3 đường điều khiển), kết nối với 1 led đơn tượng trưng cho 1 relay. Đèn led đơn sáng khi giá trị chuyển đổi nhỏ hơn 80, nếu giá trị lớn hơn thì đèn tắt, LCD hiển thị giá trị chuyển đổi. Để thay đổi tín hiệu tương tự ở ngõ vào ta dùng biến trở hay dùng cảm biến nhiệt độ LM35.
4. Hãy kết nối vi điều khiển với ADC (8 đường data số, 2 đường điều khiển), kết nối với LCD (8 đường data, 3 đường điều khiển), kết nối với 2 led đơn tượng trưng cho 2 relay. Khi nhiệt độ nằm trong khoảng từ (80 đến 90) thì tắt bớt 1 relay và khi lớn hơn 95 thì tắt luôn relay còn lại. Khi nhiệt độ hạ thì đóng lại
I. Mục đích yêu cầu: