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

thiết kế một bộ điều khiển motor dc có p = 60w ; u =12vdc

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 (780.16 KB, 23 trang )

Bộ Công Thương
Trường Đại Học Công Nghiệp Hà Nội

*********
Bản báo cáo
Đồ án môn học vi điều khiển
Chủ đề 17:thiết kế một bộ điều khiển motor DC. Hệ thống có thể
điều khiển được motor có công suất P <=60W và điện áp U <=
12VDC.
Thao tác điều khiển gồm có:tăng, giảm, đảo chiều bằng phương
pháp điều khiển độ rộng xung.Hệ thống có các phím điều khiển đảo
chiều,tăng,giảm tốc độ.
File đính kèm 009.rar
Thầy giáo hướng dẫn : Nguyễn Anh Dũng
Sinh viên thực hiện: Nguyễn Xuân Lộc
Nguyễn Thành Chung
Trần Văn Tùng


1
Mục Lục
Trang
Lời nói đầu …………………………………………………………3
Sơ lược họ 8051.
I. Sơ lược 8051…………………………………………… 4
II. Sơ lược 89S52……………………………………………7
Động cơ một chiều.
I. Cấu tạo máy điện một chiều………………………………….11
II. Nguyên lý hoạt động động cơ một chiều…………………… 13
IC L298.
Tổng quan về L298……………………………………………14


Thiết kế
I. M ạch mô phỏng…………………………………………… 16
II. Mạch nguyên lý…………………………………………… 17
III. Mạch in………………………………………………………17
Lập trình cho vi điều khiển.
I. Phương pháp điều chế độ rộng xung điều khiển tốc độ động cơ
PWM…………………………………………………………………18
II. Phần lập trình……………………………………………… 19
2
Lời nói đầu
Trong các ngành công nghiêp,công tác điều khiển vận hành các
thiết bị theo một quy trình nhằm nâng cao hiệu quả sản xuất ,nâng cao
chất lượng sản phẩm đồng thời tiết kiệm chi phí sản xuất giữ một vị
trí quan trọng.
Với ưu điểm là điều khiển tốc độ động cơ dễ dàng , độ ổn định tốc độ
cao nên động cơ một chiều đã được sử dụng khá phổ biến như: truyền
động cho một số máy như máy nghiền ,máy nâng vận chuyển, điều
khiển băng tải, điều khiển các robot…
Để điều khiển tốc độ của động cơ một chiều thì có rất nhiều phương
pháp,trong đồ án của mình chúng em xin trình bày điều khiển động cơ
dùng họ vi điều khiển 8051 bằng phương pháp điều chỉnh độ rộng
xung PWM.Trong đồ án của mình chúng em chúng em 89S52 để lập
trinhd điều khiển động cơ một chiều DC 12V dùng l298.
Chúng em xin chân thành cảm ơn các thầy cô trong khoa Điện Tử_Tự
Động Hoá đã giúp đở chúng em trong quá trình làm đồ án và thầy
Nguyễn Anh Dũng đã trực tiếp giảng dạy và hướng dẫn chúng em là
đồ án.
Mặc dù đã có nhiều cố gắng nhưng trong quá trình làm đồ án ,chưa có
kinh nghiệm nên còn có nhiều nhiều khiếm khuyết trong cách trình
bày cũng như phần thể hiện đồ án của mình mong các thầy góp ý và

bổ sung thêm.
Chúng em xin chân thành cảm ơn.
3
_________ SƠ LƯỢC 8051_______
I. Sơ lược 8051
8051 ra đời năm 1981 do hãng Intel sản xuất.
Họ điều khiển này có 128 byte RAM,4kbyte ROM,hai bộ đnh thời
,một cổng nối tiếp và 4 cổng ra\vào song song và là 1 bộ vi xử lý 8
bit.
Sau khi Intel cho các nhà sản xuất khác sản xuất và bán các dạng
biến thể của 8051 thì họ 8051càng ngày càng phổ biến và ngày càng
có nhiều phiên bản khác nhau của 8051 nhưng tất cả đều tương thích
với 8051 ban đầu.
Sau đây là bảng so sánh các họ khác nhau:


Số hiệu
sản xuất
Bộ nhớ
chương
trình
Bộ nhớ dữ
liệu
Số bộ
định thời
(bộ đếm)
8031
8051
8571
8951

