Tải bản đầy đủ (.doc) (72 trang)

phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51

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 (375.93 KB, 72 trang )

PHẦN II
THIẾT KẾ MẠCH ĐIỀU KHIỂN GIÁM SÁT NHÀ CAO TẦNG DÙNG VI XỬ
LÝ 89C51
A. Thiết kế mạch :
I.
Tổng quan về đề tài:
1. Sơ lược về đề tài:
Trên cơ sở thiết kế một thiết bò bằng cơ điện tử để có thể tạo thành ngôi nhà
thông minh khi gắn thiết bò này vào. Nhờ vào bộ xử lý trung tâm mà thiết bò này có
thể hoạt động một cách chính xác theo chương trình đã lập sẵn. Trong ngôi nhà càng
có nhiều thiết bò thông minh thì càng làm cho cuộc sống tiện nghi hơn. Do tính mềm
dẻo của bộ xử lý trung tâm nên ta có thể nạp lại chương trình điều khiển cho nó tùy
theo từng nhu cầu ứng dụng riêng biệt, cũng như có thể cho phép 1 hay nhiều thiết bò
cùng hoạt động khi đến giờ đònh sẵn.
Đèn, quạt gió và máy lạnh sẽ tự động bật lên khi có người vào phòng. Máy đun
nước nóng, máy giặt sẽ tự động hoạt động khi đến giờ quy đònh. Hệ thống tưới cây
trong vườn cũng được điều khiển từ thiết bò này. Cửa gara sẽ tự mở ra khi xe vừa đến
trước cổng và cũng tự đóng lại khi xe ra khỏi gara.
Do sự hạn chế về thời gian cho nên em chỉ thiết kế mạch có một số tính năng
nêu trên:
_ Đèn và quạt gió bật lên khi có người vào nhà.
_ Đèn và quạt gió tắt khi người trong nhà đi ra ngoài hết.
_ Phát hiện nguy cơ gây ra hỏa hoạn và phát tín hiệu chuông báo động.
_ Đo nhiệt độ hiện tại trong phòng và hiển thò lên panel.
_ Có khả năng phát hiện trộm xâm nhập và phát tín hiệu chuông báo động.
Như theo yêu cầu của đề tài: tất cả các kit vi xử lý sẽ được giám sát và có thể
ra lệnh từ máy tính. Máy tính truyền lệnh cần vi xử lý thi hành đến đúng kit vi xử lý
mà nó cần tác động. Có thể là lệnh yêu cầu tắt đèn , quạt, hay là yêu cầu gởi dữ liệu
từ phòng, nhiệt độ, đèn tắt hay mở, bao nhiêu người trong phòng. Theo lý thuyết, thì
các thành viên trong một hệ thống mạng đều có thể liên kết dữ liệu với nhau bằng
cách thông qua Master là PC. Nhưng do mạng trong đề tài em thiết kế không cần tốc


độ cao và cũng không có nhu cầu trao đổi dữ liệu giữa các kit vi xử lý riêng lẻ, cho
nên em dùng phương pháp hỏi vòng từ PC. Qua đó, PC sẽ lần lượt hỏi vòng tuần tự
qua từng kit vi xử lý. Dữ liệu từ PC gửi về kit vi xử lý gồm có các byte yêu cầu cộng
thêm hai byte thêm vào: một byte đầu tiên xác đònh đòa chỉ nơi đến, byte tiếp theo sẽ
xác đònh nội dung giao tiếp giữa vi xử lý và PC, chẳng hạn gởi nhiệt độ, số người


trong phòng…Chương trình giao diện và điều khiển truyền số liệu dùng ngôn ngữ lập
trình Visual Basic 6.0

PC
RS-485
BUS
RS-485

RS-485

KIT VI XỬ

PHÒNG 1

KIT VI XỬ

PHÒNG 2

Sơ đồ khối toàn bộ hệ thống điều khiển và giám sát ngôi nhà
Kit vi xử lý trong phòng 1 và phòng có cùng sơ đồ khối như sau
Mạch động lực
đóng cắt các thiết


Mạch hồi tiếp
trạng thái thiết bò

Mạch hiển thò
nhiệt độ
Vi xử lí
Atmel
89C51

Mạch gia công tín
hiệu đo

Cảm biến quang

Mạch nguồn

IC đo nhiệt độ
Sơ đồ khối kit vi xử lý


2. Chức năng của từng khối:
a. Vi xử lý 89C51:
Đây là bộ xứ lý trung tâm của mạch đặt tại từng phòng trong ngôi nhà. 89C51
là loại IC có khả xử lý và điều khiển theo một chương trình đã lập sẵn và có khả năng
thực hiện các yêu cầu gởi đến từ máy tính. Vi xử lý 89C51 trong mạch thiết kế có thể
thực hiện các chức năng như sau:
_ Phát tín hiệu báo động bằng chuông khi phát hiện có trộm xâm nhập.
_ Đo nhiệt độ trong phòng và hiển thò lên một panel đặt trong phòng, khi nhiệt
độ trong phòng khá cao thì nó sẽ ra lệnh bật máy điều hòa nhiệt độ hay quạt gió hoạt
động.

_ Khi phát hiện có nguy cơ hỏa hoạn nó sẽ báo động bằng chuông, sau đó nó
sẽ ngắt CB của nguồn điện.
_ Bật đèn lên khi có người vào phòng.
_ Tắt đèn khi người trong phòng ra ngoài hết.
b. Khối cảm biến quang:
Dùng đề tạo một tín hiệu đưa về vi xử lý, tùy theo mức của tín hiệu này mà
thiết bò sẽ biết được có trômg xâm nhập hay không.
c. Khối hiển thò nhiệt độ:
Khối này có dạng một panel hình chữ nhật được gắn trên từng phòng, nhiệt độ
trong phòng sẽ được hiển thò trên panel này.
d. Mạch động lực:
Dùng để đóng các thiết bò, nhận tín hiệu kích đóng từ vi xử lý.
e. Mạch hồi tiếp trạng thái các thiết bò:
Dựa vào mức của tín hiệu hồi tiếp về mà vi xử lý sẽ biết đươc thiết bò nào đang
bật, thiết bò nào đang tắt.
II. Thiết kế phần cứng
1. Mạch cảm biến quang:
Sơ đồ mạch như sau:
VCC

U1
R3

3
R5

330

2


220
R7
LED THU

1k

LED PHAT

R6
R4
100

1k

+

6

INT0

AD741
Z ENER
5.1V


Bình thường không có gì che chắn giữa LED phát và LED thu thì áp ra sẽ là
5V. Khi có vật che chắn giữa LED phát và LED thu thì mạch sẽ cho ra áp là 0V.
Do khi LED thu dẫn thì áp rơi trên R4, chỉ từ 1V – 1,5V nên ta phải đệm thêm
mạch khuếch đại dùng OPAMP. Tùy theo đặc tính của từng con LED phát và LED
thu mà áp đặt trên trở 100 ohm sẽ khác nhau. Bình thường áp đặt trên điện trở 100

