Tải bản đầy đủ (.docx) (41 trang)

BÀI tập lớn môn kỹ thuật lập trình nhúng đề tài hiển thị đèn LED dùng vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (451.38 KB, 41 trang )

Đại Học Thái Nguyên
Khoa Công Nghệ Thông Tin
--------------------

BÀI TẬP LỚN
Môn: Kỹ thuật lập trình nhúng
Đề Tài: Hiển thị đèn LED dùng vi điều khiển
Giáo viên hướng dẫn: Phạn Quốc Thịnh
Nhóm SV thực hiện:
1. Nguyễn Thọ Khang
2. Đinh Văn Toàn
3. Đỗ Trung Hiếu
4. Nguyễn Thị Thu
5. Lâm Thị Hương
6. Nguyễn Thị Thanh In

1


Thái Nguyên, tháng 5 năm 2010

MỤC LỤC
Phần 1 : Lý thuyết cơ sở
1.1 Sơ lược về VĐK 0851…………………………………………....... 3
1.2 Sơ đồ chân của 8051…………………………………….………… 4
1.3 Các linh kiện cơ bản và sơ đồ của chúng trong mạch………….. 7
1.3.1 89S52………………………………………………...…… 7
1.3.2 Tụ…………...………………………………………….…. 8
1.3.3 Điện trở………………………………………….........……10
1.3.4 16 tranzitor H1061………………………...………… … . 10
1.3.5 LED đơn……………………………………………......... 11



Phần 2: Sơ đồ nguyên lý
2.1 Sơ đồ tượng trưng……………………………………………..…… 12

Phần 3: Chương trình điều khiển bài toán
3.1 Code điều khiển mạch chạy chữ ICTU-TN………….…………. .. 13

2


PHẦN I: LÝ THUYẾT CƠ SỞ
1.1 Sơ lược về VĐK 8051
● Là bộ vi điều khiển lâu đời nhất và có lẽ được sử dụng phổ biến nhất (Intel MCS-51
năm 1981). Và có nhiều nhà cung cấp bộ VĐK này
● Các đặc điểm chủ yếu
- Bộ xử lý 8 bit
- 4 cổng I/O mỗi cổng 8 bit
- Tối đa có 64K ROM on-chip
- Bộ nhớ dữ liệu ngoài tối đa 64K
- Bộ nhớ mã lệnh bên ngoài tối đa 64K
- 2 bộ định thời, một cỗng nối tiếp
- 128 byte RAM on-chip
- Tốc độ thay đổi từ 12MHz

89C51 của Atmel

3


8051 của Intel


1.2 Sơ đồ chân của 8051:

4