8032
8052
8752
8952
0K
4K ROM
4K EPROM
4K FLASH
0K
8K ROM
8K EPROM
8K FLASH
128 BYTE
128 BYTE
128 BYTE
128 BYTE
256 BYTE
256 BYTE
256 BYTE
256 BYTE
2
2
2
2
3
3
3
3

II. Chức năng các chân của họ 8051

4

1. Port 0 (P0.0 _ P0.7)
Port 0 gồm 8 chân .
Với chức năng xuất nhập dữ liệu ,ngoài ra Port 0 còn là bus đa hợp dữ
liện và địa chỉ(AD0_AD7).Port 0 cũng nhận các byte mã khi lập trình
Flas và xuất các byte mã khi kiểm tra chương trình .Chú y trong
trường hợp này cần có thêm điện trở trước khi nối vào chân Port 0.

2. Port 1 (P1.0_P1.7)
Cũng như Port 0 ,Port 1 cũng có 8 chân. Chức năng của Port 1 chỉ là
xuất nhập dữ liệu .Port 1 cũng có thể xuất nhập theo bit và theo byte.
3. Port 2
Port 2 là port 8 bit ,cũng có chức năng xuất nhập dữ liệu như 2 port
trên.Khi làm nhiệm vụ là port nhập, các chân của port 2 đang được
kéo xuống mức thấp do tác động của bên ngoài sẽ cấp dòng do các
điện trở kéo lên từ bên trong .Port 2 tạo ra byte cao của bus điạ chỉ
trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong
thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16 bit.
Port 2 cũng nhận các bit địa chỉ cao và tín hiệu điều khiển trông thời
gian lập trình Flash và kiểm tra chương trình.
4. Port 3
Cũng là port xuất nhập dữ liệu 8 bit ,ngoài ra port 3 còn có các chức
năng khác cụ thể như sau:

Bit Tên Chức năng
P3.0 RXD Dữ liệu nhận cho Port nối tiếp
P3.1 TXD Dữ liệu truyền cho Port nối tiếp
P3.2 INT0 Ngắt bên ngoài 0
P3.3 INT1 Ngắt bên ngoài 1

P3.4 T0 Ngõ vào của timer/counter0
P3.5 T1 Ngõ vào của timer/counter1
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài
5. RST
Khi tín hiệu vào chân này được đưa lên mức cao ( trong ít 2 chu
kỳ),các thanh ghi trong bộ vi điều khiển được tải lên nhưng giá trị
thích hợp để khởi động hệ thống.
6. Chân /PSEN
5
PSEN(program store enable) là chân đọc chương trình ở bộ nhớ
ngoài ./PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh.Khi thực hiện
chương trình trong ROM nội thì /PSEN ở mức caoChân này được kích
hoạt 2 lần mỗi chu kỳ máy và hai hoạt đông này sẽ được bỏ qua khi
truy cập bộ nhớ ngoài .
7. Chân ALE
ALE(address latch enable) là một xung ngõ ra để chốt byte thấp của
địa chỉ trong khi truy cập bộ nhớ ngoài .Đây cũng là chân truy cập
xung lập trình khyi lập trình Flash.Bình thường khi hoạt động chân
ALE sẽ được phát với một tỷ lệ không đổi 1/6 tần số dao đông của vi
điều khiển .Tuy nhiên chân này cũng sẽ bỏ qua mỗi khi truy cập bộ
nhớ ngoài .
8. Chân EA
EA(external access) là chân cho phép chọn bộ nhớ trong hay bộ nhớ
ngoài của vi điều khiển .Khi EA ở mức tích cực cao(nối với VCC) thì
vi điều khiển thi hành chương trình ROM nội,ngược lại(nối với GND)
thì vi điều khiển thi hành bộ nhớ ngoài.

9. XTAL1 và XTAL2
Đây là 2 ngỏ vào và ra của 1 bộ khuyếch đại dao động nghịch được

