Tải bản đầy đủ (.docx) (20 trang)

vi điều khiển robot dò đường

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 (334.99 KB, 20 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-o-VIỆN ĐIỆN-oBỘ MÔN TỰ ĐỘNG HÓA CÔNG NGHIỆP

BÁO CÁO
Đề tài:

Mạch đèn ngủ và báo thức tự động
sử dụng IC555
GVHD: Thầy Nguyễn Công Phương
SVTH: Võ Thanh Tùng

MSSV:20146832

Nguyễn Thanh Long

MSSV:20146450

Hà Nội,ngày…tháng…năm 2016


Mạch đèn ngủ và báo thức tự động sử dụng IC555

LỜI MỞ ĐẦU

Lời đầu tiên cho em xin cám ơn Thầy Nguyễn Công Phương đã giúp đỡ nhóm em
rất nhiều trong quá trình thực hiện làm đề tài này.
Ngày nay ngành điều khiển tự động hóa ngành càng phát triển, đáp ứng đúng nhu
cầu phát triển về khoa học kĩ thuật, đặc biệt hơn nó càng có ứng dụng thực tiễn
trong đời sống con người. Chính vì thế em đã lựa chọn đề tài mạch đèn ngủ và báo
thức tự động làm đề tài cho đồ án 1 của mình. Trong quá trình hoàn thành em đã
học hỏi là tích lũy được rất nhiều kiến thức:


+ Phương pháp làm việc khoa học, kĩ năng làm việc nhóm thể hiện tinh thần
đồng đội, tính đoàn kết và tự giác
+ Giúp chúng em cải thiện khả năng tìm tòi kiến thức, tự lập tìm kiếm kiến
thúc từ nhiều nguồn khác nhau
Tuy nhiên trong quá trình hoàn thành đề tài cũng còn gặp nhiều khó khan. Vì
vậy kết quả còn nhiều thiếu sót, không được như mong đợi. Mong thầy Nguyễn
Công Phương giúp đỡ chúng em hơn nữa để hoàn thiện hơn. Từ đó có thể mở rộng
ra những ứng dụng khác, thực tiễn hơn đối với đời sống con người.
Một lần nữa, em xin chân thành cảm ơn Thầy đã giúp và hướng dẫn nhóm em hoàn
thành được đề tài này ạ.

SVTH
Võ Thanh Tùng

Page 2


Mạch đèn ngủ và báo thức tự động sử dụng IC555

MỤC LỤC

1. GIỚI THIỆU CHUNG
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng
để điều khiển các thiết bị điện tử. Vi điều khiển thực chất gồm một vi xử lý có hiệu suất
đủ cao và giá thành thấp (so với các vi xử lý đa năng dùng trong máy tính) kết hợp với
các thiết bị ngoại vi như các bộ nhớ, các mô đun vào/ra, các mô đun biến đổi từ số sang
tương tự và từ tương tự sang số, mô đun điều chế độ rộng xung (PWM)...
Vi điều khiển thường được dùng để xây dựng hệ thống nhúng. Nó xuất hiện nhiều
trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, dây truyền tự
động...

Hầu hết các loại vi điều khiển hiện nay có cấu trúc Harvard là loại cấu trúc mà bộ nhớ
chương trình và bộ nhớ dữ liệu được phân biệt riêng.
Page 3


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Cấu trúc của một vi điều khiển gồm CPU, bộ nhớ chương trình (thường là bộ nhớ
ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), các bộ định thời, các cổng vào/ra để
giao tiếp với các thiết bị bên ngoài, tất cả các khối này được tích hợp trên một vi mạch.
Đề tài thiết kế xe chạy theo đường vẽ sẵn được chúng em thực hiện dựa trên nền kiến
thức về mạch điện tử, vi xử lý nói chung và vi điều khiển họ 8051 nói riêng được thầy
giáo hướng dẫn trên lớp. Thực hiện đề tài này là tiền đề để chúng em nắm được những
kiến thức cơ bản về vi điều khiển 8051, từ đó tạo cơ sở để tiếp tục nghiên cứu những họ
vi điều khiển khác như AVR, PIC, ARM… phục vụ trong quá trình học tập và làm việc
sau này.
Chúng em chân thành cảm ơn thầy Nguyễn Hồng Quang đã hướng dẫn chúng em
hoàn thành bài tập này.

2. MÔ TẢ KỸ THUẬT
2.1 THIẾT KẾ MẠCH
A) Mạch nguồn
Trong khối nguồn chúng ta sử dụng 3 pin 3.7V là 11.1V.Mặt khác hệ thống điều khiển
cần phải có nguồn 5V để cung cấp cho khối VI ĐIỀU KHIỂN và khối SENSORS. Để tạo
nguồn 5V DC chúng ta sử dụng IC ổn áp 7805, với đầu vào gồm đất chung của toàn hệ
thống và nguồn 12 VDC lấy trực tiếp từ nguồn pin. IC ổn áp LM7805 được lắp một tản
nhiệt loại nhỏ để tản bớt nhiệt khi hoạt động giúp khối nguồn cũng như toàn bộ mạch
hoạt động ổn định.