ohm là 1V, dùng mạch khuếch đại OPAMP để áp đủ 5V đưa vào vi xử lý.
Để đảm bảo rằng áp đưa trở về vi xử lí sẽ không lớn hơn 5V( tránh hư vi xử lí
khi ta đặt áp vào lớn hơn áp hoạt động cuả nó), ta mắc thêm một Diode Zenner ổn áp
5.1V vào ngõ ra của mạch khuếch đại.
Tính toán mạch khuếch đại:
Dòng qua LED: 10 mA – 20 mA để giúp cho LED hoạt động được lâu dài.
Dòng cực đại mà ta có thể đưa vào chạy qua LED là 20 mA. Thông thường trong tính
toán mạch để đơn giản ta cứ cho dòng chạy qua LED là 15 mA.
Khi LED dẫn, áp trên LED sẽ nằm trong khoảng từ 1,7-2V. Cho nên dòng qua
LED:
ILED =

5−2
330

= 9 mA

Khi LED thu dẫn, dòng qua LED
ILEDTHU =

5−2
=9mA
320

p đưa vào mạch khuếch đại LM741:
Vin = I LED thu x100 = 1 V
Để áp ra LM 741 đúng 5V khi LED thu dẫn ta chọn hệ số khuếch đại như sau:
AV =1+ RI /RF
⇒ RI /RF
=5


=6

Chọn Rf = 2.2 kΩ
⇒ RI = 5*2.2 = 11 kΩ
Khi mạch chạy bão hòa thì áp ra trên Diode Zenner 5V là:
Vout = Vin x Av = 1 x 5 = 5V
Ta dùng Zenner 5.1V để ổn áp ngõ ra ổn đònh ở mức 5V.


Bình thường, LED phát phátliên tục, khi không có vật che chắn giữa LED phát
và LED thu thì áp ra mạch khuếch đại sẽ đúng 5 V. Vi xử lý sẽ nhận biết đây là trạng
thái mức cao (tích cực). Nếu có vật che chắn giữa LED phát và LED thu thì áp ra sẽ
không phải chính xác là 0 V, mà có thể từ 0 V – 2V. Nằm trong tầm điện áp này thì vi
xử lý sẽ phát hiện ra đây là mức không tích cực (mức thấp ). Tín hiệu này đưa vào
chân INT0 của vi xử lý. Ta sẽ thiết lập chế độ hoạt động ngắt ở cạnh xuống. Nghóa là
có sự chuyển đổi từ 5V sang 0V thì mạch sẽ xãy ra 1 ngắt.
Để thiết lập chế độ này ta dùng lệnh sau gán cho vi xử lý:
SETB IT0
Lệnh này sẽ cho phép vi xử lí đáp ứng ngắt theo cạnh xuống của tín hiệu áp
đưa vào chân INT0.
2. Mạch mô phỏng cảm biến quang phát hiện người:
VCC

R2
4.7K

R1
4.7K


P1.0

SW1
U2A
CAM BIEN QUANG 1
SW2

1

3

2

INT1

7408
CAM BIEN QUANG 2

P1.1

Thông thường để phát hiện người đi vào hay đi ra ta dùng một cảm biến quang.
Cách này thông dụng dễ lắp đặt nhưng nó không phân biệt được người vào
người ra. Nó chỉ có thể nhận biết có người thông qua sự thay đổi trạng thái đầu vào là
mức cao hay mức thấp. Bên cạnh đó, còn có một nhược điểm nữa là sẽ gây cho
chương trình chạy sai khi có người vô hình đứng chắn ngang cảm biến quang trong
khoảng thời gian tương đối lâu. Lúc đó vi xử lý sẽ hiểu rằng có rất nhiều người ra vào
nó sẽ bò đếm lầm . Để khắc phục tình trạng này ta dùng cùng lúc hai cảm biến quang
đặt cách nhau ở một khoảng cách xác đònh. Dựa vào sự thay đổi trạng thái của cảm
biến quang nào trước, cảm biến quang nào sau ta sẽ nhận biết được người ra hay vào
phòng. Phương pháp này rất hiệu quả, nhưng cũng có thể không nhận ra số người một

cách chính xác như ta mong muốn. Giả sử khi có hai người cùng sóng bước thì cảm
biến quang chỉ phát hiện ra một người mà thôi. Ta cũng có thể khắc phục tình trạng
này bằng cách thiết kế cửa sao cho chỉ cho một người qua lọt mà thôi.


Chức năng mạch đếm người được em thiết kế như sau: khi có một cảm biến
quang tác động sẽ làm cho áp trên chân INT1 chuyển từ 1 sang 0. Vi xử lý sẽ nhảy
đến chương trình ngắt kiểm tra giữa hai chân P1.0 và P1.1 xem chân nào xuống mức 0
trước: Nếu P 1.0 tác động trước, P1.1 tác động sau thì ta sẽ nhận biết có người vào.
Nếu P1.1 tác động trước thì ta nhận biết có người ra.
Bình thường khi không nhấn các SW1 và SW2 thì INT1 ở trạng thái tích cực.
Khi một trong hai nút nhấn SW1 và SW2 được nhấn tức là có một chân đưa vào IC
7408 xuống mức 0. Cho nên áp sau khi qua 7408 sẽ là mức 0 (do IC 7408 là IC thực
hiện chức năng logic AND). Tùy thuộc vào ta nhấn nút nhấn nào trước, nút nhấn nào
sau, vi xử lý sẽ phát hiện người ra hay vào mà xử lý chương trình điều khiển.
3. Mạch động lực đóng cắt thiết bò:
Sơ đồ nguyên lý mạch động lực như sau:
+12V

D4
2

2

1

R1

1


U1

4

1

D1

K2

6

4

2

1

2

Q1

2.2K

D2
D3

1

2


3

4N26

R2

2

DIEU KHIEN DEN

5

3

330

12

1

2
1

D5

1

JP1


2
1

2

110ohm,3W

VCC

R5

5.1V

22k

3

Q2

1

U2

4

2
R3

4N26


1k

3

R6

1

5

2
6

2

+

P1.3

AD741
-

22k

U1

6

R4
1k


Nguyên lý hoạt động của mạch như sau:
Khi cần đóng đèn thì vi xử lý sẽ đặt chân điều khiển đèn lên mức tích cực. Khi
đó Opto sẽ dẫn làm cho Phototransistor dẫn bão hòa, áp V C1 ≈ 0.2V, sẽ kéo theo Q1
dẫn. Khi Q1 dẫn sẽ cho phép rơ le đóng. Khi Relay đóng thì đèn sẽ được cấp nguồn:
đèn sáng. Do mạch thiết kế dựa trên nguyên tắc kiểm tra áp trên đèn sẽ biết đèn