cấu hình để dùng như một bộ dao động trên chip.Nó thường được nối
với bộ dao đông thạch anh có dải tần thường là 12MHz-33MHz.
10. Vcc và GND
Đây là 2 chân dùng để cấp nguồn cho IC, dải điện áp thích hợp là 4-
5V.Với Vcc nối với dương nguồn ,GND nối với âm nguồn.
III. SƠ LƯỢC 89S52
89S52 là một dòng trong họ 8051 ,nó có đầy đủ tính chất cũng như
tính năng của họ 8051 .Sau đây là sơ đồ chân của 89S52:
89S52 có tất cả là 40 chân, trong đó chân 20 và 40 là 2 chân nối nguồn
với điện áp cho phép nằm vào khoảng 3-5,5V.
Từ chân 1 đến chân 8 là chân port 1,từ chân 10 đến chân 17 là chân
của port 3 ,từ chân 32 đến chân 39 là chân của port 0,từ chân 22 đến
chân 28 là các chân của port 2,các chân còn lại là :chân 9 là chân
RST ,chân 18 và chân 19 lần lượt là chân XTAL1 và XTAL2 ,từ chân
29 đến chân 31 lần lượt là các chân PSEN,ALE,EA.
Chức năng của các chân này thì đã trình bày trên phần sơ lược 8051 ở
trên.
6

Hình 1. Sơ đồ chân của 89S52
7

Hình 2. Sơ đồ khối của bộ vi điều khiển AT89S52
AT 89S52 có 8byte Flash ROM trên chip,khi chân /EA (chân 31) được
đặt ở mức logic cao thì bộ vi điều khiển sẽ thực hiện chương trình
trong bộ nhớ này,tuổi thọ cho bộ nhớ này vào khoảng 1000 lần lập
trình,khi chân EA ở mức thấp thì bộ vi điều khiển sẽ thực hiện chương
trình ở bộ nhớ ngoài(EPROM ngoài). Để thực hiện được điều này thì
89S52 cần cần có một mạch phối ghép AT89S52 với Flash/EPROM
AT89S52 có 256 byte RAM nội, trong đó có 32 byte của bộ nhớ dành

cho các bank thanh ghi.
AT89S52 có 128 bit có chứa các byte định địa chỉ theo bit tà 20H đến
2FH,các bít này có thể là việc với 1 lệnh đơn.
Ngày nay , với sự phát triển của công nghệ thì việc sử dụng chip
nói chung và họ 8051 nói riêng ngày càng cần thiết và phổ biến …
8
Ngoài ra AT89S52 còn có nhiều tính năng khác mà chúng em chưa
khai thác được.
9
_____ĐỘNG CƠ MỘT CHIỀU_____
I. Cấu tạo máy điện một chiều
Sau đây là một số sơ đồ của máy điện 1 chiều:
Sơ đồ của một máy điện 1 chiều với bộ phận kích từ song song


Mạch từ của một máy điện 2 cực
10


Cuộn dây kích từ trên một cực từ

Cấu tạo cổ góp
Cấu tạo chổi than
Máy điện một chiều cơ bản gồm 2 phần mạch điện : mạch kích từ và
mạch phần ứng.
Mạch kích từ hay còn hay gọi là stator gồm phần tĩnh là cuộn dây
quấn quanh các cực từ của stator.
Số cực từ là chẵn chúng sắp xếp xen kẽ theo cực tính nam-bắc.Cuộn
kích từ ,dòng điện cũng như thông lương của các cực từ la như nhau
11

Các cuộn dây kích từ nối tiếp với nhau.
Dòng điện cung cấp cho cuộn kích từ nhằm tạo ra từ thông trong đông
cơ.
Mạch kích từ không phải là mạch tiêu thụ công suất nguồn chính trong
động cơ.
Mạch phần ứng là mạch tiêu thụ công suất chính trong động cơ và nó
nằm trên phần roto.Các cuộn của dây của phần ứng đặt trong đặt trong
các rảnh phân bố trên bề mặt của roto, độ rộng của một cuộn dây gọi
là bước cuộn .Các cuộn dây trên phần mạch ứng nối với nhau thành
một mạch kín ,kết thúc của cuộn này sẽ là bắt đầu của cuộn tiếp theo
và kết thúc của cuộn cuối cùng sẽ là bắt đầu của cuộn đầu tiên,dòng
một chiều đưa vào hay lấy ra từ dây cuốn phần ứng thông qua các
chổi than tỳ lên cổ góp .Cổ góp là một kết cấu hình trụ trên bề mặt có
nhiều phiến góp ,số phiến góp bằng số cuộn dây và chúng được cách
điện với nhau bằng mica.
II. Nguyên lý hoạt động của động cơ môt chiều
Khi đặt vào trong từ trường một giây dẫn và cho dòng điện chạy qua
dây dẫn thì từ trường sẽ tác dụng một lựcvào dòng điện và làm dây
dẫn chuyển động .Chiều của lực được xác định bằng quy tắc bàn tay
trái. Đây chính là nguyên lý làm việc của động cơ nói chung
Về động cơ một chiều :
Từ trường trong động cơ tạo ra từ các cuộn dây gọi là cuộn cảm hay
cuộn kích từ .Do stator của động cơ có đặt các cuộn cảm nên thường
gọi là phần cảm .Từ trường do cuộn cảm tạo ra sẽ tác dụng một lực
vào các dây dẫn rotor đặt trong các rảnh của rotor khi có dòng điện
chạy qua. Cuộn dây này gọi là cuộn ứng .Dòng điện đưa vào cuộn ứng
qua các chổi than và cổ góp.Phần rotor mang phần ứng nên gọi là phần
ứng
12
Giả sử các dây dẫn cuộn ứng nữa trên của rotorcos dòng điện hướng