Page 4



Mạch đèn ngủ và báo thức tự động sử dụng IC555

Hình 2.1: Sơ đồ nguyên lý khối mạch nguồn
1

3
2

2
1
2

1

2

1
2

2

2

1

1

2


1
1

2

1

Hình 2.2: Sơ đồ mạch in của mạch nguồn

B) Mạch cảm biến
Đường đi của xe được vẽ bằng vạch đen nằm trên nền trắng. Để xe nhận ra được
đường đi, chúng em sử dụng các cặp led thu phát hồng ngoại đặt gần nhau. Các led phát
phát ra ánh sáng đỏ, các led thu có điện trở phụ thuộc vào có nhận được ánh sáng phản xạ
từ đường đi hay không.

Page 5


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Khi cặp thu phát ở vị trí nền trắng, ánh sáng từ led phát phát ra phản xạ trên nền trắng
và tới led thu. Led thu thu được ánh sáng này thì điện trở giảm xuống, điện áp ở cực Anot
của led thu gần về 0. Ngược lại, ở vị trí vạch đen, ánh sáng từ led phát phát ra không
phản xạ lại được do bị vạch đen hấp thụ. Led thu không nhận được ánh sáng này nên điện
áp ở cực Anot của nó gần bằng 5 V. Điện áp ra từ led thu được đem so sánh với điện áp
chuẩn đã được chỉnh hợp lý qua IC LM324 để cho ra mức logic 0-1, đưa vào vi điều
khiển xử lý.
IC LM324 gồm 4 kênh so sánh. Trong đó, đầu vào đảo nối với cực Anot của led thu và
đầu vào không đảo nối với điện áp so sánh từ chiết áp.

Khi led ở ngoài nền trắng, mức điện áp trên led thu đo được là 3.0V, ngược lại, mức
điện áp thu đo được khi bắt vào vạch đen là 4.6 V. Điện áp so sánh (Vref) được đặt qua
biến trở 10k là 3.8 V.
Khi ở ngoài nền trắng: Vled thu Khi bắt vạch đen: Vled thu >Vref nên Output=0

Hình 2.4: Sơ đồ nguyên lý khối led thu phát

Page 6


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Hình 2.6: Mạch so sánh sử dụng LM324
1
2
3
4
5
3

3

6
2

1

14


7

2

13

8

3

12

4

11

5

10

6

9

7

8

2


1

1
2
3

1
2

1

1

14

2

13

3

12

4

11

5

10


6

9

7

8

1
2

1

1

1

3

1

2

1
2

2

3


2

1

3

2
2

1
1

1

1

1

1

1

2

2

1

1


1

1

2

1

1

2
2

2

2
2

2

1

1

2

1

2


1

1

2

2

2

2

2

1

2

2

2

1

2

Hình 2.5: Mạch in của hệ thống cảm biến