đóng hay mở. Khi đèn được đóng bằng Relay điện trở công suất RW sẽ chia áp trên
đèn, do điện trở công suất mắc nối tiếp đèn nên đèn sáng thì trên điện trở công suất
sẽ có áp. p này sau khi qua cầu Diode chỉnh lưu sẽ được đưa trở về vi xử lý.
Tính toán mạnh như sau:
R1 = 330 Ω : đảm bảo dòng qua Opto đủ nhỏ để Opto hoạt động tốt.
R2 = 2.2 k để giảm dòng giúp cho Phototransistor được hoạt động bình
thường, không rơi vào tình trạng quá dòng.
Diode D5 dùng để xả dòng điện cảm ứng trong cuộn dây Relay khi ta
kick ngắt Relay.
Điện trở công suất RW, do đèn dùng để thiết kế cho mạch có các thông
số đònh mức như sau:
U = 220 V
P = 10 W
⇒ I = 0.046 A
Ta cần lấy áp ra trong khoảng 5 V, nên chọn RW như sau:
RW x I = 5 V
⇒ RW = 5/0.046 =110 Ω
Chọn RW = 120 Ω, 5 W
Sau khi qua cầu chỉnh lưu, áp này sẽ thành áp DC, nếu cần ta dùng tụ
1000µ để cho áp ra được thẳng. Qua bộ đệm LM741 để cho áp ra ổn đònh thì tín hiệu
nối tiếp về được đưa vào một chân của vi xử lý.
Nguyên nhân tại sao khi thiết kế mạch động lực đóng ngắt nguồn ta dùng

nguồn +12V riêng và dùng Opto để kích. Do khi relay đóng ngắt sẽ gây ra nhiễu điện
từ, nhiễu này sẽ ảnh hưởng trực tiếp lên nguồn cung cấp cho vi xử lý. Nó sẽ làm cho
áp cấp cho vi xử lý có dạng gai áp. Nếu không truyền số liệu về máy tính thì điều này
không quan trọng. Nhưng ta thiết kế mạch có truyền dữ liệu nên cần phải dùng nguồn
riêng và Opto để tránh gây nhiễu sẽ ảnh hưởng đến việc truyền dữ liệu. Đồng thời
Opto cũng thực hiện việc cách ly mạch giữa 2 kit cho nên mạch sẽ hoạt động tốt hơn.
Mạch khuếch đại Opamp dùng để ổn đònh áp hồi tiếp về khi có nhiều thiết bò
mắc trên cùng đường dây. Khi đó dòng sẽ giảm và áp đặt vào điện trở công suất cũng
giảm theo. Để đảm bảo mạch hoạt động tốt ta dùng mạch khuếch đại áp sau đó dùng
Diode Zenner để ổn áp ở mức +5V đưa vào vi xử lý.
4. Mạch nguồn cung cấp:
Mạch nguồn thiết kế trên nguyên tắc tạo ra nguồn đôi: +/-12V, +/-5V. Để có
thể được như vậy ta dùng biến áp loại 6 đầu ra: 0V, 6V, 9V, 15V, 18V và 24V. Ta sẽ
dùng điểm chuẩn 12V là mass. Cho điện xoay chiều đi qua 2 cầu Diode chỉnh lưu.


Nắn
dòng

220V

Lọc áp

IC ổn
áp

Lọc bỏ
Các gợn
Sóng


5V
-5V
+12 V
-12V

TIN HIEU CHON LED

R2

R1
10k
2

1

Sơ đồ khối nguồn cung cấp cho các kit vi xử lý
Mạch dùng áp lưới chỉnh lưu thành dòng một chiều biến áp chọn loại 3A. Cầu
Diode sẽ chỉnh lưu áp xoay chiều thành dòng một chiều. Bộ phận nắm dòng là tụ 220
µF (25V), nó sẽ làm cho dòng DC được thẳng hơn.
Lọc áp giúp giảm đi các gợn sóng cao tần.
IC ổn áp là các họ IC: 7805 ( ổn áp +5V), 7905 (ổn áp –5), 7912 (ổn áp –12V),
và 7812 ( ổn áp +12).
Do mạch không dùng đến công suất lớn nên không cần dùng đến transistor bổ
trợ dòng cho mạch. Với các Diode chỉnh lưu chọn loại 3A, thì các IC ổn áp sẽ hoạt
động tốt. Ta nên gắng thêm tấm tỏa nhiệt cho 4 IC ổn áp này. Vì khi IC càng nóng thì
áp ra sẽ không ổn đònh và có nguy cơ chết IC.
5. Mạch hiển thò nhiệt độ bằng LED 7 đoạn:
Để hiển thò nhiệt độ đo được ta dùng các LED 7 đoạn để hiển thò. Dùng IC
74247 để giải mã sang LED 7 đoạn. Mạch hiển thò được nối với Port 2 của vi xử lý. 4
bit thấp của Port2 dùng cho giải mã LED, 4 bit dùng để tạo tín hiệu chọn LED. Ta

dùng phương pháp quét để hiển thò LED. Thời gian giữa hai lần quét cách nhau 1ms
để đảm bảo cho LED đủ sáng. LED được chọn để dùng LED Anode chung.Sơ đồ
mạch kích như sau:

A1015

3

1k
7SEG
3
8
.

10
9
1
2
4
6
7

g
f
e
d
c
b
a


3
8
5

IC giải

LED
74247

Khi tín hiệu chọn LED = 0, Transistor Q1sẽ dẫn đến V C ≈ Vcc =5V, tương ứng
với áp để LED sáng. Tín hiệu chọn LED =1 (+5 V) thì transistor sẽ ngưng dẫn, các
LED sẽ tắt vì không có áp.
6. Công tắc đóng ngắt thiết bò theo yêu cầu:


Mạch này mô phỏng chức năng của 1 công tắc
đóng ngắt thiết bò. Khi SW3 không được nhấn thì
P2.7 ở mức cao. Vi xử lý sẽ kiểm tra chân P2.7=0
R3
nghóa là ta đã nhấn nút SW thì nó sẽ thực hiện
4.7K
SW3
một chương trình con có nhiệm vụ đóng đèn khi
P2.7
đèn đang tắt, và tắt đèn khi đèn đang đóng. Đây
DIEU KHIEN DEN
là phần thiết kế thêm giúp cho mạch phần cứng
và ngay cả chương trình phần mềm điều khiển
một cách linh động không quá cứng. Nếu để cho vi xử lý làm nhiệm vụ đếm người và
đóng mở đèn hay thiết bò khác thì người dùng không thể can thiệp và cũng không thể