vào còn các dây dẫn của cuộn ứng ở nửa dưới rotor có dòng điện
hướng ra như hình vẽ.Từ lực F tác dụng vào các dây dẫn rotor có
chiều xác định theo quy tắc bàn tay trái sẽ tạo ra một mômen làm rotor
quay ngược chiều kim đồng hồ.
Từ trường trong động cơ một chiều:
Khi động cơ làm việc cuộn cảm tạo ra một từ trường Φd dọc trục
cực từ và phân bố đối xứng với cực từ .Mặt phẳng 00’ trên đó có đặt
chổi than ,vừa là mặt phẳng trung tính hình học và cũng là mặt phẳng
trung tính vật lý . Đồng thời dòng điện trong cuộn ứng cũng tạo ra một
từ trường riêng Φn hướng ngang trục cực từ.Từ trường tổng trong
động cơ mất đi tính đối xứng dọc trục và khi này mặt phẳng trung tính
vật lý quay đi một góc β( ngược chiều quay của rotor )so với mặt
phẳng trung tính hình học.
Dòng điện cuộn ứng càng lớn thì Фn càng mạnh đồng thời góc quay
β càng lớn

13
________ IC L298_________

Tổng quan về L298.

-Hoạt động với điện áp lên tới 46V.
-Tổng dòng một chiều lên tới 4A.

Sơ đồ chân
và hình dáng thật của LM298
-Điện áp bão hoà thấp.
-Bảo vệ quá nhiệt.
-Điện áp vào mức “0” lên tới 1.5V.
L298 là một mạch tích hợp đơn khối với một loại 15 chân dẫn

Mutilwalt và l loại bộ nguồn SO20. Đây là một mach điều khiển cầu
đầy đủ với áp cao và dòng cao được thiết kế theo tiêu chuẩn mạch
logic TTL và được sử dụng để chạy các phụ kiện cảm ứng như
Rơle,cuộn dây Sơlenôit, động cơ một chiều , động cơ bước.
Sơ đồ khối của LM298
Hai đầu vào cho phép được cung cấp để cho phép hoặc không cho
phép các thiết bị độc lập của tín hiệu đầu vào.Cực E của transistor
dưới của mỗi cầu được lien kết với nhau và đầu ra ngoài tương ứng
14
cũng có thể được sử dụng cho sự ghép nối của điện trở cảm biến
ngoài.Một nguồn vào bổ sung được cung cấp làm cho mức logic làm
việc ở điện áp thấp.

Bảng chân lý của LM298
15
_______________THIẾT KẾ___________

I. Mạch mô phỏng .
thuan
nghich
THUAN
NGHICH
PWM
PWM
XTAL2
18
XTAL1
19
ALE
30

EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0/T2
1
P1.1/T2EX
2
P1.2
3
P1.3
4

P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22

P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C52
IN1
5
IN2
7
ENA
6
OUT1
2
OUT2
3
ENB
11
OUT3
13
OUT4
14
IN3
10

IN4
12
SENSA
1
SENSB
15
GND
8
VS
4
VCC
9
U2
L298
R1
10k
R2
10k
R3
10k
R4
10k
R5
10k
+5V
+24+5V
+ 8 8 .8
D1
DIODE
D2

