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

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 114 - 120)

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:

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 114 - 120)