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

ĐỒ ÁNThiết kế bộ điều khiển động cơ điện 1 chiều sử dụng cổng nối tiếp

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

Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

Lời Nói Đầu
Ngày nay, các thiết bị máy móc, hệ thống nhằm phục vụ đời sống con ngời trong sinh hoạt cũng nh trong sản xuất phát triển nhanh và ngày càng thông
minh. Sở dĩ có đợc điều đó là nhờ ứng dụng thành tựu của khoa học kỹ thuật.
Một trong vô số những thành tựu của khoa học kỹ thuật nói chung, của khoa học
kỹ thuật điện tử nói riêng là bộ vi điều khiển, ghép nối máy tính.
Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển điều
khiển các hoạt động của ti vi, máy giặt, đầu đọc laser, điện thoại, lò vi ba...trong
hệ thống sản xuất tự động, bộ vi điều khiển đợc sử dụng trong rụ bốt, dây truyền
tự động,...các hệ thống càng thông minh thì vai trò của hệ vi điều khiển càng
quan trọng. Đây là nói đến vi điều khiển, còn ghép nối máy tính có nó cũng có
rất nhiều ứng dụng có liên quan đến vi điều khiển. Ghép nối máy tính với máy
in, máy quét, máy ảnh, máy quay phim ... qua các cổng ghép nối của máy tính.
Qua học tập và nghiên cứu chúng em đã tìm hiểu về đề tài : Thit k b
iu khin ng c in 1 chiu s dng cng ni tip . Đợc sự hớng
dẫn tận tình của thy: V TRUNG KIấN, cùng các thầy giáo khác trong bộ
môn, em cũng đã nắm vững đựơc cấu tạo, nguyên lý hoạt động, cách thức lập
trình và ứng dụng của vi điều khiển trong đo lờng, tự động hoá nhằm nâng cao
kết quả của đề tài em đã chọn.
Do thời gian nghiên cứu và kinh nghiệm còn hạn chế nên không tránh
khỏi những thiếu sót.
Vì vậy, em rất mong sự góp ý chỉ bảo của các thầy cô và các bạn.
Chúng em xin chân thành cảm ơn!
Hà Nội, Ngày 26 Tháng 03 Năm 2010
Giáo viên hớng dẫn
:V Trung Kiờn
Nhóm sinh viên thực hiện: Nguyn Vn Cụng
Bựi Huy Phng


V ỡnh Tip
Lớp : Điện Tử 4- K9

Khoa Điện Tử

1


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

Phần I: Giới thiệu chung về ghép nối máy tính
A. Giới thiệu
Sự phát triển của ghép nối máy tính đã mở rộng đáng kẻ các lĩnh vực ứng
dụng của máy tính, đặc biệt là đo lờng và điều khiển. Thực tế cho thấy, trong các
công ty xí nghiệp đã ng dụng kỹ thuật ghép nối rất nhiều, Ví Dụ: Những điều
khiển CNC, dây truyền công nghệ sản xuất xi măng, điều khiển các thiết bị khác
nhau nh những phần cứng và chơng trình do ngời sử dụng viết, ngôn ngữ giao
tiếp là: Pascal, C++, ASM, VB, VB.net...có khả năng ghép nối máy tính có độ
chính xác cao, thời gian thu nhập số liệu ngắn và quan trọng là mức thu thập và
xử lý các kết quả.
Đề tài, đo điện áp một chiều hiển thị trên màn hình LCD và trên máy tính
dạng đồ thị là một đề tài tơng đối khó và có nhiều ứng dụng trong ngàng điện tử
và mộ số ngành khác.
B. Sự giao tiếp giữa máy tính và các khối ghép nối.
I. Máy tính và các khối ghép nối.
Nh chúng ta đã biết cấu trúc của một máy tính đợc chia làm 3 phần chính:
Khối xử lý trung tâm CPU làm nhiệm vụ thu thập và xử lý mi dữ liệu.
Khối nhớ (Memory): Lu trữ các loại dữ liệu khác nhau đa vào lấy và lấy ra

