Giả sử có đầu ra của thiết bị đo (cảm biến,…) đợc nối vào chân IN0 của ADC0809. Vref(-) = Gnd, Vref(+) = +5V. Xây dựng chơng trình để chuyển đổi tín hiệu Analog thành Digital, kiểm tra khi ADC chuyển đổi xong thì đọc dữ liệu đã đợc ADC chuyển đổi vào Vi điều khiển rồi hiển thị ra LCD.
• Chơng trình hợp ngữ
$debug
$tilte (** ADC0809 TEST PROGRAM for the MyBOARD **)
org 0000h
ljmp Main
org 0013h ; Điểm nhập vector ngắt ngoài 1 ;=======================================================; ; Trình xử lý ngắt ngoài ; ;=======================================================;
setb P3.1 ; khi đọc xong dữ liệu. clr EX1 ; Cấm ngắt ngoài 1. reti ; Hết chơng trình xử lý ngắt. ;=======================================================; ; Main Program ; ;=======================================================;
org 0030h ; Điểm nhập chơng trình chính.
Main: mov P0,#00h ; Chọn địa chỉ đầu vào IN0
clr ALE ; ALE =0;
setb ALE ; ALE = 1, tạo xung thấp – lên – ; cao để chốt địa chỉ kênh ở trong ; ADC.
clr P3.0 ; Tạo xung cao – xuống – thấp
clr P3.1 ; để bắt đầu chuyển đổi
setb P3.0
setb P3.1
setb EA ; Cho phép ngắt
setb EX1 ; Cho phép ngắt ngoài 1
setb IT1 ; Kích hoạt cạnh âm
wait: jnb P3.3,wait ; Chờ cho đến khi chuyển
đổi ; xong.
setb P3.7 ; OE = 1 ,
clr P3.7 ; OE = 0, tạo xung H-to-L để cho ; phép lấy dữ liệu ra khỏi ADC.
mov A,#0FFh
mov P0,A ; Tạo P0 làm đầu vào
mov A, P0 ; Đọc dữ liệu vào thanh chứa A call convert ; Gọi chơng trình con chuyển ;
đổi
call display ; Gọi chơng trình con hiển thị ;=======================================================; ; Chơng trình con CONVERT chuyển mã HEX thành ASCII ; ;=======================================================;
convert: anl A,#0Fh ; Xóa phần bit cao.
orl A,#30h ; Tạo thành mã ASCII.
mov R3,A ; Lu lại vào R3
ret
;=======================================================; ; Chơng trình con DISPLAY ;
;=======================================================;
display: mov A,#38h ; Khởi tạo LCD 2 dòng ma trận
; 5x7 pixel
call setup_LCD ; Gọi chơng trình setup
mov A,R3 ; Lấy lại dữ liệu đã lu trong R3 call write ; Hiển thị dữ liệu lên LCD ret
;========================================================; ; Chơng trình con Setup LCD ; ;========================================================;
setup_LCD: call ready ; Kiểm tra LCD đã sẵn
sàng ; cha? mov P2,A clr P3.7 ; RS = 0 clr P3.6 ; RW = 0 setb P3.4 ; E = 1 clr P3.4 ; E = 0 ret ;=======================================================; ; Chơng trình con WRITE ; ;=======================================================;
write: call ready ; Kiểm tra LCD đã sẵn sàng ?
mov P2,A setb P3.7 ; RS = 1 clr P3.6 ; RW = 0 setb P3.4 ; E = 1 clr P3.4 ; E = 0 ret ;=======================================================; ; Chơng trình kiểm tra xem LCD đã sẵn sàng cha? ; ;=======================================================;
ready: setb P2.7 ; Lấy P2.7 làm cổng vào kiểm
;tra.
clr P3.7 ; RS = 0, chọn thanh ghi lệnh. setb P3.6 ; RW = 1, đọc dữ liệu từ LCD.
back: clr P3.4
setb P3.4
jb P2.7,back ; Đợi khi LCD rảnh. ret
END ; Hết chơng trình.
Kết luận
Sau thời gian thực tập với nhiều cố gắng của bản thân cùng với sự hớng dẫn của thầy Vũ Vân Hà, quyển đồ án này đã hoàn thành đúng thời gian quy định theo yêu cầu đặt ra.
Để thực hiện đợc yêu cầu trên em đã nghiên cứu, tìm hiểu những vấn đề về vi xử lý, các vi mạch và các vấn đề khác có liên quan đến đề tài.
Kết quả thu đợc những kiến thức về: - Vi điều khiển 8051.
- DS12887, ADC0809, 74GC373, 74LS138. - Bàn phím số Hex, hiển thị LCD
- Xây dựng, thiết kế mạch nguyên lý. - Xây dựng các bài toàn điều khiển.
Tuy nhiên. do thời gian cũng nh trình độ chuyên môn có hạn nên đề tài chỉ dừng lại ở phần thiết kế sơ đồ nguyên lý và viết chơng trình, chứ cha thực hiện mạch bằng các linh kiện thực. Mong rằng đề tài này sẽ đợc các bạn sinh viên khóa sau tiếp tục thực hiện và khắc phục đợc những thiếu sót của đề tài.
Sau cùng một lần nữa chúng em xin chân thành cảm ơn thầy Vũ Vân Hà
cùng quý thầy cô Khoa Điện đã tận tình hớng dẫn và dẫn dắt em trong suốt nhũng năm học vừa qua.
Hà Nội, Ngày tháng 04 năm 2006 Sinh viên thực hiện
Tài liệu tham khảo
[1] Tống Văn On, Hoàng Đức Hải; Họ vi điều khiển 8051. Nhà xuất bản Lao động – Xã hội, 2001
[2] Nguyễn Tăng Cờng, Phan Quốc Thắng; Cấu trúc và lập trình họ vi điều
khiển 8051. Nhà xuất bản Khoa học Kỹ thuật, 2004.
[3] Tài liệu dới dạng file .pdf
DS12887 : www.dallas.com\...\ds12887.pdf ADC0809: www.national.com\...\adc0809.pdf
74ALS373: www.phillips.com\...\74als374.pdf Lập trình hợp ngữ cho 80c51:
www.hitex.co.uk\...\c51primer.pdf
[4] Giáo trình môn học Vi điều khiển 8051