C) Mạch điều khiển

Khối này gồm có Vi điều khiển AT89S52, mạch RESET, mạch tạo dao động, các led
báo vạch về từ mạch SENSORS, Jumpers đầu vào dùng để nạp ISP.
+Vi điều khiển AT89S52 được chúng ta sử dụng vì nó có đầy đủ những chức năng của
vi điều khiển AT89C51. Ngoài ra còn có thêm một timer (timer2) và có bộ nhớ Flash,
Page 7


Mạch đèn ngủ và báo thức tự động sử dụng IC555

công nghệ nạp ISP (In System Programming) tức là nạp mà không cần tháo chip ra khỏi
mạch, giúp việc lập trình và test rất thuận tiện.
+ Mạch RESET có chức năng reset lại hoạt động của vi điều khiển, được nối vào chân
số 9 của vi điều khiển là chân tích cực cao. Khi chân số 9 được set lên 1 thì vi điều khiển
được reset lại. Để chống rung khi ấn nút, chúng ta dùng một tụ hóa nối song song với nút
ấn.
+ Mạch DAO ĐỘNG sử dụng thạch anh 12Mhz, như vậy một chu kì máy là 1us, rất
thuận tiện cho việc tính toán và lập trình. Tuy nhiên có hạn chế là không thể truyền thông
với máy tính qua cổng COM (đòi hỏi thạch anh 11.0592Mhz). Thạch anh này được nối
đất với tụ gốm 33p để lọc nhiễu.
+ Các led báo vạch về dùng để phản ánh tình trạng của các led thu phát ở mạch
SENSORS. Khi một cặp thu-phát bắt vào vạch đen thì led báo tương ứng sẽ sáng lên và
ngược lại. Nói cách khác, các led báo này phản ánh vị trí lệch của xe so với vạch đen, từ
đó giúp tìm và khắc phục lỗi chương trình thuận tiện hơn rất nhiều.

Page 8


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Hình 2.8: Sơ đồ nguyên lý mạch điều khiển


1
2

2

2

1

1

2

1

2

1

1

2

21

20

22


19

23

18

24

17

25

16

26

15

27

14

28

13

29

12


30

11

31

10

32

9

1

33

8

2

34

7

3

35

6


4

36

5

5

37

4

6

38

3

39

2

40

1

2

2


1

1

1

1

2

2
3
1

4
2

1

2

1

5
6
2

7
8


2

1

1

1
2

2

2

1

1

2

2

1

Hình2.9: Mạch in của khối điều khiển

D) Khối động cơ
Sử dụng IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với
điện áp làm tăng công suất nhỏ như động cơ DC loại vừa.Mình tóm tắt qua chức năng
các chân của L298:
- 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12 của

L298. Đây là các chân nhận tín hiệu điều khiển.
- 4 chân OUTUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các chân INPUT) được
nối với các chân 2, 3,13,14 của L298. Các chân này sẽ được nối với động cơ.
- Hai chân ENA và ENB dùng để điều khiển mạch cầu H trong L298. Nếu ở mức logic
“1” (nối với nguồn 5V) cho phép mạch cầu H hoạt động, nếu ở mức logic “0” thì mạch
cầu H không hoạt động
Với bài toán của mình ở trên, các bạn chỉ cần lưu ý đến cách điều khiển chiều quay
với L298:
- Khi ENA = 0: Động cơ không quay với mọi đầu vào.
- Khi ENA = 1:
INT1 = 1; INT2 = 0: Động cơ quay thuận.
INT1 = 0; INT2 = 1: Động cơ quay nghịch.
INT1 = INT2: Động cơ dùng ngay tức thì.
Page 9


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Với ENB cũng tương tự với INT3, INT4.

Hình2.12: Mạch nguyên lý khối động cơ

2.2 MÔ TẢ PHẦN CỨNG CPU
Cấu trúc chung của bộ vi điều khiển họ 8051