ở CPU.
Khối vào ra (I/O): Làm nhiệm vụ tơng thích với các thiết bị bên ngoài và
đờng Bus trong máy tính.
Trong máy tính hiện nay thờng có các thiết bị ngoại vi sau: Màn Hình, bàn
phím, chuột, loa, máy in.... Với các thiết bị ngoại vi đó, máy tính đều có khối xử
lý tơng ứng, ví dụ: Khối ghép giữa bus máy tính với màn hình là card màn hình
(VGA), khối ghép giữa bus máy tính với loa là soundcard... thông thờng các máy
tính thế hệ hiện nay thì các khối ghép nối cho các thiết bị ngoại vi thông dụng
này đều đợc tích hợp trên một bản mạch chính gọi là Mainboard.
Tuy nhiên máy tính không ch dừng lại ở ghép nối với máy in, màn hình,
loa,..mà nó còn đợc ứng dụng vô cùng rộng rãi trong nhiều lĩnh vực. Nhờ các
cổng ghép nối RS232, LPT, cổng USB, các khe căm mở rộng...mà chúng ta có
thể tạo ra các phần cng có thể ghép nối vơi máy tính dới sự điều khiển của các
phn mềm.
Nội dung của môn học này là chúng ta đi vào nghiên cửu các cổng, cỏc
khe cắm mở rộng của máy tính, đ từ đó ta có thể chế tạo ra các khối ghép nối
phục vụ trong nhiều lĩnh vực trong công nghiệp nh là o lờng và điều khiển.

Khoa Điện Tử

2


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

1. Các dạng tin trao đổi của máy tính
a. Dạng số (Digital)
Đây là một chuỗi các bit 0 và 1 đợc biểu diễn theo hệ đếm nh: nh phân, hệ

thập lục phân... Các tín hiệu này có thẻ ở dạng nối tiếp hoặc song song và mức
có thẻ là RS hoặc TTL...
b. Dạng chữ (Text)
Đây biểu diễn của các ký tự dới dạng số, trên thế giới hiện nay thông dụng
là biểu diễn các ký theo mã ASCCII. Theo cách này thì các ký tự đợc biểu diễn
bằng các chính là c bit 0,1 trên hệ thập lục phân, ví dụ: Mã ký tự A là 41h.
Dạng tín hiệu này có thể coi là tìn hiệu số.
c. Dạng tơng tự (Analog)
Đây là các dòng điện hay đi n áp biến đổi liên tục theo thời gian. Điển
hình là đại lợng vật lý thu thập từ các bộ cảm biến (sensor). Muốn xử lý đợc các
tín hiệu này, máy tính (khối ghép nối) phải chuyển nó sang dạng số bằng các bộ
biến đổi ADC.
d. Dạng âm tần
Đây là dạng tổng hợp của nhiều tín hiệu tơng tự vơi tín hiệu số vi các
biên độ khác nhau. Cũng có thẻ coi đõy là một dạng của tín hiệu Analog.
2. Các dạng thông tin trao đổi của máy tính
Trong quá trình gửi tin từ các thiết bị ngoại vi vào máy tính có các dạng
tín hiệu sau:
Tin về trạng thái của thiết bị ngoại vi
Tin mạng dữ liệu cần trao đổi.
Trong quá trình ngợc lại.
Tin về dữ liệu trao đổi.
Tin mang lệnh điều khiển
3. Các phơng thức trao đổi tin của máy tính
Trao đổi theo chơng trình (Assembly, Pascal, C++, VB, VB.net...)
Trao đổi trực tiếp với các khối nhớ (DMA Direct Memory Access)
a. Chế độ trao đổi tin theo chơng trình
Đây là chế độ trao đổi tin trong đó máy tính trao đổi với các thiết bị ngoại
vi bằng các lệnh vào ra. Lệnh dịch chuyển dữ liệu giữa các thanh ghi. Cụ thể:
Trong ngôn ngữ Asembly các lệnh đợc lệnh dành cho trao đổi IN, OUT,

