Tải bản đầy đủ (.pdf) (26 trang)

kỹ thuật vi xử lý vi điều khiển tiểu luận cuối kỳ yêu cầu tạo ngắt ở timer1 với chu kỳ 1 2 giây công thức tính toán

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 (847.41 KB, 26 trang )

HỌC VIỆN HÀNG KHÔNG VIỆT NAM
KHOA ĐIỆN – ĐIỆN TỬ

KỸ THUẬT VI XỬ LÝ – VI ĐIỀU KHIỂN

TIỂU LUẬN CUỐI KỲ

Họ tên: Nguyễn Lê Bảo Duy
Mã số sinh viên: 1953020068

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021


MỤC LỤC
(Đề 2)
PHẦN 1 LÝ THUYẾT

1

1.1. Câu 1

1

1.2. Câu 2

2

1.3. Câu 3

2


PHẦN 2 MÔ PHỎNG

3

2.1. Câu 1

3

2.2. Câu 2:

6

2.3. Câu 3

8

PHẦN 3 LẬP TRÌNH
3.1. Ý tưởng

10
10

3.1.1. Câu 1:

10

3.1.2. Câu 2:

10


3.1.3. Câu 3:

10

3.2. Lưu đồ thuật toán

10

3.2.1. Câu 1:

10

3.2.2. Câu 2:

11

3.2.3. Câu 3:

11

3.3. Giải thích code

12

3.3.1. Câu 1:

12

3.3.2. Câu 2:


13

3.3.3. Câu 3:

16

PHẦN 4 KẾT LUẬN

22

4.1. Câu 1:

22

4.2. Câu 2:

22

4.3. Câu 3:

22


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

PHẦN 1
1.1.

LÝ THUYẾT
Câu 1


Yêu cầu: Tạo ngắt ở TIMER1 với chu kỳ 1.2 giây.
Cơng thức tính tốn:
(1)
(2)
Thạch anh được sử dụng: 20MHz
 10ms: Thực hiện 50000 lệnh
 Chọn bộ chia: 1
1:1

50000

1:2

25000

1:4

12500

1:8

6250
5

Dựa vào cơng thức (1) ta tính được: F = 6 Hz
Dựa vào cơng thức (2) để tính value:
Có được:
Prescaler = 1
value = 15536

count = 120
ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

1


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

1.2.

Câu 2

Yêu cầu: sử dụng RS232 để truyền dữ liệu từ PIC truyền sang PIC nhận để
điều khiển các LED
 Khi nút nhấn ở chân RB0 của PIC truyền được nhấn, đèn LED ở chân
RB0 của PIC nhận sáng, các LED khác tắt. 
 Khi nút nhấn ở chân RB1 của PIC truyền được nhấn, đèn LED ở chân
RB1 của PIC nhận sáng, các LED khác tắt. 
 Khi nút nhấn ở chân RB2 của PIC truyền được nhấn, đèn LED ở chân
RB2 của PIC nhận sáng, các LED khác tắt. 
 Khi nút nhấn ở chân RB3 của PIC truyền được nhấn, đèn LED ở chân
RB3 của PIC nhận sáng, các LED khác tắt.
1.3.

Câu 3

Yêu cầu: 
 Khi nút nhấn ở chân RB5 được nhấn động cơ sẽ dừng lại, khi nút nhấn ở
chân RB6 được nhấn động cơ sẽ quay trái, khi nút nhấn ở chân RB7 được
nhấn động cơ sẽ quay phải.

 Dùng ngắt thay đổi ở PORTB để lập trình cho các nút nhấn.
 Tốc độ động cơ sẽ thay đổi khi điều chỉnh biến trở ở chân RA0. 
 LCD hiển thị giá trị analog đọc được từ chân biến trở.

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

2


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

PHẦN 2
2.1.

MƠ PHỎNG
Câu 1

Hình 2.1 Sơ đồ mơ phỏng câu 1
Mô tả: Lấy linh kiện bao gồm PIC16F877A, RES 220, LED-GREEN và lắp
ráp như sơ đồ ở Error: Reference source not found.
Lấy que đo probe voltage gắn vào chân RB0 để đo chu kỳ sáng/tắt của đèn
LED. Từ đó có thể biết được kết quả tính tốn đã đúng hay chưa.
Kết quả mô phỏng:

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

3


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan


Hình 2. 2 Kết quả mơ phỏng câu 1

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

4


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Tín hiệu xung bắt đầu từ 0 đến 2.1 cho chu kỳ đầu tiên (Error: Reference
source not found) và từ 16.8 đến 18.9 cho chu kỳ thứ hai (Error: Reference

source not found).
Hình 2. 3 Chu kì đầu tiên

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