DIODE
D3
DIODE
D4
DIODE
A
B
C
D
Mạch mô phỏng

SEN A
1
OUT1
2
OUT2
3
VS
4
IN1
5
ENA
6
IN2
7
GND
8
VSS
9
IN3

10
ENB
11
IN4
12
OUT3
13
OUT4
14
SEN B
15
L298N
L298N
U2
+12V
VCC
RC0
RC1
PWM
+12V
1
1
2
2
j2
CON2
GND
GND
Diode xung
D4

Diode xung
D5
Diode xung
D9
Diode xung
D10
Sơ đồ mạch cầu

II. Mạch nguyên lý.
16
Trong sơ đồ mạch nguyên lí ta sử dụng một mạch cầu ngoài diôt
.Mạch này có tác dụng phục hồi nhanh trạng thái hoạt động của phụ
tải.Nó hạn chế các trường hợp xấu của dòng phụ tải.Điện áp đầu ra có
thể được sử dụng để điều khiển biên độ của dòng điện bởi sự ngắt đầu
vào hoặc được cung cấp bảo vệ dòng quá tải bởi sự chuyển mạch
chậm của đầu vào cho phép.
Chức năng hãm đòi hỏi mức cực đại tuyệt đối của 2 cường độ phải
chưa bao giờ khắc phục.Khi lặp lại dòng điện đỉnh cần từ tải phụ là
cao hơn hai cường độ dòng
điện thì cần phải nối song song đầu vào của chúng với nhau và đầu ra
của chúng với nhau.
Một mạch cầu điôt được yêu cầu khi phụ tải cảm ứng được chạy và
khi đầu vào của IC bị ngắt. Điốt Shottky thường được sử dụng cho
mạch cầu này.
III. Mạch in

17
___LẬP TRÌNH CHO VI ĐIỀU KHIỂN___
I. Phương pháp điều chế độ rộng xung điều khiển tốc độ
động cơ (PWM)

Điều khiển tốc độ động cơ là một kĩ thuật hết sức quan trọng trong các
ứng dụng của động cơ .Kĩ thuật này giúp bạn có thể điều khiển động
cơ của mình chạy nhanh chậm tuỳ ý.
a) có hai cách tạo xung có độ rộng thay đổi bằng VĐK.
Cách 1: Như các bạn điều khiển nhấp nháy 1 con led, đó là tạo ra 1
xung trên 1 chân của vi điều khiển, những xung đó có độ rộng cố định,
tần số lớn, cách bạn có thể điều chỉnh lại hàm delay để tần số của nó
đúng 1 Khz. Tuy nhiên vì là dùng hàm delay nên trong thời gian có
xung lên 1(5V) và thời gian không có xung(0V) vi điều khiển không
18
làm gì cả, hơn nữa tạo xung bằng việc delay mà các bạn có nhu cầu cần
2 bộ phát xung của 2 kênh, có cùng tần số mà khác độ rộng xung thì
trở nên rất khó khăn. Cho nên chúng ta dùng bộ định thời Timer của vi
điều khiển trong trong hợp này rất tiện.
+ Cách 2: Dùng ngắt Timer của bộ vi điều khiển
Khi bắt đầu cho timer 1 chạy thì bộ đếm của timer sẽ đếm dao động
của thạch anh, cứ 12 dao động của thạch anh(1 chu kì máy), bộ đếm của
timer 1
TL1(Timer Low1) sẽ tăng 1,có thển nói timer 1 đếm số chu kì máy. Đối
với chế độ 8 bít.
TL1 là 1 thanh ghi 8 bít, là bộ đếm của bộ định thời rõ rồi. Nó đếm
được từ 0, đến 255. Nếu nó đếm đến 256 thì bộ đếm tràn, TL1 quay
vòng lại bằng 0, và cờ ngắt TF1(Timer Flag 1) tự động được gán lên
1(bằng phần cứng của vi điều khiển) như 1 công tắc tự động bật, và ngắt
xảy ra.
Còn với chế độ 16 bít, bộ đếm của bộ định thời còn 1 thanh ghi 8
bít nữa là TH1(Timer high 1), nếu cấu hình cho timer 1 hoạt động ӣ chế
độ 16 bit thì khi TL1 tràn nó sẽ đếm sang TH1(TH1 sẽ tăng 1). Như vậy
ta có thể đếm: 2
16