MOV.
Trong ngôn ngữ Pascal:
Đọc một byte dữ liệu: X:=PORT[địa chỉ]
Đa một byte dữ liệu: PORT[địa chỉ]: =y;
Đọc một byte dữ liệu: OUTPORT(địa chỉ, y)
Trong chế độ trao đổi theo chơng trình có 3 phơng pháp:

Khoa Điện Tử

3


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

Phơng pháp trao đổi đồng bộ.
ở phơng pháp này, máy tính sẽ tiến hành trao đổi tin ngay v i thiết bị
ngoài khi khởi động xong mà không cần biết trạng thái của trạng thái đờng dây
cũng nh thiết bị ngoài.
Để có thể thực hiện đợc phơng pháp này thì yêu cầu là:
+ Tốc độ trao đổi tin của thiết bị ngoài lớn hơn tốc độ trao đổi tin của máy
tính.
+ Thiết bị ngoài cần phải ở trạng thái sẵn sàng ngay khi máy tính khởi
động xong.
+ Phơng pháp này có u điểm là tốc độ trao đổi tin nhanh nhng có nhợc
điểm là dễ bị mất tin khi thiết bị ngoài cha ở trạng thái sãn sàng.
Phơng pháp không đồng bộ
Trong phơng pháp này, trớc khi trao đổi tin, máy tính tiến hành đọc, kiểm
tra trạng thái của thiết bị ngoài, nên thiết bị ngoài đã ở trạng thái sẵn sàng thì

tiến hành trao đổi tin còn ngợc lại sẽ chờ.
Ngoài ra trong quá trình trao đổi, nếu tin bị lỗi thì yêu cu truyền lại.
Phơng pháp này có độ tin cậy cao nhng tốc độ chậm hơn phơng pháp đồng
bộ.
Phơng pháp trao đổi ngắt chơng trình
Phơng pháp này lợi dụng đợc u điểm, khắc phục đợc nhợc điểm của hai phơng
pháp trên:
+ Khi thiết bị ngoài có yêu cầu trao đổi sẽ gửi tin tín hiệu theo yêu cầu
(ngắt) đến máy tính.
+ Máy tính dừng chơng trình đang phục vụ (nếu thiết bị ngoài đang yêu
cầu có mức yêu tiên cao hơn) và nhớ lại dừng đồng thời gửi tín hiệu xác nhận,
yêu cầu thiết bị ngoài trao đổi tin.
+ Máy tính và thiết bị ngoài trao đổi tin theo chơng trình (gọi là chơng
trình con phục vụ ngắt).
+ Kết thúc quá trình trao đổi tin, máy tính trở lại chơng trình từ điểm
dừng.
+ Phơng pháp trao đổi theo ngắn chơng trình khắc phục đợc nhợc điểm
của hai phơng pháp đồng bộ và không đồng bộ, nó cho phép tận dụng tối đa thời
gian làm việc của máy tính.
b. Trao đổi MDA.
Đây là phơng thức trao đổi trực tiếp với khối nhớ của máy tính mà không
thông qua CPU. Khi đó CPU sẽ ở trạng thái treo nhờng quyền điều khiển bù cho
ghép nối. Thiết bị ngoài và khối nhớ của máy tính sẽ tiến hành trao đổi (đọc/ghi
dữ liệu). Sau khi quá trình kết thúc sẽ nhờng lại quyền điều khiển Bus cho CPU.

Khoa Điện Tử

4



Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

