Bộ Công Thương
Trường ĐHCN Hà Nội
Báo Cáo:Bài Tập Lớn Môn VĐK
Đề tài: THIẾT KẾ HỆ ĐIỀU HÀNH THỜI GIAN THỊC TRÊN HỌ VI
ĐIỀU KHIỂN 8051
Giáo viên hướng dẫn:NGUYỄN ANH DŨNG
Sinh viên thực hiện: TRẦN VĂN ANH
TỐNG VĂN HÙNG
PHÙNG VĂN LÂP
Lớp:CĐ DDT2-K9
File đính kèm 006.rar Lời Nói Đầu
Với sự ra đời của chip 8051 vào năm 1980 do INTEL sản xuất,nó đã tạo ra bước
tiến quoan trọng trong lĩnh vưc vi điều khiển.vói sự ra đó đã giúp cho viêc thiết
kế các hệ thống như đo lường,điều khiển tự động,truyền thông ngày càng đơn
giản gọn nhẹ và chính xác hơn.ngày nay các chíp thế hệ sau của 8051 ngay càng
được tăng cường thêm cá tính năng cũng như rung lượng,đã giúp cho họ vi điều
khiển 8051 trở thành 1 trong những bộ vi điều khiển 8bit mạnh và linh hoạt nhất
trong những năm gần đây.
Đó là việc nghiên cứu và tìm hiểu về vi điều khiển,trong đó đặc biệt là họ vi
điều khiển 8051 la điều cần thiết với sinh viên khoa điện tử chúng em nói chung
cũng như sinh viên các khoa khác co liên quoan tới môn học.nhưng do thời gian
tìm hiểu và kiến thức về môn học còn có nhiều hạn chế,cho nên trong đề tài
nghiên cứu về vi điều khiển của chúng em còn gì thiếu sót và hạn chế mong thầy
chỉ bảo giúp cho chúng em hiểu sâu hơn về môn học này,chúng em xin chân
thành cảm ơn.
c.Port 2(từ chân 21 tới 28)có hai công dụng.hoặc làm nhiệm vụ xuất nhập hoặc
là byte địa chỉ cao của bus địa chỉ 16-bit.
d.Port 3(từ chân 10 tới chân số 17)có hai công dụng.khi không hoạt động xuất
nhập các chân của port 3 có các chức năng riêng.
Bảng chức năng các chân của port 3 va 2 chân port 1.0 và port 1.1 của port 1:
Bit tên địa chỉ bit chức năng
P3.0 RxD B0H chân nhận dữ liệu của port nối tiếp
P3.1 TxD B1H chân phát dữ liệu của port nối tiếp
P3.2 INT0 B2H ngõ vào ngắt ngoài 0
P3.3 INT1 B3H ngõ vào ngắt ngoài 1
P3.4 T0 B4H ngõ vào của bộ định thời/đếm 0
P3.5 T1 B5H ngõ vào của bộ định thời/đếm 1
P3.6 WR B6H điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H điều khiển đọc bộ nhớ dữ liệu ngoài
P1.0 T2 90H ngõ vào bộ định thời /đếm 2
P1.1 T2EX 91H nạp lại /thu nhận của bộ định thời 2
e.chân cho phép bộ nhớ trương trình psen:
đây là tín hiệu xuất trên chân 29.Nó điều khiển cho phép ta truy xuất bộ nhớ
ttruw[ng trinh ngoài,chân này thường nối với chân cho phép xuất OEtín hiệu
psen ở logic 0 trong suốt thời gian tìm nạp lệnh.các mã nhị phân của trương
trình được đọc từ EP-ROM,qua bú dữ liệu được chốt vào thang ghi IR của 8051
để được giả mã.
f.Chân cho phép chốt địa chỉ ALE:
8051 sử dụng 30 chân,chân xuất tí hiệu cho phép chốt dịa chỉ ALE để giải đa
hợp bus dũ liệu và bus địa chỉ.chân ALE xuất yins hiệu để chốt địa chỉ vào
thanh ghi ngoài trong suốt ½ đầu của chu kỳ bộ nhớ.sau khi điều này được thực
hieenjcacs chân port 0 sẽ xuất nhập dữ liệu hợp hệ trong suốt ½ thứ 2 của chu kỳ
bộ nhớ.
g.Chân reset (rst)
Nằm ở chân 29laf ngõ vào xóa chính dùng để thiết lập trạng thái ban đầu cho hệ
Với AT89S52 ta có 6 nguồn ngắt:
-Ngắt ngòai đến từ chân #INT0
-Ngắt ngoài đến từ chân #INT1
-Ngắt do bộ timer 0
-Ngắt do bộ timer 1
-Ngắt do bộ timer 2
-Ngắt do port nối tiếp
III : THIẾT KẾ ÚNG DỤNG HỆ ĐIỀU HÀNH THỜI GIAN THỰC.
Sơ đồ nguyên lý:
Sơ đồ mạch in:
Sơ đồ mô phỏng:
CHƯƠNG TRÌNH
#include<reg52.h>
#include<rtx51tny.h> //xu ly da nhiem- thoi gian thuc voi RTX51
#include<stdio.h>
#include<math.h>
#define on 0
#define off 1
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
unsigned int j,u,y;
//khai bao cac chu so hien thi tren led 7 thanh
unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay1us(unsigned int n) //ham tao tre 1us
{
unsigned int i;
for (i = 0;i<n;i++);
}
void hienthi7(unsigned int x ) //ham hien thi led 7 thanh
led1 = off;
os_wait (K_TMO,25,0);
y++; //tang gia tri dem led 7 thanh sau 1s
if (y==10000) //kiem tra gia tri led 7 thanh va reset ve 0000
y=0;
}
}
void led800ms(void) _task_ 2//led 2 nhap nhay voi chu ki 800ms
{
while(1)
{
led2 = on;
os_wait (K_TMO,40,0); //tao tre 400ms
led2 = off;
os_wait (K_TMO,40,0);
}
}
void led1400ms(void) _task_ 3 //led 3 nhap nhay voi chu ki 1.4s
{
while(1)
{
led3 = on;
os_wait (K_TMO,70,0); //tao tre 700ms
led3 = off;
os_wait (K_TMO,70,0);
}
}
void led7(void) _task_ 4 //led 7 thanh dem tu 0000 den 9999
{
while(1)