♣Nhóm chân nguồn:
- VCC: chân 40, điện áp cung cấp 5VDC
- GND: chân 20
♣ Chân RESET: chân 9, tác động cao (trong thời gian tối thiểu 2 chu kì máy) cho
phép khởi động lại hệ thống.
♣ Nhóm chân dao động: gồm chân 18 và chân 19, cho phép ghép nối thạch anh vào
mạch dao động bên trong vi điều khiển
♣ Chân chọn bộ nhớ chương trình: chân 31 (EA/VPP
- Chân 31 nối mass: sử dụng bộ nhớ chương trình bên ngoài vi điều khiển
- Chân 31 nối VCC: sử dụng bộ nhớ chương trình (4Kb) bên trong vi điều
khiển.
♣Nhóm chân điều khiển vào/ ra:
♦ Port 01:
- Kí hiệu P1, gồm 8 chân I/O từ 1 đến 8. Các chân port 1 được kí hiệu là P1.0,
P1.1,…., P1.7 và được dùng để giao tiếp với thiết bị bên ngoài khi có yêu cầu.
♦ Port 02:
- Kí hiệu P2, gồm 8 chân đa hợp I/O và địa chỉ cao, từ chân 21 đến 28. Khi
không sử dụng bộ nhớ ngoài, P2 sử dụng như các I/O; khi sử dụng bộ nhớ ngoài, P2 thay thế
8 chân địa chỉ cao để giao tiếp với IC nhớ.
♦Port 0:

5



- Kí hiệu P0, gồm 8 chân đa hợp I/O, địa chỉ thấp và dữ liệu, từ chân 39 đến
32. Port 0 làm nhiệm vụ xuất nhập trong các thiết kế tối thiểu thành phần. Trong các thiết kế
lớn, có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp
♦ Port 03:
Kí hiệu P3, gồm 8 chân đa hợp I/O và các tín hiệu khác, từ chân 10 đến
18. Khi không hoạt động thì Port 3 có những chức năng riêng.
♦RST
Ngõ vào reset (thiết lập lại trạng thái ban đầu). Tất cả các chân I/O được reset đến
mức logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ
máy trong khi mạch dao động đang hoạt động sẽ reset chip.
♦XTAL 1
Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock
bên trong.
♦XTAL 2
Ngõ ra từ mạch khuếch đại dao động đảo.

6


Sơ đồ khối của 89C51
1.3 Các linh kiện cơ bản và vai trò của chúng trong mạch:
1.3.1 89S52

7


Chức năng: Là vi điều khiển chính của mạch.
 8 KB EPROM bên trong.
 256 Byte RAM nội.
 4 Port xuất /nhập I/O 8 bít.

 3 bộ định thời 16 bit
 Watch dog timer
 Các đặc điểm khác giống AT89C51

1.3.2 Tụ
+ 1 Tụ hóa : C3(10μF)

8


Khi cắm điện thì ngay lập tức phóng được vào chân RST, và khởi động lại toàn bộ hệ
thống. Khi đang chạy thì ngăn dòng vào RST.
+ 1 Thạch anh

Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định (12 MHz) cho dao động
của 8051.
+ 2 tụ gốm C1, C2:
Chức năng: Lọc nhiễu cho dao động thạch anh. 2 tụ gốm 22pF sẽ được nối một đầu
với chân của thạch anh, đầu còn lại đấu ra mass.

9


1.3.3 Điện trở:
+ R1: Trở đệm chân RST,để hạ dòng vào chân RST.
+R2: Phân cực tranzitor.
+R3: Trở đệm LED có tác dụng hạn dòng cho Led (mỗi Led cần

10mA, dòng


IB =0.45mA tùy thuộc vào hệ số khuếch đại của tranzitor và dòng IC).
1.3.4 16 Tranzitor H1061: Có chức năng như là một khóa (dùng H1061 công suất lớn,
thông số cơ bản là: UCE=50V, ICsat =1.0 A, IB =0.2 A, IC=2.0A)

10


1.3.5 LED đơn

LED trên thực tế

Cấu tạo và kí hiệu của LED đơn

11


PHẦN II: SƠ ĐỒ NGUYÊN LÝ
2.1 Sơ đồ tượng trưng
 Chú thích: Tất cả các cổng P2, P3 đều được nối với trở, tranzitor và LED
 Đối với LED thì các chân dương được nối với nhau và nối tới trở R3 và nối
với cực E của tranzitor, các chân âm được nối với nhau và nối về đất
 Trong sơ đồ, với mỗi con LED tương ứng với một chữ , ngoài thực tế các LED
được nối song song với nhau để tạo thành một chữ.
Hoạt động: Khi phân cực thuận (ở mức cao 1) thì tranzitor cho phép dòng từ C
qua E làm LED sáng. Khi phân cực ngược (ở mức thấp 0) thì tranzitor đóng. Ngược lại nếu
dùng mức tích cực âm thì mắc ngược lại

12



1.0u

C1

U1
X1
CRYSTAL

19
18

XTAL1
XTAL2

C2
9
1.0u

29
30
31

R1
10k

1
2
3
4
5

6
7
8

C3
10uF

RST

PSEN
ALE
EA

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

39
38
37
36
35
34
33
32

D4
R2

Q2


R3

220
LED-RED

FMMTH10

220

21
22
23
24
25
26
27
28

R2

Q1
FMMTH10

D1

R3
220

LED-RED


220

10
11
12
13
14
15
16
17

R2

AT89C51

Q5

D7

220

FMMTH10

100R

R3

R2
220


Q3
FMMTH10

R3
220

PHẦN III: CHƯƠNG TRÌNH ĐIỀU KHIỂN BÀI TOÁN

3.1 Code điều khiển mạch chạy chữ ICTU- TN
///////////////////KHAI BAO HANG////////////////////////////////
#include <AT89X51.H>
//
//
#define led3 P3
//
#define led2 P2
//
//
#define Ido P3_4
//

13

LED-RED

D2
LED-RED



#define Cdo P3_7
//
#define T1do P3_2
//
#define Udo P3_0
//
#define daudo P3_1
//
#define T2do P3_3
//
#define Ndo P2_4
//
//
#define Itrang P2_1
//
#define Ctrang P2_3
//
#define T1trang P2_0
//
#define Utrang P2_2
//
#define dautrang P2_5
//
#define T2trang P2_6
//
#define Ntrang P2_7
//
int i;
//
//============================================================//

////////////////////CHUONH TRINH PHU TRO////////////////////////
//Chuong trinh xoa led
//
void xoa()
//
{
//
led2=0;
//

14


led3=0;
//
}
//
//Chuong trinh Delay
void delay(int x)

//
//

{
//
int i;
//
for (i=0;i//
}

//
//============================================================//
///////////////////////NHAY SANG DAN////////////////////////////
//Nhay vong nho 1
//
void nhayvongnho1(x)
//
{
//
xoa();
//
delay(x);
//
Ido=1;
//
delay(x);
//
Cdo=1;
//
delay(x);
//
T1do=1;
//
delay(x);
//
Udo=1;
//

15



delay(x);
//
daudo=1;
//
delay(x);
//
T2do=1;
//
delay(x);
//
Ndo=1;
//
delay(x);
//
//
}
//
//
//Nhay vong to 1

//

void nhayvongto1(x)
//
{
//
led3=255;
//
delay(x);

//
Itrang=1;
//
delay(x);
//
Ctrang=1;
//
delay(x);
//
T1trang=1;
//
delay(x);
//

16


Utrang=1;
//
delay(x);
//
dautrang=1;
//
delay(x);
//
T2trang=1;
//
delay(x);
//
}

//
//
//Nhay ca 2 vong duoi nhau

//

void nhay2vong(x)
//
{
//
xoa();
//
delay(x);
//
Ido=1;

//i
//

delay(x);
//
Cdo=1;

//c
//

Ido=0;
//
Itrang=1;


//I
//

delay(x);
//
T1do=1;

//t
//

Cdo=0;
//

17


Ido=1;

//i
//

Itrang=0;
//
Ctrang=1;

//C
//

delay(x);
//

Udo=1;
//
T1do=0;
//
Cdo=1;
//
Itrang=1;
//
T1trang=1;
//
Ctrang=0;
//
Ctrang=1;
//
delay(x);
//
daudo=1;
//
Udo=0;
//
T1do=1;
//
Utrang=1;
//
T1trang=0;
//
Ctrang=1;
//
delay(x);
//

T2do=1;
//
daudo=0;
//

18


Udo=1;
//
dautrang=1;
//
Utrang=0;
//
T1trang=1;
//
delay(x);
//
Ndo=1;
//
T2do=0;
//
daudo=1;
//
T2trang=1;
//
dautrang=0;
//
Utrang=1;
//

delay(x);
//
Ndo=0;
//
T2do=1;
//
Ntrang=1;
//
T2trang=0;
//
dautrang=1;
//
delay(x);
//
led2=255;
//
led3=255;
//
delay(x);
//

19


}
//
//============================================================//
//////////////////////////NHAY CHU DON//////////////////////////
//Nhay chu don
//

void chudon1(x)
//
{
//
xoa();
//
delay(x);
//
Ido=1;
//
delay(x);
//
Cdo=1;
//
Ido=0;
//
Itrang=1;
//
delay(x);
//
T1do=1;
//
Cdo=0;
//
Ctrang=1;
//
Itrang=0;
//
delay(x);
//

Udo=1;
//
T1do=0;
//
T1trang=1;
//

20


Ctrang=0;
//
delay(x);
//
daudo=1;
//
Udo=0;
//
Utrang=1;
//
T1trang=0;
//
delay(x);
//
T2do=1;
//
daudo=0;
//
dautrang=1;
//

Utrang=0;
//
delay(x);
//
Ndo=1;
//
T2do=0;
//
T2trang=1;
//
dautrang=0;
//
delay(x);
//
}
//
//
//
//Nhay chu don2

//

21


void chudon2(x)
//
{
//
delay(x);

//
Ntrang=1;
//
T2trang=0;
//
T2do=1;
//
Ndo=0;
//
delay(x);
//
daudo=1;
//
T2do=0;
//
T2trang=1;
//
Ntrang=0;
//
delay(x);
//
Udo=1;
//
daudo=0;
//
dautrang=1;
//
T2trang=0;
//
delay(x);

//
T1do=1;
//
Udo=0;
//
Utrang=1;
//

22


dautrang=0;
//
delay(x);
//
Cdo=1;
//
T1do=0;
//
T1trang=1;
//
Utrang=0;
//
delay(x);
//
Ido=1;
//
Cdo=0;
//
Ctrang=1;

//
T1trang=0;
//
delay(x);
//
Ido=0;
//
Itrang=1;
//
Ctrang=0;
//
delay(x);
//
led3=0;
//
led2=0;
//
delay(x);
//
}
//
//============================================================//
//////////////////////////XEP CHU///////////////////////////////

23


//Xep chu N

//


void chun(x)
//
{
//
delay(x);
//
T2trang=0;
//
Ndo=1;
//
Ntrang=1;
//
delay(x);
//
}
//
//
//Xep chu T

//

void chut(x)
//
{
//
delay(x);
//
Ndo=1;
//

Ntrang=1;
//
delay(x);
//
Ido=1;
//
delay(x);
//
Cdo=1;
//
Ido=0;
//

24


Itrang=1;
//
delay(x);
//
T1do=1;
//
Cdo=0;
//
Ctrang=1;
//
Itrang=0;
//
delay(x);
//

Udo=1;
//
T1do=0;
//
T1trang=1;
//
Ctrang=0;
//
delay(x);
//
daudo=1;
//
Udo=0;
//
Utrang=1;
//
T1trang=0;
//
delay(x);
//
T2do=1;
//
daudo=0;
//
dautrang=1;
//
Utrang=0;
//

25



×