Phần II: ghép nối truyền tin nối tiếp
I. Khái Niệm Về Truyền Tin Nối Tiếp .
1. Khái niệm
Truyền tin nối tiếp là phơng thức truyền tin trong đó các bit mang thông
tin đợc truyền kế tiếp nhau trên 1 đờng dẫn vật lý . Tại 1 thời điểm phía bên
truyền và bên nhận chỉ có thể truyền ( hoặc nhận) 1 bit .
Ưu điểm của truyền tin nối tiếp :
+ Tiết kiệm đờng dẫn
+ Có khả năng truyền đi xa
Nhợc điểm
+ Tốc độ chậm hơn các thiết bị thờng phải có khối chuyển đổi nối tiếp
song song, song song nối tiếp khi sử dụng phơng pháp này để trao đổi tin .
2. Các phơng thức truyền tin nối tiếp
Có 3 phơng thức truyền tin nối tiếp :
+ Phơng thức đồng bộ : Các byte chứa các bit thông tin đợc truyền liên
tiếp trên đờng truyền và chỉ đợc ngăn cách ( phân biệt ) nhau bằng bit đồng bộ
khung (SYN). Hình 1
+ Phơng thức không đồng bộ : Các byte chứa các bit thông tin đợc chứa
trong 1 khung. 1 khung đợc bắt đầu bằng 1 bit start, tiếp theo là các bit mang
thông tin, kế tiếp là các bit kiểm tra chẵn lẻ và kết thúc là 1 bit stop . Khoảng
cách giữa các khung là các bit dừng bất kỳ , khi đó đờng truyền đợc lấy lên mức
cao (hình 2 ).
+ Phơng thức lai : ây là phơng thức kết hợp của hai phơng pháp trên ,
trong đó các bit trong 1 khung đợc truyềng theo phơng thức không đồng bộ còn
các byte đợc truyền theo phơng thức đồng bộ


Hình 1

Hình 2

Khoa Điện Tử

5


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

II. Cổng Nối Tiếp
1. Giới thiệu
Cổng nối tiếp RS232 là 1 giao diện phổ biến rộng rãi nhất , ta còn gọi là
cổng com 1 ,com2 , để tự do cho các ứng dụng khác nhau , giống nh cổng
máy in , cổng nối tiếp RS232 cũng đợc dử dụng rất thuận tiện trong việc ghép
nối máy tính với các thiết bị ngoại vi . Việc truyền dữ liệu qua cổng RS232 đợ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 với
nhau trên 1 đờng dẫn .
2. Cấu trúc cổng nối tiếp

í nghĩa các chân tín hiệu nh sau :

Mức tín hiệu trên các chân của cổng nối tiếp thờng nằm trong khoảng
-12v _ +12v
Các bit dữ liệu đợc đảo ngợc lại . mức điện áp ở mức logic 1 : -12v _ -3v
mức điện áp ở mức logic 0 : +3v _ +12v
trạng thái tĩnh trên đờng dẫn có mức điện áp -12v
bằng tốc độ baund ta thiết lập tốc độ truyền dữ liệu các giá trị thông thờng là :

300, 600, 1200, 2400,4800, 9600
3. ịa chỉ các cổng nh sau :
Com1: địa chỉ cơ bản là : 3F8H
Com2: địa chỉ cơ bản là : 2F8H
Com3: địa chỉ cơ bản là : 3E8H
Com4: địa chỉ cơ bản là : 2E8H
Khoa Điện Tử

6


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

Sự trao đổi các đờng dẫn tín hiệu :
Trên máy tính có một vi mạch đảm bảo việc truyền (nhận) dữ liệu thông qua
cổng nối tiếp, vi mạch đó gọi là UART ( bộ truyền nhận nối tiếp không đồng bộ
) . UART để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại
vi , phổ biến nhất là vi mạch 8250 của hãng NSC hoặc các thiết bị tiếp theo , nh
16C550 , bộ UART có 10 thanh ghi để điều khiển tất cả chức năng của việc nhập
vào xuất ra dữ liệu theo cách nối tiếp .
4. Các thanh ghi điều khiển .
a) Thanh ghi điều khiển modem(3F8 +4)
D7
D6
D5
D4
D3
D2

D1
D0
0
0
0
LOOP OUT2 OUT1 RTS
DTR
D0=1 : đa DTR=0
D0=0 : đa DTR =1
D1=1: đa RTS =0
D1=0: đa RTS =1
OUT1 , OUT2 điều khiển đầu ra phụ
b) Thanh ghi trạng thái modem(3F8+6)
RLSD RI

DSR

CTS

