Dt2-k9
Minh – Thế
1 BỘ CÔNG THƢƠNG
TRƢỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA : ĐIỆN TỬ ĐỒ ÁN MÔN HỌC
ĐỀ TÀI: THIẾT KẾ BỘ ĐO VÀ KHỐNG CHẾ
NHIỆT ĐỘ HIỂN THỊ LÊN MÀN HÌNH MÁY VI TÍNH
.
“Nhiệt độ khống chế được đặt bằng phím nhấn, thao tác khống chế được mô phỏng bằng
3led với 3 màu khác nhau, sai số cho phép là
±
1
0
C”.
Minh – Thế
3
Mục l
ụ
c trang
Lời nói đầu. 2
Mục lục. 3
Chƣơng I>Tổng quan thiết kế phần cứng cho đồ án. 4
I. sơ đồ khối tổng quát . 4
II. Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt
động từng khối. 5
Chƣơng II >Lập trình cho vi điều khiển. 14
1. sơ đồ giải thuật 14
2. code lập trình.
Dt2-k9
Minh – Thế
4
KHỐI ĐIỀU
KHIỂN
(khống chế)
KHỐI CẢM
BIẾN
ĐẦU RA ỨNG
DỤNG
(điều khiển lò
nhiệt, cảnh
báo,…)
Dt2-k9
Minh – Thế
5
2> sơ đồ nguyên lý.
điện dƣới dạng dòng điện hay điện áp. Dựa vào đặc tính rất nhạy của các bán dẫn
với nhiệt độ, tạo ra điện áp hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối. Đo tín
hiệu điện ta biết đƣợc giá trị của nhiệt độ cần đo. Sự tác động của nhiệt độ tạo ra
điện tích tự do và các lỗ trống trong chất bán dẫn. Bằng sự phá vỡ các phân
Dt2-k9
Minh – Thế
7
tử, bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể
tạo sự xuất hiện các lỗ trống. Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo
quy luật hàm mũ với nhiệt độ.
+LM135, LM35
Ngõ ra là điện áp.
Độ nhạy 10mv/1
0
C
Sai số cực đại 1,5
0
C khi nhiệt độ lớn hơn 100
0
C.
Phạm vi sử dụng :0
0
C=>100
0
R6=10k
Ω
và C1=15pf.Có đầu ra số: N=
256
xVin.;
5
d, nguyên lý hoạt động
¾ DB0- DB7: các lối ra số, dữ liệu chuyển đổi xuất hiện trên 8bit này. Bộ biến đổi
có độ phân giải là 5/256
¾ RD :là chân điều khiển đọc dữ liệu. RD=0: có dữ liệu lối ra.
RD=1: không có dữ liệu lối ra.
¾ WR: bình thƣờng ở mức logic cao, và lối vào này sẽ đƣợc kéo xuống mức thấp,
sau đó lại trở về mức cao để bắt đầu quá trình chuyển đổi.
Dt2-k9
Minh – Thế
8
¾ INTR: là lối ra ngắt của bộ biến đổi A/D. 1 sƣờn xung âm đƣợc tạo lên chân này
khi quá trình chuyển đổi kết thúc. Lối ra này thƣờng đƣợc sử dụng để tạo ra một
•
CPU( CPU centralprocessing unit) bao gồm:
9
Thanh ghi tích lũy A;
9
Thanh ghi tích lũy phụ B;
9
Đơn vị logic học (ALU);
9
Thanh ghi từ trạng thái chƣơng trình;
Dt2-k9
Minh – Thế
9 9
Bốn băng thanh ghi;
9
Con trỏ ngăn xếp
•
Bộ nhớ chƣơng trình( ROM) gồm 8Kbyte Flash.
•
Bộ nhớ dữ liệu( RAM) gồm 256 byte.
•
Bộ UART, có chức năng truyền nhận nối tiếp.
•
3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
•
Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong.
•
Bit
Tên
Chức năng
P3.0
RXD
Dữ liệu nhận cho Port nối tiếp
P3.1
TXD
Dữ liệu truyền cho Port nối tiếp
P3.2
INT0
Ngắt bên ngoài 0
P3.3
INT1
Ngắt ngoài 1
P3.4
TO
Ngõ vào của Timer/counter0
P3.5
T1
Ngõ vào của Timer/counter1
P3.6
/WR
Xung ghi bộ nhớ dữ liệu ngoài.
P3.7
/RD
Xung đọc bộ nhớ dữ liệu ngoài.
Chân /PSEN : là chân điều khiển đọc chƣơng trình ở bộ nhớ ngoài.
Chân ALE.
+P3.5, P3.7 lần lƣợt nối với INTR /RD và /WR của ADC0804. Nhiệm vụ điều khiển
hoạt động của bộ chuyển đổi số - tƣơng tự.
+P3.2=> P3.3 dùng để nối với các phím nhấn. Có tác dụng để thực hiện các thao tác
khống chế nhiệt độ cần đo.
Dt2-k9
Minh – Thế
12
6> bộ phím nhấn điều khiển (khống chế)
a, sơ đồ mạch
b, chức năng: dùng để thiết lập nhiệt độ khống chế.
SW2 (đƣợc nối với INT0 ) là phím dùng để đặt nhiệt độ khống chế.
SW3 (đƣợc nối với INT1) là phím dùng để tăng giảm nhiệt độ khống
chế. SW1 (đƣợc nối với 9) là phím dùng để làm phím reset
Dt2-k9
Minh – Thế
13
I>sơ đồ giải thuật
CHƢƠNG II>LẬP TRÌNH CHO VI ĐIỀU KHIỂN
Chƣơng trình chính.
START
NẠP GIÁ TRỊ ĐẦU Tăng t
0
0
min
Hiển thị
cảnh báo Khối xử lý
Hiển thị t
0
đo đƣợc
Hiển thị t
0
đặt
Dt2-k9
Minh – Thế
14 II> code chƣơng trình.
#include<reg52.h>
dien_ap=P0;
nhiet_do=dien_ap/2;
}
void hien_thi(unsigned char nhiet_do) // hien thi nhiet do moi truong
{
if(nhiet_do>=0 && nhiet_do<10)
Dt2-k9
Minh – Thế
15 {
chuc = 0;
donvi = nhiet_do;
}
if(nhiet_do>=10 && nhiet_do<100)
{
chuc = nhiet_do/10;
donvi = nhiet_do%10;
}
while(!TI);
SBUF=M[chuc];
TI=0;
while(!TI);
SBUF=M[donvi];
TI=0; while(!TI);
tong=tong+nhiet_do;
}
nhiet_do=tong/20;
if(ngat0==0)
{
led_xanh=led_do=led_vang=1;
printf("nhiet do moi truong la : ");
hien_thi(nhiet_do);
}
if(ngat0==1||ngat0==2)
{
bien_doi_adc();
printf("nhiet do khong che la : ");
hien_thi(khong_che);
if(khong_che < nhiet_do)
{
led_do=led_vang=1;
led_xanh=0;
}
if(khong_che > nhiet_do)
{
led_vang=led_xanh=1;
led_do=0;
}
if(khong_che == nhiet_do)
{
led_do=led_xanh=1;
led_vang=0;
}
}
ngat1=khong_che ;
}
}