thay đổi gì được chương trình điều khiển đã lập trình sẵn trong ROM vi xử lý.
Mạch phần cứng thiết kế có phần hồi tiếp trạng thái của các thiết bò. Cho nên
chương trình điều khiển cũng không có gì gây ra phức tạm lắm. Thiết bò đóng, tín hiệu
hồi tiếp về mức 1 (+5V), thiết bò ngắt tín hiệu hồi tiếp về là mức 0(0V). Nếu ta nhấn
nút SW3, và tín hiệu hồi tiếp về đang là mức 0 thì vi xử lý hiểu rằng đó là yêu cầu
đóng thiết bò. Nó sẽ xuất tín hiệu đóng Relay cấp nguồn cho thiết bò. Ngược lại, nếu
tín hiệu hồi tiếp về đang là mức 1 thì vi xử lý sẽ hiểu là yêu cầu ngắt thiết bò và nó sẽ
kích ngắt relay.
Ta cũng có thể thiết kế phần cứng để thực hiện phần này để cho vi xử lý thực
hiện ít công việc nó phải làm. Nếu chỉ dùng một nút nhấn để yêu cầu đóng hay ngắt
thiết bò thì vi xử lý sẽ phải xử lý chương trình. Ta thiết kế hai nút nhấn tương tự như
thế và quy đònh nút nào nhấn là đóng, ngắt thiết bò.
7. Mạch chuông
Chuông dùng để phát tín hiệu báo động khi có sự cố: cảm biến nhiệt phát hiện
xảy ra hỏa hoạn hay có trộm chẳng hạn. Tùy theo từng sự kiện mà vi xử lý sẽ kích
chuông kêu dài ngắn khác nhau:
- Phát hiện trộm: reo liên tục.
- Nếu nhiệt độ lên gần 100oC: chuông reo 3 hồi, mỗi hồi 5 giây và
cách nhau giữa 2 lần là 1 giây.
- Nhiệt độ nằm trong tầm báo động 2: chuông reo 2 hồi, mỗi lần cách
nhau 1 giây và dài 5 giây mỗi hồi.
Do mạch chuông tiêu thụ dòng khá lớn, nên ta phải dùng một relay để kích
đóng ngắt mạch chuông. Dòng lớn sẽ gây chết transistor khi ta dùng transistor để lái
mạch chuông mà không phải dùng relay.
8. Mạch giao tiếp máy tính qua mạng RS-485
Thông thường các họ vi xử lý có ngõ truyền thông theo mức TTL. Và
các thiết bò đầu cuối khác (DTE ) có cổng truyền thông là RS_232. Để có thể nối
mạng các thiết bò này ta phải chuyển từ TTL ,RS_232 sang RS_485. Để thực hiện
VCC



việc chuyển đổi này có rất nhiều vi mạch trên thò trường , nhưng họ vi mạch của
hãng MAXIM là phổ biến nhất hiện nay. Đó là MAX 481 , MAX 483, MAX 485 ,
MAX 487 ,MAX 488, MAX 489 , MAX 490, MAX 1487. Tiêu biểu là vi mạch
MAX 485 , nó chuyển từ mức TTL sang RS_485 , truyền theo phương pháp
Half_Duplex.

Bên trong mỗi vi mạch chứa một bộ phát (Driver) và một bộ thu.
 Đặc điểm :
RS _485 là chuẩn giao tiếp nối tiếp bất đồng bộ cân bằng, sự truyền thông
tin trên dây xoắn đôi bán song công ( Half _ duplex) , nghóa là tại một thời điểm
bất kì trên dây truyền chỉ có thể là một thiết bò hoặc là truyền hoặc là nhận.
• RS_485 cho phép 32 bộ truyền trên bus.
• RS_485 có ngõ ra 3 trạng thái.
• RS_485 cho phép tốc độ truyền tối đa là 2.5Mbps.

Sơ đồ chân của MAX_485:
Chân
DIP/SO
1

µMAX
3

Tên
RO

Chức năng
Ngõ ra bộ thu :
Nếu A > B là200mV, RO là cao.



2

4

/RE

3

5

DE

4

6

DI

5
6

7
8

GND
A

7

8

1
2

B
Vcc

Nếu A < B là 200mV , RO là thấp.
Cho phép ngõ ra bộ thu :
RO được cho phéo khi /RE là thấp.
RO là trở kháng cao khi /RE là cao.
Cho phép ngõ ra lái :
Các ngõ ra lái A và B được cho phép khi DE
cao.
Các ngõ ra lái A và B là trở kháng cao khi
DE thấp.
Nếu những ngõ ra lái được cho phép thì
từng ngõ có chức năng như làcác đường
lái.
Khi chúng là trở kháng cao , chức năng của
chúng như là các đường thu của bộ thu
nếu /RE là thấp.
Ngõ vào bộ lái :
DI thấp thì A thấp và B cao
DI cao thì Acao và B thấp.
Nối mass.
Ngõ vào vộ thu và ngõ ra bộ lái đều không
đảo.
Ngõ vào bộ thu và ngõ ra bộ lái đều đảo.

Nguồn cung cấp dương 4.75V
≤ Vcc ≤ 5.25V

• Chức năng của các đường điều khiển :
 Truyền :
Tín hiệu vào
/RE
DE
X
1
X
1
0
0
1
0

Tín hiệu ra
DI
1
0
X
X

B
0
1
High Z
High Z


A
1
0
High Z
High Z


 Nhận

/RE
0
0
0

Tín hiệu vào
DE
0
0
0

1

0

Tín hiệu ra
RO
1
0
1


A-B
≥ 200mV
≤ 200mV

Ngõ vào hở
mạch
X

High Z

Sơ đồ mạng half_ duplex RS485:
4
3
1
2

D I
D E

6

A

R O
R E

R 2

R 1


120

120

7

7

B

6

A

D E
D I

2
1
3
4

7
R O
R E

B

6
A

D I
D E
4
3

M A X485

1
2

B
1
2

D I
D E
4
3

M A X485

R O
R E

A

7

M A X485
6


M A X485

R E
R O

B

Sơ đồ mạng RS485 Full_Duplex:
U 4
4
5
2
3

D E

U 4
Y

D I

Z

R O

A

R E


B

R 1

11

120

12

R 4

R 3

10

120

120

9

R 2

10
12
11

120


9

M A X489

B

R E

A

R O

Z

D I

Y

D E

3
2
5
4

11
B

12
A


Z

Y

U 4

10

9

11
B

12
A

Z

Y

9

10

M A X489

M A X489
R O


R E
3

2

D I
5

D E
4

R E
3

R O
2

D I
5

D E

M A X489

4

U 4

Để tăng chiều dài cáp truyền , ta có thể dùng bộ repeater như sau:
U 1

2
3
4
5

R O

A

R E

B

D E

Y

D I
M A X491

Z

12
11
9
10

R 1
DATA IN
120

R 2
DATA OUT
120


Bộ Repeater hay gọi là bộ tiếp sức , có chức năng làm khuếch đại tín hiệu liên
lạc giữa các máy tính với nhau , khoảng cách truyền thông tin có thể đạt tới 3 km.
Mạng RS-485 em thiết kế trong đề tài này là mạng bán song công (HalfDuplex): dữ liệu chỉ đi từ Master đến các vi xử lý hay từ các vi xử lý đến Master. Tại
một thời điểm trên mạng chỉ có một phần tử truyền và cho phép các phần tử khác có
thể nhận thông điệp đó. Có điều quan trọng ta nên chú ý là với sơ đồ mạch RS-485
được thiết kế như trên thì chỉ có thể giao tiếp giữa Master (PC) và các vi xử lý nhưng
giữa các vi xử lý không thể liên lạc trực tiếp với nhau. Chúng giao tiếp với nhau nếu
có thể đó thuộc một dạng giao tiếp khác. Cách thức hoạt động của mạng như sau:
PC

