You are on page 1of 109

PHẦN I

GIỚI THIỆU ĐỀ TÀI


Chương I
TỔNG QUAN VỀ ĐỀ TÀI ĐIỀU KHIỂN VÀ GIÁM SÁT TOÀ NHÀ
BẰNG VI XỬ LÝ 89C51
I. Yêu cầu của đề tài:
Trong cuộc sống hiện tại, khoa học kỹ thuật phát triển rất nhanh, những
công cụ ra đời sẽ giúp giải phóng sự lao động trí óc: nghiên cứu, cải tiến,
sáng tạo. Chỉ tiêu của khoa học kỹ thuật là làm sao nâng cao được chất
lượng và hiệu suất công việc, hầu như công nghệ tự động ra đời là đáp ứng
nhu cầu đó. Cho nên, em đã nghiên cứu về đề tài “ Điều khiển giám sát nhà
cao tầng dùng vi xử lý 89C51 qua mạng RS-485. Các kít vi xử lý này có thể
hoạt động hoàn toàn độc lập theo một chương trình lập sẵn. Bên cạnh đó,
chúng còn có thể được giám sát và điều khiển các thiết bị trong từng phòng
thông qua gởi lệnh đến đúng kít vi xử lý cần điều khiển để thi hành lệnh đó.
Ngoài việc điều khiển các thiết bị dùng điện trong phòng, ta còn có thể đảm
bảo an ninh cho từng phòng bằng hệ thống phát hiện cháy, phát hiện trộm
bằng cảm biến quang.
Một chuyên gia về công nghệ nhà thông minh ( Home Automation ) –
Kenne P.Wacks – đã viết một bài báo giới thiệu về ngôi nhà thông minh như
sau:
“ Hơn 6 năm qua, một công nghệ mới gọi là công nghệ nhà thông minh
đã được nghiên cứu và phát triển. Công nghệ này sẽ tạo nên một thế hệ mới
của các thiết bị cung cấp cho người dùng chúng. Những công nghệ trước đó
cùng với khái niệm ngôi nhà thông minh sau này sẽ tạo nên những sản phẩm
và loại hình dịch vụ mới mẻ trong tương lai. Một số ít các công ty đang giới
thiệu về ngôi nhà tự động. Một vài công ty lớn và các viện nghiện cứu đang
thăm dò công nghệ mới nhưng đầy tiềm năng này.
Mạng truyền thông trong nhà sẽ cung cấp những cơ sở hạ tầng để liên
kết các thiết bị cảm biến, bộ điều khiển và bảng điều khiển trong nhà. Điều
này sẽ trở nên khả thi bằng cách tạo ra sự phát triển công nghệ truyền thông
trong những ngôi nhà tự động.
Trong ngôi nhà thông minh từ “thiết bị” không chỉ đề cập đến các dụng
cụ trong nhà bếp, thiết bị video/audio, các hệ thống có thể dịch chuyển , các
thiết bị chiếu sáng, thiết bị sưởi ấm, làm lạnh, hệ thống an ninh... Công nghệ
này sẽ bật đèn xanh cho các công ty nghiên cứu cho ra đời những sản phẩm
và hình thức dịch vụ mới. Các sản phẩm này sẽ có chung điểm tương đồng
nào đó hay là những thuộc tính tương tự nhau. Các thuộc tính đó là:
 Vai trò của các thiết bị trong nhà thông minh: hầu hết các thiết bị
trong nhà đều có vỏ bằng nhựa hay kim loại. Một vài thiết bị vận hành độc lập
với các thiết bị khác. Tuy nhiên cũng có những dụng cụ cần có một thiết bị
khác điều khiển nó. Các thiết bị trong ngôi nhà thông minh đều có thể truyền
dữ liệu. Ta sẽ nhóm các thiết bị này lại chung một nhóm. Ví dụ: hệ thống an
ninh, hệ thống Audio/Video. Trong tương lai các hệ thống này có thể cho
phép máy giặt hay máy rửa chén yêu cầu bộ phận nung nóng nước, chuẩn bị
nước nóng khi chúng cần đến.
 Sự hợp nhất các chuẩn truyền thông: các thiết bị trong tương lai
đều có một chuẩn truyền thông chung, có cùng dây nối đặc biệt. Tiêu chuẩn
của ngôi nhà thông minh là sẽ làm nhẹ bớt đi công việc của các nhà sản xuất
về việc phải sáng chế ra giao thức truyền thông và cung cấp các đường dây
dẫn dữ liệu.
 Yêu cầu của đề tài mà em được giao:
 Thiết kế phần cứng mạch báo cháy tự động.
 Mạch động lực điều khiển thiết bị dùng điện bằng vi xử lý.
 Mạch phát hiện trộm bằng cảm biến: dùng LED hồng ngoại.
 Mạch giao tiếp máy tính của từng vi xử lý.
 Lập trình giao tiếp bằng ngôn ngữ visual basic.

II. Hướng thực hiện đề tài


Để thực hiện được phần cứng đảm bảo yêu cầu như trên, em đã thiết
kế mạch mô phỏng cảm biến quang phát hiện trộm và cảm biến quang đếm
người ra vào phòng. Do mạch cảm biến cháy có giá trị rất cao nên em đã
dùng một IC đo nhiệt độ để mô phỏng. Đó là IC nhiệt LM 335. Dùng vi xử lý
89C51 để điều khiển mạch động lực đóng tắt các thiết bị.
Chuẩn truyền thông nối tiếp thông dụng hiện nay là RS-232C, tuy nhiên
chuẩn truyền thông này chỉ dùng truyền số liệu trên khoảng cách ngắn (15m).
Nên để có thể truyền dữ liệu từ kit vi xử lý về máy tính ở khoảng cách xa hơn
ta dùng chuẩn RS-485. Để chuyển đổi từ chuẩn RS-232C sang chuẩn RS-
485 ta cần phải có một mạch điện chuyển đổi.
Kit vi xử lí
I
3 TXD
7 RTS Max 75176
PC 232
2 RXD
Kit vi xử lí
II

Sơ đồ khối mạch kết nối giữa máy tính và các kit vi xử lí

Sơ đồ khối mạch chuyển đổi như sau:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 2
Kit vi xử lý em thiết kế có những chức năng sau:
 Đo nhiệt độ hiện tại trong phòng hiển thị lên LED 7 đoạn, ngoài chức
năng đo nhiệt độ, mạch này còn thay thế cho cảm biến cháy. Khi nhiệt độ trên
IC LM335 tăng lên, tùy theo từng mức được lập sẵn trong chương trình mà
nó sẽ báo chuông, hay sẽ gởi dữ liệu về máy tính để cho biết trạng thái hiện
tại trong phòng theo giao thức truyền dữ liệu theo kiểu hỏi vòng.
 Ngoài ra, mạch còn có chức năng đếm số người đi ra hay vào
phòng. Trong phòng để đảm bảo tính tự động hoàn toàn sẽ không có công
tắc điện của những thiết bị mà vi xử lý có thể điều khiển. Nếu số người trong
phòng lớn hơn hay bằng 1 thì vi xử lý sẽ gởi một tín hiệu đến mạch động lực
kích đóng các thiết bị như quạt, máy lạnh, đèn. Nếu người trong phòng là
không thì vi xử lý sẽ gởi một tín hiệu đến mạch động lực tắt các thiết bị trong
phòng. Tuy nhiên, trên mạch có hai nút nhấn hay một số nút nhấn để người
trong phòng có thể điều khiển có tín hiệu hồi tiếp về cho nên vi xử lý sẽ nhận
biết các thiết bị đó đang đóng hay mở. Khi người dùng nhấn nút tương ứng
thì tùy vào trạng thái của thiết bị mà vi xử lý sẽ kích đóng hay ngắt thiết bị đó.
Phần này sẽ làm cho mạch được linh động, không tuân theo chương trình
phần mềm cài sẵn một cách cứng ngắt.
 Giả sử khi nhiệt độ ngoài trời giảm xuống khoảng 15oC thì cũng
không cần bật máy lạnh làm gì . Tuy nhiên, vi xử lý cứ nhận thấy có người
trong phòng là nó sẽ đóng nguồn cho máy lạnh hoạt động. Người trong
phòng có thể tắt máy lạnh bằng nút nhấn trên mạch vi xử lý. Ta có thể khắc
phục được nhược điểm này bằng cách viết chương trình cho vi xử lý so sánh
nhiệt độ hiện tại trong phòng với nhiệt độ chuẩn ( 15oC chẳng hạn ). Nếu
nhiệt độ đo được bé hơn 15oC thì sẽ tắt máy lạnh đi. Do mạch sử dụng ADC
0809 sai số tương đối không nhiều, tuy nhiên do mạch gia công tín hiệu ra
của IC nhiệt LM335 cho nên nhiệt độ càng thấp thì áp ra càng nhỏ và ADC sẽ
đổi ra sai số tương đối cao. Sai số này là do mạch gia công gây ra đồng thời
cộng thêm sai số của chính bản thân ADC 0809. Cho nên không đảm bảo
rằng mạch hoạt động đúng như thiết kế ở nhiệt độ nhỏ hơn 15oC.
 Mạch cảm biến quang dùng để phát hiện trộm đặt ở những thiết bị
hay dụng cụ cần gìn giữ.

III. Vấn đề kết nối mạng


Thuật ngữ mạng đã trở nên rất quen thuộc khi mạng thông tin Internet
ngày càng trở nên rất gần gũi với con người chúng ta. Nếu quản lý thiết bị

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 3
trong phòng theo phương pháp thông thường sẽ không kinh tế và tiết kiệm.
Ta cần phải làm sao để tiết kiệm cho được càng nhiều càng tốt. Cho nên để
tránh lãng phí ta nên điều khiển các thiết bị bằng máy tính. Chỉ cần một nhân
viên cũng có thể tắt hay mở thiết bị trong từng phòng. Nếu ta tắt các thiết bị
bằng tay thì sẽ không kinh tế, khi khách ra khỏi phòng mà quên tắt các thiết bị
thì sẽ lãng phí rất nhiều năng lượng điện. Tiết kiệm được phần năng lượng
hao phí đó ta sẽ giúp cho việc giảm giá thành khi kinh doanh cho thuê phòng
chẳng hạn.
Máy tính có khả năng đóng tắt các thiết bị thông qua vi xử lý, đồng lưu
trữ trạng thái các thiết bị trước đó.

PC
RXD RTS TXD

Khối chuyển đổi


RS-485 sang R-232

B A

A B B A B A

Khối chuyển đổi Khối chuyển đổi Khối chuyển đổi


mức TTL sang RS- mức TTL sang RS- mức TTL sang RS-
485 485 485
RXD TXD Điều RXD TXD Điều RXD TXD Điều
khiển khiển khiển

Kit vi xử lí phòng 1 Kit vi xử lí phòng 2 Kit vi xử lí phòng 3

Sơ đồ khối mạch kết nối giữa máy tính và các kit vi