RLSD1 RI1

DSR1

CTR1

Thanh ghi này nhiệm vụ thông báo về trạnh thái các đờng dẫn bắt tay điều chú ý
ở thanh ghi này là : D4, D5 ,D6 chính là lối vào của các đờng dẫn CTS , DSR ,
RI
đã đợc đảo .
c) Thanh ghi điều khiển đờng truyền( 3F8+3)

C7

C6

C5

C4

C3

C1, C0 : đặt số bit trong mỗi từ
00: 5 bit
01: 6 bit
10 : 7 bit
11: 8 bit
C2 : các bit dừng
0 : 1 bit dừng
1: 1,5 bit dừng
C3 : bit kiểm tra chẵn lẻ
0 : không kiểm tra
1 : có kiểm tra
C4 : loại chẵn lẻ
0: bit lẻ
Khoa Điện Tử

7

C2

C1


C0


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính

1: bit chẵn
C5 : stick bit
0: không có stick bit
1: stick bit
C6 : đặt break
0: normal output
1: gửi 1 break
C7 ( DLAB) : bit phân chia truy nhập cho các thanh ghi cùng địa chỉ
d) Thanh ghi trạng thái đờng truyền (3F8+5)
0

S6

S5

S4

S3

S2

S1


S0

S0=1: Khi có 1 byte mới nhận đợc
S1=1: Khi ký tự trớc không đợc đọc ký tự mới đến sẽ xoá ký tự cũ trong bộ
đệm
S2=1: Khi có lỗi chẵn lẻ
S3=1: Khi có lỗi khung truyền
S4=1 : Khi có gián đoạn đờng truyền
S5=1 : Khi bộ truyền rỗng cổng nối tiếp có thể truyền nhận
S6=1: Khi bộ đệm truyền rỗng
S7=0: Không sử dụng
e) Thanh ghi cho phép ngắt ( 3F8+1)
D7

D6

D5

D4

D3

D2

D1

D0

D0=1 : Cho phép ngắt khi nhận 1 ký tự

D1=1 : Cho phép ngắt khi bộ đệm truyền rỗng
D2=1: Cho phép ngắt khi thay đổi trạng thái đờng truyền
D3=1: Cho phép ngắt khi thay đổi trạng thái modem
D4=0
D5=0
D6=0
D7=0
f) Thanh ghi nhận dạng ngắt ( 3F8+2)
D7

D6

0

0

D5
0

D4
0

D2

D1 D0 Mức u tiên

0
1

0

1

Khoa Điện Tử

1
0

D3

D2

D1

D0

0

Nguồn
gây ặt lại ngắt
ngắt
Không kiểm tra ngắt
Cao nhất
Lỗi đờng nhận dữ liệu
ọc thanh ghi
8


Trờng ĐH Công Nghiệp Hà Nội

ghép Nối Máy Tính


trạng thái đờng
truyền
ọc thanh ghi
đệm

1

0

0

Thứ 2

Có dữ liệu nhận

0

1

0

Thứ 3

0

0

0


Thứ 4

Thanh ghi đệm truyền
rỗng
Cỏc trng thỏi modem
c thanh ghi
trng
thỏi
modem