Converter RS-232↔ TTL
RS-232 ↔TTL
Converter
TTL↔ RS-485
A

B
B

Vi xử
lí 1

A

Con verter

TTL↔RS-485

B

A

Con verter
TTL↔RS-485

Vi xử
lí 2

Với sơ đồ mạng như trên ta có thể giao tiếp được với 32 slave thông qua một
Master là PC. Đồng thời do mạng truyền dữ liệu trên hai dây xoắn đôi lại nên sẽ đỡ
rắc rối trong quá trình thiết kế cũng như khi nối dây.
Bộ chuyển đổi ( Converter ) từ RRL sang RS-485 thực ra chỉ cần một con IC
75176 cũng đã đảm nhận vai trò này tương đối tốt. IC là 75176 ( hay tương đương


Max-485 ) có hai chân điều khiển hoạt động là DE và /RE. Chân /RE tích cực ( mức
logic 0 ) sẽ cho phép vi xử lý nhận dữ liệu từ Master: chế độ thu dữ liệu. Chân DE
tích cực ( mức logic 1) sẽ cho phép mạch phát dữ liệu từ vi xử lý về Master. Dùng một
chân từ các Port của vi xử lý cũng như chân để phát. Thông thường khi lập trình giao
tiếp bằng phần mềm, ta thường dùng chân RTS hay CIS để điều khiển IC 71576.
Ban đầu, chân /RE của75176 sẽ ở mức thấp: chế độ thu 75176 nhận dữ liệu từ
máy tính, thông thường là đòa chỉ. Sau đó, nghóa là khi Master phát đòa chỉ xong thì nó
chuyển trạng thái chân /RE xuống mức thấp để cho phép nhận tín hiệu hồi đáp từ các
slave. Các slave sau khi nhận được đòa chỉ từ Master nó sẽ so sánh với đòa chỉ của nó.
Nếu đúng đòa chỉ thì slave sẽ đưa chân DE lên mức một để truyền tín hiệu trả lời về
Master, sau đó thì nó lại đưa chân /RE sang mức 0 để sẵn sàng nhận dữ liệu hay yêu

cầu cũng như lệnh mới từ Master.
Sơ đồ cụ thể như sau:R 2
4
3
1
2

D I
D E
R O
R E

A
B

6

R 1

120

120

7

7
6

A


R E
R O
D E
D I

2
1
3
4

7
B
R O
R E

M A X485

1
2

6
A
D I
D E

M A X485

4
3


B
R O
R E
1
2

A
D I
D E
4
3

7

M A X485
6

M A X485

B

Hai điện trở 120Ω được nối vào 2 đầu đều xa nhất của mạng. Chiều dài xa nhất
có thể là đầu này và đầu kia là 4000 feet ( 1,2 km ). Còn gọi là điện trở đầu cuối
( Terminal Register ). Dây dẫn là loại xoắn đôi 26 AWG.
Ta có 2 chân điều khiển thu phát dữ liệu, để đơn giản việc điều khiển, ta
thường nối chung 2 tường điều khiển này cùng nhau. Nếu tín hiệu này mức cao thì
một trong hai sẽ ở mức tích cực cũng như một trong hai sẽ ở trạng thái thụ động.
9. Mạch cảm biến nhiệt độ dùng IC LM335.
Nhiệt độ là một tín hiệu dạng tương tự nó hiện hữu theo thời gian và liên tục. Để
dễ dàng đo được những tín hiệu không phải là điện ta thường chuyển nó sang dạng tín

hiệu điện để có thể đo dễ dàng hơn. Có nhiều phương pháp để chuyển từ tín hiệu
nhiệt độ sang tín hiệu điện, tuy nhiên có 2 phương pháp thông dụng nhất thường được
sử dụng như sau:


Chuyển từ nhiệt độ sang dạng đo điện trở: để đo điện trở thì mạch gia
công cũng như mạch đo đều có. Cho nên ta tìm cách tạo ra một mối quan hệ giữa điện
trở của một vật đến nhiệt độ cần đo. Ta dùng một vật liệu thay đổi nhiệt độ sẽ gây ra
thay đổi điện – còn gọi là nhiệt điện trở. Từ đó ta có thể chuyển từ trở thành áp và
dùng các mạch khuếch đại tương đương đo một cách dễ dàng.
Chuyển từ nhiệt độ sang trực tiếp điện áp: cách này chỉ có thể dùng các
IC nhiệt mà thôi. Các IC này có đặc tính là áp ra sẽ thay đổi theo nhiệt độ môi
trường. Ta dùng thêm các mạch gia công thích hợp để có thể ghi nhận được sự thay
đổi điện áp hay cũng chính là sự thay đổi đầu vào. Tùy vào hệ số nhiệt của chất liệu
cấu thành IC nhiệt là hệ số nhiệt dương ( áp ra tăng dần như tuyến tính theo nhiệt
độ ), hay hệ số nhiệt âm ( áp ra tăng dần theo nhiệt độ ).
Các hàm quan hệ giữa áp và nhiệt độ thông thường là hàm mũ. Cho nên khi
nhiệt độ càng tăng thì nhiệt độ tuyến tính sẽ giảm đi và cũng không đo được nhiệt độ
một cách chính xác ở phần phi tuyến đó. Trong phạm vi của đềtài này em dùng IC
nhiệt LM335 để làm mạch đo nhiệt độ.
Sơ đồ nguyên lý như sau:
-12V

1

4
5

VCC


2
3

RF
39 K

6

LM741
+

2

20 K

-

R2

10 K

U11
7
1

-12V

4
5


3

10 U

3

4

R1
2.2K

1

10 U

2

A/D1
C12
0 .1U

RI

+12V

10 K
U15

7


RVAR1

U13

LM741

RF
39 K

1

3

2

6

3

1

LM335

LM741
+

3

-


2

6

5

7
1

VCC

+

2

-12V

-

+12V

+ 12V

IC này có thể hoạt động tốt đến nhiệt độ 150 oC, áp ra tuyến tính với nhiệt độ
cho nên rất đơn giản cho quá trình tính toán.
Đặc tính của LM335 như sau:
+ Ở 0oK thì áp ra sẽ là 0V


+ Nhiệt độ tăng 1oC thì áp ra sẽ tăng 10 mV.