5


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Hình 2. 4 Chu kì thứ hai

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

6



ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

2.2.

Câu 2:

Hình 2. 5 Sơ đồ mơ phỏng câu 2
Mơ tả: Lấy linh kiện bao gồm PIC16F877A, RES 220, RES 10k, LEDGREEN, BUTTON và lắp ráp như sơ đồ ở Hình 2.2.
Nối chân truyền RC6 của PIC truyền U2 với chân nhận RC7 của PIC nhận U1
Kết quả mô phỏng:
Khi nhấn nút BT1 thì đèn D1 sáng:

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

7


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Tương tự như vậy khi nhấn nút BT2, BT3, BT4 thì lần lượt các đèn D2, D3,
D4 sẽ sáng.

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

8


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Hình 2. 6 Sơ đồ mơ phỏng câu 3

2.3.

Câu 3

Mơ tả: Lấy linh kiện bao gồm PIC16F877A, L298, LCD, CAP 100nF, RES
220, RES 10k, POT-HG, DIODE,LED-GREEN, BUTTON, BATTERY 12V,
MOTOR-ENCODER và lắp ráp như sơ đồ ở Hình 2.3.
Kết quả mơ phỏng:

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

9


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Hình 2. 7 Khi nhấn nút LEFT

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

10


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

Hình 2. 8 Khi nhấn nút RIGHT

Hình 2. 9 Khi nhấn nút STOP

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan


11


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

PHẦN 3
3.1.

LẬP TRÌNH
Ý tưởng

3.1.1. Câu 1:
Về phần cứng, đầu tiên sẽ tính các giá trị cần thiết để thiết lập timer1 theo chu
kì mà đề bài u cầu. Sau đó, sẽ lắp mạch và cài đặt các thông số như Hình
2.1 . Về code thì em sử dụng
3.1.2. Câu 2:
Về phần cứng, đầu tiên chúng ta sẽ sử dụng 2 PIC, lắp mạch và cài đặt các
thơng số như Hình 2.2. Về code thì em sẽ sử dụng 2 code riêng để truyền và
nhận dữ liệu như đề yêu cầu, sử dụng vòng lập while để điểu khiển đèn led
bằng các nút nhấn.
3.1.3. Câu 3:
Về phần cứng, đầu tiên em sử dụng 1 PIC để điều khiển các nút nhấn để điều
khiển động cơ, LCD cũng như là L298 và điều chỉnh các thơng số như Hình
2.3. Về code thì em sử dụng hàm switch case để hiển thị LCD và động cơ cịn
các nút nhấn thì em sẽ sử dụng hàm if và while để kiểm tra trạng thái của nút
nhấn.
3.2.

Lưu đồ thuật toán


3.2.1. Câu 1:

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

12


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

3.2.2. Câu 2:

3.2.3. Câu

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

3:

13


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

3.3.

Giải thích code

3.3.1. Câu 1:
#include <main.h>
unsigned int16 count = 120; // khai bao bien count

unsigned int16 i,j = 0; // khai bao bien i va j
int led=0x01; // khai bao bien led
#INT_TIMER1
void timer1_interrupt(){
i++;
if(i>=count)
{
led=led<<1;
i=0;
j++;
if(j>7)
{
led=0x01;
j=0;
}
}
set_timer1(15536); // dat gia tri cho timer1

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

14


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

clear_interrupt(INT_TIMER1); // xoa co tran timer1
output_b(led);
}
void main()
{

clear_interrupt(INT_TIMER1); // xoa co tran timer1
enable_interrupts(INT_TIMER1); //cho phep ngat timer1
enable_interrupts(GLOBAL); // cho phep ngat toan cuc
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // cai dat timer1
set_timer1(15536); // dat gia tri cho timer1
output_b(led);
while(TRUE)
{
}
}
3.3.2. Câu 2:
a) PIC truyền:
#include <main.h>
#use rs232(baud = 9600, xmit = PIN_C6, rcv = PIN_C7) // khai bao RS232
void main()
{

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

15


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

set_tris_b(0xFF); //tat ca chan port B la input
port_b_pullups(TRUE);
while(TRUE)
{
if(input(PIN_B0) == 0) // kiem tra trang thai chan B0
{

while(input(PIN_B0)==0){}
putc('A'); // gui ki tu toi chan TX
}
if(input(PIN_B1) == 0) //kiem tra trang thai chan B1
while(input(PIN_B1)==0){}
putc('B'); // gui ki tu toi chan TX
}
if(input(PIN_B2) == 0) // kiem tra trang thai chan B2
{
while(input(PIN_B2)==0){}
putc('C'); // gui ki tu toi chan TX
}
if(input(PIN_B3) == 0) // kiem tra trang thai chan B3
{
while(input(PIN_B3)==0){}

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

16


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

putc('D'); // gui ki tu toi chan TX
}
}
b) PIC nhận:
#include <main.h>
#USE rs232(baud = 9600, xmit = PIN_C6, rcv = PIN_C7)
unsigned int8 kitu; //khai bao bien kitu

