Professional Documents
Culture Documents
PC
RXD RTS TXD
B A
A B B A B A
σ phot
max
Vận tốc làm việc là thời gian hồi đáp ( Reponse times) của một quang
trở khi có sự thay đổi từ sáng sang tối hay từ tối sang sáng (rise ). Thời gian
lên được xác định là thời gian cần thiết để quang trở đạt 65 % trị số cuối
cùng khi được chiếu sáng từ 0 lux sang 10 lux.
Q = 2π x
Năng lượng tiêu tán tuần hoàn
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 11
Đối với bản thạch anh, Q có giá trị rất cao, thường từ 10 4 đến 105.
Phương của dao động thạch anh so với trục của tinh thể xác định lực cắt. Thí
dụ:
_ Lực cắt X gọi là mẫu Curie: 2 bản cực thẳng góc với trục X.
một điện áp xoay chiều được áp vào 2 mặt đối diện, bản dao động có thể dao
động theo chiều dài và 2 tần số cộng hưởng quan trọng là:
2860 2860
f1 = va f2 = ; f tính bằng KHz.
e l
e và l : Bề dày và bề rộng của bản tính bằng mm
_ Lực cắt At, hai mặt bản cực quay chung quanh trục X và tạo
thành một góc gần bằng 350 so với trục Z, bản dao động có thể dao động
theo lực cắt bề dày và tần số dao động có trị giá:
1675
f = n. ; f:KHz
e
n: số nguyên ≤ 5
_ Với những lực cắt khác được sử dụng : Tần số dao động cơ
luôn luôn tỉ lệ nghịch vơi1 trong những kích thước của chúng.
Các điện cực cho phép đặt một điện áp vào bản dao động, nó được
cấu tạo bởi thanh kim loại đặt tiếp xúc với bản dao động.
Chung quanh tần số cộng hưởng cơ, về phương diện điện bản thân
thạch anh có thể được biểu thị bằng một lưỡng cực cấu tạo bởi hai nhánh
song song.
L R C
C0
Một nhánh L, R, C. Các phần tử này có giá trị được xác định bởi đặc
tính hình học, cơ khí và tinh thể của bản dao động và có độ lớn:
L: Từ vài H đến 104H
C: Từ 10-2 pF đến 10-1 pF
R: Từ vài KW đến vài chục KW.
_ Một nhánh gồm điện dung C0 đó là điện dung được hình thành
bởi các điện cực kim loại có giá trị khoảng: 1 đến 100 pF, tỉ số C/C 0 có giá trị
tổng quát từ 10-2 đến 10-3 .
Lưỡng cực này có thể có hai tần số cộng hưởng điện:
_ Cộng hưởng nối tiếp của nhánh L,R ,C tần số fs:
1
fs=
2π LC
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ệ
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 14
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
P
C
RS-485
BUS
RS-485
RS-485
KIT VI XỬ KIT VI XỬ
LÝ LÝ
PHÒNG 1 PHÒNG 2
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ý.
ε . Mạch hồi tiếp trạng thái các thiết bị:
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 16
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.
U1
R 3 3
+
R5 6
330 2 IN T 0
-
220
R7 A D 741
LE D TH U ZE N E R
1k
LE D P H A T R 6 5 .1 V
R 4 1k
100
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
5−2
ILEDTHU = =9mA
320
Ap đưa vào mạch khuếch đại LM741:
AV =1+ RI /RF =6
⇒ RI /RF =5
Chọn Rf = 2.2 kW
Þ RI = 5*2.2 = 11 kW
Khi mạch chạy bão hòa thì áp ra trên Diode Zenner 5V là:
Vout = Vin x A v = 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:
R 2 R 1
4 .7 K 4 .7 K
P 1 .0
S W 1
U 2A
C A M B IE N Q U A N G 1 1
3
S W 2 2 IN T 1
7408
C A M B IE N Q U A N G 2
P 1 .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ị:
2
1 1 0 o h m ,3 W
D1
1
D5
2
1
4
JP 1 R1 U1 K2
1
1 6
2
1
1 330
5 D2
12
2
R2
D IE U K H IE N D E N 4 1 D3
2 Q1 1 2
2 .2 K
4N 26
2
3
VCC
U1
R5 6 1
2
22k
A D 741
Q2 1 4
- 2 2
P 1 .3 6 R3 4N 26
+ 3
R6 1k
3
5 .1 V 22k U2 R4
1k
5V
Lọc bỏ -5V
Nắn Lọc IC ổn Các gợn
220V +12 V
dòng áp áp Sóng -12V
R1
R2 10k
1
T IN H IE U C H O N L E D 2 A 1015
1k IC giải
mã
3
7S E G
3
8 3
8
LED
5
. 74247
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
g
e
d
b
a
c
f
Trang 22
10
9
1
2
4
6
7
Khi tín hiệu chọn LED = 0, Transistor Q1sẽ dẫn đến VC » 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
V CC
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
R 3 tra chân P2.7=0 nghĩa là ta đã nhấn nút SW
S W 3 4 .7 K thì nó sẽ thực hiện một chương trình con có
P 2 .7
nhiệm vụ đóng đèn khi đèn đang tắt, và tắt
D I E U K H IE N D E N đèn khi đèn đang đóng. Đây 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.
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.
Truyền :
Tín hiệu vào Tín hiệu ra
/RE DE DI B A
X 1 1 0 1
X 1 0 1 0
0 0 X High Z High Z
1 0 X High Z High Z
Nhận
4 120 2
D I 120 R E
3 6 7 1
D E A B RO
1 7 6 3
2 R O B A D E 4
R E DI
M A X 485 M A X 485
7
M A X 485 M A X 485
B
RO
DE
RE
RO
DE
RE
DI
DI
4
3
1
2
4
3
1
2
M A X 489 M A X 489
12
11
11
10
10
12
9
U4 U 4
A
B
Z
Z
Y
M A X 489
M A X 489
RO
RO
DE
RE
DE
RE
DI
DI
4
2 12 R1
RO A
3 11 DATA IN
RE B 120
4 9 R 2
DE Y
5 10 DATA OUT
DI Z 120
Bộ M A X 491 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
(Half- Duplex): 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
TTL↔ RS-485
A B
B A B A
Sơ đồ
R 2 R1
cụ thể như
4 2
sau: 3 D I
D E A
6
120 120
7
B
R E
RO
1
1 7 6 3
2 R O B A D E 4
R E DI
M A X 485 M A X 485
6
M A X 485 M A X 485
A
B
RO
DE
RE
RO
DE
RE
DI
DI
4
3
1
2
4
3
1
2
Hai điện trở 120W đượ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.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 28
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:
VCC
4
5
2 RF
1
-
R2 6 39K
2 3 LM 741
+
20K 10K
U 11
-1 2 V
7
1
10U
3
4
5
+12V 2 - LM 741
-1 2 V 6 A /D 1
3 +
VCC U 13
C 12
0 .1 U
7
1
R1
4
5
2 .2 K
2 - RI +12V
LM 741 6
3 +
10K
LM 335 U 15
1
RVAR1 RF
7
1
2 10U
2 39K
3
+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ó trộm
Chuông kêu
Số người=1
Người ra
Số người =0
2
1 3
Nhận lệnh
MAIN
Y
A≥ 100
Tắt nguồn
Y Gọi Chuong3
80 <A <100
N Gọi Chuong2
50< A<80 Y
N Gọi Chuong1
Ret
P2.7=0 Y
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 44
P2.7 =0: nghĩa là nút yêu cầu tắt quạt được nhấn. Lúc này vi xử lí sẽ
kiểm tra tín hiệu hồi tiếp từ quạt về- chân P1.3 của Port1.
P1.7=0 : nghĩa là nút yêu cầu tắt mở đèn được nhấn. Lúc này vi xử
lí kiểm tra tín hiệu hồi tiếp về từ đèn- chân P3.5 của Port3.
P3.5=1: đèn đang đóng, yêu cầu vi xử lí tắt đèn
P3.5=0: đèn đang tắt, yêu cầu vi xử lí kích đóng đèn.
Request
P2.7=0
P1.7=0 Lặp=50
Giảm lặp
Lặp =50
Lặp=0 N
( Word Converter
Giảm lặp- Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 45
P3.5=0
Lặp=0 Lưu đồ giải thuật chương trình con Request
N P3.5=0 Y NN N P1.3=0
P2.7=00Y cầu N Tắt quạt
Set cờ
Mởyêu
đèncầu TắtRet
đèn
Ret Set cờ
Mởyêu
quạt
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 46
Chương trình phần mềm sẽ mặc định số người trong phòng khi reset
chương trình là 1 người. Ta cũng dễ dàng thay đổi số người mặc định bằng
cách thay đổi chương trình phần mềm.
Chính vì mặc định là số người trong phòng lớn hơn 1, nên khi reset thì
vi xử lí sẽ kích đóng các thiết bị ngay . Vi xử lí sẽ hoạt đông theo chương
trình một cách hoàn hảo khi ta không tác động yêu cầu từ bên ngoài. Có thể
giải thích rõ ràng hơn điều này như sau:
Đầu tiên chương trình sẽ thực hiên việc đóng các thiết bị trong chu kỳ
chạy đầu tiên. Giả sử người trong phòng muốn tắt đèn, thì người ta sẽ nhấn
nút yêu cầu tắt đèn, khi đó vi xử lí sẽ ra lệnh kích ngắt đèn. Tín hiệu hồi tiếp
về từ đèn là mức thấp, vi xử lí sẽ hiểu là đèn đang ở trạng thái ngắt. Đến chu
trình quét tiếp theo, vi xử lí sẽ lại kiểm tra ô nhớ 30H- ô nhớ lưu số người
trong phòng- và nhận thấy số ngươi trong phòng lớn hơn 1 nhưng đèn lại tắt,
nó lại ra lệnh kích đóng đèn trở lại. Điều này sẽ dẫn đến việc ta không thể có
thể thiệp đóng ngắt các thiết bị theo ý muốn.
Để tránh được điều này, ta dùng một ô nhớ trong vùng RAM của 8951 làm cờ
yêu cầu. Khi có nút yêu cầu đóng ngắt thiết bị nào được nhấn thì cờ yêu cầu
này sẽ được set để đánh dấu cho vi xử lí biết là đến chu trình chạy kế tiếp nó
sẽ không cần kích đóng các thiết bị trong phòng mặc dù thiết bị đang ngắt
cũng như trong phòng đang có người.
1. Giải thuật chương trình phát hiện người vào ra phòng:
Để thực hiện chức năng này ta dùng ngắt ngoài 1 của vi xử lý. Khi có
người đi qua thì cảm biến quang sẽ tác động, gây ra một ngắt trong chương
trình vi xử lý . Dựa vào cảm biến quang nào tác động trước thì ta sẽ biết
người vào hay ra.
Đây là chương trình con mô phỏng cảm biến quang dùng để đếm số
người trong phòng và dựa theo số người hiện tại trong phòng là bao nhiêu
người mà vi xử lí sẽ gọi chương trình con phục vụ tương ứng. Chương trình
này dùng 3 cờ để nhận biết trạng thái cảm biến quang nào tác động trước,
cảm biến nào tác sau.
P1.0 P1.1
Cảm biến quang 1 Cảm biến quang 2 Sơ
đồ khối
trên cho thấy cách hoạt động của hai cảm biến quang đếm người. Tín hiệu ra
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 47
từ hai cảm biến quang này được đưa vào chân P1.0 và P1.1 của vi xử lí
89C51. khi một trong hai cảm biến quang này tác động thì nó sẽ gây ra một
ngắt ngoài. Lí do để dùng ngắt ngoài là giúp cho vi xử lí hoạt động một cách
chính xác khi có người vào hay ra. Ta đưa hai tín hiệu ở ngõ ra của hai cảm
biến quang này đi qua một mạch logic AND. Chỉ cần một cảm biến tác động
thì tín hiệu ra của mạch AND sẽ ở mức 0.
Khi ngắt ngoài một1 xảy ra thì ta không thể biết được cảm biến quang
nào tác động trước, cảm biến quang naào tác động sau. Thứ tự tác của hai
cảm biến trên sẽ cho ta biết là người đó đi ra hay đi vào.
Cảm biến quang 1 Cảm biến quang 2 Trạng thái vi xử lí hiểu
Trước Sau Người vào
Sau Trước Người ra
Trước Không tác động Giữ nguyên số đếm
Không tác động Trước Giữ nguyên số đếm
Bảng mô tả hoạt động của hai cảm biến quang phát hiện người.
Ta cần dùng đến 3 cờ để xác định thứ tự tác động của các cảm biến
quang. Các cờ này được đặt tên như sau:
N
P1.0=0
Set cờ 2 Y
Lặp 50
Giảm lặp
N Lặp=0
N P1.0=0
Y
N
Xóa cờ 2
Cờ 3=1 Y
N Người ra
Cờ 1=1 Y
N Thoát
P1.1=0 N 2
Y
Lặp=50
Giảm lặp
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
N Trang 50
Lặp=0
N Cờ 2=1 Y
P1.1=0
3=1 N Y
Người
Set Yvào
Thoát
cờ 3
2
Lưu đồ giải thuật chương trình con phục vụ ngắt ngoài 1
Do dùng mạch logic AND, nên khi ngắt ngoài xảy ra thì chắc chắn phải
có người vào hay ra , nhưng khi kiểm tra cả 2 chân P1.0 và P1.1 thì phát hiện
ra chỉ có một chân tác động: vi xử lí sẽ vẫn giữ nguyên số đếm và thoát khỏi
chương trình phục vụ ngắt.
Chương trình con Người vào: sẽ tăng số người trong ô nhớ. Dựa vào
trạng thái của cờ yêu cầu trong chương trình con Request mà chương
trình sẽ thi hành hnư sau:
Khi cờ yêu cầu =0: lúc này nếu có người vào và số người
trong phòng lớn hơn 0 thì vi xử lí sẽ gọi chương trình con
đóng thiết bị ( chỉ gọi chương trình con đóng thiết bị khi thiết bị
đang ngắt, thiết bị đang đóng thì không làm gì cả)
Chương trình con Người ra : giảm số người trong phòng. Tùy theo số
người trong phòng là bao nhiêu và trạng thái của cờ yêu cầu mà vi xử lí
có gọi chương trình con Tắt thiết bị hay không.
Số người trong phòng bé hơn 1 ( hay bằng 0 ): thì dù cho cờ
yêu cầu có được set hay không thì cũng gọi chương trình con
tắt thiết bị.
Số người trong phòng lớn hơn hay bằng 1 nó sẽ vẫn để
nguyên trạng thái thiết bị không phụ thuộc vào trạng thái của
cờ yêu cầu.
Lưu đồ giải thuật chi tiết như sau:
Xóa cờ 1, cờ 2, cờ 3
Biến đếm =1 Y
N
N P1.3=1
Y Mở quạt
P3.5=1 N
Y Mở đèn
Ret
Người ra
Xóa cờ 1, cờ 2, cờ 3
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 53
Biến đếm <1
Giảm biến đếm
Lưu đồ giải thuật chương trình con Người ra
P3.5=0
P1.3=0
N
vào ô nhớ 30h Y
Cất biến đếmRet YY N Tắt
Tắt quạt
đèn
4 . Chương trình con phát hiện người vào không qua cửa
chính: Cảm biến quang chống trộm
Dùng ô nhớ 31h để lưu trữ trạng thái của cảm biến quang này. Nếu ở
trạng thái bình thường thì tín hiệu ra của nó sẽ ở mức 1(+5v) , khi tín hiệu ra
của nó là mức 0 thì chương trình con này sẽ được gọi. Nhiệm vụ của chương
trình con này là tạo tín hiệu cảnh báo bằng chuông, đặt ô nhớ 31h =1. Dữ liệu
trong ô nhớ này được gởi về máy tính, tùy theo giá trị trong ô nhớ này mà
máy tính sẽ phát tín hiệu cảnh báo lên màn hình.
31h=0: bình thường, không có gì xảy ra cho cảm biến
quang này.
31h=1: có vật che chắn ngang vùng được bảo vệ, cần có
biện pháp ngăn chặn.
Chuông 3: gọi chương trình con cho phép chuông kêu 3 hồi, mỗi hồi
kéo dài trong 3 giây và giữa 2 lần liên tiếp cách nhau 1 giây.
Ngắt ngoài 0
31h←1
Chuong 3
31h←0
Ret
Lưu đồ giải thuật chương trình con ngắt ngoài 0 Giá trị trong ô
nhớ 31h sẽ được đặt
trở về 0 sau khi đã được gởi về máy tính.
5. Các chương trình con Chuong 1, Chuong 2,Chuong 3:
Chuong 1 được gọi khi nhiệt độ đo được nằm trong tầm từ
500C đến 800C.
Chuong 2 được gọi khi nhiệt độ đo được nằm trong tầm từ
800C đến 1000C.
Chuong 1
R0 ← 5
DELAY1S
Giảm R0
N
R0=0
Xóa P1.6
Ret
Chuong 1
Delay 1s
Chuong 1
Ret
Chuong 3
R0 ←3
Chuong 1
Delay 1s
Giảm R0
N R0=0
Ret
Khi đang thực
hiện Lưu đồ giải thuật chương trình con Chuong 3 gọi các
chương trình
con Chuong1
( chuông 1) Chuong 2( chuông 2), Chuong 3 ( chuông 3) thì chương trình
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 56
không thể thực hiện các phần tiếp theo của chương trình. Cũng như không
thể truyền dữ liệu về máy tính vì vi xử lí còn đang thực hiện chương trình gọi
chuông. Để tránh tình trạng này ta dùng các ngắt Timer để thực hiện việc
delay để vi xử lí vừa thực hiện chương trình con delay1s vừa thực hiện đồng
thời các chương trình khác.
6. Chương trình con ngắt Serial Port:
Như đã trình bày ở phần trên, khi ta có nhiều Slave cùng dùng chung
một đường truyền thì để tránh xung đột trên đường truyền, ta dùng phương
pháp định địa chỉ riêng cho từng Slave. Nếu máy tính truyền dữ liệu xuống
thì tất cả các vi xử lý cùng nhận, sau đó chúng sẽ so sánh byte đầu tiên nhận
được với địa chỉ của riêng chúng đã được định nghĩa sẳn, nếu đúng địa chỉ
thì nó sẽ tiếp tục phần giao tiếp. Xung đột trên đường truyền sẽ xảy ra khi có
2 Slave cùng truyền cùng lúc hay khi máy tính đang truyền dữ liệu xuống mà
có một vi xử lý đang phát dữ liệu ngược lên, điều này sẽ gây ra ảnh hưởng
đến phần cứng cũng như ự an toàn trong hoạt động của mạng truyền thông.
Dùng mang 5 RS_485 thì ta phải dùng các IC 75176 có nhiệm vụ
chuyển đổi từ mức áp TTl sang RS_485 và ngược lại. Như vậy ta cần có một
IC 75176 trên một card chuyển đổi gắn vào cổng Com của máy tính. Đặc tính
tổng quát của IC này là có 3 trạng thái, tùy thuộc vào trạng thái của chân điều
khiển (DE, RE) mà 75176 sẽ nằm ở trạng thái nào. Như thế vấn đề trong điều
khiển mạng RS-485 là việc điều khiển trạng thái các chân điều khiển của
các IC 75176 như thế nào để được đông bộ trong quá trìng truyền và nhận.
Vi xử lý chỉ được phép truyền khi nào nó nhận được lệnh yêu cầu gởi
dữ liệu từ máy tính. Nghĩa là các kit vi xử lý sẽ được đặt ở trạng thái thu. Khi
cần truyền dữ liệu thì chân điều khiển thu phát sẽ được đưa lên mức cao.
Sau khi kết thúc quá trình truyền dữ liệu thì chận điều khiển thu phát lại được
đặt về mức thấp. Trong mạch phần cứng thiết kế em đã dùng chân P3.4 để
điều khiển trạng thái thu hay phát
IC 75176 trên card gắn vào cổng Com của máy tính thì ta dùng chân
RTS để điều khiển.
Phần giao tiếp giữa máy tính với vi xử lý gồm có 2 nội dung:
_ Truyền dữ liệu từ các kit vi xử lý về máy tính.
_ Điều khiển các thiết bị theo yêu cầu của lệnh nhận được từ
máy tính.
Dữ liệu truyền tứ máy tính xuống vi xử lý sẽ gồm 2 byte: byte đầu tiên
xác định địa chỉ của kit vi xử lý cần giao tiếp, byte thứ 2 xác định nội dung cần
giao tiếp.
Để tận dụng tốt thời gian cho chương trình vi xử lý, ta đưa phần truyền
và nhận dữ liệu vào trong phần ngắt Serial Port. Chương trình con phục vụ
ngắt Serial Port này sẽ được gọi khi xảy ra một ngắt trong truyền dữ liệu nối
tiếp. Ngắt truyền thông nối tiếp xảy ra khi một trong các cờ TI, RI được set lên
mức 1. Cờ TI: ngắt phát, cờ RI: ngắt thu. Các cờ này sẽ được xóa bằng phần
mềm.
Cờ TI được set lên 1 khi bộ đệm truyền trống, có nghĩa là ta có thể tiếp
tục việc truyền byte dữ liệu tiếp theo.
Cờ RI được set khi có 1 kí tự đang đợi được đọc trong bộ đệm nhận.
Ta dùng các ô nhớ trung gian sau để phục vụ cho việc truyền dữ liệu:
_ 3fh: chứa địa chỉ kit truyền dữ liệu.
_ 40h: chứa nhiệt đô đo.
_ 41h: chứa số người trong phòng.
_ 42h: trang thái các thiết bị trong phòng.
Dùng các cờ sau như sau( các ô nhớ trong vùng RAM nội)
_ 09h: báo đã truyền xong 4 byte để đặt chân P3.4 về mức thấp.
_ 0ah: báo byte đầu tiên chính là địa chỉ của kit.
Y
Truyền dữ liệu Đưa các ô Buffer
nhớ ra Buffer lên PC
N
Y
Điều khiển đèn
N N
Đèn đang bật
Y
Bật đèn
Tắt đèn
N
Quạt đang bật N
Y
Bật quạt
Tắt quạt
Reti
Lưu đồ giải thuật chương trình truyền nhân dữ liệu
Y RI=1
A ←sbuf N
Cờ 2=1 N
Y
Cờ 3=1 N
Xóa set P3.4
P3.4
Y A=#’A’ N Sbuf ←@R0
Xóa cờ
2
Y
Tăng R0
Set Xóa cờ
P3.4 3
N R0=43h
Reti Y
A=#’E’ N
N Set cờ 2
Y A=#’C’
N R0←#3fh
Truyền dữ liệu Y A=#’D’
về máy tính
Y
Điều khiển đèn Điều khiển quat5
Xóa cờ
3
Reti
;*******************************************************************************
; CHƯƠNG TRÌNH CON ĐẾM NGƯỜI VÀO RA
; chương trình này dùng để giúp cho vi xử lý nhận biết khi
; nào trong phòng có người cũng như không có người để tự bật tắt đèn, quạt
;******************************************************************************
;
EXT1ISR:
PUSH 07H
JB CO0,LOVE1
MOV R7,#50
DJNZ R7,$
JB P1.0,LOVE2
SETB CO0
JNB CO1,EXITE1
ACALL RA
CLR CO1
CLR CO0
SJMP EXITE1
LOVE2:
SETB CO1
SJMP EXITE1
LOVE1:
MOV R7,#50
DJNZ R7,$
JB P1.1,EXITE1
SETB CO1
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 70
ACALL VAO
CLR CO0
CLR CO1
EXITE1:
POP 07H
RETI
;***************************************************************************
; CHƯƠNG TRÌNH CON NGƯỜI VÀO
; tăng nội dung trong biến đếm lên 1 đơn vị
; nếu ngườitrong phòng là 1 thì sẽ bật các thiết bị
;***************************************************************************
VAO:
PUSH ACC
MOV A,41H
INC A
MOV 41H,A
CJNE A,#2,$+3
JC PLEASE1
SJMP PLEASE2
PLEASE1:
CLR P1.2
CLR P1.4
PLEASE2:
POP ACC
RET
;***************************************************************************
; CHƯƠNG TRÌNH CON NGƯỜI RA
; giảm biến đếm đi 1 đơn vị
; nếu người trong phòng là 0 thì tắt các thiết bị
;***************************************************************************
RA:
PUSH ACC
MOV A,41H
DEC A
MOV 41H,A
CJNE A,#1,$+3
JC PLEASE3
SJMP PLEASE4
PLEASE3:
SETB P1.2
SETB P1.4
PLEASE4:
POP ACC
RET
;****************************************************************************
; CHƯƠNG TRÌNH CON MÔ PHỎNG CẢM BIẾN QUANG CHỐNG TRỘM
; Gọi chuông khi phát hiện có trộm
;****************************************************************************
EXT0ISR:
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 71
SETB 06H
CLR P1.6
RETI
;**************************************************************************
; Chương trình này dùng để đưa trạng thái hiện tại của các thiết bị vào ô nhớ trung
gian
; để truyền về máy tính
; Tùy thuộc vào trạng thái hiện tại của các thiết bị mà ta sẽ có một giá trị lưu trong
; ô nhớ này
;**************************************************************************
CHECKFLAG:
JB P1.3,HERE1
JB P3.5,HERE2
JNB P3.2,HERE3
MOV 42H,#'O'
LJMP EXITCHECKFLAG
HERE3:
MOV 42H,#'P'
LJMP EXITCHECKFLAG
HERE2:
JNB P3.2,HERE4
MOV 42H,#'Q'
LJMP EXITCHECKFLAG
HERE4:
MOV 42H,#'R'
LJMP EXITCHECKFLAG
HERE1:
JB P3.5,HERE5
JNB P3.2,HERE6
MOV 42H,#'S'
LJMP EXITCHECKFLAG
HERE6:
MOV 42H,#'T'
LJMP EXITCHECKFLAG
HERE5:
JNB P3.2,HERE7
MOV 42H,#'U'
LJMP EXITCHECKFLAG
HERE7:
MOV 42H,#'X'
LJMP EXITCHECKFLAG
EXITCHECKFLAG:
RET
;******************************************************************************
; CHƯƠNG TRÌNH CON REQUEST
; Chương trình này dùng để phát hiện có yêu cầu bật tắt các thiết bị từ người dùng
hay ; không?
; nếu P1.7=0: yêu cầu bật/ tắt đèn
; nếu P2.7=0: yêu cầu bật/ tắt quạt
;
;****************************************************************************
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 72
REQUEST:
PUSH 00H
JB P1.7,SKIP4
MOV R0,#10
DJNZ R0,$
JB P1.7,SKIP4
CPL P1.4
SJMP EXITREQUEST
SKIP4:
JB P2.7,EXITREQUEST
MOV R0,#10
DJNZ R0,$
JB P2.7,EXITREQUEST
CPL P1.2
SJMP EXITREQUEST
EXITREQUEST:
POP ACC
RET
END
Sơ đồ chân linh U 1
kiện :
7 13
1 1 A 12
2 2 B 11
6 4 C 10
4 8 D 9
5 B I/R B O E 15
3 R B I F 14
LT G
74247
III. IC 74LS154:
74LS154 là IC giãi mã 4 sang 16, có ngõ ra tích cực mức thấp.
Input
G1 G2 Output
D C B A
L L L L L L 0
L L L L L H 1
L L L L H L 2
L L L L H H 3
L L L H L L 4
L L L H L H 5
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 74
L L L H H L 6
L L L H H H 7
L L H L L L 8
L L H L L H 9
L L H L H L 10
L L H L H H 11
L L H H L L 12
L L H H L H 13
L L H H HL 14
L L H H HH 15
L H X X XX none
H L X X XX none
H H X X XX none
H : High – mức cao (1)
L : Low – mức thấp (0)
None : cấm
IV. IC 74573 :
Là IC chốt có ngõ ra 3 trạng thái.
Sơ đồ chân và bảng sự thật :
2 19
3 D 1 Q 1 18
4 D 2 Q 2 17
D 3 Q 3 OC C Input (D) Output (Q)
5 16 L H H H
6 D 4 Q 4 15
7 D 5 Q 5 14 L H L L
8 D 6 Q 6 13 L L X Q1
9 D 7 Q 7 12
D 8 Q 8 H X X Z
11
1 C
O C
S N 74A S 573
V. IC 74138 :
Là IC giải mã 3 sang 8. Có ngõ ra tích cực mức thấp
Sơ đồ chân và bảng sự thật :
VII. IC 75176:
Là IC chuyển đổi tín hiệu điện áp so với mass thành tín hiệu điện áp vi
sai .
Sơ đồ chân linh kiện :
4 1
2 D I R O 6
3 R E A 7
D E B
8
+V C C
75176
VIII. MAX 232:
Là vi mạch chuyển đổi tín hiệu theo chuẩn RS232 sang chuẩn TTL và
ngược lại.
Trong thực tế có rất nhiều vi mạch chuyển đổi từ RS_232 sang TTL và
ngược lại. Thế nhưng MAX232 có ưư điểm hơn các vi mạch khác và rất phổ
biến hiện nay, ưu điểm của MAX 232 là chỉ sử dụng nguồn đơn cực +5V.
Bên trong MAX 232 có một bộ nhân đôi điện áp để tạo ra điện áp +10V
và một bộ tạo ra điện áp âm. Như vậy nó tạo ra bộ nguồn +/-10V,đáp ứng
được mức điện áp cho RS_232.
Sơ đồ chân linh kiện :
13 12
8 R 1 IN R 1O U T 9
11 R 2 IN R 2O U T 14
10 T 1 IN T1O U T 7
T 2 IN T2O U T
1
3 C +
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
4 C 1-
C 2+ Trang 76
5
2 C 2-
6 V +
V -
M A X 232
Giải thích tín hiệu :
R2IN: ngõ vào RS_232 ®R2OUT: ngõ ra TTL
T2OUT: ngõ ra RS_232¬T2IN: ngõ vào TTL
R1IN: ngõ vàoRS_232®R1OUT: ngõ ra TTL
T1OUT : ngõ ra RS_232®T1 IN :ngõ vào TTL
C1+, C1-: tụ C1= 10mF bên ngoài
C2+, C2-: tụ C2= 10mF bên ngoài
+V: nguồn +10V
-V: nguồn -10V
VCC,GND: nguồn cung cấp đơn cực +5V
PHẦN III
Chương I
Chương III :
CHƯƠNG TRÌNH TRUYỀN THÔNG BẰNG NGÔN NGỮ
VISUAL BASIC 6.0
Các thuộc Sự mô tả
tính
CommPort Đặt và trả lại số cổng truyền thông
Input(nhập Trả lại và loại bỏ các ký tự khỏi bộ đệm nhận
vào)
Output(xuất ra) Viết một xâu ký tự tới vào bộ đệm truyền
PortOpen Mở/Đóng một cổng (tùy thuộc vào thông số) và đặt
thông số cho cổng .
Settings Đặt và trả lại các tham số truyền thông như :tốc độ truyền
theo bit ,chẵn lẻ ,số các bit dữ liệu ,…
Thí dụ sau đây chỉ ra cách truyền thông qua cổng nối tiếp có thể được
tiến hành như thế nào bằng cách sử dụng một Modem.
Thuộc tính Settings đặt và trả lại các thông số truyền thông cho cổng
RS-232, như tốc độ baud, tính chẵn lẻ, số bit dữ liệu và số các bit dừng.
Cú pháp của câu lệnh là :
[form.]Mscomm1.Settings [=paramString$]
Trong khi thiết kế (design time) ta có thể đặt Portnumber% bằng một
giá trị nằm trong khoảng từ 1 đến 16 (giá trị mặc định là 1). Trước khi dùng
lệnh PortOpen phải thiết lập cổng bằng CommPort. Nếu ta dùng thuộc tính
PortOpen trước khi thiết lập cổng bằng CommPort thì điều khiển truyền thông
sinh ra lỗi 68 (cổng không tồn tại).
Kiểu dữ liệu : Integer
Thông số thiết lập là True để mở cổng, còn False để đóng (giải phóng)
cổng và xóa nội dung các bộ đệm nhận và truyền MSComm tự động đóng
cổng nối tiếp khi ứng dụng kết thúc (Terminated).
Trước khi dùng thuộc tính này (PortOpen), phải đặt thông số cổng bằng
thuộc tính CommPort với một giá trị hợp lệ, nếu ta quên đi thuộc tính này lỗi
68 sẽ phát sinh.
Thí dụ sau đây mở cổng truyền thông số 1 (COM1) với tốc độ baud là
4800 baud, không kiểm tra tính chẵn lẻ, 8 bit dữ liệu, 1 bit stop:
MSComm1.Settings = “4800 ,N ,8 ,1”
MSComm1.CommPort=1
MSComm1.PortOpen=True
Kiểu dữ liệu : Boolean.
Các thuộc tính phục vụ việc nhập dữ liệu (Input ,InBufferCount
và InBufferSize)
a. Thuộc tính Input :
Thuộc tính Input trả lại và xóa bỏ một chuỗi ký tự từ bộ đệm nhận.
Thuộc tính này không sẵn có trong khi thiết kế và là chỉ đọc (Read_only) khi
chạy chương trình. Cú pháp của câu lệnh là :
[form.] MSComm.Input
Thuộc tính này có liên quan đến kích thước bộ đệm nhận. Giá trị mặc
định là 1024 bytes. Kích thước của bộ đệm phải được đặt sao cho có thể cất
giữ được số lớn nhất của các ký tự sẽ được nhận trước khi chương trình ứng
dụng có thể đọc chúng từ bộ đệm, trừ khi ta làm việc ở chế độ bắt tay
(handshaking).
Kiểu dữ liệu của thuộc tính này là Integer.
c. Thuộc tính InBufferCount:
Thuộc tính InBufferCount trả lại số ký tự trong bộ đệm nhận. Nó cũng
có thể được sử dụng để xóa bộ đệm bằng cách đặt số của các ký tự bằng 0.
Thuộc tính này không có trong thời gian thiết kế chương trình (design time).
Cú pháp câu lệnh như sau:
[form.]MSComm.InBufferCount [=count%]
Ta có thể xóa bộ đệm nhận bằng cách đặt thuộc tính InBufferCount = 0.
Kiểu dữ liệu của thuộc tính này là Integer.
Giá trị mặc định của thuộc tính này là 512 bytes. Không nên nhầm lẫn giữa
hai thuộc tính OutBufferCount và OutBufferSize với nhau. Thuộc tính
OutBufferCount nói lên số bytes hiện đang có trong bộ đệm truyền, còn
OutBufferSize quy định tổng kích thước của bộ đệm truyền. Không nên để
kích thước bộ đệm truyền quá lớn. Tuy nhiên nếu để quá nhỏ thì sẽ xảy ra
hiện tượng tràn dữ liệu (trừ khi làm việc ở chế độ bắt tay). Thông thường nên
bắt đầu với kích thước bộ đệm truyền là 512 bytes. Nếu lỗi tràn xảy ra thì phải
tăng kích thước bộ đệm cho thích hợp với ứng dụng hiện tại.
Kiểu dữ liệu của thuộc tính này Integer.
c. Thuộc tính OutBufferCount :
Thuộc tính OutBufferCount trả lại số ký tự trong bộ đệm truyền. Nhờ
thuộc tính này ta có thể xóa nội dung bộ đệm truyền bằng cách đặt giá trị của
OutBufferCount=0. Cú pháp của câu lệnh là :
[form.]MSComm.OutBufferCount [=value%]
Xác lập bằng 0 để làm mất khả năng phát sinh sự kiện OnComm khi
nhận các ký tự .Xác lập bằng 1,chẳng hạn, để làm phát sinh sự kiện
OnComm mỗi khi có 1 ký tự được nhận vào bộ đệm nhận
Kiểu dữ liệu của thuộc tính này : Integer
§ Hàm ComInput
Trả lại và xóa chuỗi ký tự ở bộ đệm nhận .Cú pháp như sau :
ComInput(ByVal hwnd As Integer ,LpData as Any ,ByVal do Data as Integer )
As Integer
Hàm này tương tự như thuộc tính Input nhưng trả lại số byte nhận được .
§ Hàm ComOutput
Viết một chuỗi ký tự vào bộ đệm truyền .Cú pháp như sau :
ComOutput(ByVal hwnd As Integer ,LpData as Any ,ByVal do Data as Integer
) As Integer
Số
Mô tả Số lỗi Mô tả
lỗi
380 Giá trị thuộc tính không hợp lệ 8009 Lỗi ở các thông số mặc định
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
NhietdoP01 = Asc(Byte2)
txtNhietDoP01.Text = Val(NhietdoP01) 'hien thi
nhiet do
SoNguoiP01 = Asc(Byte3)
TxtSoNguoiP01.Text = Val(SoNguoiP01) 'hien thi so
nguoi
TB:
i = i + 1
End Sub