Như vậy, theo cách tính nhiệt độ theo oC thì ở 0oC áp ra của LM335 sẽ là
2.73V. Để dễ dàng cho việc xử lý, ta phải thiết kế mạch gia công sao cho khi ở 0 oC
thì áp ra của LM335 cũng là 0V.
Ta thiết kế thêm mạch trừ cộng vào áp ra của LM335. Mạch trừ này có vai trò
tạo ra một áp-2.73V để triệt tiêu áp trên LM335 khi nhiệt độ môi trường là 0 oC (
-278oK ).
Hàm biểu diễn của áp theo nhiệt độ của LM335 có thể xem gần đúng như sau:
Vout = 0.01*t (0oC).
Tín hiệu này để có thể hiển thò lên LED ta phải dùng 1 IC chuyển từ áp ra dạng
tín hiệu số: ADC 0809.
Đặc tính của ADC như sau:
+ Cấp nguồn đơn : + 5V
+ Tần số xung clock = 12 MHz:16
+ Thời gian chuyển đổi tối đa : 120 µ.
+ Cần có một xung start để kích quá trình chuyển đổi. Nếu ADC đang
chuyển đổi mà có xung start mới thì sẽ bắt đầu lần đổi tiếp theo.
+ 8 kênh Analog vào.
+ 8 đường data ra hay nói chính xác hơn đây là ADC 8 bit
+ Sai số tổng cộng không điều chỉnh được: +/-1 LSB
+ Ngõ ra phù hợp với mức điện áp TTL
Data ở ngõ ra là một số nguyên N nằm trong khoảng :
N= (Vin / VREF+)x 255 ± * 256 Độ chính xác tuyệt đối.
Vin : tín hiệu Analog đầu vào cần chuyển đổi.
VREF :tín hiệu cấp nguồn cho ADC 0809
Công thức trên chỉ đúng trong trường hợp ADC được cấp nguồn đơn. V REF nối
mass.
Trước quá trình chuyển đổi ta cần thiết lập cổng ngõ rào cho quá trình chuyển
đổi. ADC 0809 có 3 chân A0, A1, A2 dùng để xác lập kênh Analog vào.

A2


A1

A0

Kênh

Analog


vào
0
0
0
0
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0

4
1
0
1
5
1
1
0
6
1
1
1
7
Tính toán mạch:
Giá trò nhiệt độ mà IC LM 335 đo tối đa là 150 oC, vì thế tín hiệu sau khi qua
mạch trừ sẽ còn lại 0.01* t (oC)
⇒Áp ra cực đại đưa vào ADC là: 0.01*150=1.5V
VREF+ = 5V
VREF- = 0V
⇒Số mà ADC đổi ra cực đại là:
N=1.5/5*256= 76 hay 77 ( do sai số ± 1 LSR ).
Ta thấy rằng: nhiệt độ thực tế là 150oC mà đo chỉ có 77 oC hay nói cách khác :
nhiệt độ đo được qua ADC từ mạch trừ 2.73V đưa trực tiếp vào sẽ bé đi 2 lần so với
giá trò thực .
Điện áp ngõ ra của mạch khuếch đại như sau:
Vout = Av.(V1-V2)
V1 : tín hiệu chuẩn 2.73 V
V2: tín hiệu ra từ LM 335 phụ thuộc vào nhiệt độ. Vậy áp ngõ ra sẽ thay
đổi một lượng là Av.10mV khi nhiệt độ thay đổi 1oC.
Do ta cần đến 4 LED để hiển thò nhiệt độ đo được nên có 1 LED thập phân.

Như thế sẽ dẫn đến tình trạng để từ nhiệt độ này tăng thêm 1 oC nữa thì mạch sẽ qua
hai trạng thái: một số nguyên sau đó đến số thập phân hay nói một cách khác đi để đo
và hiển thò LED thập phân ta phải làm sao khi nhiệt độ thay đổi 1 oC thì phải bằng hai
lần độ phân giải của ADC0809.
Av x 10mV = 2 x19.6 mV
Với 19.6 mV là độ phân giải của ADC 0809 =5/225
Av = 2 x 19,6 /10 = 3.92
Ta chọn : RI = 39 K
RI = 10K
Như vậy, áp sau khi qua bộ khuếch đại sẽ có giá trò như sau:


Vout = 3,9 x 0,01t = 39 x t ( mV ) ; t (oC)
Với độ phân giải của ADC là 19,6 mV thì giá trò sau khi qua ADC sẽ có giá trò
là: 39 x t /19,6 = 2 x t (mV)
Để thể hiện lên LED một số phần thập phân ta sẽ phải hiển thò giá trò như sau :
10 x t (mV). Cho nên giá trò sau khi qua bộ đổi ADC sẽ phải nhân thêm với 5 rồi sau
đó mới biến đổi qua mã BCD nén và hiển thò lên LED 7 đoạn .
10. Thiết kế mạch 89C51 trên sơ đồ các chân và chức năng của chúng:
10.1. Giới thiệu vi xử lý 89C51:
a.
Giới thiệu :
Vi xử lý AT89C51 được chế tạo bởi hãng ATMEL, về cơ bản nó có cấu
tạo bên trong , sơ đồ chân cũng như sử dụng tập lệnh tương thích với
họ 8031 của hãng INTEL.
Các đặt điểm cơ bản của vi mạch AT89C51:
• Đơn vò xử lý trung tâm 8 bit đã được tối ưu hóa để đáp ứng các chức
năng điều khiển.
• Khối logic xử lý theo bit thuận tiện cho các phép toán Boole.
• Bộ tạo dao động giữ nhòp bên trong (đến 12Mhz).

• Tập lệnh rất phong phú.
• Giao diện nối tiếp có khả năng hoạt động song công , đồng bộ (UART).
• 16 (32) đường dẩn vào/ ra hai hướng và từng hướng có thể được đònh đòa
chỉ một cách tách biệt.
• Năm nguồn ngắt vơí hai mức ưu tiên.
• Có thể mở rộng bộ nhớ chương trình ( ROM ) bên ngoài lên đến 64KB.
• Có thể mở rộng dung lượng bộ nhớ dữ liệu (RAM ) bên ngoài lên đến
64KB.
• Hai bộ đếm / đònh thời 16 bit.
• Bộ nhớ EEPROM nội 4KB.
• Dung lượng bộ nhớ RAM nội , nhiều nhất có thể lên đến 128 byte.
b. Sự sắp xếp chân ra :
 Port 0 :
Là port hai chức năng trên các chân 32 – 39. Khi sử dụng bộ nhớ trong thì nó
như là một port I/O ( P0.0 → P0.7) .
Khi sử dụng bộ nhớ ngoài thì nó đóng vai trò như một bộ MUX đòa chỉ/ data.
 Port 1 :


Là một port I/O trên các chân 1 – 8 (P1.0→ P1.7 ) nó chỉ được dùng để giao
tiếp với các thiết bò ngoài và không có các chức năng khác.
 Port 2:
Là một port công dụng kép trên các chân 21 – 28. Khi sử dụng bộ nhớ
trong thì nó như là một port I/O đa dụng (P2.0→P2.7), khi sử dụng bộ nhớ ngoài thì
port 2 chính là byte cao của các đường đòa chỉ (A8→A15).
 Port 3:
Chiếm các chân từ 10 đến 17 , ngoài chức năng chính là một I/O port đa
dụng (P3.0→P3.7) , mỗi chân của port 3 còn có các chức năng khác nhau, độc lập.
 PSEN : (Program Store Enable)
Chân 29, tích cực mức thấp trong chu kỳ nhận lệnh , chỉ báo data trên dus