g) Thanh ghi chứa số chia tốc độ baud (byte thấp - địa chỉ cơ sở )
thanh ghi này gồm có 8 bit , chứa phần thấp số chia của tốc độ baud . số chia tốc
độ baud tính theo công thức :
số chia tốc độ baud = 1843200/( 16*tốc đọ baud cần thiết lập )
h) Thanh ghi chứa số chia tốc độ baud( byte cao 3F8+1)
i) Thanh ghi đệm đọc viết ( 3F8)
iii. Nối ghép 8051 với RS232
Chuẩn RS232 không tơng thích với mức logic TTL, nên cần bổ sung thêm
một bộ điều khiển đờng truyền, chẳng hạn nh chip MAX232 để chuyển đổi các
mức điện áp RS232 về các mức TTL và ngợc lại. Do vậy nối ghép 8051 với đầu
nối RS232 thông qua chip MAX232.
a. Chân RxD và TxD của 8051
8051 có hai chân đợc dùng chuyên cho truyền và nhận dữ liệu nối tiếp.
Hai chân này là RxD và TxD và là một phần của cổng P3 (đó là P3.0 và P3.1 t ơng ứng). P3.0 là chân số 10 của 8051, còn P3.1 là chân số 11. Các chân này tơng thích với mức logic TTL. Do vậy cần có thêm một bộ điều khiển đờng
truyền để chúng tơng thích với RS232. Bộ điều khiển nh vậy có thể là chip
MAX232.
b. Bộ điều khiển đờng truyền MAX232
Vì RS232 không tơng thích với các bộ vi xử lý và vi điều khiển hiện nay
nên ta cần một bộ điều khiển đờng truyền (bộ chuyển đổi điện áp) để chuyển đổi
các tín hiệu RS232 về các mức điện áp TTL đợc các chân TxD và RxD của 8051

chấp nhận. Một ví dụ của bộ chuyển đổi nh vậy là chip MAX232 của hãng
Maxim. Bộ MAX232 chuyển đổi từ các mức điện áp RS232 về mức TTL và ngợc lại. Một điểm mạnh khác của chip MAX232 đó là dùng điện áp của ân RxD
của đầu nối DB của RS232. Bộ điều khiển đờng R1 cũng có gán R1in và R1out
trên các chân số 13 và 12 tơng ứng. Chân R1in (chân số 13) là ở phía RS232 đ
MAX232 có gán T1in và T1out trên các chân số 11 và 1 tơng ứng. Chân T1in là ở
phía TTL và đợc nối tới chân RxD của bộ vi điều khiển, còn T1out là ở phía
RS232 đợc nối tới chân TxD đầu nối DB của RS232 và chân R1 out (chân số 12) là
ở phía TTL và đợc nối tới chân RxD của bộ vi điều khiển, chân TxD bên phát đợc nối với RxD của bên thu và ngợc lại. MAX232 cần có 4 tụ điện giá trị từ 1
đến 22àF. giá trị thờng dùng là 22àF.
Khoa Điện Tử

9


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

PhÇn III: Néi dung ®Ò tµi
I. Ch¬ng tr×nh ®iÒu khiÓn b»ng VB
1. Form chÝnh

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
With Me.SerialCOM
.PortName = "COM1"
.BaudRate = 9600
.Parity = IO.Ports.Parity.None
.Open()

End With
Me.ButtonStop.Enabled = False
Me.ButtonStart.Enabled = True
Me.RadioButton5V.Checked = True
Me.ChonNguonDC()

Khoa §iÖn Tö

10


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
Me.SerialCOM.Write(Convert.ToChar(e.KeyChar))
End Sub
Public Sub UpDateStatus()
' Update các thông số cổng COM đưa tới
Status bar
Dim ParityTemp As String = "?"
Dim StopbitTemp As String = "?"
Select Case Me.SerialCOM.Parity
Case IO.Ports.Parity.None
ParityTemp = "N"
Case IO.Ports.Parity.Odd
ParityTemp = "O"

Case IO.Ports.Parity.Even
ParityTemp = "E"
Case IO.Ports.Parity.Mark
ParityTemp = "M"
Case IO.Ports.Parity.Space
ParityTemp = "S"
End Select
Select Case Me.SerialCOM.StopBits
Case IO.Ports.StopBits.One
StopbitTemp = "1"
Case IO.Ports.StopBits.Two
StopbitTemp = "2"
End Select
Me.StatusLabel.Text = Me.SerialCOM.PortName + "-" +
Me.SerialCOM.BaudRate.ToString + "-" + Me.SerialCOM.DataBits.ToString + "-"
+ ParityTemp + "-" + StopbitTemp
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Me.LabelTimer.Text = Date.Now.ToLongTimeString
Me.LabelDate.Text = Date.Now.ToLongDateString
Me.UpDateStatus()
End Sub
Private Sub ChonNguonDC()
If Me.RadioButton5V.Checked Then
Me.SerialCOM.Write("#5")
' Nguồn 5V
ElseIf Me.RadioButton12V.Checked Then
Me.SerialCOM.Write("#1")
' Nguồn 12V