chu kì máy( 2 thanh ghi 8+8=16 bít).
Chú ý là khi bộ đếm tràn ngắt sẽ xảy ra. Nếu ta cần đếm 256 chu kì máy
thì khi khӣi tạo ta cho TL1=0; , còn nếu không muốn đếm 256 chu kì mày
mà ta chỉ cần đếm 100 thôi ngắt đã xảy ra rồi thì ta fải làm như sau:
256-100 =
156; và khi khi tạo ta gán : TL1=155; vì đếm từ 155 đến 255 là đủ 100
lần thì ngắt xảy ra.
Với yêu cầu của bài. Tạo xung tần số 1Khz

Chu kì = 1/10
3
= 0,001
giây=1 mili giây=1000 uS= 1000 chu kì máy. Với 10 cấp tốc độ, tức là
bạn phải tạo ra được xung 10%, 20%, 30%, 40%, …, 90%, 100%.
Khoảng thời gian xung kéo dài 5V là T1. Xung 10% tức là
T1/ T=
10%=1/10. Xung 20% T2/T=2/10…PWM(Thay đổi độ rộng
xung).
- Xung PWM: Đưa ra mở transitor, xung với độ rộng lớn
hơn transitor sẽ
mở lâu hơn động cơ sẽ quay nhanh hơn,dĩ nhiên không
tuyến tính. Không có
xung động cơ sẽ không quay, có xung 100% động cơ sẽ
quay max.Tuy nhiên
xung phải lớn hơn 1 mức nào đó thì mới đủ khởi động cho
động cơ. Các đặc
tính này các bạn tham khảo trong giáo trình về máy điện,
khí cụ điện, nếu
các bạn cần thông số chính xác.
19

Để có thể thay đổi 10 cấp tốc độ với chu kì 1000uS, ta
khởi tạo cho ngắt
timer: 100 uS ngắt 1 lần.
trong đồ án của mình chúng em đã sử dụng timer để thay
đổi độ rông xung PWM.
II. Lập trình.
#include <REGX52.H>
#include<stdio.h>
#include<math.h>
sbit pwm=P2^0;
sbit thuan=P2^1;
sbit nghich=P2^2;
sbit stop=P1^0;
sbit daochieu=P1^1;
sbit giam =P1^2;
sbit tang =P1^3;
sbit start=P1^4;
float tyso;
int dem=0,dem1=0;
void delay(long int time)
{
long int i;
for(i=0;i<time;i++);
}
void taoxung()
{
TR0=0;
pwm=1;
TH0=-(unsigned int)(tyso*1000)/256;
TL0=-(unsigned int)(tyso*1000)%256;

TR0=1;
while(!TF0);
TF0=0;
TR0=0;
pwm=0;
TH0=-(unsigned int)((1-tyso)*1000)/256;
TL0=-(unsigned int)((1-tyso)*1000)%256;
TR0=1;
while(!TF0);
TF0=0;
20
}
void khoidong()
{
if(start==0)
{
delay(1000);
while(start==0);
delay(1000);
thuan=0;
nghich=1;
tyso=0.5;
}
}
void dung()
{
if(stop==0)
{
delay(1000);
while(stop==0);

delay(1000);
thuan=1;
nghich=1;
tyso=1;
}
}
void thuan_nghich()
{
if(daochieu==0)
{
delay(1000);
while(daochieu==0);
delay(1000);
if(dem==0)
thuan=1;
nghich=0;
dem++;
}
if(dem==2)
{
dem=0;
thuan=0;
nghich=1;
}
21
}
void tangtoc()
{
if(tang==0)
{

delay(1000);
while(tang==0);
delay(1000);
dem1++;
tyso+=0.2;
if(tyso>=1)
tyso=0.99;
}
}
void giamtoc()
{
if(giam==0)
{
delay(1000);
while(giam==0);
delay(1000);
dem1++;
tyso-=0.2;
if(tyso<=0)
tyso=0.01;
}
}
void main()
{
TMOD=0x01;
dem=0;
dem1=0;
tyso=1;
thuan=1;
nghich=1;

while(1)
{
taoxung();
khoidong();
thuan_nghich();
dung();
tangtoc();
22
giamtoc();
}
}
23

×