là mã lệnh.
Trong trường hợp sử dụng bộ nhớ chương trình trong thì PSEN không tích
cực.
 ALE :(Address Latch Enable )
Chân 30 , tích cực mức cao trong nửa chu kỳ đầu chỉ báo dữ liệu trên port
chính là đòa chỉ byte thấp A0÷A7.
 EA : (External Acess)
Chân 31 , cho phép chọn bộ nhớ chương trình trong hay ngoài.
+ EA =0 : MCU sử dụng bộ nhớ chương trình ngoài
+ EA = 1 : MCU sử dụng bộ nhớ chương trình trong.
 RST (Reset ):
Ngõ vào RST trên chân 9 là ngõ Reset của 8951 , khi ngõ này lên mức cao (trong ít
nhất hai chu kỳ máy ) các thanh ghi bên trong 8951 được đưa về trạng thái mặc đònh.
c. Các thanh ghi chức năng đặc biệt:
Vùng RAM nội đòa chỉ từ 80H – FFH , trong vùng này bố trí khoảng 21 thanh
ghi đặc biệt , phụ trách một chức năng nào đó của MCU.
i. Thanh ghi PSW (Program status Word):
Thanh ghi từ trạng thái chương trình ở đòa chỉ D0H chứa các cờ ( các bit chức
năng ) trạng thái của hệ thống :


Bit

Ký hiệu

PSW.7
PSW.6
PSW.5
PSW.4
PSW.3


CY
AC
F0
RS1
RS0

PSW.2
PSW.1
PSW.0

OV
P

Đòa chỉ
D7H
D6H
D5H
D4H
D3H

D2H
D1H
D0H

Ý nghóa
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn bank thanh ghi

Bit 0 chọn bank thanh ghi
00 : bank 0
01 : bank 1
10 : bank 2
11 : bank 3
Cờ tràn
Dự trữ
Cờ parity chẵn

ii. Thanh ghi B :
Đòa chỉ F0H , truy xuất bit , ngoài chức năng là thanh ghi đa dụng còn tham
gia vào 2 phép toán nhân và chia.
iii. Thanh ghi SP (Stack Poiter):
Đòa chỉ 81H , vùng ngăn xếp nằm trong RAM nội về nguyên lý dung lượng
tối đa là 128 byte. Trước khi cất vào stack nội dung SP tăng lên 1 rồi mới cất (nội
dung SP là con trỏ đòa chỉ ), khi lấy dữ liệu ra khỏi stack nội dung SP giảm đi 1 sau
khi lấy data.
iv. Thanh ghi DPTR (Data Pointer):
Sử dụng làm con trỏ đòa chỉ bộ nhớ dữ liệu ngoài.
Chia làm hai thanh ghi :
DPL ( đòa chỉ 82H ) chứa byte thấp
DPH ( đòa chỉ 83H) chứa byte cao
v. Các thanh ghi cổng ngoại vi :
Các lệnh liên quan đến xuất nhập ngoại vi đều thông qua các thanh ghi
cổng.
Port 0: Thanh ghi P0 (đòa chỉ 80H)
Port 1: Thanh ghi P1 ( đòa chỉ 90H)
Port 2: Thanh ghi P2 ( đòa chỉ A0H)
Port 3: thanh ghi P3 (đòa chỉ B0H)
vi. Các thanh ghi timer :

TMOD (đòa chỉ 89H) : Chọn mode làm việc timer.
TCON ( đòa chỉ 88H) : điều khiển timer


TL0 (đòa chỉ 8AH): byte thấp timer 0
TH0 (đòa chỉ 8CH): byte cao timer 0
TL1 (đòa chỉ 8BH): byte thấp timer 1
TH1 ( đòa chỉ 80H): byte cao của timer 1
vii. Các thanh ghi SIO :
SCON (98H) : khởi động mode và điều khiển SIO.
SBUF ( 99H) : chuyển dữ liệu từ nối tiếp thành song song và ngược lại.
viii. Các thanh ghi phục vụ ngắt :
Có 5 nguồn ngắt với 2 cấp ưu tiên:
+Thao tác trên thanh ghi IE (A 8H) : cho phép / cấm ngắt.
+Thao tác trên thanh ghi IP (B8H) : cấp ưu tiên ngắt.
ix. Thanh ghi điều khiển công suất (PCON) :
Đòa chỉ 87H , không truy xuất bit được, các bit của thanh ghi này được dùng
trong việc tác động lên tốc độ baud (SMOD) trong truyền thông nối tiếp, đưa vi
mạch vào mode tạm nghó hay mode hạ nguồn.
d. Hoạt động của timer :
89C51 có 2 bộ timer 16 bit: Timer 0 và timer 1.
i. Thanh ghi TMOD :
Có đòa chỉ 89H , là thanh ghi 8 bit, đặc các mode làm việc cho timer.
Tóm tắt thanh ghi TMOD :
Bit
7

Tên
GATE


Timer
1

6

C/T

1

5
4
3
2
1
0

M1
1
M0
1
Gate
0
C/T
0
M1
0
M0
0
Chọn mode :


Mô tả
Bit cổng , GATE =1 timer chỉ đếm khi INT1=1
Bit chọn counter/timer
C/T=1: counter, đếm bằng xung ck ngoài
ngõ vào T1
C/T=0 :timer, xung ck trong từ dao động nội
Bit 1 chọn mode
Bit 0 chọn mode
Bit cổng ( timer 0)
Bit chọn timer/counter
Bit 1 chọn mode
Bit 0 chọn mode


M1
0
0
1
1

M0
0
1
0
1

Mode
0
1
2

3

Mô tả
Timer 13bit
Timer 16 bit
Timer 8 bit
Timer tách biệt

ii. Thanh ghi TCON :
Đòa chỉ 88H , truy xuất bit được, là thanh ghi 8 bit
Tóm tắt thanh ghi TCON:

Bit
TCON.7

Kíhiệu
TF1

Đòa chỉ bit
8FH

TCON.6

TR1

8EH

TCON.5
TCON.4


TF0
TR0

8DH
8CH

Môtả
Cờ báo tràn timer 1, phần cứng đặt
TF1=1 khi timer tràn, xóa bằng mềm
hoặc cứng
Điều khiển ON/ OFF timer1,
TR1=1:chạy
TR1=0 :ngừng
Cờ báo tràn timer 1
Điều khiển ON/OFF timer0

e. Cổng nối tiếp :
Giao diện nối tiếp ở bên trong của bộ vi xử lý 8951 cho phép nối bộ vi xử
lý với một vi xử lý khác hay với một máy tính một cách rất đơn giản. Bởi vì giao
diện được thực hiện nhờ bộ UART hoạt động độc lập, nên bộ vi xử lý hoàn toàn tự
do đối với các nhiệm vụ khác. Để khởi tạo giao diện thanh ghi SCON cần phải
được nạp bằng các giá trò thích hợp.
Thanh ghi SCON ( đòa chỉ 98h)
SM0

SM1
SM2
REN
TB8
RB8