Else
Me.SerialCOM.Write("#2")
' Nguồn 24V
End If
End Sub
Private Sub RadioButton5V_CheckedChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles RadioButton5V.CheckedChanged
Me.ChonNguonDC()
End Sub
Private Sub RadioButton12V_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RadioButton12V.CheckedChanged
Me.ChonNguonDC()

Khoa §iÖn Tö

11


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

End Sub
Private Sub RadioButton24V_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RadioButton24V.CheckedChanged
Me.ChonNguonDC()
End Sub
Private Sub ButtonStart_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonStart.Click
Me.SerialCOM.Write("R")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonStop_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonStop.Click
Me.SerialCOM.Write("Q")
Me.RadioButton5V.Checked = True
Me.ButtonStart.Enabled = True
Me.ButtonStop.Enabled = False
End Sub
Private Sub ButtonDung_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonDung.Click
Me.SerialCOM.Write("Q")
End Sub
Private Sub ButtonChay_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonChay.Click
Me.SerialCOM.Write("R")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonTang_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonTang.Click
Me.SerialCOM.Write("T")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonGiam_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonGiam.Click

Me.SerialCOM.Write("G")
End Sub
Private Sub ButtonDao_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonDao.Click
Me.SerialCOM.Write("D")
End Sub
Private Sub ButtonSetting_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonSetting.Click
FormSetting.Show()
End Sub
Private Sub LabelAbout1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Label1.Click
Form2.Show()

Khoa §iÖn Tö

12


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

End Sub
Private Sub LabelAbout2_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles LabelAbout1.Click
Form2.Show()
End Sub
Private Sub ButtonExit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonExit.Click

