Đối với phần mềm giao diện chương trình trên máy tính nhóm cũng tiến hành tương
tự. Ban đầu là xem các tài liệu nói về cách lập trình bằng VISUAL BASIC sau đó tiến
hành viết thửcác chương trình đơn giản có liên quan đến chương trình sẽviết. Khi đã có kiến
thức cơ bản vềlập trình VISUAL BASIC nhóm mới bắt đầu viết về chương trình giám sát và
điểu khiển nhiệt độ. Công việc này cũng tiến hành theo nhiều giai đoạn từviệc bốtrí các nút
lệnh, các bảng lựa chọn đến cách giao tiếp giữa máy tính và mạch đo nhiệt đô cuối cùng là
việc xây dựng giao diện chương trình cho “bắt mắt” và đặc biệt là dễdàng sửdụng.
90 trang |
Chia sẻ: lylyngoc | Lượt xem: 2604 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Điều khiển thiết bị điện qua máy vi tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Để Reset hệ thống, chân Reset phải ở mức cao tối thiểu hai chu kì máy (T= 2 s) và
VRST phải áp cực tiểu là 2.5V.
Chọn VRST = 3V RRST = 10k
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
51
T = 40 ms C = (40.103)/ [8.2.103.ln(5/3) ] = 9.6x10-6 (F) chọn C = 10 F.
Mạch dao động dùng thạch anh 11.0592MHz, tụ C11 và C12 lấy theo giá trị chuẩn là
33pF 10%.
3.3. Khối rờ-le:
Chọn rờ-le đôi, thông số kỹ thuật:
Điện áp kích: 12VDC
Dòng chịu được: 1A
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
52
Diode chống xả ngược (được mắc ngược cực). Điện trở gắn nối tiếp với led dùng để
hạn dòng cho led, led báo để có kích relay hay không. Điện trở gắn ở cực B transistor để bảo
vệ cho transistor.
Chọn : Rhạn dòng là 1K
Rbảo vệ là 1k
Khi cực B của transistor ở mức 1 transistor dẫn led sáng và relay được kích
thiết bị được mở.
3.4. Khối nguồn:
Do mạch cung cấp không đòi hỏi về công suất quá cao nên ta chọn biến áp vừa phải
dòng cung cấp khoảng 200mA và điện áp ra là 12VAC với tần số dao động của nguồn điện
xoay chiều là 50Hz đến 60Hz và được chỉnh lưu để lấy ra hai nguồn mong muốn là 5V và
12V.
Nguồn 5V được sử dụng để cung cấp cho hầu hết các linh kiện của mạch điện: Là
nguồn nuôi cho bộ vi xử lý, nguồn cung cấp cho khối giao tiếp RS-232.
Nguồn 12V dùng để cấp nguồn cho khối rờ-le, sở dĩ không sử dụng nguồn 5V là để
cách ly nguồn với các khối khác để các khối này hoạt động được ổn định
*Tính toán lý thuyết:
Với nguồn vào từ biến áp có dòng 200mA và với điện áp ngõ ra của biến áp là
VVV 172*122*0 điện áp hiệu dụng
Vì thế ta chọn diode 1N4007 với mức điện áp Vgh=1000V,I = 1A và có Igh= 30A, ngoài ra
nhiệt độ chịu được có thể lên tới +1750C
Ta chọn IC KA7805 với các thông số tương đối phù hợp:
Điện áp ngõ vào chịu có thể chịu được: VVIN 4035
Công suất tiêu thụ tương đối vừa phải : WPD 8.20
Tầm nhiệt độ chịu được khi kéo tải: CT 015030
Để hoạt động trong việc có tải dòng ra đạt: mAI 1000
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
53
Trong từng điều kiện nhiệt độ thì tầm hoạt động của IC sẽ cho một kết qua thay đổi
khác nhau,tốt nhất đừng cho IC quá nóng để cho sử hoạt động ổn định được tốt nhất,nếu quá
nóng ta nên dùng tản nhiệt,do trong mạch không sử dụng nhiều qua các tải nặng nên ta
không dùng tản nhiệt với mức điện áp ở ngõ vào là 17V do nên không làm cho sự hoạt động
bị ảnh hưởng nhiều.
Để phục vụ cho khối công suất ta chọn IC KA7812 với những tính chất như 7805:
Điện áp ngõ vào có thể chịu được: VVIN 4735
Do phần công suất của ta không phải chạy những tải quá nặng nên về dòng không
cần lớn nên ta sử dụng trực tiếp dòng do IC KA7812 cung cấp mAI 1000 đủ để có thể hoạt
động cho phần tải.
Lưu ý: trước mỗi ngõ vào của IC ổn áp nên có thêm một tụ lọc nhiễu nhỏ hơn F1
Chọn tụ lọc nguồn với nguồn ngõ vào sau chỉnh lưu là 17VAC nên ta chọn tụ
=25V/1000uF là phù hợp cho mạch điện không quá lớn.
II. THIẾT KẾ PHẦN MỀM VÀ GIAO DIỆN ĐIỀU KHIỂN.
. 1. Lựa chọn ngôn ngữ lập trình.
Việc lập trình có thể thực hiện bằng một vài ngôn ngữ như hợp ngữ (Assembly), C và
Basic. Đây là những ngôn ngữ thông dụng nhất. Assembly là ngôn ngữ bậc thấp, việc lập trình
được tiến hành một cách chậm chạp, nhưng chiếm không gian bộ nhớ ít nhất và đưa ra kết
quả nhanh nhất khi đánh giá chương trình qua tốc độ thực hiện. Đây cũng là một ngôn ngữ
được sử dụng thông dụng nhất trong lập trình cho vi điều khiển. Ngôn ngữ C thể hiện rõ
tính dễ viết, dễ hiểu hơn, nhưng việc thực thi chương trình chậm hơn chương trình viết bằng
hợp ngữ. Basic là ngôn ngữ dễ học nhất và tập lệnh của BASIC gần gũi nhất với cách tư duy
của con người, nhưng cũng giống như ngôn ngữ C chương trình viết bằng Basic cũng chạy
chậm hơn chương trình hợp ngữ. Do vậy nhóm thực hiện quyết định chọn ngôn ngữ Assembly
để lập trình cho vi điều khiển AT89S52 do những ưu điểm của nó rất thích hợp cho việc
thiết kế của nhóm.
3. Lưu đồ giải thuật:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
54
Đầu tiên khi khởi động chương trình thì sẽ có các lệnh nạp giá trị ban đầu cho các
thanh ghi và cho các bit địa chỉ, đồng thời thiết lập các thông số cho việc truyền dữ liệu nối
tiếp như: tốc độ baud, cho phép ngắt, …
Lúc này vi xử lý sẽ đợi lệnh từ máy tính hoặc nút nhấn để thực hiện đóng ngắt thiết bị.
Nếu có lệnh từ máy tính truyền xuống, thì cờ ngắt thu RI sẽ tự động được bật lên và
bắt đầu đi vào chương trình ngắt, vi xử lý sẽ lấy dữ liệu nhận được so sánh với dữ liệu đặt
trước, nếu đúng thì đóng – ngắt thiết bị, nếu sai thì quay trở về đầu chương trình
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
55
3. Giới thiệu các ngôn ngữ lập trình.
Ngôn ngữ lập trình được chia thành hai loại đó là ngôn ngữ lập trình cấp thấp và ngôn
ngữ lập trình cấp cao.
Ngôn ngữ lập trình cấp thấp.
Là ngôn ngữ được định nghĩa gắn liền với cấu trúc bên trong và các nguyên tắc làm
việc của máy. Nó cho phép người lập trình tác động trực tiếp đến các thanh ghi và bộ nhớ
dùng để viết hệ điều hành và viết những chương trình.
Ví dụ như ngôn ngữ lập trình Assembler, IBM, Compass, CDC…
Ngôn ngữ lập trình cấp cao.
Được hình thành năm 1955, đây là ngôn ngữ định nghĩa độc lập với cấu trúc của máy
và rất gần gũi với ngôn ngữ của con người. đặc điểm của ngôn ngữ này là:
- Có mức độ tổng quát cao hơn ngôn ngữ máy, gần gũi với ngôn ngữ con người và
có cấu trúc chặt chẽ, chính xác.
- Có cấu trúc lệnh đơn giản.
- Do ngôn ngữ này hoàn toàn độc lập với cấu trúc bên trong của máy tính nên có thể sử
dụng cho nhiều loại máy khác nhau. Nhưng để máy có thể hiểu được loại ngôn ngữ này thì
cần phải có các chương trình chuyển đổi gọi là chương trình biên dịch (Compler) hoặc diễn
dịch (Interpreter).
* Các ngôn ngữ lập trình thông dụng.
Ngôn ngữ lập trình Turbo Pascal.
Ngôn ngữ Pascal do giáo sư Niklaws Wirth phát minh năm 1970. Đây là ngôn ngữ có
cấu trúc chặt chẽ và được sử dụng rộng rãi để giảng dạy lập trình trong các trường trung
học, cao đẳng cũng như đại học.
Tuy vậy do ngôn ngữ lập trình Pascal chạy trên nền DOS nên việc tạo ra các giao
diện thường kém hấp dẫn (mặc dù hiện nay cũng có có phiên bản Turbo Pascal hạy trên nền
Win). Do vậy nó thường mang tính chất đào tạo hơn là tính chất thương mại như các sản phẩm
ngày nay như viết bằng Delphi hay Visual Basic, Visual C++…
Ngôn ngữ lập trình Visual Basic.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
56
VB 6.0 là phiên bản mới nhất của Visual Basic do hãng Microsoft viết. đây là ngôn
ngữ lập trình mạnh sử dụng phương pháp lập trình hướng đối tượng nên nó đã giúp ích rất
nhiều cho người lập trình nhờ vào khả năng tự động của nó. Ngoài phương pháp kinh điển là
xây dựng các lớp đối tượng bằng việc viết mã lệnh, với VB 6.0 ta có thể thực hiện công việc
này chỉ bằng các thao tác “kéo - thả” các đối tượng trên màn hình để thiết kế các ứng dụng
bất kỳ một cách nhanh chóng và chính xác. Bên cạnh các công cụ được hỗ trợ sẵn, người sử
dụng còn có thể tạo ra thêm các công cụ khác để phục vụ cho những mục đích riêng của mình.
Khác với ngôn ngữ Pascal, VB cho phép người sử dụng có thể kiểm tra chương trình
trong quá trình lập trình.
Đây là ngôn ngữ lập trình rất mạnh hiện nay. Nó được sử dụng để viết rất nhiều các
chương trình ứng dụng trong nền công nghiệp hiện nay.
SƠ LƯỢT VỀ VB:
* Kiểu dữ liệu
Khái niệm
Kiểu dữ liệu là một tập hợp các giá trị mà một biến của kiểu có thể nhận và một tập
hợp các phép toán có thể áp dụng trên các giá trị đó.
Các kiểu dữ liệu cơ sở trong Visual Basic
Kiểu dữ
liệu Mô tả
Boolean Gồm 2 giá trị: TRUE & FALSE.
Byte Các giá trị số nguyên từ 0 – 255
Integer Các giá trị số nguyên từ -32768 – 32767
Long Các giá trị số nguyên từ -2147483648 – 2147483647. Kiểu dữ liệu này thường
được gọi là số nguyên dài.
Single Các giá trị số thực từ -3.402823E+38 – 3.402823E+38. Kiểu dữ liệu này còn được gọi là độ chính xác đơn.
Double Các giá trị số thực từ -1.79769313486232E+308 - 1.79769313486232E+308. Kiểu dữ liệu này được gọi là độ chính xác kép.
Currency Dữ liệu tiền tệ chứa các giá trị số từ -922.337.203.685.477,5808 - 922.337.203.685.477,5807.
String Chuỗi dữ liệu từ 0 đến 65.500 ký tự hay ký số, thậm chí là các giá trị đặc biệt
như ^%@. Giá trị kiểu chuỗi được đặt giữa 2 dấu ngoặc kép (“”).
Date Dữ liệu kiểu ngày tháng, giá trị được đặt giữa cặp dấu ##. Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel.
Variant Chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
57
* Hằng số
Khái niệm
Hằng số (Constant) là giá trị dữ liệu không thay đổi.
Khai báo hằng
[Public|Private] Const [As ] =
Trong đó, tên hằng được đặt giống theo quy tắc đặt tên của điều khiển.
Ví dụ:
Const g = 9.8
Const Num As Integer = 4*5
Ta có thể dùng cửa sổ Object Browser để xem danh sách các hằng có sẵn của VB và
VBA (Visual Basic for Application).
Trường hợp trùng tên hằng trong những thư viện khác nhau, ta có thể chỉ rõ tham
chiếu hằng.
[.][.]
* Biến
Khái niệm
Biến (Variable) là vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong quá trình
tính toán, so sánh và các công việc khác.
Biến có 2 đăc điểm:
- Mỗi biến có một tên.
- Mỗi biến có thể chứa duy nhất một loại dữ liệu.
Khai báo
[Public|Private|Static|Dim] [ As ]
Trong đó, tên biến: là một tên được đặt giống quy tắc đặt tên điều khiển. Nếu cần
khai báo nhiều biến trên một dòng thì mỗi khai báo cách nhau dấu phẩy (,).
Nếu khai báo biến không xác định kiểu dữ liệu thì biến đó có kiểu Variant.
Khai báo ngầm: Đây là hình thức không cần phải khai báo một biến trước khi sử
dụng. Cách dùng này có vẻ thuận tiện nhưng sẽ gây một số sai sót, chẳng hạn khi ta đánh
nhầm tên biến, VB sẽ hiểu đó là một biến mới dẫn đến kết quả chương trình sai mà rất khó
phát hiện.
Ví dụ:
Dim Num As Long, a As Single
Dim Age As Integer
Khai báo tường minh: Để tránh rắc rối như đã nêu ở trên, ta nên quy định rằng VB sẽ
báo lỗi khi gặp biến chưa được khai báo bằng dòng lệnh:
Option Explicit trong phần Declaration (khai báo) của mô-đun.
Option Explicit chỉ có tác dụng trên từng mô-đun do đó ta phải đặt dòng lệnh này
trong từng mô-đun của biểu mẫu, mô-đun lớp hay mô-đun chuẩn.
* Biểu thức
Khái niệm
Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử
lý dữ liệu.
Toán hạng: là giá trị dữ liệu (biến, hằng…).
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
58
Biểu thức: là tập hợp các toán hạng và các toán tử kết hợp lại với nhau theo quy tắc
nhất định để tính toán ra một giá trị nào đó.
Các loại phép toán
Các phép toán số học: Thao tác trên các giá trị có kiểu dữ liệu số.
Phép
toán Ý nghĩa Kiểu của đối số Kiểu của kết quả
- Phép lấy số đối Kiểu số (Integer, Single…) Như kiểu đối số
+ Phép cộng hai số Kiểu số (Integer, Single…) Như kiểu đối số
- Phép trừ hai số Kiểu số (Integer, Single…) Như kiểu đối số
* Phép nhân hai số Kiểu số (Integer, Single…) Như kiểu đối số
/ Phép chia hai số Kiểu số (Integer, Single…)
Single hay
Double
\ Phép chia lấy phần nguyên Integer, Long Integer, Long
Mod Phép chia lấy phần dư Integer, Long Integer, Long
^ Tính lũy thừa Kiểu số (Integer, Single…) Như kiểu đối số
Các phép toán quan hệ
Đây là các phép toán mà giá trị trả về của chúng là một giá trị kiểu Boolean (TRUE
hay FALSE).
Phép toán Ý nghĩa
= So sánh bằng nhau
So sánh khác nhau
> So sánh lớn hơn
< So sánh nhỏ hơn
>= So sánh lớn hơn hoặc bằng
<= So sánh nhỏ hơn hoặc bằng
Các phép toán Logic: là các phép toán tác động trên kiểu Boolean và cho kết quả là
kiểu Boolean. Các phép toán này bao gồm AND (và), OR (hoặc), NOT (phủ định). Sau đây
là bảng giá trị của các phép toán:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
59
X Y X AND Y X OR Y NOT X
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE FALSE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE TRUE
* Câu lệnh
Một câu lệnh (statement) xác định một công việc mà chương trình phải thực hiện để
xử lý dữ liệu đã được mô tả và khai báo. Các câu lệnh được ngăn cách với nhau bởi ký tự
xuống dòng. Ký tự xuống dòng báo hiệu kết thúc một câu lệnh.
Lệnh gán
Cú pháp:
=
Ví dụ:
Giả sử ta có khai báo sau:
Dim TodayTemp As Single, MinAge As Integer
Dim Sales As Single, NewSales As Single, FullName As String
Các lệnh sau gán giá trị cho các biến trên:
TodayTemp = 30.5
MinAge = 18
Sales = 200000
NewSales = Sales * 1.2
Giả sử người dùng cần nhập họ và tên vào ô nhập liệu TextBox có thuộc tính Name là
txtName, câu lệnh dưới đây sẽ lưu giá trị của ô nhập liệu vào trong biến FullName:
FullName = txtName.Text
Lưu ý: Kiểu dữ liệu của biểu thức (vế phải của lệnh gán) phải phù hợp với biến ta cần gán
trị.
Lệnh rẽ nhánh If
Một dòng lệnh:
If Then
Nhiều dòng lệnh:
If Then
Các dòng lệnh
End If
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
60
Trong đó, : biểu thức mà kết quả trả về kiểu Boolean.
Ý nghĩa câu lệnh: Các dòng lệnh hay dòng lệnh sẽ được thi hành nếu như điều kiện là đúng.
Còn nếu như điều kiện là sai thì câu lệnh tiếp theo sau cấu trúc If ... Then được thi hành.
Dạng đầy đủ: If ... Then ... Else
If Then
[Khối lệnh 1]
ElseIf Then
[Khối lệnh 2]...
[Else
[Khối lệnh n]]
End If
VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương ứng sẽ
được thi hành. Ngược lại nếu không có điều kiện nào đúng thì khối lệnh sau từ khóa Else sẽ
được thi hành.
Ví dụ:
If (TheColorYouLike = vbRed) Then
MsgBox "You are a lucky person"
ElseIf (TheColorYouLike = vbGreen) Then
MsgBox "You are a hopeful person"
ElseIf (TheColorYouLike = vbBlue) Then
MsgBox "You are a brave person"
ElseIf (TheColorYouLike = vbMagenta) Then
MsgBox "You are a sad person"
Else
MsgBox "You are an average person"
End If
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
61
Lệnh lựa chọn Select Case
Trong trường hợp có quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng cấu trúc
rẽ nhánh If…Then thì đoạn lệnh không được trong sáng, khó kiểm tra, sửa đổi khi có sai sót.
Ngược lại với cấu trúc Select…Case, biểu thức điều kiện sẽ được tính toán một lần vào đầu
cấu trúc, sau đó VB sẽ so sánh kết quả với từng trường hợp (Case). Nếu bằng nó thi hành
khối lệnh trong trường hợp (Case) đó.
Select Case
Case
[Khối lệnh 1]
Case
[Khối lệnh 2]
.
.
.
[Case Else
[Khối lệnh n]]
End Select
Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị. Trong trường hợp có
nhiều giá trị thì mỗi giá trị cách nhau bởi dấu phẩy (,). Nếu có nhiều Case cùng thỏa điều
kiện thì khối lệnh của Case đầu tiên sẽ được thực hiện.
Ví dụ của lệnh rẽ nhánh If…Then ở trên có thể viết như sau:
Select Case TheColorYouLike
Case vbRed
MsgBox "You are a lucky person"
Case vbGreen
MsgBox "You are a hopeful person"
Case vbBlue
MsgBox "You are a brave person"
Case vbMagenta
MsgBox "You are a sad person"
Case Else
MsgBox "You are an average person"
End Select
Toán tử Is & To
Toán tử Is: Được dùng để so sánh với một biểu thức nào đó.
Toán tử To: Dùng để xác lập miền giá trị của .
Ví dụ:
Select Case Tuoi
Case Is <18
MsgBox “Vi thanh nien”
Case 18 To 30
MsgBox “Ban da truong thanh, lo lap than di”
Case 31 To 60
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
62
MsgBox “Ban dang o lua tuoi trung nien”
Case Else
MsgBox “Ban da lon tuoi, nghi huu duoc roi day!”
End Select
Lưu ý: Trong ví dụ trên không thể viết Case Tuoi < 18.
* Cấu trúc lặp
Các cấu trúc lặp cho phép thi hành một khối lệnh nào đó nhiều lần.
Lặp không biết trước số lần lặp
Khối lệnhDo ... Loop: Đây là cấu trúc lặp không xác định trước số lần lặp, trong đó,
số lần lặp sẽ được quyết định bởi một biểu thức điều kiện. Biểu thức điều kiện phải có kết
quả là True hoặc False. Cấu trúc này có 4 kiểu:
Kiểu 1:
Do While
Đkiện
Loop
Đúng Sai
Khối lệnh sẽ được thi hành đến khi nào điều kiện không còn đúng nữa. Do biểu thức
điều kiện được kiểm tra trước khi thi hành khối lệnh, do đó có thể khối lệnh sẽ không được
thực hiện một lần nào cả.
Kiểu 2:
Do
Loop While
Khối lệnh sẽ được thực hiện, sau đó biểu thức điều kiện được kiểm tra, nếu điều kiện
còn đúng thì, khối lệnh sẽ được thực hiện tiếp tục. Do biểu thức điều kiện được kiểm tra sau,
do đó khối lệnh sẽ được thực hiện ít nhất một lần.
Kiểu 3:
Do Until
Loop
Cũng tương tự như cấu trúc Do While ... Loop nhưng khác biệt ở chỗ là khối lệnh sẽ
được thi hành khi điều kiện còn sai.
Kiểu 4:
Do
Loop Until
Khối lệnh được thi hành trong khi điều kiện còn sai và có ít nhất là một lần lặp.
Ví dụ: Đoạn lệnh dưới đây cho phép kiểm tra một số nguyên N có phải là số nguyên tố hay
không?
Dim i As Integer
i = 2
Do While (i <= Sqr(N)) And (N Mod i = 0)
i = i + 1
Loop
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
63
If (i > Sqr(N)) And (N 1) Then
MsgBox Str(N) & “ la so nguyen to”
Else
MsgBox Str(N) & “ khong la so nguyen to”
End If
Trong đó, hàm Sqr: hàm tính căn bậc hai của một số
Lặp biết trước số lần lặp
For ... Next
Đây là cấu trúc biết trước số lần lặp, ta dùng biến đếm tăng dần hoặc giảm dần để
xác định số lần lặp.
For = To [Step ]
[khối lệnh]
Next
Biến đếm, điểm đầu, điểm cuối, bước nhảy là những giá trị số (Integer, Single,…).
Bước nhảy có thể là âm hoặc dương. Nếu bước nhảy là số âm thì điểm đầu phải lớn hơn
điểm cuối, nếu không khối lệnh sẽ không được thi hành.
Khi Step không được chỉ ra, VB sẽ dùng bước nhảy mặc định là một.
Ví dụ: Đoạn lệnh sau đây sẽ hiển thị các kiểu chữ hiện có của máy bạn.
Private Sub Form_Click( )
Dim i As Integer
For i = 0 To Screen.FontCount
MsgBox Screen.Fonts(I)
Next
End Sub
Ví dụ: Tính N!
TextBox: Name:txtNum Bước 1: Thiết kế chương trình có giao diện:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
64
Label: Name: lblK
Bước 2: Sự kiện Command1_Click được xử lý:
Private Sub Command1_Click()
Dim i As Integer, n As Integer, Kq As Long
n = Val(txtNum.Text)
Kq = 1
For i = 1 To n
Kq = Kq * i
Next
lblKQ.Caption = Str(Kq)
End Sub
Lưu dự án và chạy chương trình ta được kết quả như hình dưới:
For Each ... Next
Tương tự vòng lặp For ... Next, nhưng nó lặp khối lệnh theo số phần tử của một tập
các đối tượng hay một mảng thay vì theo số lần lặp xác định. Vòng lặp này tiện lợi khi ta
không biết chính xác bao nhiêu phần tử trong tập hợp.
For Each In
Next
Lưu ý:
- Phần tử trong tập hợp chỉ có thể là biến Variant, biến Object, hoặc một đối tượng trong
Object Browser.
- Phần tử trong mảng chỉ có thể là biến Variant.
- Không dùng For Each ... Next với mảng chứa kiểu tự định nghĩa vì Variant không chứa
kiểu tự định nghĩa.
* Chương trình con
Khái niệm
Trong những chương trình lớn, có thể có những đoạn chương trình viết lặp đi lặp lại
nhiều lần, để tránh rườm rà và mất thời gian khi viết chương trình người ta thường phân chia
chương trình thành nhiều module, mỗi module giải quyết một công việc nào đó. Các module
như vậy gọi là các chương trình con.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
65
Một tiện lợi khác của việc sử dụng chương trình con là ta có thể dễ dàng kiểm tra xác
định tính đúng đắn của nó trước khi ráp nối vào chương trình chính và do đó việc xác định
sai sót để tiến hành hiệu đính trong chương trình chính sẽ thuận lợi hơn.
Trong Visual Basic, chương trình con có hai dạng là hàm (Function) và thủ tục
(Sub).
Hàm khác thủ tục ở chỗ hàm trả về cho lệnh gọi một giá trị thông qua tên của nó còn
thủ tục thì không. Do vậy ta chỉ dùng hàm khi và chỉ khi thoả mãn đồng thời các yêu cầu sau
đây:
Ta muốn nhận lại một kết quả (chỉ một mà thôi) khi gọi chương trình con.
Ta cần dùng tên chương trình con (có chứa kết quả) để viết trong các biểu thức.
Nếu không thỏa mãn hai điều kiện ấy thì dùng thủ tục.
* Thủ tục
Khái niệm:
Thủ tục là một chương trình con thực hiện một hay một số tác vụ nào đó. Thủ tục có
thể có hay không có tham số.
Khai báo thủ tục
[Private | Public] [Static] Sub [([As ])]
hay
End Sub
Trong đó:
- : Đây là một tên được đặt giống quy tắc tên biến, hằng,…
- [: ]: có thể có hay không? Nếu có nhiều tham số thì mỗi tham số
phân cách nhau dấu phẩy. Nếu không xác định kiểu tham số thì tham số có kiểu Variant.
Để gọi thủ tục để thực thi, ta có 2 cách:
[]
Call ([])
Ví dụ: Thiết kế chương trình kiểm tra xem số nguyên N có phải là số nguyên tố hay không?
Bước 1: thiết kế giao diện
TextBox: Name:txtNum
Bước 2: Viết thủ tục KtraNgTo trong phần mã lệnh của Form
Sub KTraNgTo(N As Integer)
Dim i As Integer
i = 2
Do While (i 0)
i = i + 1
Loop
If (i > Sqr(N)) And (N 1) Then
MsgBox Str(N) & " la so nguyen to"
Else
MsgBox Str(N) & " khong la so nguyen to"
End If
End Sub
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
66
Bước 3: Xử lý sự kiện Command1_Click; trong thủ tục xử lý sự kiện này ta có gọi
thủ tục KtraNgTo như sau:
Private Sub Command1_Click()
KTraNgTo Val(txtNum.Text)
‘ Call KtraNgTo(Val(txtNum.Text))
End Sub
Bước 4: Lưu dự án và chạy chương trình. Ta được kết quả sau:
Trong ví dụ trên thay vì gọi thủ tục bằng lời gọi:
KTraNgTo Val(txtNum.Text)
Ta có thể sử dụng cách khác:
Call KtraNgTo(Val(txtNum.Text))
*Hàm
Khái niệm
Hàm (Function) là một chương trình con có nhiệm vụ tính toán và cho ta một kết
quả. Kết quả này được trả về trong tên hàm cho lời gọi nó.
Khai báo hàm
[Private | Public | Static] Function [([As ])] _
[As ]
hay
End Function
Trong đó:
- : Đây là một tên được đặt giống quy tắc tên biến, hằng,…
- [: ]: có thể có hay không? Nếu có nhiều tham số thì mỗi tham số
phân cách nhau dấu phẩy. Nếu không xác định kiểu tham số thì tham số có kiểu Variant.
- : Kết quả trả về của hàm, trong trường hợp không khai báo As <kiểu dữ
liệu>, mặc định, VB hiểu kiểu trả về kiểu Variant.
Khi gọi hàm để thực thi ta nhận được một kết quả. Cần chú ý khi gọi hàm thực thi ta
nhận được một kết quả có kiểu chính là kiểu trả về của hàm (hay là kiểu Variant nếu ta
không chỉ rõ kiểu trả về trong định nghĩa hàm). Do đó lời gọi hàm phải là thành phần của
một biểu thức.
Cú pháp gọi hàm thực thi: [(tham số)].
Ví dụ: Tính N!
TextBox: Name:txtNum Bước 1: Thiết kế chương trình có giao diện:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
67
Label: Name: lblKQ
Bước 2: Thêm một hàm vào cửa sổ mã lệnh của Form
Function Giaithua(N As Integer) As Long
Dim i As Integer, Kq As Long
Kq = 1
For i = 1 To n
Kq = Kq * i
Next
Giaithua = Kq
End Function
Private Sub Command1_Click()
Dim n As Integer
n = Val(txtNum.Text)
lblKQ.Caption = Str(Giaithua(n))
End Sub
Lưu dự án và chạy chương trình ta được kết quả như hình dưới:
Lưu ý: Do khi gọi hàm ta nhận được một kết quả nên bên trong phần định nghĩa hàm, trước
khi kết thúc ta phải gán kết quả trả về của hàm thông qua tên hàm (trong ví dụ trên là dòng
lệnh Giaithua = Kq)
** Truy xuất dữ liệu trong Visual Basic
Các khái niệm
* Module:
- Một ứng dụng đơn giản có thể chỉ có một biểu mẫu, lúc đó tất cả mã lệnh của ứng dụng đó
được đặt trong cửa sổ mã lệnh của biểu mẫu đó (gọi là Form Module). Khi ứng dụng được
phát triển lớn lên, chúng ta có thể có thêm một số biểu mẫu nữa và lúc này khả năng lặp đi
lặp lại nhiều lần của một đoạn mã lệnh trong nhiều biểu mẫu khác nhau là rất lớn.
- Để tránh việc lặp đi lặp lại trên, ta tạo ra một Module riêng rẽ chứa các chương trình con
được dùng chung. Visual Basic cho phép 3 loại Module:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
68
Module biểu mẫu (Form module): đi kèm với mỗi một biểu mẫu là một module của biểu
mẫu đó để chứa mã lệnh của biểu mẫu này. Với mỗi điều khiển trên biểu mẫu, module biểu
mẫu chứa các chương trình con và chúng sẵn sàng được thực thi để đáp ứng lại các sự kiện
mà người sử dụng ứng dụng tác động trên điều khiển. Module biểu mẫu được lưu trong máy
tính dưới dạng các tập tin có đuôi là *.frm.
Module chuẩn (Standard module): Mã lệnh không thuộc về bất cứ một biểu mẫu hay
một điều khiển nào sẽ được đặt trong một module đặc biệt gọi là module chuẩn (được lưu
với đuôi *.bas). Các chương trình con được lặp đi lặp lại để đáp ứng các sự kiện khác nhau
của các điều khiển khác nhau thường được đặt trong module chuẩn.
Module lớp (Class module): được sử dụng để tạo các điều khiển được gọi thực thi
trong một ứng dụng cụ thể. Một module chuẩn chỉ chứa mã lệnh nhưng module lớp chứa cả
mã lệnh và dữ liệu, chúng có thể được coi là các điều khiển do người lập trình tạo ra (được
lưu với đuôi *.cls).
Phạm vi (scope): xác định số lượng chương trình có thể truy xuất một biến. Một biến
sẽ thuộc một trong 3 loại phạm vi:
- Phạm vi biến cục bộ.
- Phạm vi biến module.
- Phạm vi biến toàn cục.
* Biến toàn cục
Khái niệm: Biến toàn cục là biến có phạm vi hoạt động trong toàn bộ ứng dụng.
Khai báo:
Global [As ]
* Biến cục bộ
Khái niệm: Biến cục bộ là biến chỉ có hiệu lực trong những chương trình mà chúng được
định nghĩa.
Khai báo:
Dim [As ]
Lưu ý:
Biến cục bộ được định nghĩa bằng từ khóa Dim sẽ kết thúc ngay khi việc thi hành thủ
tục kết thúc.
* Biến Module
Khái niệm: Biến Module là biến được định nghĩa trong phần khai báo (General|Declaration)
của Module và mặc nhiên phạm vi hoạt động của nó là toàn bộ Module ấy.
Khai báo:
- Biến Module được khai báo bằng từ khóa Dim hay Private & đặt trong phần khai báo của
Module.
Ví dụ:
Private Num As Integer
- Tuy nhiên, các biến Module này có thể được sử dụng bởi các chương trình con trong các
Module khác. Muốn thế chúng phải được khai báo là Public trong phân Khai báo
(General|Declaration) của Module.
Ví dụ:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
69
Public Num As Integer
Lưu ý: Không thể khai báo biến với từ khóa là Public trong chương trình con.
*Truyền tham số cho chương trình con
Khái niệm
Một chương trình con đôi lúc cần thêm một vài thông tin về trạng thái của đoạn mã
lệnh mà nó định nghĩa để thực thi. Những thông tin này là các biến được truyền vào khi gọi
chương trình con, các biến này gọi là tham số của chương trình con.
Có hai cách để truyền tham số cho chương trình con: Truyền bằng giá trị & truyền
bằng địa chỉ.
*Truyền tham số bằng giá trị
Với cách truyền tham số theo cách này, mỗi khi một tham số được truyền vào, một
bản sao của biến đó được tạo ra. Nếu chương trình con có thay đổi giá trị, những thay đổi
này chỉ tác động lên bản sao của biến. Trong VB, từ khóa ByVal được dùng để xác định
tham số được truyền bằng giá trị.
Ví dụ:
Sub Twice (ByVal Num As Integer)
Num = Num * 2
Print Num
End Sub
Private Sub Form_Click()
Dim A As Integer
A = 4
Print A
Twice A
Print A
End Sub
Kết quả thực hiện của đoạn chương trình trên:
4
8
4
*Truyền tham số bằng địa chỉ
Truyền tham số theo địa chỉ cho phép chương trình con truy cập vào giá trị gốc của
biến trong bộ nhớ. Vì thế, giá trị của biến có thể sẽ bị thay đổi bởi đoạn mã lệnh trong
chương trình con. Mặc nhiên, trong VB6 các tham số được truyền theo địa chỉ; tuy nhiên ta
có thể chỉ định một cách tường minh nhờ vào từ khóa ByRef.
Ví dụ:
Sub Twice (Num As Integer)
Num = Num * 2
Print Num
End Sub
Private Sub Form_Click()
Dim A As Integer
A = 4
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
70
Print A
Twice A
Print A
End Sub
Kết quả thực hiện của đoạn chương trình trên:
4
8
8
* Bẫy lỗi trong Visual Basic
Các thao tác bẫy các lỗi thực thi của chương trình là cần thiết đối với các ngôn ngữ
lập trình. Người lập trình khó kiểm soát hết các tình huống có thể gây ra lỗi. Chẳng hạn
người ta khó có thể kiểm tra chặt chẽ việc người dùng đang chép dữ liệu từ đĩa mềm (hay
CD) khi chúng không có trong ổ đĩa. Nếu có các thao tác bẫy lỗi ở đây thì tiện cho người lập
trình rất nhiều.
Visual Basic cũng cung cấp cho ta một số cấu trúc để bẫy các lỗi đang thực thi.
Cú pháp:
Dạng 1:
On Error GoTo
:
Ý nghĩa:
- : là một tên được đặt theo quy tắc của một danh biểu.
- Nếu một lệnh trong thì khi chương trình thực thi đến câu
lệnh đó, chương trình sẽ tự động nhảy đến đoạn chương trình định nghĩa bên dưới <Tên
nhãn> để thực thi.
Dạng 2:
On Error Resume Next
Ý nghĩa:
- Nếu một lệnh trong thì khi chương trình thực thi đến câu
lệnh đó, chương trình sẽ tự động bỏ qua câu lệnh bị lỗi và thực thi câu lệnh kế tiếp.
Ngôn ngữ lập trình Delphi.
Đây là ngôn ngữ lập trình được phát triển từ ngôn ngữ Turbo Pascal do hãng Borland
viết ra. Delphi được xem là công cụ phát triển ứng dụng nhanh hàng đầu hiện nay của hãng
Borland. Đơn giản nhưng hiệu quả,đó chính là ưu điểm nổi bật của Delphi. Cũng giống như
Visual Basic, Delphi là ngôn ngữ lập trình hướng đối tượng được thiết kế chạy trên nền
Windows nên giao diện rất quen thuộc đối với người sử dụng. Cũng chỉ bằng các thao tác
đơn giản như Visual Basic, Delphi cho phép tạo ra các giao diện phức tạp một cách đơn giản
và nhanh chóng, còn nếu sử dụng các ngôn ngữ như Pascal, Basic.. thì ta phải tốn khá nhiều
công sức cho các cấu trúc lệnh phức tạp.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
71
4. xây dựng chương trình
*Màn hình sau khi khơi tạo xong gồm có các thành phần sau:
- thanh công cụ :là các công cụ để xây dựng chương trình. mỗi trang chứa các
đối tượng được phân loại theo chức năng
- code :là cửa sổ chứa tất cả các mã lệnh
- form:là thành phần cơ sở quan trọng, Form chính là bề mặt của cửa sổ ứng
dụng khi thi hành chương trình. Form được thiết kế sẵn cho các thành phần:
“thanh tiêu đề: title bar”, “nút phóng to maximize”, “nút thu nhỏ minimize
- thuộc tính : dùng để thiết lập các thuộc tính cho các đối tượng khi thiết kế
chương trình ứng dụng. bảng thuộc tính gồm có 2 trang là Property (các thuộc tính) và Event
(các sự kiện).
* Khởi tạo giao diện: label, command.v.v.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
72
* Add image cho giao diện:
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
73
* Giao diện chương trình
THI CÔNG
KHÁI QUÁT QUÁ TRÌNH THI CÔNG.
1.Thử nghiệm phần cứng.
Để hoàn thiện mạch theo đúng các yêu cầu cuối cùng nhóm thực hiện đã trải
qua khoảng thời gian khá dài để thử nghiệm từng phần của mạch. Nhóm đã sử dụng các test-
board cho các thử nghiệm đơn giản. Sau khi thử nghiệm trên test-board xong nhóm đã thi
công mạch in.
2. Thử nghiệm phần mềm.
Đối với phần mềm nạp vào vi điều khiển nhóm cũng đã thử nghiệm rất nhiều
lần. Nhóm cũng đã thi công mạch nạp vi điều khiển để phục vụ cho việc thử nghiệm các
chương trình nạp vào nó. Việc lập trình cho vi điều khiển cũng tiến hành từng phần, khi
nào thấy hoàn chỉnh phần này mới tiến hành lập trình cho phần khác. Như vậy khắc phục
được các lỗi trong quá trình lập trình, mặc khác chương trình viết ra được rõ ràng hơn.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
74
Đối với phần mềm giao diện chương trình trên máy tính nhóm cũng tiến hành tương
tự. Ban đầu là xem các tài liệu nói về cách lập trình bằng VISUAL BASIC sau đó tiến
hành viết thử các chương trình đơn giản có liên quan đến chương trình sẽ viết. Khi đã có kiến
thức cơ bản về lập trình VISUAL BASIC nhóm mới bắt đầu viết về chương trình giám sát và
điểu khiển nhiệt độ. Công việc này cũng tiến hành theo nhiều giai đoạn từ việc bố trí các nút
lệnh, các bảng lựa chọn đến cách giao tiếp giữa máy tính và mạch đo nhiệt đô…cuối cùng là
việc xây dựng giao diện chương trình cho “bắt mắt” và đặc biệt là dễ dàng sử dụng.
3. Thi công mạch in.
Đây là giai đoạn quan trọng trong quá trình thi công bởi vì nếu có một
sự cố nào thì mạch có thể không chạy và phải thi công lại. Chính vì thế giai đoạn này
chiếm một khoảng thời gian khá lâu trong toàn bộ quá trình thi công.
Để thực hiện được sơ đồ mạch in, nhóm thực hiện sử dụng chương trình Orcad
để vẽ mạch. Sau khi vẽ xong, nhóm cũng đã chỉnh sửa các đường mạch để việc thi công
được khả thi hơn.
Mach in của khối điều khien
4. Kiểm tra mạch in.
Sau khi thiết kế và kiểm tra mạch in nhiệm vụ tiếp theo là kiểm tra toàn bộ mạch
trước khi lắp linh kiện vào, bởi vì nếu có sơ suất để chạm mạch hay đứt mạch thì mạch sẽ
không chạy hoặc xấu hơn nữa là làm hỏng linh kiện. Việc kiểm tra này được thực hiện bằng
mắt thường và có sự hỗ trợ của VOM kim.
Kiểm tra toàn bộ các linh kiện, đảm bảo tất cả còn tốt và phù hợp với sơ đồ mạch in. 5.
Lắp ráp linh kiện.
Dựa vào sơ đồ bố trí linh kiện. Tiến hành lắp ráp
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
75
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
76
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
77
I. TÓM TẮT.
Sau hơn 3 tháng nghiên cứu thực hiện đề tài, tập đồ án đã được hoàn thành.
Các vấn đề trong đề tài được trình bày và giải quyết theo tình tự logic từ tổng quát
đến cụ thể.
Trong mỗi vấn đề được chia sẽ ra thành từng phần nhỏ để giải quyết.
Nội dung trình bày của đề tài được chia thành 6 chương. Tuy nhiên vấn đề cốt lõi của đề
tài được tập trung vào chương .
Ở chương 1 và 2 là các phần dẫn nhập và cơ sở lý luân cho việc chọn đề tài. Qua
chương 3 đến chương 4là phần giới thiệu các kiến thức cơ sở, các vấn đề liên quan đến đề
tài. Chương 5 là phần trọng tâm của đề tài - chúng ta từng bước thiết kế các khối trong mạch
cũng như tính toán các giá trị linh kiện được sử dụng trong từng mạch. Chương 6 tóm tắt đề
tài, các kết luận sau khi làm xong đồ án và những kiến nghị đưa ra để các đề tài sau có liên
quan được hoàn thiện hơn.
Sau quá trình thực hiện đề tài “điều khiển thiết bị điện qua máy tính”. Nhóm sinh
viên thực hiện đã hoàn thành những nội dung chính như sau:
Nghiên cứu và ứng dụng họ vi điều khiển AT89S52 vào thiết kế mạch.
Tìm hiểu về giao tiếp máy tính và chuẩn RS-232.
a. Dùng ngôn ngữ lập trình visual
basic thiết kế giao diện người dùng.
b. Thi công hoàn chỉnh mạch giám
sát và điều khiển
II. KẾT LUẬN.
Đề tài về cơ bản đã hoàn thành theo đúng nội dung đề ra của nhóm thực hiện. Nhiều
tài liệu được tham khảo và nhiều thử nghiệm được thực hiện để cuối cùng hoàn thành mạch
giám sát và điều khiển nhiệt độ từ xa đúng thời gian quy định.
Đề tài đã đạt được một số kết quả nhất định. Nhiệt độ thu nhận được chính xác và có
thể thu nhận được nhiệt độ ở hai địa điểm khác nhau. Giao diện với người dùng thân thiện và
dễ sử dụng.
Trong quá trình thực hiện đề tài nhiều vấn đề khó khăn xuất hiện như: nhiệt độ hiển thị
chưa ổn định, bước đầu sử dụng modole HM-TR truyền thì bị mất dữ liệu, các IC bị chết…
Có nhiều ý tưởng xuất hiện trong quá trình thực hiện đề tài như: lưu trữ lại thông
tin về ngày giờ thời gian đo nhiệt độ, nhưng nhóm thực hiện nghĩ điều này không cần
thiết nên không thực hiện.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
78
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
79
I. Chương trình viết cho vi xử lý:
;xxxxxxxxxxxxxchuong trinh gui data tu vdk giao tiep voi may tinh
xxxxxxxxxxxxxxx
;==========================================================
=====
den1 bit p0.0
den2 bit p0.1
den3 bit p0.2
den4 bit p0.3
den5 bit p0.4
den6 bit p0.5
den7 bit p0.6
den8 bit p0.7
den9 bit p2.6
den10 bit p2.7
org 0000h ;diem reset
;xxxxxxxxxxxxxxx doan chuong trinh chinh xxxxxxxxxxxxxxxxxxx
;khoi tao UART
mov tmod,#20h ;Time 1, mode 2
mov scon,#50h ;che do 1, UART 8bit, Ren
= 1
mov th1,#-12 ;2400baud
setb tr1 ;Time 1 chay
mov p0,#00h ;tat het den
mov p2,#00h ;tat het den
main1:
jnb ri,$ ;kiem tra co nhan
mov a,sbuf ;lay du lieu tu may tinh cho
vao thanh ghi a
clr ri ;xoa co nhan-->chuan bi
cho lan nhan ke tiep
;xxxxxxx doan chuong trinh xu ly du lieu tu may tinh xxxxxxxxxxxxxx
onall: cjne a,#10,offall
mov p0,#0ffh
mov p2,#03h
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
80
offall: cjne a,#30,on1
mov p0,#00h
mov p2,#00h
on1: cjne a,#11,off1
setb den1
off1: cjne a,#31,on2
clr den1
on2: cjne a,#12,off2
setb den2
off2: cjne a,#32,on3
clr den2
on3: cjne a,#13,off3
setb den3
off3: cjne a,#33,on4
clr den3
on4: cjne a,#14,off4
setb den4
off4: cjne a,#34,on5
clr den4
on5: cjne a,#15,off5
setb den5
off5: cjne a,#35,on6
clr den5
on6: cjne a,#16,off6
setb den6
off6: cjne a,#36,on7
clr den6
on7: cjne a,#17,off7
setb den7
off7: cjne a,#37,on8
clr den7
on8: cjne a,#18,off8
setb den8
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
81
off8: cjne a,#38,on9
clr den8
on9: cjne a,#19,off9
setb den9
off9: cjne a,#39,on10
clr den9
on10: cjne a,#20,off10
setb den10
off10: cjne a,#40,exit_main1
clr den10
exit_main1:
mov sbuf,a ;lay du lieu tu thanh ghi a len may tinh
jnb ti,$ ;
clr ti ;xoa co truyen -->chuan bi
cho lan truyen ke tiep
jmp main1
end
II. Chương trình điều khiển trên máy tính.
Dim counter As Integer
Dim onoff0 As Integer
Dim onoff1 As Integer
Dim onoff2 As Integer
Dim onoff3 As Integer
Dim onoff4 As Integer
Dim onoff5 As Integer
Dim onoff6 As Integer
Dim onoff7 As Integer
Dim onoff8 As Integer
Dim onoff9 As Integer
Dim AllDS As Integer
Dim Nhan As String
Dim MaASCII As Integer
Dim port As Integer
Private Sub com1_Click()
com1.Checked = True
com2.Checked = False
com3.Checked = False
com4.Checked = False
com5.Checked = False
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
82
port = 1
End Sub
Private Sub com2_Click()
com1.Checked = False
com2.Checked = True
com3.Checked = False
com4.Checked = False
com5.Checked = False
port = 2
End Sub
Private Sub com3_Click()
com1.Checked = False
com2.Checked = False
com3.Checked = True
com4.Checked = False
com5.Checked = False
port = 3
End Sub
Private Sub com4_Click()
com1.Checked = False
com2.Checked = False
com3.Checked = False
com4.Checked = True
com5.Checked = False
port = 4
End Sub
Private Sub com5_Click()
com1.Checked = False
com2.Checked = False
com3.Checked = False
com4.Checked = False
com5.Checked = True
port = 5
End Sub
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 100
port = 1
com1.Checked = True
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
83
com2.Checked = False
com3.Checked = False
com4.Checked = False
com5.Checked = False
MSComm1.CommPort = port
MSComm1.Settings = "2400,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
AllDS = 0
End Sub
Private Sub AllON_Click(Index As Integer)
Const MB_YESNO = 4
Const MB_OK = 0
Const MB_ICONQUESTION = 32
Const idYes = 6
D1 = MB_OK + vbExclamation
d = MB_YESNO + MB_ICONQUESTION
Title = "xac nhan lenh "
message1 = "Ban muon mo tat ca thiet bi cung luc ? "
message2 = "Tat ca thiet bi da mo ! "
If AllDS = 10 Then
response = MsgBox(message2, D1, Title)
Else
response = MsgBox(message1, d, Title)
If response = idYes Then
MSComm1.Output = Chr(10)
End If
End If
End Sub
Private Sub AllOFF_Click(Index As Integer)
Const MB_YESNO = 4
Const MB_OK = 0
Const MB_ICONQUESTION = 32
Const idYes = 6
D1 = MB_OK + vbExclamation
d = MB_YESNO + MB_ICONQUESTION
Title = "xac nhan lenh "
message1 = "Ban muon tat tat ca thiet bi cung luc ? "
message2 = "Tat ca thiet bi da tat ! "
If AllDS = 0 Then
response = MsgBox(message2, D1, Title)
Else
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
84
response = MsgBox(message1, d, Title)
If response = idYes Then
MSComm1.Output = Chr(30)
End If
End If
End Sub
Private Sub Command1_Click()
If onoff0 = 0 Then
MSComm1.Output = Chr(11)
onoff0 = 1
Else
MSComm1.Output = Chr(31)
onoff0 = 0
End If
End Sub
Private Sub Command2_Click()
If onoff1 = 0 Then
MSComm1.Output = Chr(12)
onoff1 = 1
Else
MSComm1.Output = Chr(32)
onoff1 = 0
End If
End Sub
Private Sub Command3_Click()
If onoff2 = 0 Then
MSComm1.Output = Chr(13)
onoff2 = 1
Else
MSComm1.Output = Chr(33)
onoff2 = 0
End If
End Sub
Private Sub Command4_Click()
If onoff3 = 0 Then
MSComm1.Output = Chr(14)
onoff3 = 1
Else
MSComm1.Output = Chr(34)
onoff3 = 0
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
85
End If
End Sub
Private Sub Command5_Click()
If onoff4 = 0 Then
MSComm1.Output = Chr(15)
onoff4 = 1
Else
MSComm1.Output = Chr(35)
onoff4 = 0
End If
End Sub
Private Sub Command6_Click()
If onoff5 = 0 Then
MSComm1.Output = Chr(16)
onoff5 = 1
Else
MSComm1.Output = Chr(36)
onoff5 = 0
End If
End Sub
Private Sub Command7_Click()
If onoff6 = 0 Then
MSComm1.Output = Chr(17)
onoff6 = 1
Else
MSComm1.Output = Chr(37)
onoff6 = 0
End If
End Sub
Private Sub Command8_Click()
If onoff7 = 0 Then
MSComm1.Output = Chr(18)
onoff7 = 1
Else
MSComm1.Output = Chr(38)
onoff7 = 0
End If
End Sub
Private Sub Command9_Click()
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
86
If onoff8 = 0 Then
MSComm1.Output = Chr(19)
onoff8 = 1
Else
MSComm1.Output = Chr(39)
onoff8 = 0
End If
End Sub
Private Sub Command10_Click()
If onoff9 = 0 Then
MSComm1.Output = Chr(20)
onoff9 = 1
Else
MSComm1.Output = Chr(40)
onoff9 = 0
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim Click As Integer
Click = MsgBox("Do you want to leave me?", vbQuestion + vbYesNo, "Exit")
Select Case Click
Case vbYes
End
Case vbNo
Cancel = 1
End Select
End Sub
Private Sub Image2_Click()
Dim Click As Integer
Click = MsgBox("ban that su muon thoat?", vbQuestion + vbYesNo, "Exit")
Select Case Click
Case vbYes
End
Case vbNo
Exit Sub
End Select
End Sub
Private Sub Image3_Click()
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
87
D1 = vbOK + vbInformation
Title = "Chu Y ! "
message = "Tam thoi chua co phan huong dan! "
response = MsgBox(message, D1, Title)
End Sub
Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
Nhan = MSComm1.Input
MaASCII = Asc(Nhan)
Select Case MaASCII
Case 10
For counter = 0 To 9 Step 1
Image1(counter).Picture = LoadPicture("sun.bmp")
Next
Command1.Picture = LoadPicture("onn.bmp")
Command2.Picture = LoadPicture("onn.bmp")
Command3.Picture = LoadPicture("onn.bmp")
Command4.Picture = LoadPicture("onn.bmp")
Command5.Picture = LoadPicture("onn.bmp")
Command6.Picture = LoadPicture("onn.bmp")
Command7.Picture = LoadPicture("onn.bmp")
Command8.Picture = LoadPicture("onn.bmp")
Command9.Picture = LoadPicture("onn.bmp")
Command10.Picture = LoadPicture("onn.bmp")
onoff0 = 1
onoff1 = 1
onoff2 = 1
onoff3 = 1
onoff4 = 1
onoff5 = 1
onoff6 = 1
onoff7 = 1
onoff8 = 1
onoff9 = 1
AllDS = 10
Case 30
For counter = 0 To 9 Step 1
Image1(counter).Picture = LoadPicture("moon.bmp")
Next
Command1.Picture = LoadPicture("off.bmp")
Command2.Picture = LoadPicture("off.bmp")
Command3.Picture = LoadPicture("off.bmp")
Command4.Picture = LoadPicture("off.bmp")
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
88
Command5.Picture = LoadPicture("off.bmp")
Command6.Picture = LoadPicture("off.bmp")
Command7.Picture = LoadPicture("off.bmp")
Command8.Picture = LoadPicture("off.bmp")
Command9.Picture = LoadPicture("off.bmp")
Command10.Picture = LoadPicture("off.bmp")
onoff0 = 0
onoff1 = 0
onoff2 = 0
onoff3 = 0
onoff4 = 0
onoff5 = 0
onoff6 = 0
onoff7 = 0
onoff8 = 0
onoff9 = 0
AllDS = 0
Case 11
onoff0 = 1
AllDS = AllDS + 1
Command1.Picture = LoadPicture("onn.bmp")
Image1(0).Picture = LoadPicture("sun.bmp")
Case 31
onoff0 = 0
AllDS = AllDS - 1
Command1.Picture = LoadPicture("off.bmp")
Image1(0).Picture = LoadPicture("moon.bmp")
Case 12
onoff1 = 1
AllDS = AllDS + 1
Command2.Picture = LoadPicture("onn.bmp")
Image1(1).Picture = LoadPicture("sun.bmp")
Case 32
onoff1 = 0
AllDS = AllDS - 1
Command2.Picture = LoadPicture("off.bmp")
Image1(1).Picture = LoadPicture("moon.bmp")
Case 13
onoff2 = 1
AllDS = AllDS + 1
Command3.Picture = LoadPicture("onn.bmp")
Image1(2).Picture = LoadPicture("sun.bmp")
Case 33
onoff2 = 0
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
89
AllDS = AllDS - 1
Command3.Picture = LoadPicture("off.bmp")
Image1(2).Picture = LoadPicture("moon.bmp")
Case 14
onoff3 = 1
AllDS = AllDS + 1
Command4.Picture = LoadPicture("onn.bmp")
Image1(3).Picture = LoadPicture("sun.bmp")
Case 34
onoff3 = 0
AllDS = AllDS - 1
Command4.Picture = LoadPicture("off.bmp")
Image1(3).Picture = LoadPicture("moon.bmp")
Case 15
onoff4 = 1
AllDS = AllDS + 1
Command5.Picture = LoadPicture("onn.bmp")
Image1(4).Picture = LoadPicture("sun.bmp")
Case 35
onoff4 = 0
AllDS = AllDS - 1
Command5.Picture = LoadPicture("off.bmp")
Image1(4).Picture = LoadPicture("moon.bmp")
Case 16
onoff5 = 1
AllDS = AllDS + 1
Command6.Picture = LoadPicture("onn.bmp")
Image1(5).Picture = LoadPicture("sun.bmp")
Case 36
onoff5 = 0
AllDS = AllDS - 1
Command6.Picture = LoadPicture("off.bmp")
Image1(5).Picture = LoadPicture("moon.bmp")
Case 17
onoff6 = 1
AllDS = AllDS + 1
Command7.Picture = LoadPicture("onn.bmp")
Image1(6).Picture = LoadPicture("sun.bmp")
Case 37
onoff6 = 0
AllDS = AllDS - 1
Command7.Picture = LoadPicture("off.bmp")
Image1(6).Picture = LoadPicture("moon.bmp")
Case 18
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
90
onoff7 = 1
AllDS = AllDS + 1
Command8.Picture = LoadPicture("onn.bmp")
Image1(7).Picture = LoadPicture("sun.bmp")
Case 38
onoff7 = 0
AllDS = AllDS - 1
Command8.Picture = LoadPicture("off.bmp")
Image1(7).Picture = LoadPicture("moon.bmp")
Case 19
onoff8 = 1
AllDS = AllDS + 1
Command9.Picture = LoadPicture("onn.bmp")
Image1(8).Picture = LoadPicture("sun.bmp")
Case 39
onoff8 = 0
AllDS = AllDS - 1
Command9.Picture = LoadPicture("off.bmp")
Image1(8).Picture = LoadPicture("moon.bmp")
Case 20
onoff9 = 1
AllDS = AllDS + 1
Command10.Picture = LoadPicture("onn.bmp")
Image1(9).Picture = LoadPicture("sun.bmp")
Case 40
onoff9 = 0
AllDS = AllDS - 1
Command10.Picture = LoadPicture("off.bmp")
Image1(9).Picture = LoadPicture("moon.bmp")
Case Else
response = MsgBox("Gia tri nhan duoc khong phu hop!", vbExclamation + vbOKOnly,
"Thong Bao")
End Select
End If
End Sub
'Private Sub Timer1_Timer()
'If MSComm1.PortOpen = True Then
'MSComm1.PortOpen = False
'End If
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
91
' MSComm1.CommPort = port
'End Sub
Private Sub Timer1_Timer()
If Label1.Left >= -Me.Width Then
Label1.Left = Label1.Left - 100
Else
Label1.Left = Me.Width
End If
End Sub
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
92
TÀI LIỆU THAM KHẢO
[1]. Tống Văn On.
Họ vi điều khiển 8051 _Nhà xuất bản Lao động-Xã hội. [2]. Lưu Phi Yến, Lưu Phú, Nguyễn
Như Anh. Kỹ thuật điện tử_Nhà xuất đại học quốc gia TP.HCM.
[3]. Nguyễn Hồng Sơn, Hoàng Đức Hải . Kỹ thuật truyền số liệu _Nhà xuất bản Lao động -Xã
hội. [4]. Nguyễn Hữu Phương . Mạch số_Nhà xuất bản Thống kê.
[5]. Nguyễn Tấn Phước . Kỹ thuật xung căn bản và nâng cao _Nhà xuất bản thành phố Hồ
Chí Minh.
6]. Ngô Diên Tập. Kỹ thuật điều khiển với AVR _Nhà xuất bản Khoa học và kỹ thuật.
[7]. Dương Minh Trí. Sơ đồ chân linh kiện bán dẫn_ Nhà xuất bản Khoa học và kỹ thuật.
[8]. Robert Boylestad. Electronic devices and circuit theory_Nhà xuất bản Prentice Hall,
New Jersey.
[11].Trangwed:www.alldatasheet.com;www.diendandientu.com;www.google.com.
ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA MÁY VI TÍNH
SVTH : Phạm Ngọc Dũng- Đặng Văn Trung Trang
93
Các file đính kèm theo tài liệu này:
- noidung22_3856.pdf