xử lí
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 4
Chương II
GIỚI THIỆU VỀ CÁC MẠCH BÁO CHÁY
Cảm biến dựa vào các đặc tính vật lý của vật liệu, các hiện tượng vật lý
để chuyển đổi các đại lượng phi điện thành các tín hiệu điện để đơn giản
trong quá trình đo lường và tính toán.
Mô tả toán học của các cảm biến là một hàm truyền được ký hiệu là H.
Phương trình mô tả cảm biến được biểu diễn như sau:
Đại lượng ra (điện)=H x đại lượng vào (phi điện)
· Các đặc tính chuẩn của cảm biến:
_ Độ nhạy.
- _ Độ ổn định
_ Nhiễu (có khả năng hoạt động trong mọi trường có tín
hiệu gây nhiễu hay nhiễu do chính cảm biến sinh ra trong quá
trình hoạt động).
_ Tầm đo .
_ Độ tuyến tính (cảm biến có độ tuyến tính càng cao càng
tốt).
· Hệ thống báo cháy thường gồm 3 loại mạch báo cháy thông
dụng:
_ Mạch báo cháy nhiệt.
_ Mạch báo cháy khói.
_ Mạch báo cháy lửa.
Hầu hết các linh kiện điện tử đều có đặc tính nhiệt thay đổi theo nhiệt
độ. Nhưng để làm cảm biến ta chỉ chọn vật liệu có độ nhạy cao và hàm truyền
tốt mà thôi.
Đây là loại cảm biến tương đối phức tạp và tinh vi, sử dụng các linh
kiện điện tử chuyên dụng. Các linh kiện điện tử này có khá nhiều trên thị
trường linh, kiện ở Việt Nam hiện nay. Nó sử dung nguyên tắc dòng hay áp
trên các linh, kiện này sẽ thay đổi khi nhiệt độ tại nơi đặt thiết bị thay đổi. Tùy
theo loại mà có thể sẽ tăng hay giảm các đại lượng điện theo nhiệt độ. Loại
cảm biến này rất nhạy nhưng nó sẽ rất gây ra tình trạng báo động nhầm khi
có một nguồn nhiệt để gần cảm biến. Ví dụ như thân nhiệt con người chẳng
hạn.
I. Chuyển đổi nhiệt điện :
Chuyển đổi nhiệt điện là những chuyển đổi dựa trên các quá trình nhiệt
như đốt nóng, làm lạnh, trao đổi nhiệt… Thực tế khi đo lường các đại lượng
không điện theo phương pháp điện thường dùng hai hiện tượng, đó ( là hiệu
ứng nhiệt điện và hiệu ứng thay đổi nhiệt trở của dây dẫn hay chất bán dẫn
khi nhiệt độ thay đổi.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 5
Tương ứng với hai hiện tượng trên, người ta phân thành hai loại:
chuyển đổi cặp nhiệt điện và chuyển đổi nhiệt điện trở.
1. Chuyển đổi cặp nhiệt điện:
a. Nguyên lý làm việc của cặp nhiệt điện : chủ yếu dựa trên
hai hiện tượng sau:
Nếu hai dây dẫn khác nhau nối với nhau tại hai điểm 1 và 2, và một
trong hai điểm đó ( ví dụ ta lấy tại điểm 1) được đốt nóng thì trong mạch sẽ
xuất hiện một dòng điện gây bởi sức điện động gọi là sức điện động nhiệt
điện, là hiệu số các hàm số nhiệt độ
ET = f(t1)- f(t2)
Mạch điện như còn gọi là cặp nhiệt điện hay cặp điện ngẫu.
Điểm được đốt nóng gọi là đầu công tắc ( điểm 1 ), điểm còn lại gọi là
đầu tự do( điểm thứ 2 ) là hằng số f(t2)=const thì:
ET = f(t1) – C
Biểu thức trên là cơ sở của phép đo nhiệt độ bằng cặp nhiệt điện.
Theo phương pháp này, việc đo nhiệt độ t1 sẽ dẫn đến việc đo sức điện động
của cặp nhiệt điện khi giữ cố định nhiệt độ đầu tự do của nó.
Vật liệu dùng để chế tạo cặp nhiệt điện ngẫu cần đảm bảo các yêu cầu
sau: quan hệ giữa sức điện động nhiệt điện với nhiệt độ là một hàm đơn trị,
tính chất nhiệt điện không thay đổi, độ bền hóa học và cơ học phải cao, dẫn
nhiệt tốt, có trị số suất điện động nhiệt lớn.
Cặp nhiệt điện được nối với nhau bằng phương pháp hàn đặc biệt và
đặt trong thiết bị bảo vệ nhằm tránh bị ăn mòn hóa học, thiết bị này được chế
tạo từ vật liệu bền cơ học, không thấm khí, không bị ăn mòn.
Thiết bị trên thường là các ống được chế tạo bằng thép đặc biệt. Đối
với cặp nhiệt điện quí , ống bảo vệ chế tạo bằng thạch anh và gốm. Để cách
điện người ta dùng Amian (3000C ), ống thạch anh ( với 10000C ) hoặc ống
sứ đến 1400C.
β . Những nguyên nhân gây sai số và hiệu chỉnh cho đúng:
Ta biết rằng phương trình biến đổi của cặp nhiệt điện trong trường hợp
chung, một cách gần đúng có thể biểu diễn dưới dạng :
ET =A.t+B.t2 +C.t3
ET : là sức điện động nhiệt .
T: hiệu nhiệt độ giữa đầu công tắc và đầu tự do.
A, B, C :các hằng số phụ thuộc vào vật liệu của dây làm cặp
nhiệt điện.
Và độ nhạy của nó được tính như sau:
ST » A+2Bt +3Ct
Độ nhạy không phải là hằng số mà phụ thuộc vào nhiệt độ.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 6
Do vậy các cặp nhiệt điện công nghiệp thường cho trước một bảng sức
điện động ứng với các nhiệt độ khác nhau trong khoảng 10C với đầu tự do ở
00C.

c. Chuyển đổi nhiệt điện trở:


Nhiệt điện trở là chuyển đổi có điện trở thay đổi theo sự thay đổi nhiệt
độ của nó.
Tùy theo tác dụng nhiệt của dòng điện cung cấp chạy qua chuyển đổi
người ta phân ra: nhiệt điện trở đốt nóng và nhiệt điện trở không đốt nóng.
Trong nhiệt điện trở không đốt nóng dòng điện chạy qua rất nhỏ không
làm tăng nhiệt độ của điện trở và nhiệt độ của nó bằng nhiệt độ môi trường.
Nhiệt điện trở loại này dùng để đo nhiệt độ và các đại lượng cơ học như đo
sự dịch chuyển.
Nhiệt điện trở đốt nóng, dòng điện chạy qua rất lớn làm nhiệt độ của nó
tăng lên cao hơn nhiệt độ môi trường , nên có sự tỏa nhiệt ra môi trường
xung quanh. Nhiệt điện trở loại này được dùng trong việc đo lưu lượng, lưu
tốc của dòng chảy, phân tích các chất hóa học… Nhiệt điện trở được chế tạo
bằng dây hoặc chất bán dẫn. Yêu cầu đối với vật liệu chế tạo là có hệ số
nhiệt độ lớn, bền hóa học, điện trở suất rất lớn, khó nóng chảy…
Để giảm tổn hao nhiệt dẫn, chiều dài của nhiệt điện trở cần phải lớn
hơn đường kính dây gấp nhiều lần .
2. Các loại cảm biến nhiệt:
a. Thermocouples:
Thermocouples biến đổi đại lượng nhiệt độ thành dòng điện hay điện
áp DC nhỏ. Nó gồm có hai dây kim loại khác nhau nối với nhau tại hai đầu
mối nối. Khi các mối nối được đặt tại các vị trí khác nhau, trong dây dẫn xuất
hiện sức điện động. Sức điện động này tỉ lệ với chênh lệch nhiệt độ giữa hai
đầu mối nối. Thermocouples có hệ số nhiệt dương.
b. Thermistor:
Thermistor là điện trở có độ nhạy nhiệt rất cao nhưng phi tuyến vả có
hệ số nhiệt âm. Điện trở giảm phi tuyến đối với sự tăng nhiệt độ vì Thermistor
là điện trở nên dòng điện qua nó sinh ra nhiệt gây nên sai số rất lớn. Do đó
phải hạn chế dòng qua nó rất nhỏ.
c. Điện trở dò nhiệt (RTDs):
Cảm biến loại này dựa vào đặc tính trở phụ thuộc nhiệt độ của vật liệu.
Nó có hệ số nhiệt dương nhỏ, nhưng đo rất chính xác.
d. IC cảm biến nhiệt độ bán dẫn:
IC cảm biến bán dẫn kết hợp với mạch gia công bên trong. Nhờ đó IC
có thể tạo tín hiệu điện áp ra tỷ lệ với nhiệt độ tuyệt đối, với độ nhạy nhiệt và
độ chính xác cao. IC loại này khá phổ biến trên thị trường hiện nay. Với IC
thông dụng hiện nay là LM335.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 7
Ι Ι. Mạch phát hiện khói ( dùng cảm biến quang hay cảm biến
ion ):
1. Mạch phát hiện khói dùng phương pháp quang ( cảm biến
quang):
Loại này được sử dụng linh kiện thu phát quang . Người ta sử dụng
linh kiện phát quang ( LED hồng ngoại ) chiếu một tia sáng qua vùng cần bảo
vệ và một linh kiện thu quang ( Photodiode, Phototransistor, quang trở…). Khi
có khói bay lên vùng cần bảo vệ sẽ che chắn hay làm yếu đi cường độ ánh
sáng chiếu vào linh kiện thu. Khi cường độ ánh sáng thay đổi đến một giá trị
nào đó thì bộ cảm biến sẽ nhận dạng được và phát ra tín hiệu báo động.
a. Điện trở quang:
Điện trở quang là một linh kiện bán dẫn thụ động không có lớp chuyển
tiếp PN. Vật liệu để chế tạo điện trở quang là Cds (Cadmiun Sulfid) , CdSe
(Cadmiun Selenid ), ZnS ( Zine Sulfid ) hoặc các tinh thể khác.
Khi bị chiếu ánh sáng, độ dẫn điện ( điện dẫn suất ) của vật liệu bán
dẫn gia tăng do các hạt mang điện tích được gia tăng ra thêm.
s=e(nmn + pmp )
n và p : là mật độ electron và lỗ trống
mn , mp : là độ di động của electron và lổ trống
Với phương trình trên đô dẫn điện có thể gia tăng nhờ hai cách:
_ Gia tăng mật độ các hạt mang điện tích.
_ Gia tăng độ di động hiệu dụng.
 Các đặc tính quan trọng của một điện trở quang : Điện trở
quang có ba đặc tính quan trọng:
Ÿ Độ dẫn suất ( sphot ):
Là hàm số của mật độ năng lượng u với độ dài sóng không thay đổi
của ánh sáng :
sphot (u); l=const.
Ÿ Độ nhạy của quang trở đối với quang phổ:
Đó chính là sự thay đổi dẫn suất sphot hàm số của l khi
mật độ năng lượng không thay đổi :
u= const
 Vận tốc làm việc: Srel(λ )=
σ (λ )
phot

σ 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.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 8
Thời gian trễ được xác định là khoảng thời gian cần thiết để một quang
trở thay đổi còn 35% giá trị của nó (so với lúc được chiếu sáng – khoảng 10
lux trong 1 s) khi không còn được chiếu sáng.
Với cường độ ánh sáng mạnh, quang trở làm việc nhanh hơn. Quang
trở có khuynh hướng làm việc chậm đi khi trời lạnh. Quang trở làm việc chậm
hơn nếu được cất giữ trong bóng tối và làm việc nhanh hơn nếu được cất giữ
ngoài ánh sáng.
 Các đặc tính quan trọng khác của điện trở quang:
 Tiếng ồn –NEP.
 Hệ số nhiệt độ của quang trở
 Điện trở tối ( Dark Reasistance )
 Đặc tính độ dốc
 Điện thế hoạt động
 Công suất tiêu tán cao nhất
 Độ nhạy R[VW-1)
 Điện trở quang với sự gia tăng độ di động mn,p
 Điện trở quang với vật liệu không pha tạp chất
1. Mạch phát hiện khói dùng nguyên lý ion (cảm biến ion):
Dưới tác dụng của các tia phóng xạ và tia Rơnghen, chất khí (khói ) sẽ
bị ion hoá. Nếu bình ion hoá được đặt một điện áp thì các điện tử và ion sẽ
chuyển động có hướng và khi đó sẽ tạo thành dòng điện ion. Khi có dòng
điện sẽ kích hoạt tín hiệu báo động.
Dòng ion phụ thuộc vào điện áp đặt lên bình, tính chất của tác nhân
ion, môi trường ion hóa, vật liệu của thành bình và các vật thể khác nằm trên
đường đi của các tác nhân ion hóa. Các tác nhân ion hóa là các tia phóng xạ
như tia a, tia b, tia g, tia Ronghen.
Chuyển đổi ion hóa có thể nhiều loại khác nhau, song bất kỳ loại nào
cũng cần có nguồn phóng xạ và thiết bị thu các suất phẩm của quá trình ion
hóa để tạo thành dòng điện. Thiết bị đó gọi là bộ thu bức xạ.
Bộ thu bức xạ có nhiệm vụ biến đổi năng lượng bức xạ hạt nhân thành
điện năng. Bộ thu bức xạ dựa vào hiện tượng ion hóa các tia phóng xạ đi
qua nó hoặc dựa vào hiện tượng ion hóa chất khí khi cho tia phóng xạ đi qua
nó hoặc dựa vào hiện tượng phát quang của một số chất dưới tác dụng của
năng lượng bức xạ hạt nhân.
Có ba loại bình thu bức xạ:
 Bình ion hóa .
 Máy đếm phóng điện trong chất khí.
 Máy đếm nhấp nháy.
Trong hình đặc tính Volt Ampere của bình ion hóa và cấu tạo của một
bình ion hóa bằng tia a. Dòng quang điện thường rất nhỏ( 10-3 _10-7 )mA.
Điện áp đặt lên điện cực cao áp ( vỏ bình) cỡ hàng nghìn Volt, dòng điện ion
lấy qua cực lưới được khuếch đại bằng các bộ khuếch đại đo lường.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 9
Để tránh dòng điện rò, cách điện giữa các cực lưới và vỏ (cực cao áp)
phải đạt tới (108 – 1013 ) MW, vì thế điện cực lưới được bọc bởi cực bảo vệ
nối đất với mạch đo lường để thu dòng điện rò từ cực cao áp.
Người ta sử dụng một lượng nhỏ chất phóng xạ để ion hóa không khí
trong hộp cảm biến. Không khí bị ion hóa sẽ dẫn điện và tạo thành một dòng
điện chạy giữa hai điện cực đã được nạp điện. Khi các phần tử khói lọt vào
trong vùng cảm nhận được ion hóa sẽ làm tăng điện trở trong vùng cảm nhận
và làm giảm luồng điện giữa hai điện cực. Khi luồng điện giảm xuống tới một
giá trị nào đó thì bộ cảm biến sẽ phát điện và phát tín hiệu báo động.
Nói chung thì loại cảm biến phát hiện khói kiểu ion hóa nhạy hơn và
hiệu quả hơn loại dùng các linh kiện quang điện tử, nhưng linh kiện và vật
liệu rất khó kiếm. Loại phát hiện khói dùng quang dù ít nhạy hơn nhưng linh
kiện rất dễ tìm và lắp đặt tương đối dễ dàng. Tuy nhiên cả hai loại này có thể
báo động nhằm do bụi hay khói lan vào. Cho nên khi thiết kế cần phải xem
xét và qui định nồng độ khói nhất định để thiết bị hoạt động chính xác.
III. Mạch phát hiện cháy :
Dưới tác động của các dòng ánh sáng với bước sóng thích hợp chiếu
vào Catot, điện tử đi từ Catot bị bắn ra, tạo thành dòng điện. Chuyển đổi
quang điện được phân chia thành ba loại:
1. Tế bào quang điện:
Là phần tử quang điện sử dụng hiệu ứng quang điện ngoài. Đó là một
đèn chân không hay có khí mà Catot của nó sẽ phát ra các điện tử dưới tác
dụng của dòng ánh sáng.
2. Quang điện trở:
Là loại chuyển đổi quang điện dựa vào hiệu ứng quang điện. Điện trở
của một vài chất bán dẫn thay đổi dưới tác dụng của dòng ánh sáng. Các
chất có hiệu ứng quang điện trong mạch đó là muối Sunfil Cadmi,…
3. Photo diode:
Là chuyển đổi quang điện, dưới tác dụng của ánh sáng, lớp khóa của
một số mặt ghép các chất bán dẫn sẽ trở thành nguồn dòng điện.
Với hiệu ứng quang điện, ta có thể phát sinh một điện áp ở lớp chuyển
tiếp pn, khi lớp chuyển tiếp này được chiếu sáng. Tùy theo chức năng và cấu
trúc, có thể phân Photodiode thành nhiều loại:

 Diode quang pn.


 Diode quang pin.
 Diode quang loại Schockley.
 Diode quang với các hiệu ứng khác.
Photodiode được dùng với mạch khuếch đại có tổng trở cao:
 Rất tuyến tính.
 Ít nhiễu.
 Dãi tần rộng.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 10
 Nhẹ và có sức bền cơ học.
 Tuổi thọ cao.
IV. Đo nhiệt độ bằng thạch anh:
Một ứng dụng cổ điển của thạch anh là thực hiện bộ dao động có độ
vững lớn, chỉ phụ thuộc vào nhiệt độ. Với tinh thể thạch anh có phương tinh
thể xác định trước nó đặc trưng cho sự thay đổi nhiệt độ ảnh hưởng tần số
dao động.
Ngược lại, khi dùng làm cảm biến đo nhiệt độ, thạch anh có phương tinh thể
làm sao cho tần số dao động gần như tuyến tính với nhiệt độ tinh thể của
thạch anh. Cảm biến này rất chính xác và nhạy, mặt khác việc xác định nhiệt
độ dẫn đến việc đếm tần số có hai điều lợi:
_ Việc đo rất chính xác.
_ Việc chuyển đổi ra dạng số rất dễ dàng với thông tin liên quan
đến tần số.
1. Cộng hưởng cơ của thạch anh:
Trong tinh thể thạch anh được cắt theo dạng tiết diện vuông, tam giác
hoặc tròn, các đặc tính phụ thuộc vào dạng hình học, và kích thước của
chúng cũng như phương tinh thể. Thạch anh là một chất áp điện. Trong
trường hợp mặt phẳng thu điện tích thẳng góc với trục điện sẽ xuất hiện các
điện tích trái dấu trên mặt phẳng. Đó là hiệu ứng áp điện trực tiếp.
_ Một sự thay đổi bề dày của bản thạch anh, nén lại hoặc bè ra
tùy thuộc theo dấu của điện áp khi đưa vào các bề mặt, đó là hiệu ứng áp
điện ngược.
_ Một bản thạch anh có thể xảy ra các dao động cơ liên quan
đến các loại biến dạng khác nhau: sự kéo dài ra, uốn cong, cắt. Tần số dao
động được xác định bởi dạng thức hình học, kích thước và phương của tinh
thể và có thể diễn tả bởi công thức sau:
n c
f =
l ρ
c: Độ lớn đàn hồi, phụ thuộc vào phương tinh thể.
r: Trọng lượng riêng của thạch anh.
l: Kích thước của bản thạch anh theo phương truyền động.
n: Số nguyên ; 1<n <5.
Khi áp vào hai mặt của bản thạch anh 1 điện áp xoay chiều tần số bằng
với tần số dao động có thể, hiệu ứng áp điện ngược xảy ra kéo theo sự dao
động của bản thạch anh. Như thế có thể xây dựng một hiện tượng dao động
cơ điện với sự biến đổi tuần hoàn năng lượng cơ ra năng lượng điện và
ngược lại, và năng lượng mất mát rất bé. Hệ số phẩm chất Q đặc trưng cho
hiện tượng cộng hưởng có được:
Năng lượng cơ hoặc điện cực đại

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 12
_ Cộng hưởng song song, giữa C0 và nhánh L, C, R tần số fp:
1
fp=
2π CL. 1
(1 + C / C 0)
Các tần số này rất gần nhau: (fp-fs)/fs = C/2C0
2. Độ nhạy nhiệt:
Tất cả sự thay đổi nhiệt độ kéo theo 1 sự thay đổi kích thước của bản
dao động, trong lượng riêng và hệ số đàn hồi, kết quả:
n c
_ Một sự thay đổi tần số cộng hưởng cơ: f =
l ρ
_ Một sự thay đổi các giá trị thành phần L,C, R đặc trưng của
bản dao động, về phương diện điện .
Một cách tổng quát: f(T)=f0(1+ aT+bT2+ cT3);T:0C
⇒ ∆f /f0 = aT+ bT2 +cT3 ;với ∆ f=f(T)-f0
`
Các hệ số a, b, c tùy thuộc lực cắt bản dao động.
Với lực cắt LC ( tuyến tính ) về nguyên tắc các hệ số b và c bằng 0. Độ nhạy
nhiệt của tần số cộng hưởng là một hằng số:
∆f
S= =a.f0
∆T
Với a=35,45.10-6/0C và f0= 28,208 MHz thì: S=1000Hz/0C
Lực cắt LC thường dùng đối với bản thạch anh dùng làm cảm biến đo nhiệt
độ.
3. Cách thực hiện nhiệt kế và đo:
Nhiệt kế được thực hiện bằng cách đặt bản thạch anh bên trong hộp
thép chứa Helium mục đích làm tăng sự dẫn nhiệt thạch anh và hộp. Thạch
anh được nối với các phần tử tác động nhờ dây cáp và sẽ tạo nên dao động
với tín hiệu đo em:
em=EmcosWm t với Wm= 2 π fm
fm=f0+ ∆ f và ∆ f=S(T-T0)=ST khi T0 =00C
Với mạch dao động chuẩn bằng thạch anh, tạo nên tín hiệu chuẩn er
tần số f0 độc lập với môi trường.
er=ErcosW0t(W0=2 π f0)
Các tín hiệu em, er được đưa vào mạch thay đổi tần số, mạch nhân chẳng
hạn, sẽ tạo nên tín hiệu V’0 :
V’0=Kemer=E’0[ cos(Wm-W0)t+cos (Wm+W0)t]
Với một mạch lọc thông thấp qua nó giới hạn tần số cao ở đầu ra:
V0=E0cos(Wm-Wr)t=E0 cos 2. π . ∆ f.t

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 13
Một bộ đệm tần số cho phép xác định tần số ∆ f và với S biết được, sẽ
biết T= ∆ f/S.
Đặc tính đo lường của tinh thể thạch anh :
_ Khoảng đo:-80 đến 2500C.
_ Khoảng cách tuyến tính: ± 0,05% khoảng đo.
_ Độ nhạy : 1000Hz/0C.
_ Khả năng đo:0,00010C.
_ Độ nhanh: hằng số thời gian nhiệt 2,5 giây trong nước có vận
tốc 2m/giây.

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

Sơ đồ khối toàn bộ hệ thống điều khiển và giám sát ngôi nhà


( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 15
Kit vi xử lý trong phòng 1 và phòng có cùng sơ đồ khối như sau

Mạch động lực


Mạch hiển thị
đóng cắt các
nhiệt độ
thiết bị
Vi xử lí
Atmel
Mạch hồi tiếp 89C51 Cảm biến quang
trạng thái thiết bị

Mạch gia công Mạch nguồn


tín hiệu đo

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.

II. Thiết kế phần cứng


1. Mạch cảm biến quang:
Sơ đồ mạch như sau:
V CC

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 17
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:
5−2
ILED = = 9 mA
330

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

5−2
ILEDTHU = =9mA
320
Ap đư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 =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:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 18
V CC

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ị:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 19
Sơ đồ nguyên lý mạch động lực như sau:
+12V D4
1 2

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 20
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 VC1 »
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. Ap 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 W : đả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 W
Chọn RW = 120 W, 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ụ 1000m để 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ý.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 21
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.

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

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 mF (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:

R1
R2 10k
1

T IN H IE U C H O N L E D 2 A 1015
1k IC giải

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.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 23
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 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
Tên Chức năng
DIP/SO
mMAX

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 24
1 3 RO Ngõ ra bộ thu :
Nếu A > B là200mV, RO là cao.
Nếu A < B là 200mV , RO là thấp.
2 4 /RE 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.
3 5 DE 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.
4 6 DI Ngõ vào bộ lái :
DI thấp thì A thấp và B cao
DI cao thì Acao và B thấp.
5 7 GND Nối mass.
6 8 A Ngõ vào vộ thu và ngõ ra bộ lái đều không
đảo.
7 1 B Ngõ vào bộ thu và ngõ ra bộ lái đều đảo.
8 2 Vcc 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 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

Tín hiệu vào Tín hiệu ra


/RE DE A-B RO
0 0 ≥ 200mV 1
0 0 ≤ 200mV 0

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 25
0 0 Ngõ vào hở 1
mạch
1 0 X High Z

Sơ đồ mạng half_ duplex RS485:


R 2 R1

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

Sơ đồ mạng RS485 Full_Duplex:


U 4
U4
4 9 R 2 R1 11 3
D E Y B R E
5 10 120 12 2
D I Z 120 A RO
2 12 R4 R 3 10 5
R O A Z DI
3 11 9 4
R E B 120 120 Y D E

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


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

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 RS-232« TTL


RS-232 «TTL

Converter
TTL↔ RS-485
A B

B A B A

Vi xử Con verter Con verter Vi xử


lí 1 TTL↔RS-485 TTL↔RS-485 lí 2

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 27
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ơ đồ
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:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 29
-1 2 V

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 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 ở 0oC 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à 0oC ( -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 m.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 30
+ 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.
VREF 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à 150oC, 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 ).

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 31
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 1oC 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 1oC 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ú.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 32
 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.
a. 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 ):
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 33
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 Địa chỉ Ý nghĩa


PSW.7 CY D7H Cờ nhớ
PSW.6 AC D6H Cờ nhớ phụ
PSW.5 F0 D5H Cờ 0
PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi
PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi
00 : bank 0
01 : bank 1
10 : bank 2
11 : bank 3
PSW.2 OV D2H Cờ tràn
PSW.1 - D1H Dự trữ
PSW.0 P D0H 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 :

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 34
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.
i. 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.
ii. 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 Tên Timer Mô tả
7 GATE 1 Bit cổng , GATE =1 timer chỉ đếm khi INT1=1

6 C/T 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
5 M1 1 Bit 1 chọn mode
4 M0 1 Bit 0 chọn mode
3 Gate 0 Bit cổng ( timer 0)
2 C/T 0 Bit chọn timer/counter
1 M1 0 Bit 1 chọn mode
0 M0 0 Bit 0 chọn mode
Chọn mode :
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 35
M1 M0 Mode Mô tả
0 0 0 Timer 13bit
0 1 1 Timer 16 bit
1 0 2 Timer 8 bit
1 1 3 Timer tách biệt

ι. Thanh ghi TCON :


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

Bit Kíhiệu Địa chỉ bit Môtả


TCON.7 TF1 8FH 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
TCON.6 TR1 8EH Điều khiển ON/ OFF timer1, TR1=1:chạy
TR1=0 :ngừng
TCON.5 TF0 8DH Cờ báo tràn timer 1
TCON.4 TR0 8CH Đ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.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 36
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 Ký hiệu Địa chỉ bit Mô tả


IE.7 EA AFH Cho phép / cấm toàn cục
IE.6 - AEH Không định nghĩa
IE.5 - ADH -
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:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 37
 Đ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.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 38
 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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 39
B. Lưu đồ giải thuật và chương trình vi xử lí:
Lưu đồ giải thuật phải thực hiện được các chức năng như sau:
_ Đo nhiệt độ trong phòng và hiển thị nhiệt độ này lên Panel .
_ Nhiệt độ cao hơn 800C thì báo động bằng chuông.
_ Tự phát hiện ra khi nào thì trong phòng có người thì tự bật đèn và
quạt lên.
_ Tự phát hiện khi nào trong phòng không còn thì tắt các đèn và quạt
đi.
_ Khi có người đi vào phòng mà không qua cửa chính thì sẽ cho đó là
trộm và báo động bằng chuông
I. Lưu đồ giải thuật điều khiển :
_ Giải thuật chương trình chính.
_ Giải thuật chương trình đo nhiệt độ và hiển thị lên Panel.
_ Giải thuật chương trình tự phát hiện người đi vào hay ra qua cử
chính.
_ Giải thuật chương trình điều khiển các thiết bị trong phòng.
_ Giải thuật chương trình phát hiện người vào phòng không qua cửa
chính.
_ Giải thuật chương trình truyền nhận dữ liệu từ máy tính.
1. Giải thuật chương trình chính:
Khi nút Reset được nhấn thì chương trình sẽ nhảy đến địa chỉ 0000h.
Khởi động các thanh ghi điều khiển và các ô nhớ cần thiết. Trong chương
trình chính gồm có:
· Kích khởi ADC 0809 chuyển đổi.
· Delay chờ ADC đổi xong.
· Đọc dữ liệu từ ADC về, xử lí và hiển thị lên LED 7 đoạn.
· Kiểm tra tiếp trạng thái các thiết bị.
· Kiểm tra các nút nhấn có được nhấn hay không. Khi đã thực
hiện xong chu trình trên thì vi xử lí sẽ quay trở lai kích khởi ADC đổi lần tiếp
theo.
· Kiểm tra xem nhiệt độ trong phòng đang nằm trong tầm nào để
gọi các chương trình con phục vụ tương ứng:
 500C£nhiệt độ £ 800C: gọi chương trình con
CHUONG1.
 800C £nhiệt độ £ 1000C: gọi chương trình con
CHUONG2.
 Nhiệt độ ³ 1000C: gọi chương trình con CHUONG3.
· Cấm ngắt truyền, chỉ cho phép vi xử lí nhận, chỉ được
phép truyền khi PC yêu cầu

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 40
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 41
Hiển
So
Có Cho
Đọc
sánh
yêuthịphép
MAIN
cầugiátrị
nhiệt
với đổi
các
từ
độAD
AD
nhiệt
độ chuẩn

Bật tắt các thiết bị

Có trộm

Chuông kêu

Người vào ra Người vào

Số người=1

Bật tắt các thiết bị

Người ra

Số người =0

2
1 3

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 42
1 2 3

Bật tắt các thiết bị

Giao tiếp Đúng địa chỉ

Nhận lệnh

Truyền dữ liệu Bật tắt các thiết bị

MAIN

Lưu đồ giải thuật chương trình chính

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 43
Sotừ
Cất dữ liệu sánh
ADC 0809
vào thanh ghi A

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

Lưu đồ giải thuật chương trình con So Sánh.

Kiểm tra nút nhấn

P2.7=0 Y
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 44

P1.7=0 N Gọi chương trình con


Ret Request
Lưu đồ giải thuật chương trình con kiểm tra nút nhấn.
 Chương trình này dùng để cho phép người dùng có thể yêu cầu tắt mở
các thiết bị theo ý muốn.
Giải thích:

 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.3=1: quạt đang ở trạng thái đóng, yêu cầu vi xử lí thực


hiện việc kích ngắt quạt.
 P1.3=0: quạt đang ở trạng thái ngắt, yêu cầu vi xử lí thực hiện
việc kích ngắt quạt.

 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.

LED phát LED phát


Đi vào Đi ra

LED thu LED thu

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:

 Cờ 1: địa chỉ ô nhớ là 2BH

 Cờ 2: địa chỉ ô nhớ là 2CH

 Cờ 3: địa chỉ ô nhớ là 2DH


Cả 3 cờ này dùng để đánh dấu chân nào của vi xử lí được quét trước,
chân nào chưa được quét. Nguyên nhân, do ta cần kiểm tra một lúc cả hai
chân của vi xử lí –P1.0 và P1.1 để phát hiện chân nào xuống mức 0 trước,
mà vi xử lí thì chỉ có thể kiểm tra từ trên xuống. Khi vi xử lí nhảy đến chương
trình phục vụ ngắt này nó sẽ kiểm tra chân P1.0 đầu tiên, nếu chân này ở
mức 1 nghĩa là cảm biến quang thứ 2 tác động trước. Sau đó vi xử lí sẽ nhảy
xuống kiêm tra chân P1.1 và lại nhạy lên kiểm tra chân P0.0 lần nữa. Các cờ
này còn được dùng để tránh cho các cảm biến quang tác động sai do nhiễu.
Giả sử xảy ra trường hợp chỉ có một trong hai cảm biến quang tác động thì
chương trình sẽ dựa vào trạng thái các cờ này mà thoát khỏi chương trình
phục vụ ngắt để quay về chương trình chính.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 48
Đếm người

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 49
1

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.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 51
2. Chương trình con Người ra, Người vào:

 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 được set: dù cho số người trong phòng có


tăng lên nhưng cũng không gọi chương trình con đóng ngắt
thiết bị. Nghĩa là sẽ là dành phần đóng ngắt thiết bị là do
người dùng điều khiển theo ý muốn. Chỉ khi nào reset thì cờ
yêu cầu mới được xóa, lúc đó nếu số người trong phòng lớn
hơn 1 thì vi xử lí sẽ gọi chương trình con đóng các thiết bị.

 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:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 52
Người vào

Xóa cờ 1, cờ 2, cờ 3

Tăng biến đếm

Biến đếm =1 Y

N
N P1.3=1

Y Mở quạt

P3.5=1 N

Y Mở đèn

Cất biến đếm vào ô nhớ 30h

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.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 54
 Chuong 3 được gọi khi nhiệt độ đo được lớn hơn 1000C.

Chuong 1

Set bit P1.6

R0 ← 5

DELAY1S

Giảm R0

N
R0=0

Xóa P1.6

Ret

Lưu đồ giải thuật chương trình con Chuong


1

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 55
Chuong 2

Chuong 1

Delay 1s

Chuong 1

Ret

Lưu đồ giải thuật chương trình con Chuong 2

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.

Byte đầu tiên Kit giao tiếp


A Kit 1 (phòng P01)
B Kit 2 (phòng P02)
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 57
Byte thứ 2 Nội dung giao tiếp
E Truyền dữ liệu về máy tính
C Điều khiển trạng thái đèn
D Điều khiển trạng thái quạt
Dữ liệu truyền từ vi xử lý lên máy tính gồm 4 byte:
_ Byte đầu tiên xác định địa chỉ của kit đang truyền dữ liệu.
_ Byte thứ 2 chứa nhiệt độ đo được.
_ Byte thứ 3 chứa số người hiện tại trong phòng.
_ Byte thứ 4 cho biết trang thái của đèn, quạt vaà tình trạng an
ninh trong phòng. Tùy theo trạng thái của đèn, quạt cũng như tình trạng an
ninh trong phòng ta sẽ có một byte tương ứng với trạng thái đó.

Byte thứ 4 Đèn Quạt An ninh


O Tắt Tắt An toàn
P Tắt Tắt Không an toàn
Q Tắt Bật An toàn
R Tắt Bật Không an toàn
S Bật Tắt An toàn
T Bật Tắt Không an toàn
U Bật Bật An toàn
X Bật Bật Không an toàn
Bảng mô tả trạng thái của các thiết bị thông qua nội dung trong byte
giao tiếp.
Ta thấy rằng chỉ khi nào vi xử lý nhận được ký tự “E” thì nó mới đặt
chân P3.4 lên mức 1 cho phép truyền, sau khi truyền xong 4 byte thì chân
P3.4 được đặt về mức 0 chờ nhận yêu cầu từ máy tính.
Tốc độ Baud em thiết kế cho mạng RS-485 trong đề tài là 9600. Mặc
dù vi xử lý hoàn toàn có thể hồ trợ khi ta nậng tốc độ Baud lên đến 19200,
nhưng trong mạng truyền thông để quản lý tòa nhà như em đanh nghiên cứu
thi công thì cũng không cần đạt tốc độ cao trong truyền dữ liệu, nên em chọn
tốc độ Baud là 9600. Với tốc độ baud như trên thì để truyền 1 byte vi xử lý
cần một khoảng thời gian xấp xỉ 1ms. Nếu ta dùng 2 hàm chuẩn của vi xử lý
trong truyền, nhận dữ liệu thì ta sẽ mất đi 1ms không làm gì cả.
Hàm nhân dữ liệu:
Receive:
Wait: jnb ri,wait
Clr ri
Mov a,sbuf
ret
Hàm truyền dữ liệu:
Transmit:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 58
Wait: jnb ti,wait
Clr ti
Mov sbf,a
ret

Để 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.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 59
Start

Cất giữ nội dung các thanh


ghi và các cờ

Đúng địa chỉ N delay

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

Điều khiển quạt Y

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 60
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 61
Ngắt Serial Port

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 giao tiếp với máy tính

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 62
C. Chương trình vi xử lý:

MCS-51 MACRO ASSEMBLER LVTN


01/12/:2 PAGE 1
DOS 5.0 (038-N) MCS-51 MACRO ASSEMBLER, V2.2
OBJECT MODULE PLACED IN LVTN.OBJ
ASSEMBLER INVOKED BY: D:\MCS51\ASM51.EXE LVTN.ASM

CO1 EQU 2BH


CO0 EQU 2CH
CO2 EQU 09H
CO3 EQU 0AH
COYEUCAU EQU 2AH
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0ISR
ORG 000BH
LJMP T0ISR
ORG 0013H
LJMP EXT1ISR
ORG 0023H
LJMP SPISR
ORG 0030H
MAIN:
MOV SCON,#01010010B
SETB IE.4 ; Cho phép ngắt Serial Port
MOV IE,#82H ; Cho phép ngắt timer 0
SETB IE.0 ; Cho phép ngắt ngoài 1
SETB IE.2 ; Cho phép ngắt ngoài 0
MOV TMOD,#21H ; Timer 0 mode 1, timer 1 mode 2
SETB IT0 ; Ngắt ngoài 0 tác động cạnh xuống
SETB IT1 ; Ngắt ngoài 1 tác động cạnh xuống
MOV 50H,#0 ; Các ô nhớ trung gian dùng hiển thị LED
MOV 51H,#0
MOV 52H,#0
MOV 53H,#0
MOV A,87H ; Lấy giá trị từ thanh ghi PCON
SETB ACC.7 ; Set bit 7 của thanh ghi PCON
MOV 87H,A
MOV TH1,#-6
MOV TL1,#-6 ; 9600 BAUD
SETB TR1 ; Cho phép timer 1
MOV R0,#3FH
MOV 3FH,#'A' ;Ô nhớ dùng để lưu địa chỉ của vi xử lý
MOV R1,#50H
MOV R3,#5
MOV R2,#100

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 63
MOV 30H,#2
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
CLR CO1 ; cờ được dùng để nhận biết người vào
CLR CO0 ; cờ được dùng để nhận biết người ra
CLR CO2 ; cờ được dùng để nhận biết đã truyền xong 4 byte
CLR CO3 ; cờ được dùng để xác định vi xử lý đã nhận đúng địa
chỉ
CLR P3.4 ; cho phép nhận tín hiệu điều khiển từ máy tính
SETB P1.2 ;tắt quạt
SETB P1.4 ; tắt đèn
SETB P1.5 ;bật nguồn
SETB P1.6 ; cấm chuông kêu
SETB 08H ; cờ cho phép AD đổi
CLR 04H ; cờ gọi chuong1
CLR 05H ; cờ gọi chuong2
CLR 06H ; cờ gọi chuong3
SETB 07H ; cờ cho biết đã delay 500ms
SETB TF0 ; ép ngắt timer 0
SJMP $
T0ISR:
CLR TR0 ; ngừng timer
CLR TF0 ; xóa cờ ngắt
JB 08H,START ; nếu cờ 08h được set thì cho phép đổi AD
LCALL OUT ;hiển thị LED
LCAL L REQUEST ;kiểm tra có yêu cầu bật , tắt thiết bị
DJNZ R2,EXIT ;tạo delay 500ms
MOV R2,#100
DJNZ R3,EXIT
MOV R3,#5
SETB 08H
CPL 07H
SJMP EXIT
WAIT_RETURN:
SJMP EXIT
START:
LCALL READAD ; cho phép AD đổi
LCALL REQUEST ;kiểm tra có yêu cầu bật , tắt thiết bị
LCALL CHECKFLAG ; tùy theo trạng thái của các thiết bị mà đưa vào ô nhớ
42h
; giá trị tương ứng
LCALL COMPARE ; so sánh nhiệt độ đo với nhiệt độ chuẩn
CLR 08H ; cấm AD đổi đến 500ms sau
SJMP EXIT
EXIT:
JB 06H,SKIP5 ; kiểm tra có goi chuong1 không?
JB 05H,SKIP6 ; kiểm tra có goi chuong2 không?
JB 04H,SKIP7 ; kiểm tra có goi chuong3 không?
SJMP RETURN
SKIP5:
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 64
CLR P1.6 ; cho phép chuông kêu
LCALL CHUONG3 ; gọi chuong3
SJMP RETURN
SKIP6:
CLR P1.6
LCALL CHUONG2 ; gọi chuong 2
SJMP RETURN
SKIP7:
CLR P1.6
LCALL CHUONG1 ; gọi chuong1
SJMP RETURN
RETURN:
MOV TH0,#HIGH(-1000) ; timer 0 tràn sau 1ms
MOV TL0,#LOW(-1000)
SETB TR0 ; cho phép timer 0 chạy
RETI
READAD:
CLR P3.6 ; tạo xung Start cho AD đổi
SETB P3.6
CLR P3.6
PUSH 00H
MOV R0,#60 ; tạo delay 120us
DJNZ R0,$
POP 00H
PUSH ACC
MOV A,P0 ;đọc giá trị đổi từ AD
MOV 40H,P0 ; cất giá trị nhiệt độ vào 40h
MOV B,#5 ; nhân giá trị nhiệt độ với 5 để hiển thị lên LED 1 số
thập ;phân
MUL AB
MOV R6,A
MOV R7,B
LCALL BINTOBCD ; chuyển từ nhị phân sang mã BCD
POP ACC
PUSH ACC
MOV A,R7
ANL A,#0FH ; hiển thị LED hàng nghìn
ORL A,#0E0H ; chọn LED hàng nghìn
MOV 52H,A
MOV A,R7
SWAP A ;hiển thị LED hàng trăm
ANL A,#0FH
ORL A,#0F0H ; chọn LED hàng trăm
MOV 53H,A
MOV A,R6
ANL A,#0FH ; hiển thị LED hàng chục
ORL A,#0C0H ; chọn LED hàng chục
MOV 50H,A
MOV A,R6
SWAP A
ANL A,#0FH ; hiển thị LED hàng đơn vị
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 65
ORL A,#0D0H ; chọn LED hàng đơn vị
MOV 51H,A
POP ACC
RET
;******************************************************************************
; CHƯƠNG TRÌNH CON CHUYỂN TỪ SỐ NHỊ PHÂN SANG SỐ BCD
; Giá trị nhi phân cần đổi cất trong R7:R6
; Giá trị BCD sau khi đổi xong cất trong 2 thanh ghi R7:R6
; R7 chứa số hàng trăm và số hàng ngàn
; R6 chứa số hàng chục và số hàng đơn vị
;*****************************************************************************
BINTOBCD:
PUSH ACC
PUSH B
MOV B,#10
LCALL DIV_16_8
PUSH B
MOV B,#10
LCALL DIV_16_8
PUSH B
MOV B,#10
MOV A,R6
DIV AB
PUSH B
SWAP A
POP B
ORL A,B
MOV R7,A
POP B
MOV A,B
SWAP A
POP B
ORL A,B
MOV R6,A
POP B
POP ACC
RET
DIV_16_8:
PUSH 02H
PUSH ACC
MOV R2,#16
CLR A
DIVIDE:
XCH A,R6
CLR C
RLC A
XCH A,R6
XCH A,R7
RLC A
XCH A,R7
RLC A
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 66
CJNE A,B,NOTEQUAL
SJMP AGREATEREQB
NOTEQUAL:
JC BELOW
AGREATEREQB:
SUBB A,B
XCH A,R6
ORL A,#1
XCH A,R6
BELOW:
DJNZ R2,DIVIDE
XCH A,B
POP ACC
POP 02H
RET
;*******************************************************************************
; CHƯƠNG TRÌNH CON HIỂN THỊ GIÁ TRỊ TRONG CÁC Ô NHỚ TRUNG GIAN RA
; LED
;*******************************************************************************
OUT:
PUSH ACC
MOV A,@R1
MOV P2,A
POP ACC
INC R1
CJNE R1,#54H,EXITOUT
MOV R1,#50H
EXITOUT:
RET
;*******************************************************************************
; CHƯƠNG TRÌNH CON SO SÁNH NHIỆT ĐỘ ĐO VỚI NHIỆT ĐỘ CHUẨN
; Tạo tín hiệu chuông báo động khi nhiệt độ lớn hơn mức cho phép
;******************************************************************************
COMPARE:
PUSH ACC
MOV A,40H
CJNE A,#100,$+3
JC LESSTHAN100 ; nhiệt độ lớn hơn 1000C thì cho chuông kêu 3 lần
CLR P1.5
SETB 06H ; set cờ để gọi chuông
CLR P1.6 ; kích chuông kêu
SJMP EXITCOMPARE
LESSTHAN100:
MOV A,40H
CJNE A,#80,$+3 ; nếu lớn hơn 800C thì gọi chuông 2
JC LESSTHAN80
CLR P1.6 ; kích chuông kêu
SETB 05H ; set cờ để gọi chuông
SJMP EXITCOMPARE
LESSTHAN80:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 67
MOV A,40H
CJNE A,#50,$+3
JC EXITCOMPARE
CLR P1.6
SETB 04H
SJMP EXITCOMPARE
EXITCOMPARE:
POP ACC
RET
;
;*******************************************************************************
; CHƯƠNG TRÌNH CON CHUONG3
; Chuông kêu 3 lần, mỗi lần 5s và khoảng cách giữa hai lần là 1s
;******************************************************************************
;
CHUONG3:
JNB 07H,EXITCHUONG3
PUSH ACC
MOV A,30H
INC A
CPL P1.6
MOV 30H,A
CJNE A,#5,$+3
MOV 30H,A
POP ACC
JC EXITCHUONG3
CLR 06H
MOV 30H,#0
SETB P1.6
EXITCHUONG3:
RET
;
;
;
;
;*******************************************************************************
; CHƯƠNG TRÌNH CON CHUONG2
; Gọi khi nhiệt độ lớn hơn 800C
;******************************************************************************
;
CHUONG2:
JNB 07H,EXITCHUONG2
INC 31H
CPL P1.6
PUSH ACC
MOV A,31H
MOV 31H,A
CJNE A,#2,$+3
POP ACC
JC EXITCHUONG2
CLR 05H
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 68
SETB P1.6
MOV 31H,#0
EXITCHUONG2:
RET
;******************************************************************************
; CHƯƠNG TRÌNH CON CHUONG1
;*****************************************************************************
;
CHUONG1:
JNB 07H,EXITCHUONG1
SETB P1.6
CLR 04H
EXITCHUONG1:
RET
;*******************************************************************************
; CHƯƠNG TRÌNH CON PHỤC VỤ NGẮT SERIAL PORT
; Dùng cờ 2 để xác định là đã truyền xong 4 byte dữ liệu
; Cờ 3 dùng để xác định đã nhận đúng địa chỉ
;******************************************************************************
SPISR:
PUSH ACC
JB RI,SPISR1
JB CO2,SPISR2
LCALL TRANSMIT
SPISR2:
CLR CO2
CLR P3.4
LJMP EXITSPISR
SPISR1:
CLR RI
MOV A,SBUF
JB CO3,SPISR4
CJNE A,#'A',SPISR5 ; đúng địa chỉ thì set cờ 3
SETB CO3
LJMP EXITSPISR
SPISR5:
CLR CO3
LJMP EXITSPISR
SPISR4:
CJNE A,#'E',SPISR6 ; có yêu cầu truyền dữ liệu không?
MOV R0,#3FH
LCALL TRANSMIT
CLR CO3
LJMP EXITSPISR
SPISR6:
CJNE A,#'C',SPISR7 ; yêu cầu điều khiển đèn
CPL P1.4
CLR CO3
LJMP EXITSPISR
SPISR7:
CJNE A,#'D',EXITSPISR ; yêu cầu điều khiển quạt
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 69
CPL P1.2
CLR CO3
LJMP EXITSPISR
EXITSPISR:
POP ACC
RETI
;****************************************************************************
;
; CHƯƠNG TRÌNH CON TRUYỀN DỮ LIỆU TỪ VI XỬ LÝ VỀ MÁY TÍNH
;
;*************************************************************************
;
TRANSMIT:
SETB P3.4
CLR TI
MOV A,@R0
MOV SBUF,A
INC R0
CJNE A,#43H,EXITTRANSMIT
MOV R0,#3FH
SETB CO2
LJMP EXITTRANSMIT
EXITTRANSMIT:
RET

;*******************************************************************************
; 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

D. Giới thiệu các IC sử dụng trong đề tài


I. IC 74LS247:
IC 74LS247 là vi mạch lái chuyển đổi mã BCD ra mã LED 7 đoạn
(Seven Segment Display) .IC 74LS247 chuyển đổi dữ liệu BCD ra mã LED
ra dạng mã số thập phân, nó làm hiện số trên LED 7 đoạn với cực Anod
chung. Khi chân LT (Lamp Test) ở mức thấp, lúc đó tất cả ngõ ra là mức
cao, tức đèn tắt.

 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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 73
 Bảng chân lý :

Số đếm Input Output


BI
và chức
LT RBI D C B A /RBO a b c d e f g
năng
0 H H L L L L H ON ON ON ON ON ON OFF
1 H X L L L H H OFF ON ON OFF OFF OFF OFF
2 H X L L H L H ON ON OFF ON ON OFF ON
ON ON ON ON OFF OFF ON
3 H X L L H H H
4 H X L H L L H OFF ON ON OFF OFF ON ON
5 H X L H L H H ON OFF ON ON ON ON ON
6 H X L H H L H OFF OFF ON ON OFF ON ON
ON ON ON OFF OFF OFF OFF
7 H X L H H H H
8 H X H L L L H ON ON ON ON ON ON ON
9 H X H L L H H ON ON ON OFF OFF ON ON
10 H X H L H L H OFF OFF OFF ON ON OFF ON
OFF OFF ON ON OFF OFF ON
11 H X H L H H H
12 H X H H L L H OFF ON OFF OFF OFF ON ON
1 H X H H L H H ON OFF OFF ON OFF ON ON
14 H X H H H L H OFF OFF OFF ON ON ON ON
OFF OFF OFF OFF OFF OFF OFF
15 H X H H H H H
BI X X X X X X L OFF OFF OFF OFF OFF OFF OFF
RBI H L L L L L L OFF OFF OFF OFF OFF OFF OFF
LT L X X X X X H ON ON ON ON ON ON ON

III. IC 74LS154:
74LS154 là IC giãi mã 4 sang 16, có ngõ ra tích cực mức thấp.

 Sơ đồ chân linh kiện và bảng sự thật :

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 :

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 75
1 15
2 A Y 0 14
3 B Y 1 13
C Y 2 12
Y 3 11
6 Y 4 10
INPUTS G 1
4 SELECT Y 5 9
OUTPUTS
ENABLE
G1 G2
5 G 2A
C BG A
Y 6
Y0
7
Y1 Y2 Y3 Y4 Y5 Y6 Y7
2B Y 7
X H X X X H H H H H H H H
L X X X7 4XL S 138 H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H L H H H H H H H L

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

GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÝ

Chương I

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 77
TỔNG QUAN VỀ MẠNG MÁY TÍNH VÀ VẤN ĐỀ VỀ GIAO
TIẾP NỐI TIẾP

A. Tổng quan về mạng máy tính


Mạng máy tính là một tập hợp các máy tính được nối với nhau bởi các
đường truyền vật lý theo một kiến trúc nào đó. Và ngày nay mạng máy tính
đã trở thành một lĩnh vực nghiên cứu phát triển và ứng dụng cốt lõi của công
nghệ thông tin.
I. Các yếu tố của mạng máy tính :
Các yếu tố của một mạng máy tính bao gồm : đường truyền vật lý và
kiến trúc của một mạng máy tính.
1. Đường truyền vật lý:
Đường truyền vật lý dùng để chuyển các tín hiệu điện tử giữa các máy
tính. Các tín hiệu điện tử đó biểu thị các giá trị dữ liệu dưới dạng các xung
nhị phân (ON-OFF). Tất cả các tín hiệu được truyền giữa các máy tính đều
thuộc một dạng sóng điện từ (EM) nào đó, trải từ các tần số radio tới các
sóng cực ngắn vi baa) và tia hồng ngoại. Tùy theo tần số của sóng điện từ có
thể dùng các đường truyền vật lý khác nhau để truyền các tín hiệu.
Các tần số radio có thể truyền bằng cáp điện (dây đôi xoắn hoặc đồng
trục ) hoặc bằng phương tiện quãng bá (radio broadcasting).
Sóng cực ngắn vi baa) thường được dùng để truyền giữa các trạm mặt
đất và các vệ tinh.
Tia hồng ngoại là lý tưởng đối với nhiều loại truyền thông mạng. Nó có
thể được truyền giữa hai điểm hoặc quãng bá từ một điểm đến nhiều máy
thu. Tia hồng ngoại và các tần số cao hơn của ánh sáng có thể được truyền
qua các loại cáp sợi quang.
Khi xem xét lựa chọn đường truyền vật lý ta cần chú ý tới các đặc trưng
cơ bản của chúng là dải thông, độ suy hao và độ nhiễu điện từ.
2. Kiến trúc mạng:
Kiến trúc mạng máy tính (network architecture) thể hiện qua cách nối
các máy tính với nhau ra sao và tập hợp các quy tắc, qui ước mà tất cả các
thực thể tham gia truyền thông trên mạng phải tuân theo để đảm bảo cho
mạng hoạt động tốt. Cách nối các máy tính được gọi là hình trạng (topology
gọi tắt là topo), còn tập hợp các quy tắc, quy ước truyền thông thì được gọi là
giao thức (protocol) của mạng.
*Topo mạng:
Có hai kiểu nối mạng chủ yếu là: điểm – điểm ( point to point) và quãng
bá broadcaster hay point to multi point).
Theo kiểu point to point, các đường truyền nối thành từng cặp nút với
nhau và mỗi nút đều có trách nhiệm lưu trữ tạm thời sau đó chuyển tiếp dữ
liệu đi cho tới đích.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 78
Theo kiểu quãng bá, tất cả các nút phân chia chung một đường truyền
vật lý. Dữ liệu được gởi đi từ một nút nào đó có thể được tiếp nhận bởi tất cả
các nút còn lại. Nơi nhận sẽ kiểm tra xem địa chỉ đích gởi đến có phải cho
mình hay không để có thể tiếp tục thực hiện việc giao tiếp hay bỏ qua.
*Giao thức mạng:
Việc truyền tín hiệu trên mạng cũng cần phải tuân theo những quy tắc,
qui ước về nhiều mặt: từ khuôn dạng (cú pháp, ngữ nghĩa) của dữ liệu tới các
thủ tục gởi, nhận dữ liệu, kiểm soát hiệu quả và chất lượng truyền tin cũng
như xử lý các lỗi sự cố. Tập hợp tất cả những quy tắc, qui ước đó được gọi là
giao thức của mạng.
II. Phân loại mạng máy tính :
Có nhiều cách phân loại mạng máy tính khác nhau tùy thuộc vào yếu tố
chính làm chỉ tiêu phân loại. Nếu lấy khoảng cách địa lý làm yếu tố chính để
phân loại thì ta có các loại sau:
1. Mạng cục bộ ( Local Area Networks – LAN):
Là mạng được cài đặt trong một phạm vi tương đối nhỏ (ví dụ trong
một tòa nhà, trường học …) với khoảng cách lớn nhất giữa các máy tính nút
mạng chỉ trong vòng vài chục kilo mét trở lại.
Một mạng cục bộ bao gồm cả phần cứng lẫn phần mềm. Phần mềm
của nó bao gồm các trình điều khiển thiết bị và hệ điều hành mạng .
2. Mạng đô thị( Metropolitan Area Networks – WAN):
Là mạng được cài đặt trong phạm vi một đô thị hoặc một trung tâm kinh tế- xã
hội có bán kính khoảng 100 kilo mét trở lại.
3. Mạng diện rộng ( Wide Area Networks – WAN ): Có phạm vi có
thể vượt qua biên giới một quốc gia và thậm chí cả một châu lục.
4. Mạng toàn cầu ( Global Area Networks – GAN ):Phạm vi sử
dụng của mạng trải rộng khắp các châu lục của Trái Đất.
III. Đường truyền và các thiết bị sử dụng trong mạng máy
tính:
1. Đường truyền:
a. Cáp truyền:
 Cáp đồng trục:
Có cấu tạo gồm hai dây dẫn, một dây dẫn trung tâm ( thường bằng
đồng cứng ) và một dây dẫn tạo thành một ống bao quanh dây dẫn trung tâm,
dây dẫn này có thể là dây bện hay bằng lá kim loại. Giữa hai dây dẫn có một
lớp cách ly và bên ngoài cùng là một lớp vỏ plastic để bảo vệ cáp.
 Cap xoắn đôi:
Cáp này gồm hai đường dây dẫn đồng trục được xoắn vào nhau. Mục
đích của việc xoắn này là nhằm giảm nhiễu điện từ gây ra bởi môi trường
xung quanh và gây ra bởi bản thân chúng với nhau.
Có hai loại cáp xoắn đôi được dùng hiện nay là cáp có bọc kim STP
(Shield Twisted-Pair) và cáp không bọc kim UTP ( Unshield Twisted-Pair).

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 79
STP có khả năng chống nhiễu tốt nhờ có vỏ bọc kim, thích hợp cho tốc độ
truyền dưới 500Mb/s. Còn UTP có khả năng chống nhiễu thấp hơn, tốc độ có
thể đạt tới là 100Mb/s.
 Cáp sợi quang:
Cáp sợi quang không truyền dẫn các tín hiệu điện mà chỉ truyền dẫn
các tín hiệu quang.
Cáp sợi quang bao gồm một dây dẫn trung tâm ( là một hoặc một bó
sợi thủy tinh hay plastic có thể truyền dẫn tín hiệu quang ) được bọc một lớp
áo có tác dụng phản xạ các tín hiệu trở lại để giảm sự mất mát tín hiệu. Bên
ngoài cùng là lớp vỏ plastic để bảo vệ cáp.
Tín hiệu truyền trên cáp sợi quang có thể đạt tốc độ 2Gb/s và cho phép
khoảng cách truyền khá xa do độ suy hao tín hiệu trên cáp rất thấp. Ngoài ra
do tín hiệu truyền là dạng quang nên nó không bị ảnh hưởng bởi nhiễu điện
từ và các hiệu ứng điện khác. Hơn nữa, tín hiệu truyền trên cáp sợi quang có
độ bảo mật rất cao. Tuy nhiên cáp sợi quang có nhược điểm là khó lắp đặt và
giá thành còn tương đối cao.
b. Phương tiện vô tuyến:
 Radio:
Radio chiếm dải tần từ 10KHz đến 1GHz, trong đó có các băng tần
quen thuộc như:
 Sóng ngắn.
 VHF ( Very High Frequency ) : Dùng cho truyền hình và
FM radio.
 UHF ( Ultra High Frequency ) : Dùng cho truyền hình.
Các phương thức truyền theo tần số radio là : Công suất thấp tần số
đơn, công suất cao tần số đơn và trải phổ.
 Viba (Microwave ):
Có hai dạng truyền thông vi ba là mặt đất và vệ tinh. Các hệ thống vi ba
mặt đất thường hoạt động ở băng tần 4-6GHz và 21-23GHz, tốc độ truyền
dữ liệu từ 1-10Mb/s
 Các hệ thống tia hồng ngoại (Iinfrared System ):
Các mạng điểm – điểm hoạt động bằng cách chuyển các tín hiệu hồng
ngoại từ một thiết bị tới một thiết bị kế tiếp, dải tần hoạt động là 100GHz đến
1000GHz với tốc độ khoảng 100Kb/s đến 16b/s.
Các mạng quãng bá hồng ngoại cũng có dải tần như trên nhưng có tốc
độ truyền thực tế chỉ đạt dưới 1Mb/s.
2. Thiết bị mạng:
a. Các bộ giao tiếp mạng:
Các bộ giao tiếp mạng có thể được thiết kế ngay trong Mainboard của
máy tính hoặc ở dạng các tấm giao tiếp mạng ( Network Interface Card- NIC )
hoặc là các bộ thích nghi đường truyền.
Một NIC có thể được cài đặt vào một khe cắm (slot ) của máy tính . Đây
là loại thiết bị thông dụng nhất để nối máy tính với mạng. Trong NIC có bộ thu
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 80
phát với một số kiểu đầu nối. Bộ thu phát chuyển đổi các tín hiệu bên trong
máy tính thành các tín hiệu mà mạng đòi hỏi và cũng biến đổi ngược lại các
tín hiệu truyền trên mạng thành các tín hiệu mà máy tính có thể làm việc
được.
Bộ thích nghi đường truyền là thiết bị có chức năng làm thích nghi một
kiểu đầu nối nào đó trên máy tính với một kiểu đầu nối khác mà mạng đòi hỏi.
Có các bộ thích nghi đường truyền như là: transceiver, media filter, parallel
port adapter, SCSI port adapter.
 Hub ( bộ tập trung ):
Hub là bộ chia hay còn gọi là bộ tập trung ( concentrators) dùng để đấu
mạng. Có các loại Hub như sau: Passive Hub, Active Hub, và Intelligent Hub.
 Repeater ( bộ chuyển tiếp ):
Repeater có chức năng tiếp nhận và chuyển tiếp các tín hiệu dữ liệu
thường được dùng nối hai đoạn cáp mạng Ethernet ( để mở rộng mạng).
Một số repeater chỉ có chức năng đơn giản là khuếch đại tín hiệu. Tuy
nhiên lúc đó mọi tiếng ồn trên mạng cũng bị khuếch đại theo. Ngoài ra nếu tín
hiệu gốc đã bị nhiễu thì repeater này cũng khuếch đại luôn nhiễu.
Các loại repeater tiên tiến hơn có thể mở rộng phạm vi của đường
truyền mạng bằng hai cách: khuếch đại và tái sinh tín hiệu. Chúng định danh
dữ liệu trong tín hiệu nhận và dùng dữ liệu đó để tái sinh tín hiệu gốc.
 Bridge ( Cầu ):
Bridge là một thiết bị mềm dẻo hơn rất nhiều so với repeater. Một
repeater chuyển đi tất cả các tín hiệu mà nó nhận được. Còn Bridge thì có
chọn lọc và chỉ chuyển đi các tín hiệu có đích ở phần mạng phía bên kia.
 Multiplexor (bộ dồn kênh ):
Multiplexor là thiết bị có chức năng tổ hợp một số tín hiệu để chúng có
thể được truyền với nhau và sau đó khi nhận lại được tách ra trở thành tín
hiệu gốc.
 Modem:
Modem ( Modulation/ demodulation ) là thiết bị có chức năng chuyển
đổi tín hiệu số thành tín hiệu analog và ngược lại để kết nối các máy tính qua
đường điện thoại.
Modem cho phép trao đổi thư điện tử, truyền tệp và trao đổi dữ liệu
theo yêu cầu. Tuy nhiên modem không phải là thiết bị liên mạng nên nó
không thể nối kết các mạng ở xa với nhau. Để khắc phục điều này ta có thể
kết hợp với router để nối kết các mạng qua mạng điện thoại chuyển mạch
công cộng.
 Router :
Router ( bộ chọn đường ) là thiết bị có chức năng tương tự như bridge,
tuy nhiên nó đa năng hơn bridge vì có thể thực hiện các giải thuật chọn
đường đi tối ưu theo một chỉ tiêu nào đó.
B. Giao tiếp nối tiếp:

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 81
Những thiết bị thực hiện việc giao tiếp bao gồm hai loại là : DCE ( Data
Communications Equipment ) và DTE ( Data Terminal Equipment ).
DTE ( còn gọi là thiết bị đầu cuối dữ liệu ) là một thuật ngữ chung để
chỉ các máy của người sử dụng cuối, chúng có thể là máy tính hoặc một trạm
cuối (terminal ). Như vậy tất cả các ứng dụng của người sử dụng điều nằm ở
DTE. Mục đích của mạng máy tính chính là để nối các DTE lại cho phép
chúng phân chia tài nguyên, trao đổi dữ liệu và lưu trữ thông tin dùng chung.
DCE ( còn gọi là thiết bị cuối kênh dữ liệu ) là thuật ngữ chung dùng để
chỉ các thiết bị nối các DTE với các đường ( mạng) truyền thông. Nó có thể là
một Modem, Transducer, Multiplex…DCE có thể được cài đặt ngay bên trong
DTE hoặc đứng riêng như một thiết bị độc lập. Chức năng chính của DCE là
chuyển đổi tín hiệu biểu diễn dữ liệu của người sử dụng thành dạng tín hiệu
chấp nhận được bởi đường truyền và ngược lại.
Việc truyền dữ liệu, chủ yếu được thực hiện thông qua mạng điện
thoại, phải tuân theo những nguyên tắc nhất định, và thường là dùng các
chuẩn truyền được quốc tế hóa. Có nhiều chuẩn truyền thông khác nhau,
trong đó có các chuẩn thuộc họ RS- ( ngày nay đã đổi thành họ EIA- ) của
EIA ( Electronics Industries Association ) được sử dụng rất phổ biến là: RS-
232C, RS-422A, RS-423, RS-485. Chúng ta sẽ lần lượt khảo sát từng chuẩn
trên.

I. Đặc điểm của các chuẩn truyền thông RS-232C, RS-422A,


RS-485:

Thông số RS-232C RS-422 RS-423 RS-485


Chiều dài cáp 15m 1.2km 1.2km 1.2km
Length (max) (50 ft) (4000ft ) (4000ft) (4000ft)
Baud rate 20Kbs/15m 10M bs/12m 100Kbs/9m 10Mbs/12m
(Tốc độ 1Mbs/120m 10Kbs/90m 1Mbs/120m
Baud) 100Kbs/1.2km 1Kbs/1.2km 100Kbs/1.2km

Mode Unbalanced Balanced Balanced Balanced


Differential Differential Differential
Driver No. 1 1 1 32
Receiver 1 10 10 32
Logic 0 +3V->+25V +2V->+5V +3.6V->+6V +1.5V->+5V
Logic 1 -3V ->-25V -2V-> -5V -3.6V ->-6V -1.5V ->-5V
Community 2V 1.8V 3.4V 1.3V
Cable/signal 1 2 2 2
Methode Simplex Simplex Simplex Simplex
Phương Half-duplex Half-duplex Half-duplex Half-duplex

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 82
thức Full-duplex Full-duplex Full-duplex Full-duplex
Short circuit 500mA 150 mA 150mA 150mA
current
1. Chuẩn RS-232C :
Là chuẩn của EIA nhằm định nghĩa giao diện vật lý giữa DTE và
DCE (ví dụ như giữa một máy tính và một modem ). Chuẩn này sử dụng
đầu nối 25 chân, tuy nhiên chỉ có một số ít chân là thực sự cần thiết cho
việc liên kết. Về phương diện điện , chuẩn này quy định các mức logic 0
và 1 tương ứng với các điện thế nhỏ hơn -3V và lớn hơn +3V. Tốc độ
đường truyền không được vượt quá 20Kbs và khoảng cách nhỏ hơn
15m.
Chuẩn RS-232C có thể chấp nhận phương thức truyền song công
( full-duplex ).
Một trong những yêu cầu quan trọng của RS-232C là thời gian
chuyển từ mức logic này sang mức logic khác không vượt quá 4% thời
gian tồn tại của một bit. Giả sử với tốc độ truyền 19200 baud thì thời gian
chuyển mức logic phải nhỏ hơn 0.04/19200 = 2.1ms. Điều này làm giới
hạn chiều dài đường truyền. Với tốc độ 19200baud ta có thể truyền xa
nhất là 50ft (15.24m ).
Một trong những vấn đề quan trọng cần chú ý là khi sử dụng RS-232C
là mạch thu phát không cân bằng ( đơn cực ), tức là tín hiệu vào và ra được
so với đất.
2. Chuẩn RS-422A:
Một cải tiến quan trọng của chuẩn RS-232C là chuẩn RS-422A. Chuẩn
này sử dụng việc truyền dữ liệu sai lệch differential data ) trên những đường
truyền cân bằng. Một dữ liệu sai lệch cần hai dây, một cho dữ liệu không đảo
(non-inverted) và một đường cho dữ liệu đảo (inverted). Dữ liệu được truyền
trên đường dây cân bằng, thường là cặp dây xoắn với một trở ở đầu cuối.
Một IC lái (driver) sẽ biến đổi các mức logic thông thường thành một cặp tín
hiệu sai lệch để truyền. Bên nhận sẽ có một mạch chuyển đổi tín hiệu sai lệch
thành các mức logic tương ứng. Các IC lái RS-422A hầu hết hoạt động với
nguồn +5V như các chip logic khác. Với chuẩn mới này, tốc độ cũng như
khoảng cách truyền được cải thiện rất nhiều.
3. Chuẩn RS-485 :
Giao tiếp EIA RS-485 là một cải tiến của chuẩn RS-422A. Đặc tính điện
của nó giống như chuẩn RS-422A. RS-485 là chuẩn truyền vi sai, sử dụng hai
dây cân bằng. Với RS-485 tốc độ truyền có thể đạt đến 10Mbs và chiều dài
cáp có thể lên đến 1.2km. Điện áp vi sai ngõ ra từ +1.5V-> +5V nếu là logic
mức 0 và mức logic 1 sẽ là từ -1.5V-> -5V. Một đặc điểm quan trọng của RS-
485 là có thể cung cấp đến 32 drivers và receivers trên cùng một đường
truyền. Điều này cho phép tạo thành một mạng cục bộ. Để có khả năng như
vậy, ngõ ra driver RS-485 phải là ngõ ra 3 trạng thái. Và do đó một slave sẽ ở
trạng thái tổng trở cao khi nó không được chọn để giao tiếp cùng với master.
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 83
Chỉ có một trạm được chọn làm master, các trạm còn lại đều là slave.
Master được quyền truyền bất cứ lúc nào, nó sẽ chỉ định một slave bất kì
giao tiếp với nó. Slave chỉ có thể truyền sau khi nhận được lệnh của master.
Mọi slave có một địa chỉ riêng trên đường truyền và sẽ không được phép
truyền nếu không có yêu cầu từ master.
II. Các phương thức truyền thông:
Có 3 phương pháp truyền được dùng trong mục đích truyền thông tin:
Đơn công, bán song công, và song công. Ta sẽ lần lượt khảo sát các phương
pháp truyền trên.
1. Đơn công:
Đường truyền đơn công có khả năng truyền dữ liệu chỉ theo một
hướng. Nguyên nhân không phải do tính chất của đường dây đơn giản chỉ
vì một đầu cuối chỉ có một máy phát và đầu cuối kia cũng chỉ có một máy
thu. Cấu hình này ít được sử dụng trong các máy tính vì không có cách nào
để máy thu phát tín hiệu nhận biết tới máy phát cho biết thông điệp đã nhận
đúng. Phát thanh và truyền hình là một trong những thí dụ về đơn công.
2. Bán song công(Half-duplex Communication):
Đường truyền bán song công có thể phát và nhận dữ liệu theo cả hai
hướng không đồng thời. Trong suốt một cuộc truyền, một modem là máy
phát và modem còn lại sẽ là máy thu. Ví dụ như một thiết bị A là máy phát
gởi dữ liệu đến thiết bị B là máy thu, sau đó A và B đổi vai trò cho nhau, B là
máy phát gởi tín hiệu báo dữ liệu nhận được có lỗi hay không đến máy thu A.
Nếu không có lỗi thì A và B sẽ lại đổi vai trò cho nhau và A tiếp tục gởi dữ liệu
đến máy thu B. Nếu máy thu B báo dữ liệu có lỗi thì máy phát A sẽ gởi lại dữ
liệu cũ cho đến khi B báo là dữ liệu không có lỗi.
Nhược điểm của phương pháp này là thời gian cần để chuyển đường
truyền bán song công từ hướng này sang hướng khác có thể dài gấp nhiều
lần thời gian truyền một kí tự. Sự chuyển động của xe trên đường ray là một
thí dụ về phương pháp này.
3. Song công ( Full-duplex Communication):
Ngược lại so với truyền bán song công, đường truyền song công có
khả năng phát và nhận dữ liệu đồng thời theo cả hai hướng. Một cách khái
quát, đường truyền song công tương đương với 2 đường truyền đơn công,
một đường cho mỗi hướng.
Vì hai đường truyền có thể tiến hành song song, một đường cho mỗi
hướng, nên truyền song công có thể phát nhiều thông tin hơn truyền bán
song công với cùng tốc độ truyền dữ liệu. Truyền song công không mất thời
gian để thay đổi hướng truyền.
III. Truyền thông tuần tự:
Hầu hết các máy tính lưu trữ dữ liệu và thao tác dữ liệu theo cách song
song. Nghĩa là khi gởi một byte từ bộ nhận này tới bộ nhận khác của máy
tính, nó không truyền từng bit một mà một lúc một byte trên những cáp sợi

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 84
song song nhau. Số các bit truyền đi cùng một lúc thay đổi tùy thuộc vào từng
máy tính nhưng thông thường là 8 hoặc bội của 8.
Tuy nhiên việc truyền dữ liệu từ máy tính này đến máy tính hay một
thiết bị khác thì xảy ra theo kiểu tuần tự, nghĩa là dữ liệu được gởi đi từng bit
một. Một bộ giao tiếp tuần tự sẽ đảm nhận nhiệm vụ chuyển đổi dữ liệu từ
song song sang nối tiếp trước khi chúng gởi đi hoặc đổi từ nối tiếp sang song
song khi chúng nhận về.
Có hai hình thức truyền thông tuần tự: truyền thông đồng bộ và không
đồng bộ.
 Truyền thông bất đồng bộ ( Asynchronous
communication):
Khoảng thời gian giữa hai kí tự truyền đi không cố định, mặc dù khoảng
thời gian giữa hai bit liên tiếp trong một kí tự là không thay đổi nhưng khoảng
thời gian giữa hai kí tự liên tiếp không phải là hằng số. Sự biến thiên tốc độ
này làm nảy sinh vấn đề là phải làm sao máy thu phân biệt được giữa bit 0 và
không có dữ liệu.
Để giải quyết vấn đề trên , người ta phát trực tiếp một bit start ngay
trước một kí tự và một hoặc hai stop bit ngay sau mỗi kí tự được truyền đi.
Để kiểm tra lỗi đường truyền, người ta sử dụng bit chẵn lẻ( parity bit),
tức kiểm tra tổng số bit trong 1 byte dữ liệu được truyền. Phương thức
này thường được sử dụng trong các máy tính PC vì tính đơn giản của nó.
Hạn chế của phương pháp này là tốc độ truyền thấp do phải truyền thêm một
số bit start, bit stop và bit parity.
 Truyền thông đồng bộ ( Synchronous Communications):
Phương thức truyền này không dùng các bit start, stop để đóng khung
mỗi kí tự mà chèn các kí tự đặc biệt như SYN ( Synchronization), EOT (End
Of Transmission) hoặc một cờ giữa các dữ liệu của người sử dụng để báo
hiệu cho bên nhận biết rằng có dữ liệu đang đến hay đã đến.
Truyền đồng bộ thường được tiến hành ở tốc độ dưới
4800Bps,9600Bps hoặc thậm chí còn cao hơn. Trong phương pháp này, một
khi đã đồng bộ, các modem vẫn tiếp tục gởi các kí tự để duy trì đồng bộ, ngay
cả lúc không phát dữ liệu. Một kí tự “idle” được gởi đi khi không có dữ liệu
phát. Trong phương pháp truyền đồng bộ không giống như phương pháp
truyền bất đồng bộ, khoảng thời gian giữa hai kí tự luôn bằng nhau.
Truyền thông đồng bộ đòi hỏi các xung clock trong máy phát và thu
phải duy trì đồng bộ những khoảng thời gian dài. Thời gian truyền có thể tiếp
tục lâu mà không có sự tái đồng bộ của máy thu với pha của máy phát tùy
thuộc vào sự ổn định của xung clock.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 85
Chương II
GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÝ

Α. Điều khiển thu phát dữ liệu qua cổng Com:


Máy tính và ngoại vi muốn liên kết được với nhau cần phải được kết
nối với nhau theo một chuẩn nhất định. Có nhiều kiểu kết nối ngoại vi với máy
tính, trong đó các cách thường dùng là gắn vào slot trên Mainboard, qua cổng
máy in và thông qua cổng nối tiếp( cổng Com). Mỗi kiểu đều có nhiều ưu và
khuyết điểm khác nhau, tùy theo yêu cầu mà ta có thể chọn những phương
cách khác nhau.
Cổng nối tiếp được sử dụng cho việc truyền tín hiệu theo dạng nối tiếp.
Cổng nối tiếp truyền mức logic 1 ở tầm điện áp từ –3V đến –25V và mức
logic 0 là từ +3V đến +25V. Trong khi đó, với cổng song song, mức logic 0 là
0V logic 1 là +5V. Vì vậy cổng nối tiếp có thể có mức chênh lệch điện áp tối
đa là 50V so với 5V của cổng song song và do đó vấn đề điện áp rơi trên
đường dây ở đường truyền nối tiếp không nghiêm trọng hơn so với đường
truyền song song. Do đó truyền tín hiệu theo kiểu nối tiếp không bị ảnh
hưởng nhiễu nhiều như kiểu cổng song song.
Giao tiếp nối tiếp chỉ sử dụng 3 đường dây cho TXD, RXD và GND và
do đó yêu cầu cho thiết bị giao tiếp với nó có ít chân hơn so với 19 hay 25
dây trong việc giao tiếp song song và yêu cầu ít nhất là 9 chân cho giao tiếp
nối tiếp,điều này làm phức tạp thêm công nghệ chế tạo và giá thành sản xuất
đối với các thiết bị giao tiếp song song.
I. Giới thiệu cổng nối tiếp RS-232C:
Cổng giao RS-232C là giao diện phổ biến rộng rãi nhất. Giống như
cổng máy in, cổng nối tiếp RS-232C được sử dụng mức cách thuận tiện cho
mục đích đo lường và điều khiển.
Việc truyền dữ liệu qua cổng RS-232C được tiến hành theo cách nối
tiếp, nghĩa là các bit dữ liệu được gởi đi nối tiếp nhau trên cùng mức đường

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 86
truyền dẫn. Cổng nối tiếp RS-232C không phải là một hệ thống bus, nó cho
phép dễ dàng tạo ra liên kết dưới hình thức điểm-điểm giữa hai máy tính cần
trao đổi thông tin với nhau. Một thành viên thứ 3 không thể tham gia vào cuộc
trao đổi này.
Mức logic 0 sẽ nằm giữa +3V-> +25v.
Mức logic 1 từ -3V -> -25V.
Khoảng từ –3V -> +3V là trạng thái mặc định.
Điện áp hở mạch phải nhỏ hơn 25V.
Dòng ngắn mạch không vượt quá 500mA.
Có hai loại Jack cắm nối tiếp RS-232C là loại 9 chân và 25 chân.
Chúng khác với cổng máy in ở chỗ cổng máy in là loại ổ cắm còn đây là Jack
nhiều chân. Các Jack cắm RS-232C có tổng cộng 8 đường dẫn chưa kể
đường nối đất. Việc truyền dữ liệu xảy ra ở trên hai đường dây TXD và RXD.
Máy tính nhận dữ liệu từ các thiết bị khác thông qua đường TXD và nó dùng
đường RXD để truyền dữ liệu đến các thiết bị kia.

9 chân 25 chân Chức năng


1 8 DCD- data Carrier Detect (In)
2 3 RXD- Receive data (In)
3 2 TXD-Transmit Data (Out)
4 20 DTR – Data Terminal
Ready(Out)
5 7 GND-Ground(Mass)
6 6 DSR-Data Set Ready (In)
7 4 RTS- Request to Send(Out)
8 5 CTS- Clear To Send (In)
9 22 RI- Ring Indicator(In)

Ký hiệu Tên Chức năng


TD Transmit data Đường truyền dữ liệu
RD Receive Data Đường nhân dữ liệu
CTS Clear To Send Báo modem đã sẵn sàng cho việc trao đổi
dữ liệu
DCD Data Carrier DCD sẽ tích cực khi modem nhận được dữ
detect liệu.
DSR Data Set Báo cho UART là modem đã sẵn sàng cho
Ready việc thiết lập đường truyền.
TDR Data Terminal Báo cho modem biết là UART đã sẵn sàng
Ready cho việc kết nối.
RTS Request To Thông báo cho modem biết là UART đã
Send sẵn sàng cho việc truyền nhận dữ liệu.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 87
RI Ring Indicator Lên mức tích cực khi modem nhận được
tín hiệu.
Bảng chức năng các chân trong RS-232C .

Name Address IRQ Name Address IRQ


COM1 3F8 4 COM 3 3E8 4
COM 2 2F8 3 COM 4 2E8 3
Bảng địa chỉ các cổng.
Việc truyền dữ liệu giữa máy tính và ngoại vi được điều khiển bởi các
bộ điều khiển thu phát đồng bộ hay bất đồng bộ.
II. Chip thu phát bất đồng bộ-Vi mạch UART (Universal
Asynchronous Receiver) 8250A/16450:
1. Tổng quan:
Vi mạch 8250A của Intel là một UART được dùng rất rộng rãi.UART
8250A có các chức năng sau:
_ Biến đổi dữ liệu song song từ CPU thành dạng nối tiếp để truyền
đi đồng thời thu dòng dữ liệu nối tiếp, đổi chúng thành dữ liệu dạng song
song và gởi chúng đến CPU.
_ Thêm các bit start, stop và parity vào từng kí tự trước khi phát đi
và tách các bit này ra khỏi kí tự nhận được.
_ Bảo đảm các bit dữ liệu được truyền đi với tốc độ được lập trình
trước, kiểm tra để phát hiện lỗi.
_ Set tín hiệu bắt tay phần cứng và cho biết trạng thái của tín hiệu.
2. Các thanh ghi UART:
_ Thanh ghi điều khiển đường truyền (Line Control
Register – LCR): Dùng đặt các thông số truyền.
_ Thanh ghi điều khiển Modem(Modem Control
Register- MCR): Điều khiển tín hiệu bắt tay từ UART.
_ Thanh ghi cho phép ngắt( Interrput Enable
Register-IER): Thanh ghi này cho phép/cấm các nguyên nhân gây ngắt khác
nhau tương ứng với các bit trong thanh ghi. Các bit của thanh ghi này ở mức
1 là cho phép, mức 0 là cấm ngắt.
-_ Thanh ghi trạng thái( Status Register –SR):Thông
báo cho CPU biết trạng thái hoạt động của UART:
_ Thanh ghi trạng thái đường truyền (Line Status
Register-LSR): Chứa thông tin về truy xuất dữ liệu.
_ Thanh ghi trạng thái modem( Modem Status Register-MSR):
Chứa thông tin liên quan về trạng thái của những đường truyền bắt tay.
_ Thanh ghi định danh ngắt( Interrupt Identification Register-IIR):
Thanh ghi nhận dạng nguồn ngắt là một thanh ghi chỉ đọc ( read only). Trạng
thái các bit trong thanh ghi này sẽ thay đổi khi có sự thay đổi trạng thái của
các thanh ghi khác trong UART. CPU sẽ đọc bit IR0 để xem có yêu cầu ngắt
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 88
hay không và kiểm tra nguồn ngắt từ các bit IR1-IR0.

Các vi mạch UARTS:


 8250: Là vi mạch UART đầu tiên. 8250A là phiên
bản cải tiến hơn của 8250 với tốc độ được cải tiến nhiều.
 8250A: Tốc độ nhanh hơn so với 8250, có cùng
chức năng như 16450.
 16450: Cải tiến của 8250, hoạt động tốt ở tốc độ
38.4bps, hiện này vẫn còn được sử dụng rộng rãi.
 16550: Là thế hệ đầu tiên của họ UART có buffer.
Có hai loại buffer. Tuy nhiên 16550 không được sử dụng nhiều
và bị thay thế bởi 16550A.
 16550A: Là vi mạch UART thông dụng nhất sử dụng
cho mục đích giao tiếp với tốc độ cao như 14.4k và 28.8k modem
.
 16650/16750: Thuộc UART thế hệ mới chứa 32/64
byte FIFO, hỗ trợ Power management.
III .Truyền nhận dữ liệu qua cổng nối tiếp:
Việc truyền nhận dữ liệu qua cổng nối tiếp được thực hiện bởi UART.
Nguyên tắc chip UART hoạt động cho việc truyền và nhận một kí tự như
sau:
b. Để truyền một kí tự, đầu tiên kí tự đó sẽ được đưa vào thanh
ghi đợi truyền ( Transmit Holding Register), sau đó được đưa vào thanh ghi
dịch của bộ phát ( Transmit Shift Register). Sau khi kí tự trước đã được
truyền xong, từng bit của kí tự được truyền sẽ được dịch vào kênh dữ liệu.
c. Khi nhận một kí tự, đầu tiên các bit của nó lần lượt được
nạp vào thanh ghi dữ liệu của bộ thu( Receive Shift Register ), sau đó chúng
được đưa vào thanh ghi dữ liệu của bộ thu ( Receive Data Register ) sau
khi đã loại bỏ các bit start, stop và parity.
X Thu phát dữ liệu :
Có hai phương pháp để thu phát dữ liệu qua UART. Phương pháp
thứ nhất là phương pháp hỏi vòng để chờ dữ liệu được phát xong hoặc
nhận xong. Phương pháp thứ hai là phương pháp tạo ra một trình điều
khiển ngắt. Phương pháp hỏi vòng chậm hơn nhiều so với phương pháp
kia. Tốc độ cao nhất có thể đạt của phương pháp hỏi vòng là 34.8Kbps
trong khi phương pháp tạo ngắt có thể đạt được tốc độ 115,2Kbps. Ơ đây
ta chọn phương pháp hỏi vòng để điều khiển việc thu phát dữ liệu.
X Để phát một kí tự:
Với phương pháp hỏi vòng UART, khi gởi một kí tự ta phải kiểm tra
xem thanh ghi đợi truyền có rỗng không bằng cách xem bit 6 của LCR có
bằng 1 hay không .

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 89
X Để thu một kí tự: để biết khi nào kí tự thu vào hay chưa ta kiểm tra
bit 0 của thanh ghi LCR. Nếu nó bằng 1 thì đã có 1 kí tự được nhận vào.

Chương III :
CHƯƠNG TRÌNH TRUYỀN THÔNG BẰNG NGÔN NGỮ
VISUAL BASIC 6.0

I. Tổng quan về Visual Basic :


Visual Basic là ngôn ngữ lập trình trên môi trường Windows ra đời sớm
nhất, và đã thực sự tạo nên một cuộc cách mạng trong công nghệ phần
mềm .cho nên khi phát hành Visual Basic 1.0 vào năm 1991, ông Bill Gates,
chủ tịch hãng Microsoft đã gọi Visual Basic là một sản phẩm “đáng nể”, còn
các nhân vật nổi tiếng khác trong giới công nghệ phần mềm cũng không tiếc
lời khen ngợi công cụ lập trình trực quan này.
Nếu đã từng cảm thấy thực sự thích thú khi chuyển từ việc sử dụng hệ
điều hành MS-DOS sang Windows thì ta cũng dễ hiểu những lời khen ngợi
này. Trước đây, khi làm việc trong môi trường DOS, không ít người đã cảm
thấy thực sự khó khăn với việc phải nhớ những câu lệnh để nhập vào từ dấu
nhắc DOS. Windows đã giải quyết khó khăn này cho người dùng bằng cách
sử dụng một giao diện đồ họa với những nút lệnh, hộp thoại chuẩn, các menu
để chọn lựa…Tuy nhiên trước khi Visual Basic ra đời thì để tạo được một
ứng dụng trong Windows, các lập trình viên sử dụng C phải tốn rất nhiều
công sức dành cho việc tạo giao diện cho chương trình. Chỉ có việc tạo một
nút lệnh không thôi đã cần phải dùng đến hàng trăm dòng ma.
Với VisualBasic, công việc tạo giao diện đã trở nên dễ dàng hơn bao
giờ hết. Chỉ với một vài thao tác click – drag đơn giản, ta đã có thể bổ sung
vào các cửa sổ còn trống các lệnh đơn, các hộp văn bản, các nút lệnh, các
nút tùy chọn, các nhãn, các hộp kiểm…Sau khi tạo giao diện thì công việc
của ta chỉ là viết mã cho các đối tượng này (gọi là các điều khiển : Control).
Như vậy, có thể nói, với Visual Basic công việc tạo giao diện đồ họa cho ứng
dụng đã được Visual Basic đảm nhận.
Visual Basic cho phép ứng dụng tạo ra liên kết với các ứng dụng
Windows khác rất dễ dàng, cho phép dễ dàng tạo ra các ứng dụng thiên về
quản lý dữ liệu và mạng.
Visual Basic cho phép người sử dụng giao tiếp với thư viện liên kết
động DLL. Điều này giúp giảm kích cỡ chương trình, tập tin thực thi và đặc
biệt là làm cho chương trình có khả năng được nâng cấp dễ dàng hơn.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 90
Visual Basic còn cung cấp một số phương pháp bẫy lỗi trong ứng
dụng. Đây là một công cụ rất mạnh của Visual Basic.

II. Truyền thông nối tiếp dùng visual basic:


Do sự phát triển ngày càng tăng của các ứng dụng truyền thông qua
cổng nối tiếp ,từ phiên bản 4.0 của Visual Basic ,điều khiển truyền thông đã
được hoàn chỉnh để sử dụng cho việc lập trình ghép nối máy tính qua cổng
nối tiếp .Trong phần này ta sẽ tìm hiểu về điều khiển này .

1. Điều khiển truyền thông:


Bình thường khi chạy phần mềm Visual Basic ta chỉ thấy có một số
thành phần quen thuộc trên hộp công cụ (toolbox) .Nhưng Visual Basic cho
phép nhiều thành phần có thể được bổ sung thêm vào .Điều khiển truyền
thông Mscomm của Visual Basic là một trong số các đối tượng có thể được
bổ sung để tham gia vào một số ứng dụng cần việc chuyển nhận dữ liệu qua
cổng nối tiếp .
Trong Visual Basic 5.0 và 6.0 ta có thể bổ sung thành phần Mscomm
đề cập ở trên như sau : Chọn Project => Components (Ctrl – T) ,cửa sổ
sau sẽ xuất hiện. Điều khiển truyền thông cung cấp hai khả năng để trao đổi
thông tin :
 Điều khiển sự kiện : Truyền thông điều khiển sự kiện là
phương pháp tốt nhất được sử dụng trong quá trình điều khiển việc trao đổi
thông tin nối tiếp khi nó giải phóng máy tính để làm các công việc khác .Trong
nhiều tình huống, ta cần được thông báo về sự thay đổi. Thí dụ như ta cần
biết khi có ký tự gửi đến hoặc sự thay đổi xảy ra trên đường DCD (Data
Carrier Detect ) hoặc đường RTS (Request To Send). Để làm điều đó ta sẽ
sử dụng sự kiện truyền thông OnComm để bẫy và điều khiển các sự kiện.
Điều khiển truyền thông còn phát hiện và điều khiển các lỗi truyền thông.
 Hỏi Vòng (Polling): Ta cũng có thể hỏi vòng các sự kiện
và lỗi bằng cách kiểm tra giá trị của đặc tính ComEvent sau mỗi chu kỳ của
chương trình để xác định xem liệu một sự kiện hoặc một lỗi đã xuất hiện.
Chẳng hạn, chương trình có thể tạo vòng lặp để chờ một ký tự cần được
nhận. Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận. Thông thường
phương pháp này được sử dụng khi chương trình có thời gian để tiến hành
hỏi vòng bộ nhận thông tin, hay nói cách khác là trong các ứng dụng không
lớn.
Visual Basic sử dụng các bộ điều khiển cửa sổ chuẩn cho các cổng
truyền tin nối tiếp (như serialui.dll và serial.vxd ). Điều khiển truyền thông
được bổ sung cho ứng dụng của một cổng nối tiếp, nói khác đi mỗi điều khiển
truyền thông mà ta dùng chỉ có thể điều khiển một cổng nối tiếp. Nếu cần truy
nhập nhiều cổng trong ứng dụng thì ta phải dùng nhiều điều khiển truyền
thông. Địa chỉ cổng và địa chỉ ngắt có thể thay đổi nhờ Control Panel trong
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 91
Windows .Các tham số (như tốc độ truyền theo bit ,chẵn lẻ ,…) đều có thể
được thay đổi bằng cách lựa chọn: Control Panel => System => Device
Manager => Port (COM và LPT) =>Port Settings. Việc thiết lập các cổng
truyền thông (IRQ và địa chỉ cổng) có thể thay đổi bằng cách lựa chọn
Control Panel => System => Device Manager => Port (COM và LPT) =>
Resources.

2 .Thuộc tính (property):


Thành phần Comm được bổ sung vào biểu mẫu ( Form ) bất cứ lúc nào
cần đến việc truyền thông nối tiếp. Theo mặc định, cổng thứ nhất tạo ra đối
tượng có tên MSComm1, đối tượng ứng với cổng thứ hai được gọi là
MSComm2,…Có thể nhìn thấy các đặc tính chính của đối tượng là:
CommPort, DTREnable, EOFEnable, HandShaking ,InBufferSize, Index,
InputLen, Inputmode, Left, Name, NullDiscard, OutBufferSize,
ParityReplace, Rthreshold, RTSEnable, Settings, SThreshold, Tag, Top.
Ta thấy điều khiển truyền thông có nhiều thuộc tính, nhưng để có thể làm việc
với điều khiển truyền thông, trước hết ta cần hiểu kỹ các thuộc tính chính
được liệt kê trong bảng sau .

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.

Private sub Form_load()


‘biến để lưu giữ chuỗi nhập vào
Dim Instring as String
‘sử dụng COM1
Mscomm11.ComPort = 1
‘9600 baud ,no parity ,8 bit data ,1 stop bit
Mscomm11.Settings = ”9600 ,N,8,1”
‘ra lệnh cho điều khiển Mscomm1 đọc hết bộ đệm nhận khi
dùng ‘lệnh Input
Mscomm11.InputLen = 0
‘mở cổng
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 92
Mscomm11.PortOpen = True
‘gửi lệnh attention tới MODEM
Mscomm11.Output = “ATV1Q0” & Chr$(13) ‘để chắc rằng

‘MODEM trả lời “OK”


‘đợi dữ liệu trả lời gửi về cổng nối tiếp
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$ , “OK” &vbCRLF)
‘đọc dữ liệu trả lời “OK”
‘đóng cổng nối tiếp
Mscomm11.PortOpen = False
End Sub
Sau đây ta sẽ lần lượt tìm hiểu một số thuộc tính quan trọng của điều
khiển truyền thông .

Thuộc tính Settings

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$]

 Nếu paramString$ không hợp lệ (valid) thì khi mở cổng, điều


khiển truyền thông sẽ phát sinh lỗi 380 ( lỗi giá trị thuộc tính không hợp lệ ).
 ParamString$ là một chuỗi chứa 4 thông số thiết lập cho cổng
truyền thông RS-232 và có dạng như sau :
“BBBB ,P ,D ,S”
Ở đây BBBB xác định tốc độ baud, P là bit chỉ tính chẵn lẻ, D là số bit
dữ liệu và S là số các bit dừng (stop bits). Giá trị mặc định của paramString$
là : “9600, N, 8,1”
Bảng sau đây liệt kê các giá trị baud hợp lệ :

 Thông số tốc độ baud


110 2400 19200 57600
300 4800 28800 115200
600 9600 38400 128000
1200 14400 56000 256000
Số bit dữ liệu hợp lệ trong một lần truyền (khung truyền) là : 4 ,5 ,6 ,7 ,8
(default)
Số bit Stop hợp lệ là : 1 ,1.5 ,2.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 93
Thí dụ sau cho phép đặt thông số cho cổng truyền ở tốc độ baud là
4800,không kiểm tra bit chẵn lẻ ,8 bit dữ liệu ,1 bit dừng :
Mscomm11.Settings =”4800 ,N ,8 ,1”
Kiểu dữ liệu của Mscomm11.Settings là : String .

Thuộc tính CommPort :


Thuộc tính này đặt và trả lại số cổng truyền thông .Cú pháp của câu
lệnh là :
[form.].CommPort [=portnumber%]

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

Thuộc tính PortOpen :


Thuộc tính PortOpen đặt và trả lại trạng thái của cổng truyền thông
(đóng hoặc mở). Thuộc tính này không có trong thời gian thiết kế chương
trình. Cú pháp của câu lệnh là :
[form.] MSComm.PortOpen [={True/ False}]

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 94
Thuộc tính InputLen quy định số ký tự được đọc bởi câu lệnh Input. Để
xác định số các ký tự trong bộ đệm, thuộc tính InBufferCount được kiểm tra.
Đặt InputLen là 0 để đọc toàn bộ nội dung của bộ đệm nhận.
Thuộc tính InputMode quyết định kiểu dữ liệu thu về qua thuộc tính
Input. Nếu thuộc tính này được set là CommInputModeText thì thuộc tính
Input sẽ trả về dữ liệu kiểu text vào 1 biến Variant. Nếu InputMode là
comInputModeBinary thì Input sẽ trả về dữ liệu nhị phân trong một mảng các
byte vào một biến Variant .
Thí dụ dưới đây chỉ ra cách đọc dữ liệu từ bộ đệm nhận.
MSComm1.InputLen= 0 ‘đọc toàn bộ nội dung của bộ đệm
‘nhận
‘kiểm tra có dữ liệu hay không
If MSComm1.InbufferCount then
‘đọc dữ liệu
InString$ = MSComm1.Input
End if
Kiểu dữ liệu Variant.
b. Thuộc tính InBufferSize:
Thuộc tính InBufferSize đặt và trả lại kích thước bộ đệm nhận, tính theo
số byte. Cú pháp của câu lệnh là :
[form.]MSComm .InBufferSize [=numbyte%]

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.

Các thuộc tính phục vụ việc xuất dữ liệu (Output ,OutBufferCount và


OutBufferSize )
a. Thuộc tính Output:
Thuộc tính Output sẽ viết một chuỗi ký tự vào bộ đệm truyền, thuộc tính
này không có trong thời gian thiết kế chương trình. Cú pháp câu lệnh là :
( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng
Trang 95
[form.]MSComm.Output [=outstring$]
Thí dụ sau đây cho biết cách gửi các ký tự mà người dùng gõ vào từ
bàn phím:
Private Sub Form_load (KeyAscii as Integer)
MSComm1.Outport =Chr$(KeyAscii)
End Sub
Thuộc tính Output có thể xuất dữ liệu dạng text hay dạng binary. Để
gửi dữ liệu text, ta phải khai báo một biến kiểu Variant và cho nó chứa chuỗi
muốn gửi, sau đó gán biến này cho thuộc tính Output. Để gửi dữ liệu dạng
binary, ta phải truyền một biến Variant chứa một mảng các byte cho thuộc
tính Output .
Thông thường, nếu ta gửi một chuỗi theo chuẩn ANSI tới ứng dụng, ta
có thể gửi dữ liệu dạng text. Nếu ta có dữ liệu mà chứa các ký tự điều khiển
được nhúng (embedded) như các ký tự NULL,… thì ta sẽ truyền dữ liệu theo
dạng binary.
Kiểu dữ liệu của thuộc tính này là Variant.
b. Thuộc tính OutBufferSize :
Thuộc tính OutBufferSize đặt và trả lại kích thước của các ký tự trong
bộ đệm truyền. Cú pháp của câu lệnh là :
[form.] MSComm.OutBufferSize [=numbyte%]

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%]

Kiểu dữ liệu của thuộc tính này là Integer.


d. Thuộc tính RTSEnable :
Thuộc tính này xác định xem liệu có cho phép đường RTS hay
không. Thông thường tín hiệu RTS (Request To Send) được gửi từ máy tính
tới MODEM để yêu cầu sự cho phép truyền dữ liệu. Cú pháp câu lệnh như
sau:
[form.]Mscomm1.RTSEnable [=(True | False)]

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 96
Ta xác lập giá trị này là True để đặt đường RTS lên mức cao nếu cổng
đang mở và xuống mức thấp nếu cổng đang đóng. Đường RTS được sử
dụng khi có bắt tay phần cứng sử dụng RTS/CTS. Thuộc tính RTSEnable cho
phép hỏi vòng đường RTS nếu ta cần xác định trạng thái của nó.
Kiểu dữ liệu của thuộc tính này : Boolean.
e. Thuộc tính CommEvent :
Thuộc tính này trả lại hầu hết sự kiện hoặc lỗi truyền thông gần nhất.
Thuộc tính này không có sẵn trong khi thiết kế và là chỉ đọc khi chạy chương
trình. Cú pháp câu lệnh là:
[form.]Mscomm1.CommEvent
Mặc dù sự kiện OnComm được phát sinh mỗi khi có một sự kiện hay
lỗi truyền thông xảy ra nhưng thuộc tính CommEvent lại chứa mã số của sự
kiện hay là lỗi truyền thông đó .Như vậy để xác định xem điều gì đã xảy ra thì
ta phải kiểm tra thuộc tính CommEvent .
Các lỗi truyền thông bao gồm :
Hằng số Giá trị Mô tả
comEventBreak 1001 Đã nhận được tín hiệu Break
comEventFrame 1004 Phần cứng phát hiện một lỗi khung truyền
comEventOverrun 1006 Tràn cổng .Phần cứng không thể đọc được ký tự
này trước khi ký tự kế gửi đến và bị mất
comEventRxOver 1008 Tràn bộ đệm nhận .Hết chỗ trong bộ đệm nhận
comEventRxParity 1009 Phần cứng phát hiện ra một lỗi chẵn lẻ
comEventTxFull 1010 Bộ đệm truyền đầy .Bộ đệm truyền bị đầy khi cố
đưa thêm ký tự vào hàng đợi
comEventDCB 1011 Một lỗi xuất hiện ở bộ điều khiển dữ liệu(Data
Control Block) của port

Các sự kiện truyền thông bao gồm:

Hằng số Giá trị Mô tả


ComEvSend 1 Có ít hơn số ký tự định bởi SThreshold trong bộ đệm
truyền
comEvReceiv 2 Đã nhận số ký tự bằng với số ký tự định bởi
e Rthreshold .Sự kiện này được phát ra liên tục cho đến
khi ta dùng thuộc tính Input để chuyển dữ liệu khỏi bộ
đệm nhận .
ComEvCTS 3 Có sự thay đổi trên đường CTS
ComEvDSR 4 Có sự thay đổi trên đường DSR .Sự kiện này chỉ phát
sinh khi DSR chuyển từ 1 về 0
ComEvCD 5 Có sự thay đổi trên đường CD (Carrier Detect)
ComEvRing 6 Phát hiện tiếng chuông (gọi). Một số vi mạch UART
không hỗ trợ việc này.
ComEvEOF 7 Ký tự EOF (Mã ASCII 26) được nhận.

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 97
Kiểu dữ liệu của thuộc tính này : Integer
f. Thuộc tính InputLen
Đặt và trả lại số ký tự mà thuộc tính Input đọc được từ bộ đệm
nhận .Giá trị mặc định của thuộc tính này là bằng 0 .Đặt InputLen =0 để điều
khiển truyền thông đọc hết nội dung bộ đệm nhận .Cú pháp câu lệnh như sau
:
[form.] Mscomm1.InputLen [=numchars%]
Thuộc tính này rất có hữu ích khi đọc dữ liệu từ các máy có lối ra được
định dạng cố định về chiều dài khối dữ liệu .
Kiểu dữ liệu của thuộc tính này : Integer
g. Thuộc tính ParityReplace
Đặt và trả lại ký tự dùng thay thế ký tự không hợp lệ trong dòng dữ liệu
khi lỗi chẵn lẻ xảy ra .Cú pháp :
[form.]Mscomm1.ParityReplace [=char$]
Bit chẵn lẻ là bit được truyền cùng với các bit dữ liệu và được dùng cho
việc kiểm tra lỗi .Khi dùng bit chẵn lẻ ,điều khiển truyền thông sẽ cộng tất cả
các bit có giá trị bằng 1 và kiểm tra tổng số các bit đó xem là chẵn hay lẻ
(tương ứng với việc xác lập bit chẵn lẻ khi mở cổng ) .Theo mặc định ,điều
khiển dùng dấu chấm hỏi (?) để thay thế các ký tự không hợp lệ .Đặt
ParityReplace là “ “ để bỏ khả năng thay thế ký tự khi lỗi chẵn lẻ xuất hiện .Sự
kiện OnComm vẫn được phát sinh và thuộc tính CommEvent được đặt thành
comEventRxParity .
Kiểu dữ liệu của thuộc tính này : String
h. Thuộc tính Rthreshold
Đặt và trả lại số ký tự sẽ nhận trước khi điều khiển Mscomm1 đặt thuộc
tính comEvent thành comEvReceive và phát sinh sự kiện OnComm .Cú
pháp :
[form.] Mscomm1.Rthreshold [=numchar%]

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 98
Hàm này tương tự như thuộc tính Output nhưng trả lại số byte ký tự
được gửi đi
3. Sự kiện Oncomm
Sự kiện OnComm được phát sinh vào bất cứ khi nào giá trị của thuộc
tính CommEvent thay đổi . Cú pháp sự kiện :
Private Sub [form.]Mscomm1_OnComm()
Thuộc tính CommEvent chứa mã số của lỗi hay sự kiện phát sinh bởi
sự kiện OnComm. Nếu đặt các thuộc tính Rthreshold hoặc SThreshold bằng
0 sẽ vô hiệu bẫy sự kiện Receive và Send .

4. Hỏi vòng ở cổng RS-232 :


Thường khi làm việc với điều khiển Mscomm1, ta dùng phương pháp
điều khiển theo sự kiện .Nhưng ta cũng có thể sử dụng kỹ thuật hỏi vòng để
thông tin qua cổng RS-232. Chương trình ví dụ sau đây sử dụng COM2 để
gửi thông báo “Hello” và sau đó chờ chuỗi nhận. Kỹ thuật này quy định là sẽ
nhận được đáp ứng bằng cách kiểm tra liên tục số các ký tự nhận được trong
bộ đệm nhận (InBufferCount). Khi có nhiều hơn một ký tự trong bộ đệm lối
vào thì ký tự này sẽ được đọc. Chương trình như sau :

Private Sub Form_Load()


Dim Str as String ‘chuỗi để chứa dữ liệu nhập
Mscomm11.ComPort =2 ‘dùng COM2
Mscomm11.Settings=”9600 ,N ,8 ,1” ‘9600 baud ,không
‘parity ,8 bits data ,1 ‘stop bit
Mscomm11.InputLen=0 ‘đọc hết bộ đệm lối vào khi Input đã
được dùng
Mscomm11.PortOpen=True ‘mở cổng
Text1.text=”Sending : Hello”
Mscomm11.Output=”Hello” ‘gửi thông báo
Do ‘chờ đáp ứng từ cổng
DoEvents
Loop Until Mscomm11.InBufferCount>=2
Str = Mscomm11.Input ‘đọc bộ đệm Input
Text2.Text=”Received:” +Str
Mscomm11.PortOpen=False ‘đóng cổng nối tiếp
End Sub

5. Các thông báo lỗi (Error Messages Code)

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

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 99
Thuộc tính là chỉ đọc, Phần cứng không sẵn dùng
383 8010
comSetNotSupport (bị khóa bởi thiết bị khác)
Thuộc tính là chỉ đọc, Không thể định vị được
394 8011
comGetNotSupport hàng đợi (queues)
Tác động không hợp lệ lên cổng
8000 8012 Cổng chưa mở
đã mở
Giá trị timeout cần phải lớn hơn
8001 8013 Cổng đã mở rồi
Zero
Không thể cho phép khai
8002 Số cổng không hợp lệ 8014
báo(nitification)comm
Thuộc tính chỉ có khi chạy Không đặt trạng thái cho
8003 8015
chương trình comm được
Thuộc tính là chỉ đọc khi chạy Không đặt mặt nạ sự kiện
8004 8016
chương trình comm được
Tác động chỉ hợp lệ khi
8005 Cổng đã mở rồi 8018
cổng đã mở
Số nhận dạng thiết bị là không
8006 8019 Thiết bị bận
hợp lệ hoặc không được hỗ trợ
Giá trị Baud xác định là không
8007 8020 Lỗi đọc thiết bị truyền thông
hợp lệ
Kích thước byte xác định là Lỗi bên trong liên quan khối
8008 8021
không hợp lệ điều khiển thiết bị của port

III. Phần giao diện :

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 100
Chương trình giao tiếp nối tiếp dùng ngôn ngữ Visual Basic như
sau:

‘Phần khai báo biến toàn cục trrong module

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 101
public LenhT, DiaChi As String 'bien chua ma lenh dua ve
cho vi xu ly
Public GTNhan As Variant ' bien chua data tu vi
xu ly gui len
Public Byte1, Byte2, Byte3, Byte4 As String
'la 4 byte nhan duoc tu vi xu ly
'byte1 chua dia chi cua vxl
'byte2 chua gia tri nhiet do
'byte3 chua so nguoi trong phong
'byte4 trang thai den va quat
Public Byte21, Byte22, Byte23, Byte24 As String
'cac bien cho phong 2
Public Const AnNinh = "Khong co nguoi la xam nhap"
Public Const KAnNinh = "Canh bao co nguoi la xam nhap"

‘ ham truyen du lieu toi cac vi xu li

Public Sub TRUYEN(GIATRI As String)


Dim i As Integer
frmchinh.MSComm1.RTSEnable = True
frmchinh.MSComm1.Output = GIATRI
For i = 0 To 10000
i = i + 1
Next i
frmchinh.MSComm1.RTSEnable = False
End Sub

‘ Ham nhan du lieu tu vi xu li

Public Sub NHAN()


Dim i, thongbao As Integer
Dim Test As String
frmchinh.MSComm1.RTSEnable = False
For i = 1 To 30000
i = i + 1
Next i
Do
DoEvents
Loop Until (frmchinh.MSComm1.InBufferSize >= 4) Or (i
>= 30000)
GTNhan = frmchinh.MSComm1.Input
'thuc hien gan gia tri cho bytei (i=1-4)
Test = Left$(GTNhan, 1)

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 102
If Test = "A" Then
Byte1 = Left$(GTNhan, 1)
Byte2 = Mid$(GTNhan, 2, 1)
Byte3 = Mid$(GTNhan, 3, 1)
Byte4 = Right$(GTNhan, 1)
Else
If Test = "B" Then
Byte21 = Left$(GTNhan, 1)
Byte22 = Mid$(GTNhan, 2, 1)
Byte23 = Mid$(GTNhan, 3, 1)
Byte24 = Right$(GTNhan, 1)
Else
thongbao = MsgBox("So lieu truyen ve bi
loi.Can xem lai duong truyen", vbOKOnly, "Loi duong
truyen")
End If
End If
End Sub
‘********************************************************
‘Chuong trinh trong Frmchinh
‘*******************************************************
Dim ToanCuc As Variant
Dim Dem, i, j As Integer
Dim NHAN As String
Private Sub ChkP01_Click()
If ChkP01.Value = 1 Then frmP01.Show
If ChkP01.Value = 0 Then
Unload frmP01
End If
'******************************

End Sub

Private Sub ChkP02_Click()


If ChkP02.Value = 1 Then frmP02.Show
If ChkP02.Value = 0 Then
Unload frmP02
End If
'***************************

End Sub

Private Sub Command1_Click()

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 103
End
End Sub

Private Sub Form_Load()


Dim i1, i2 As Integer
ChkP03.Enabled = False
ChkP04(1).Enabled = False
LblTThai.Caption = "Binh thuong"
TxtChinh = CStr(2)
OptAuto.Value = True
'*********************************
'PHAN GIA DINH BIEN
Byte2 = "!"
Byte3 = "!"
Byte4 = "O"
Byte22 = "!"
Byte23 = "!"
Byte24 = "O"
LenhT = "a"
'*********************************
'KHOI DONG COM
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
'cho thu du lieu dua ve tu vi xu ly
frmP02.Timer1.Enabled = True
frmP01.Timer1.Enabled = True
'hien thi so nguoi len frmchinh
frmchinh.Timer1 = True
End Sub

Private Sub OptAuto_Click()


With frmP01
frmP01.fraDkP01.Enabled = False
frmP01.OptTdenP01.Enabled = False
frmP01.OptMdenP01.Enabled = False
frmP01.OptTquatP01.Enabled = False
frmP01.OptMquatP01.Enabled = False
frmP01.Frame1.Enabled = False
frmP01.Frame2.Enabled = False
End With
With frmP02

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 104
frmP02.FraDkP02.Enabled = False
frmP02.OptTdenP02.Enabled = False
frmP02.OptMdenP02.Enabled = False
frmP02.OptTquatP02.Enabled = False
frmP02.OptMquatP02.Enabled = False
frmP02.Frame2.Enabled = False
frmP02.Frame3.Enabled = False
End With
frmP01.cmdDongYP01.Enabled = False
frmP02.cmDongYP02.Enabled = False
'***********************************

End Sub

Private Sub OptDenChinh_Click()


FrmDkDen.Show
End Sub

Private Sub OptManual_Click()


With frmP01
frmP01.fraDkP01.Enabled = True
frmP01.OptTdenP01.Enabled = True
frmP01.OptMdenP01.Enabled = True
frmP01.OptTquatP01.Enabled = True
frmP01.OptMquatP01.Enabled = True
frmP01.Frame1.Enabled = True
frmP01.Frame2.Enabled = True
End With
With frmP02
frmP02.FraDkP02.Enabled = True
frmP02.OptTdenP02.Enabled = True
frmP02.OptTquatP02.Enabled = True
frmP02.OptMdenP02.Enabled = True
frmP02.OptMquatP02.Enabled = True
frmP02.Frame2.Enabled = True
frmP02.Frame3.Enabled = True
End With
frmP01.cmdDongYP01.Enabled = True
frmP02.cmDongYP02.Enabled = True
'************************************

End Sub

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 105
Private Sub OptQuatChinh_Click()
FrmDkQuat.Show
End Sub

Private Sub Timer1_Timer()


' xuat so nguoi ra frmchinh
i1 = Val(frmP01.TxtSoNguoiP01.Text)
i2 = Val(frmP02.TxtSoNguoiP02.Text)
TxtChinh.Text = CStr(i1 + i2)
End Sub

Private Sub cmdDongYP01_Click()


Dim Test As String
'xac dinh lenh hoat dong cho vxl
If (OptMdenP01.Value = False And OptMquatP01.Value =
False) Then LenhT = "C"
If (OptMdenP01.Value = False And OptMquatP01.Value =
True) Then LenhT = "D"
If (OptMdenP01.Value = True And OptMquatP01.Value =
False) Then LenhT = "F"
If (OptMdenP01.Value = True And OptMquatP01.Value =
True) Then LenhT = "G"
'xac dinh dia chi truyen la vxl 1
DiaChi = "A"
Test = LenhT

'goi ham truyen LenhT cho vi xu ly


Call TRUYEN(DiaChi)
Call TRUYEN(Test)
Stop

End Sub

Private Sub cmdThoatP01_Click()


Unload Me
frmchinh.ChkP01.Value = False
End Sub

Private Sub Option1_Click()

End Sub

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 106
Private Sub Form_Load()

If frmchinh.OptAuto.Value = True Then


With frmP01
frmP01.fraDkP01.Enabled = False
frmP01.OptTdenP01.Enabled = False
frmP01.OptMdenP01.Enabled = False
frmP01.OptTquatP01.Enabled = False
frmP01.OptMquatP01.Enabled = False
frmP01.Frame1.Enabled = False
frmP01.Frame2.Enabled = False
End With
With frmP02
frmP02.FraDkP02.Enabled = False
frmP02.OptTdenP02.Enabled = False
frmP02.OptMdenP02.Enabled = False
frmP02.OptTquatP02.Enabled = False
frmP02.OptMquatP02.Enabled = False
frmP02.Frame2.Enabled = False
frmP02.Frame3.Enabled = False
End With
End If
'**************************************
'KHOI DONG COM
If frmchinh.MSComm1.PortOpen = True Then
frmchinh.MSComm1.PortOpen = False
frmchinh.MSComm1.CommPort = 1
frmchinh.MSComm1.Settings = "9600,n,8,1"
frmchinh.MSComm1.PortOpen = True

'Cap nhat trang thai cua phong


frmP01.Timer1.Enabled = True
End Sub
Private Sub CapnhatP01()
Dim NhietdoP01, SoNguoiP01, i As Integer
Dim thongbao As String

NhietdoP01 = Asc(Byte2)
txtNhietDoP01.Text = Val(NhietdoP01) 'hien thi
nhiet do
SoNguoiP01 = Asc(Byte3)
TxtSoNguoiP01.Text = Val(SoNguoiP01) 'hien thi so
nguoi

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 107
If Byte4 = "O" Then
txtDenP01.Text = "OFF"
txtQuatP01.Text = "OFF"
frmchinh.LblTThai = AnNinh
End If
If Byte4 = "P" Then
txtDenP01.Text = "OFF"
txtQuatP01.Text = "OFF"
frmchinh.LblTThai = KAnNinh
End If
If Byte4 = "Q" Then
txtDenP01.Text = "OFF"
txtQuatP01.Text = "ON"
frmchinh.LblTThai = AnNinh
End If
If Byte4 = "R" Then
txtDenP01.Text = "OFF"
txtQuatP01.Text = "ON"
frmchinh.LblTThai = KAnNinh
End If
If Byte4 = "S" Then
txtDenP01.Text = "ON"
txtQuatP01.Text = "OFF"
frmchinh.LblTThai = AnNinh
End If
If Byte4 = "T" Then
txtDenP01.Text = "ON"
txtQuatP01.Text = "OFF"
frmchinh.LblTThai = AnNinh
End If
If Byte4 = "U" Then
txtDenP01.Text = "ON"
txtQuatP01.Text = "ON"
frmchinh.LblTThai = AnNinh
End If
If Byte4 = "X" Then
txtDenP01.Text = "ON"
txtQuatP01.Text = "ON"
frmchinh.LblTThai = KAnNinh
End If

'BAO LOI TRUYEN (lenh truyen ve sai)

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 108
Select Case Byte4
Case "O"
GoTo TB
Case "P"
GoTo TB
Case "Q"
GoTo TB
Case "R"
GoTo TB
Case "S"
GoTo TB
Case "T"
GoTo TB
Case "U"
GoTo TB
Case "X"
GoTo TB
End Select

thongbao = MsgBox("Ban can kiem tra lai he thong.Chu


trong cac he thong chong trom", vbOKOnly, "Loi dieu
khien")

TB:
i = i + 1

End Sub

Private Sub Timer1_Timer()


Dim Kich As String
Kich = "E"
Call TRUYEN(DiaChi)
Call TRUYEN(Kich)
Call CapnhatP01
End Sub

( Word Converter - Unregistered ) http://www.word-converter.net SVTH: Lê Hoàng Dũng


Trang 109

You might also like