If MessageBox.Show("Are you sure you want to exit now ?
",
"(^_o)D&A Pro(o_^) !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =
Windows.Forms.DialogResult.Yes Then
Me.Close()
End If
End Sub
End Class

2.Form setting

Public Class FormSetting
Private Sub FormSETTING_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.ComboBoxPortName.Text = Form1.SerialCOM.PortName
Me.ComboBoxBaudRate.Text = Form1.SerialCOM.BaudRate
Me.ComboBoxDataBit.Text = Form1.SerialCOM.DataBits
Select Case Form1.SerialCOM.Parity
Case IO.Ports.Parity.None
Me.ComboBoxParity.Text = "None"
Case IO.Ports.Parity.Odd
Me.ComboBoxParity.Text = "Odd"
Case IO.Ports.Parity.Even
Me.ComboBoxParity.Text = "Even"
Case IO.Ports.Parity.Mark
Me.ComboBoxParity.Text = "Mark"
Case IO.Ports.Parity.Space
Me.ComboBoxParity.Text = "Space"
End Select
Me.ComboBoxStopBit.Text = Form1.SerialCOM.StopBits

End Sub
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonOK.Click
Form1.SerialCOM.Close()
With Form1.SerialCOM
.PortName = Me.ComboBoxPortName.Text
.BaudRate = Convert.ToInt32(Me.ComboBoxBaudRate.Text)
.DataBits = Convert.ToInt16(Me.ComboBoxDataBit.Text)
Select Case Me.ComboBoxParity.Text
Case Is = "None"

Khoa §iÖn Tö

13


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

Form1.SerialCOM.Parity = IO.Ports.Parity.None
Case "Odd"
Form1.SerialCOM.Parity = IO.Ports.Parity.Odd
Case "Even"
Form1.SerialCOM.Parity = IO.Ports.Parity.Even
Case "Mark"
Form1.SerialCOM.Parity = IO.Ports.Parity.Mark
Case "Space"
Form1.SerialCOM.Parity = IO.Ports.Parity.Space
End Select

.StopBits = Convert.ToInt16(Me.ComboBoxStopBit.Text)
End With
Form1.SerialCOM.Open()
Form1.StatusLabel.Text = Me.ComboBoxPortName.Text & "-" &
Me.ComboBoxBaudRate.Text & "-" & Me.ComboBoxParity.Text & "-" &
Me.ComboBoxDataBit.Text & "-" & Me.ComboBoxStopBit.Text
Me.Close()
End Sub
Private Sub ButtonDefault_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonDefault.Click
Me.ComboBoxPortName.Text = "COM1"
Me.ComboBoxBaudRate.Text = "9600"
Me.ComboBoxDataBit.Text = "8"
Me.ComboBoxParity.Text = "None"
Me.ComboBoxStopBit.Text = "1"
End Sub
Private Sub ButtonCancel_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonCancel.Click
Me.Close()
End Sub
End Class

II. Ch¬ng tr×nh vi ®iÒu khiÓn
#include <REGX51.H>
#include <stdio.h>
bit PWM,k;
unsigned char dem=0;
unsigned char ch;
unsigned int phantram_PWM=20;
void delay(unsigned long int t)

{
unsigned long int i,j;
for (i=0;i<100;i++)
for (j=0;j}
/*unsigned char led[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void hienthi(unsigned char so1,unsigned char so2)
{
//hien thi so thu nhat
P2=led[so1];
P0_2=1;
delay(2);
P0_2=0;
//hien thi so thu hai
P2=led[so2];
P0_3=1;
delay(2);
P0_3=0;
}
*/
/*void khoitaohethong()
{
EA=0;

Khoa §iÖn Tö

14


Trêng §H C«ng NghiÖp Hµ Néi

TMOD=0X02;//CHE SO 8 BIT TU NAP
TH0=0X9B;// nap gia tri 155 ma hex
TL0=0X9B;
EA=1;
TR0=1;
ET0=1;
}

*/
void ngat_timer0(void) interrupt 1//tao xung PWM
{
TR0=0;
TF0=0;
dem++;
if (dem>=phantram_PWM)
{
PWM=1;
}
else
{
PWM=0;
}
if (dem==30) dem=0;
TR0=1;
}
// HAM DUNG DONG CO
void stopdc()
{
P0_0=0;
P0_1=0;

}
unsigned char chieu()
{
k=!k;
if (k==1)
{
P0_1=PWM;
P0_0=0;
}
if (k==0)
{
P0_1=0;
P0_0=PWM;
}
return(k);
}
unsigned char tangtoc()
{
phantram_PWM--;
delay(100);
if (phantram_PWM<1)
{
phantram_PWM=1;
}
return (phantram_PWM);
}
unsigned char giamtoc()
{
phantram_PWM++;
delay(100);


Khoa §iÖn Tö

15

ghÐp Nèi M¸y TÝnh


Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y TÝnh

if (phantram_PWM>20)
{
phantram_PWM=20;
}
return (phantram_PWM);
}
unsigned char n;
void chonchedo(unsigned char kitu)
{
switch(kitu)
{
case 'S' :
stopdc();
break;
case 'D' :
//k=!k;
chieu();
break;

case 'T' :
tangtoc();
break;
case 'G':
giamtoc();
break;
}
}
void main()
{
TMOD =
0x20;
TH1= -3; //Toc do 9600 baud
SCON=0x50;
SCON=0x50;
TR1 =1;
TI = 1;

//Timer 1 che do 2

while(1)
{
tangtoc();
giamtoc();
ch = _getkey();
chonchedo(ch);
ch = '@';
// hienthi((30-phantram_PWM)/10,(30-phantram_PWM)%10);
}
}


Khoa §iÖn Tö

16


Trêng §H C«ng NghiÖp Hµ Néi

Iii. S¬ Đå Nguyªn Lý

Khoa §iÖn Tö

17

ghÐp Nèi M¸y TÝnh


Trêng §H C«ng NghiÖp Hµ Néi

IV. Sơ Đồ Mạch In:

Khoa §iÖn Tö

18

ghÐp Nèi M¸y TÝnh




×