Một số thành phần chính của bộ vi điều khiển 8051:
CPU: bộ não của vi điều khiển, thực hiện các phép toán số học, logic.
Các cổng vào ra để nhận, truyền dữ liệu ra các mạch ngoại vi khác ở bên ngoài
hoặc cũng có thể dùng để định địa chỉ khi sử dụng bộ nhớ ngoài
 Rom: nơi lưu trữ bộ nhớ chương trình để CPU thực hiện các lệnh, điều khiển

hoạt động của vi điều khiển.
 Ram: bộ nhớ trong



Page 10


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Các bộ timer, bộ đếm: được sử dụng rất nhiều để tạo trễ, dùng trong hoạt động
ngắt
 Cổng nối tiếp để truyền thông máy tính
 ……
 Các bus dữ liệu, bus điều khiển, bus địa chỉ để liên kết các khối trong vi điều
khiển.
Vi điều khiển sử dụng trong bài tập này là AT89S52 của hãng Atmel. Một số đặc điểm
chỉnh của vi điều khiển này như sau:


o
o
o
o
o
o
o
o
o


Tương thích với tập lệnh 8051
8K bộ nhớ FLASH hỗ trợ nạp ISP
Điện áp hoạt động là 4.0V-5.5V
Tần số dao động cấp là 0-33Mhz
256x8b Ram nội
32 đường xuất nhập
3 bộ định thời 16 bit
8 nguồn ngắt
Hỗ trợ truyền thông máy tính cổng nối tiếp

Sơ đồ chân của vi điều khiển AT89S52 được minh họa như hình dưới:

2.3 MÔ TẢ THIẾT KẾ CÁC PHẦN KHÁC

Page 11


Mạch đèn ngủ và báo thức tự động sử dụng IC555

Thân xe gồm có 2 bánh trước để dẫn động, bánh sau quay được 360o , 2 động cơ sử
dụng là loại 12V một chiều được gắn vào thân xe. Mạch cảm biến kết nối với vi điều
khiển qua dây bus 6 gồm có 2 chân cấp nguồn 5V, vào 4 chân tín hiệu

2.4 THIẾT KẾ PHẦN MỀM
Chương trình viết cho vi điều khiển sử dụng ngôn ngữ C với trình dịch là phần mềm
Keil C.Sơ đồ khối điều khiển được tóm tắt như sau :
MẠCH
SENSORS
MẠCH
VI ĐIỀU KHIỂN

ĐIỀU KHIỂN ĐỘNG CƠ
XE CHUYỂN ĐỘNG

Lưu đồ thuật toán điều khiển:
KHỞI TẠO
GIỚI THIỆU
DÒ ĐƯỜNG
LỆCH

YES
NO
Cua trái
Or Cua phải
Đi thẳng
Page 12


Mạch đèn ngủ và báo thức tự động sử dụng IC555
YES
NO
Chương trình con khi bắt vạch đích

VẠCH

2.5 CÁC BƯỚC KIỂM TRA






Kiểm tra điện áp đưa ra từ khối nguồn: 5.02V
Kiểm tra điện áp trên cực Anot led thu khi qua và không qua vạch đen: tốt
Kiểm tra hoạt động của tín hiệu gửi về thông qua led báo: tốt
Kiểm tra hoạt động của IC L298: tốt