TI
RI
SM0, SM1 Chọn mode làm việc:
SM0 SM1
0
0
:Mode 0 thanh ghi dòch 8 bit, baud rate cố đònh (fck/12)
0
1
:Mode 1 UART 8 bit, baud rate thay đổi (đặt bằng timer 1)
1
0
:Mode 2 UART 9bit , baurate cố đònh (fck/32 hoặc fck /64)
1
1
:Mode 3 UART 9 bit , baud rate thay đổi (đặt bằng timer 1)


SM2 : chế độ nhiều máy tính .
REN : Cho phép bộ thu , cho phép bộ phát
TB8 : Bit phát thứ 9 trong mode 2 và 3, đặt xóa bằng mềm.
RB8 : Bit nhận thứ 9
TI : Cờ ngắt phát , phần cứng đặt TI = 1 khi phát xong một kí tự, xóa bằng
mềm.
RI : Cờ ngắt thu , phần cứng đặt RI =1 khi thu xong một kí tự, xóa bằng
mềm.
Thanh ghi dữ liệu của giao diện nối tiếp là SBUF ( đòa chỉ 99H). Thực tế
phía sau thanh ghi SBUF là hai thanh ghi, cụ thể là thtanh ghi dữ liệu phát và thanh
ghi dữ liệu thu. Quá trình phát được mở đầu một cách đơn giản là truy nhập để ghi
lên thanh ghi SBUF. Ngược lại , một byte đã được nhận có thể được đọc từ SBUF.

Trong chế độ 9 bit , mỗi một bit thứ 9 (TB8 hoặc TR8 ) trong thanh ghi SMOD cần
phải được để ý đến .
Trong rất nhiều trường hợp , người ta sử dụng chế độ hoạt động loại 1 và
như vậy có một UART 8 bit với việc tạo ra tốc độ baud bằng timer 1. Dòng dữ liệu
8 bit được mở đầu bằng một bit bắt đầu (startr bit ) và kết thtúc bằng một bit
dừng(stop bit). Tốc độ baud bằng 1/16(SMOD=1) hoặc 1/32 (SMOD=0) của tốc độ
tràn của timer 1.
f. Hoạt động ngắt (interrupt):
i. Giới thiệu :
Một ngắt là sự xảy ra một điều kiện – một sự kiện- mà nó gây ra treo tạm
thời chương trình trong khi điều kiện đó được phục vụ bởi một chương trình khác.
ii. Tổ chức ngắt trong 8951:
8951 có 5 nguồn ngắt :
+ Ngắt bằng tín hiệu ngoài qua ngõ INT0 (ngắt ngoài INT0).
+ Ngắt bằng tín hiệu ngoài qua ngõ INT1 (ngắt ngoài INT1).
+ Ngắt khi timer 0 tràn (ngắt timer 0).
+ Ngắt khi timer1 tràn (ngắt timer 1)
+ Ngắt khi SIO phát / thu xong 1 ký tự (ngắt SIO).
Đòa chỉA8H, truy xuất bit được, cho phép / cấm ngắt.
Thanh ghi IE :
Bit
IE.7
IE.6
IE.5

Ký hiệu
EA
-

Đòa chỉ bit

AFH
AEH
ADH

Mô tả
Cho phép / cấm toàn cục
Không đònh nghóa
-


IE.4 ES
ACH
Cho phép ngắt SIO
IE.3 ET1
ABH
Cho phép ngắt timer 1
IE.2 EX1
AAH
Cho phép ngắt INT1
IE.1 ET0
A9H
Cho phép ngắt timer0
IE.0 EX0
A8H
Cho phép ngắt INT0
10.2. Tổ chức và sử dụng các chân ra của 89C51:
Sơ lược về chức năng phần cứng cũng như chương trình phần mềm như
sau:
Đo nhiệt độ và hiển thò lên LED, lưu lại giá trò nhiệt độ hiện tại
và gởi về máy tính.

- Tùy theo giá trò của nhiệt độ đo được mà vi xử lý 89C51 sẽ nhận ra nhiệt
đang nằm ở tầm báo động nào và có hành động tương ứng:
+ to < 50oC : báo động cấp 1- chỉ báo chuông
+ to < 80oC : báo động cấp 2- báo chuông hai lần
+ to = 100oC: báo động cấp 5 : báo chuông ba lần
Cảm biến quang: chống trộm : phát tín hiệu kích chuông reo khi cảm
biến này tác động.
Mạch mô phỏng cảm biến quang đếm số người trong phòng
• Số người trong phòng >= 1: đóng thiết bò
• Số người trong phòng < 1: tắt thiết bò
Mạch nút nhấn dùng để yêu cầu tắt / đóng thiết bò theo ý muốn của
người trong phòng.

Port 0 : đây là port xuất nhập hai chiều, nữa chu kỳ là đường data
và nữa chu kỳ kế là đường đòa chỉ ( byte thấp). Em đã dùng port này để đọc giá trò
đổi được từ ADC0809.
• Port 2: dùng để giải mã LED và tạo TH chọn LED sáng

4 bit thấp nhất của port 2: p2.0, po2.1, p2.2, p2.3
dùng để đưa vào mạch giải mã LED 74247.

2 bit kế tiếp : p2.4, p2.5 đưa vào mạch giải mã
741SD để tạo TH chọn LED nào sáng . Do LED thuộc loại Anod chung nên
chỉ LED nào có TH chọn LED ở mức thấp thì nó sẽ sáng. Nghóa là tín hiệu
chọn LED sáng tích cực ở mức 0.

P2.7 dùng để tạo một nút nhấn yêu cầu đóng cắt
đèn. Khi nút nhấn, P2.7 đưa xuống mức 0, chương trình phần mềm sẽ kiểm
tra chân này xem nút có bò nhấn hay không.



Tạo xung start cho ADC0809 ta dùng chân WR, đầu
CT ta đặt và xóa chân này sẽ tạo ra một xung kích cho ADC 0809 đổi và
đợi cho đến khi ADC đổi xong.

Tần số vào ADC0809 nhỏ hơn 12 MHz nên ta phải
hạ tần số từ 12 MHz xuồng mức cần thiết : 12 MHz / 16 = 750 KHz. Để
làm việc này ta dùng IC 74393

Để tạo tín hiệu kích đóng các Relay ta dùng các
chân P1.2, P1.4, P1.5 và P1.6
+ P1.2 : điều khiển Relay đóng / ngắt quạt
+ P1.4: điều khiển Relay đóng / ngắt đèn
+ P1.5 : điều khiển Relay đóng / ngắt nguồn điện khi xảy ra tình huống khẩn cấp.
+ P1.6: điều khiển chuông.
Đảm bảo các tín hiệu kích này có thể kích được các Relay đóng hoàn toàn, ta cho
các tín hiệu này đi qua IC đệm 74373.
 Chân T0 dùng để điều khiển phần xuất nhập data của vi xử lý.
+ T0 = 0 : vi xử lý nhận dữ liệu từ PC
+ T0 = 1 : vi xử lý truyền dữ liệu về PC



×