void main()
{
set_tris_b(0x00); // tat ca chan port B la output
output_b(0); // cac chan port B o muc thap
while(TRUE)
{
if(kbhit()==1) // xac nhan co ki tu san sang cho getc
{
kitu = getc();
if(kitu == 'A')
output_b(0x01); //xuat ra gia tri port B la 00000001
else if (kitu == 'B')
output_b(0x02); //xuat ra gia tri port B la 00000010
else if (kitu == 'C')

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

17


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

output_b(0x04); //xuat ra gia tri port B la 00000100
else if (kitu == 'D')
output_b(0x08); //xuat ra gia tri port B la 00001000
else;
}
}
}
3.3.3. Câu 3:

#include <main.h>
//khai bao chan cua LCD
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
//khai bao chan cua dong co
#define PIN_IN1 PIN_B0
#define PIN_IN2 PIN_B1
#define PIN_PWM1 PIN_C2

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

18


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

//khai bao chan dieu khien dong co
#define PIN_STOP PIN_B5
#define PIN_LEFT PIN_B6
#define PIN_RIGHT PIN_B7
#include <lcd.c>
unsigned int8 mode = 0; //khai bao bien mode
//khai bao ngat va adc
void port_init()
{

output_b(0x00);
clear_interrupt(INT_RB); // xoa co bao ngat ngoai
enable_interrupts(INT_RB); // cho phep ngat ngoai
enable_interrupts(GLOBAL); // cho phep ngat toan cuc
setup_adc(ADC_CLOCK_INTERNAL); // chon xung lay mau ADC bang
xung noi
setup_adc_ports(AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF); //
su dung cac chan cua ADC
setup_timer_2(T2_DIV_BY_16,255,1); //cau hinh timer2
setup_ccp1(CCP_PWM); // cau hinh ccp1 hoat dong o che do PWM
}
//hien thi trang thai dong co

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

19


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

void lcd_display(int8 col, int8 row, int16 value)
{
lcd_gotoxy(col,row);
switch(mode)
{
case 0:
lcd_putc("STOP \n"); //hien thi trang thai dung
break;
case 1:
lcd_putc("LEFT \n"); // hien thi trang thai quay trai

break;
case 2:
lcd_putc("RIGHT\n"); // hien thi trang thai quay phai
break;
}
printf(lcd_putc,"VALUE = %ld\r",value); // hien thi ra man hinh gia tri
}
#INT_RB
// ngat ngoai port b
void port_b_change()
{

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

20


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

if(input(PIN_STOP)==0) // kiem tra trang thai nut nhan
{
while(input(PIN_STOP)==0);
mode = 0;
}
if(input(PIN_LEFT)==0) // kiem tra trang thai nut nhan
{
while(input(PIN_LEFT)==0);
mode = 1;
}
if(input(PIN_RIGHT)==0) // kiem tra trang thai nut nhan

{
while(input(PIN_RIGHT)==0);
mode = 2;
}
}
//doc gia tri cua bien tro
unsigned int16 read_speed()
{
set_adc_channel(1); // chi dinh kenh 1 doc gia tri ADC
delay_ms(100);

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

21


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

return read_adc(); // ket thuc ham
}
// dieu khien dong co
void motor_control(int8 mode, int16 pwm)
{
switch(mode)
{
case 0: // dung
output_bit(PIN_IN1,0);
output_bit(PIN_IN2,0);
break;
case 1: //quay trai

set_pwm1_duty(pwm); // doc gia tri bien tro
output_bit(PIN_IN1,1);
output_bit(PIN_IN2,0);
break;
case 2: //quay phai
set_pwm1_duty(pwm); // doc gia tri bien tro
output_bit(PIN_IN1,0);
output_bit(PIN_IN2,1);
break;

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

22


ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

}
}
void main()
{
int16 value; // khai bao bien value
lcd_init(); // khoi tao LCD
port_init(); //
lcd_putc("\fMOTOR CONTROLLER\n"); // hien thi ki tu
delay_ms(500);
lcd_putc("\f"); //xoa man hinh LCD
while(TRUE)
{
value = read_speed();

lcd_display(1,1,value);
motor_control(mode,value);
}
}

ky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toanky.thuat.vi.xu.ly.vi.dieu.khien.tieu.luan.cuoi.ky.yeu.cau.tao.ngat.o.timer1.voi.chu.ky.1.2.giay.cong.thuc.tinh.toan

23


×