3 KẾT QUẢ ĐẠT ĐƯỢC VÀ PHÂN TÍCH LỖI
Vấn đề 1: Đọc và xử lý tín hiệu SENSORS
Tính toán, thu thập các trường hợp xe lệch ra khỏi đường, xe gặp khúc cua, xe không
bắt được vạch đen, xe bắt vạch đích, xe cua ở góc cua gấp…
Xử lý các trường hợp trên như thế nào?
Trong quá trình test xe, nhiều khi Sensors bắt không chuẩn hoặc không ổn định.
Khắc phục: Để thu thập các trường hợp, dùng tay đẩy xe đi theo đường đặc biệt là các
khúc cua và ghi tín hiệu hiển thị trên các led báo về, tính toán các trường hợp lệch trái,
lệch phải, lệch ít, lệch nhiều, không lệch, bắt vạch đích…
Hàn chắc các mối hàn mạch SENSORS, kiểm tra cáp nối với mạch vi điều khiển, điều
chỉnh biến trở để lấy điện áp so sánh hoạt động ổn định đưa vào IC LM324 là 3.8V.
Kết quả:Mạch hoạt động ổn định, SENSORS bắt rất tốt, tín hiệu báo về trên mạch vi
điều khiển chuẩn xác.
Vấn đề 2: Cách điều chế độ rộng xung PWM để đưa vào chân EN1, EN2 điều khiển
chiều quay cũng như tốc độ quay của hai động cơ truyền động.
Trong quá trình test xe, chúng em gặp các vấn đề: băm xung xe không chạy, cùng băm
xung với hai giá trị bằng nhau vào EN1 và EN2 nhưng tốc độ quay của hai động cơ
không bằng nhau hoặc trường hợp động cơ quay không đúng với chương trình. Ví dụ
cùng một trường hợp Led báo về nhưng có lúc động cơ quay thuận, lúc quay ngược.
Khắc phục: Hiệu chỉnh chương trình băm xung cho hợp lý. Mô phỏng chương trình
nói riêng cũng như mạch vi điều khiển, động cơ nói chung bằng phần mềm mô phỏng rất
mạnh là Proteus.
Page 13



Mạch đèn ngủ và báo thức tự động sử dụng IC555

4.KẾT LUẬN
Qua quá trình làm bài tập lớn vi điều khiển với sản phẩm thực tế là chiếc xe chạy theo
đường đi này, chúng em đã học hỏi được rất nhiều kiến thức: thiết kế xe, thiết kế mạch,
làm mạch in, lập trình, hiệu chỉnh… Điều quan trọng là chúng em đã làm được một sản
phẩm dựa trên những kiến thức đã học vì từ lý thuyết ra thực tế là cả một quãng đường
dài.
Bài tập này giúp chúng em hiểu thêm cấu trúc của Vi điều khiển 8051 cũng như tập
lệnh của nó, tạo tiền đề để tiếp tục nghiên cứu các vi điều khiển ứng dụng mạnh hơn như
AVR, PIC, ARM…., các bộ PLC, các hệ thống SCADA, DSC…, phục vụ cho quá trình
làm việc, nghiên cứu sau khi tốt nghiệp.
Chúng em chân thành cảm ơn thầy giáo Nguyễn Hồng Quang đã hướng dẫn, truyền
đạt kiến thức để có thể hoàn thành được bài tập này.

5. MỞ RỘNG ĐỀ TÀI
Để có được chiếc xe tự hành có khả năng di chuyển bắt vạch với độ phức tạp cao của
đường đi, xe đạt tốc độ lớn thì đề tài có thể nghiên cứu tiếp như sau:
Sử dụng hộp số và động cơ có momen lớn hơn,
Sử dụng encoder để phản hồi tốc độ, xây dựng vòng điều khiển để động cơ có thể
nhanh chóng ổn định ở tốc độ cao.
• Kết hợp ADC với mạch sensor để xử lý, loại bỏ hoàn toàn các tác động của nhiễu
Có thể đưa thêm các nút bấm để lựa chọn chiến thuật trên LCD khi xe chạy trên đường
có nhiều ngã tư và nhiều lối đi. Và để dễ dàng trong việc phát triển thuật toán hơn thì việc
nghiên cứu sử dụng các vi điều khiển có nhiều tính năng như AVR hay PIC có thể là
hướng tiếp theo.



Tuy nhiên việc xe tự hành di chuyển bắt vạch không có ứng dụng thực tế lắm, nên để có

thể phát triển đề tài thành ứng dụng có tính thực tiễn thì phần sensor cần phát triển để có
thể nhận biết vật cản nói chung chứ không chỉ là vạch đen đơn thuần. Công nghệ xử lý
ảnh có thể là một hướng phát triển hợp lý cho phần sensor.Từ đó xe tự hành có thể di
chuyển trên đường bất kì và ta có thể nghiên cứu phát triển phần cơ khí và các bộ điều
khiển để xe có thể thực hiện một số công việc nào đó khi gặp vật cản như nhặt đồ bị rơi,
gắp quà (trong cuộc thi robocon), thậm chí có thể là thu dọn rác hay ấn nút mở cửa…!

6. TÀI LIỆU THAM KHẢO
1. Bài giảng trên lớp
2. Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn Tăng Cường

Phan Quốc Thắng
3. Họ vi điều khiển 8051- Tống Văn On_Hoàng Đức Hải
Page 14


Mạch đèn ngủ và báo thức tự động sử dụng IC555

4. Một số trang web:
www.dientuvietnam.net
www.picvietnam.com
www.8051projects.com
www.dieukhien.net
…….
-

7. PHỤ LỤC
7.1 DANH SÁCH THIẾT BỊ
Số lượng


Tên thiết bị
Pin+ đế pin

3

Module cảm biến hồng ngoại

1

Module L298

1

Tụ điện các loại: tụ sứ 33p, tụ hóa 10uF, 330uF,
0.1uF

Vài

Điện trở các loại: 330, 10k,

Vài

LM7805

1

AT89S52+đế

1


Thạch anh 12Mhz

1

Tản nhiệt loại nhỏ

1

Công tắc nguồn

1

Jump các loại

Vài

Cáp nối 8 sợi

1

Phíp đồng, hóa chất

7.2 MÃ NGUỒN
Page 15


Mạch đèn ngủ và báo thức tự động sử dụng IC555

#include <REGX52.H>
sbit PWM=P0^0;

sbit PWM1=P0^5;

// bam xung dong co trai
// bam xung dong co phai

sbit LED1=P3^4; // sensor 1 o vi tri ben trai xa
sbit LED2=P3^3; // sensor 2 o vi tri ben trai gan
sbit LED3=P3^2;
// sensor 5 o vi tri ben phai gan
sbit LED4=P3^1; // sensor 6 o vi tri ben phai xa
sbit EN1=P0^0; // dieu khien dong co trai
sbit IN1=P0^1; // dong co trai quay thuan
sbit IN2=P0^2; // dong co trai quay nguoc
sbit IN3=P0^3; // dong co phai quay thuan
sbit IN4=P0^4; // dong co phai quay nguoc
sbit EN2=P0^5; // dieu khien dong co phai
unsigned char dem;
unsigned char ptxung; // phan tram xung
unsigned char ptxung1; // phan tram xung 1
void timer0(void) interrupt 1 // ngat timer 0
{
TR0=0;
// khong chay timer 0
TF0=0;
// co tran thi xoa ve 0
dem++;
if(dem{P0_0=1; }
else P0_0=0;
if(dem

{ P0_5=1;}
else P0_5=0;
if(dem==11) dem=0;
TR0=1; // chay timer 0
}
void khoitaotimer0(void) // ham khoi tao
{
EA=0; // cam ngat toan cuc
TMOD=0x02;
TH0=0x00;
TL0=0x00;
ET0=1; // cho phep ngat timer 0
EA=1; //cho phep ngat toan cuc
Page 16


Mạch đèn ngủ và báo thức tự động sử dụng IC555

TR0=1; // cho phep ngat timer
}
void motor_left_forward() // DONG CO TRAI CHAY THUAN
{ EN1=1;
// cho phep chay
IN1=0;IN2=1; }
// quay thuan
void motor_left_reverse()
// DONG CO TRAI CHAY NGUOC
{ EN1=1;
// cho phep chay
IN1=1;IN2=0; }

// chay nguoc
void motor_left_stop()
// DONG CO TRAI DUNG LAI
{ EN1=0;}
void motor_right_forward()
// DONG CO PHAI CHAY THUAN
{ EN2=1;
// cho phep chay
IN3=0;IN4=1;} // chay thuan
void motor_right_reverse()
// DONG CO PHAI CHAY NGUOC
{ EN2=1;
// cho phep chay
IN3=1;IN4=0;} // chay nguoc
void motor_right_stop()
// DONG CO PHAI DUNG LAI
{EN2=0;}
void forward()
// CHAY THANG
{ motor_left_forward();
motor_right_forward();}
void reverse()
// CHAY NGUOC
{ motor_left_reverse();
motor_right_reverse();}
void stop()
// DUNG LAI
{ motor_left_stop();
motor_right_stop();}
void turn_left()

// RE TRAI
{ motor_left_reverse();
motor_right_forward();}
void turn_right()
// RE PHAI
{ motor_left_forward();
motor_right_reverse(); }
char v;
void main()
{
khoitaotimer0();

Page 17


Mạch đèn ngủ và báo thức tự động sử dụng IC555

P0=0x2B;
P3=0x1E;
while(1)
{
if(LED1==0&&LED2==0&&LED3==0&&LED4==0) // DI THANG
{
ptxung=1;
ptxung1=1;
forward();
}
if(LED1==1&&LED2==0&&LED3==0&&LED4==0) // QUAY
PHAI 1 led so 1
- max speed

{
ptxung=8;
ptxung1=8;
turn_right();
}
if(LED1==0&&LED2==1&&LED3==0&&LED4==0) // QUAY
PHAI 1 led so 2 - lech it
{ ptxung=6;
ptxung1=4;
turn_right();
}
if(LED1==0&&LED2==0&&LED3==1&&LED4==0) // QUAY
TRAI 1 led so 3
- lech it
{
ptxung=4;
ptxung1=6;
turn_left();
}
if(LED1==0&&LED2==0&&LED3==0&&LED4==1) // QUAY
TRAI 1 led so 4
- max speed
{
ptxung=0;
ptxung1=7;
turn_left();
}
if(LED1==1&&LED2==1&&LED3==0&&LED4==0) // QUAY PHAI
2 led so 1,2 - lech vua
{

ptxung=3; //8
Page 18


Mạch đèn ngủ và báo thức tự động sử dụng IC555

ptxung1=10; //0
turn_right();
if(LED1==0&&LED2==0&&LED3==1&&LED4==1) // QUAY TRAI 2
led so 3,4 - lech vua
{
ptxung=10;
ptxung1=5;
turn_left();
}
if(LED1==1&&LED2==1&&LED3==1&&LED4==0) // QUAY
PHAI 3 led 1,2,3 - lech nhieu
{
ptxung=7;
ptxung1=0;
turn_right();
}
if(LED1==0&&LED2==1&&LED3==1&&LED4==1) // QUAY
TRAI 3 led so 2,3,4 - lech nhieu
{
ptxung=0;
ptxung1=10;
turn_left();
}
if(LED1==0&&LED2==1&&LED3==1&&LED4==0) // QUAY

PHAI 2 led so 1,3 - doan cua gap
{
ptxung=8;
ptxung1=8;
turn_left();
}
if(LED1==0&&LED2==1&&LED3==1&&LED4==0) // QUAY
PHAI 2 led so 2,3 - doan cua gap
{
ptxung=8;
ptxung1=8;
turn_left();
}
if(LED1==0&&LED2==1&&LED3==0&&LED4==1) // QUAY PHAI
3 led so 1,2,4 - doan cua gap
{
Page 19


Mạch đèn ngủ và báo thức tự động sử dụng IC555

ptxung=7;
ptxung1=0;
turn_left();
}
if(LED1==1&&LED2==0&&LED3==1&&LED4==1) // QUAY PHAI
3 led so 1,3,4 - doan cua gap
{
ptxung=7;
ptxung1=0;

turn_right();
}
if(LED1==1&&LED2==1&&LED3==1&&LED4==1) // lech han khoi
vach den
{ptxung=8;
ptxung1=0;
turn_right(); }
}
}

Page 20



×