Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.

HỒ CHÍ MINH

KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

Báo cáo thực tập

Vi Xử Lý

GVMH: Huỳnh Quang Duy

TP.HCM, tháng 4 năm 2022


Họ và Tên : La Quốc Khánh
MSSV: 20146349
Lớp ST7 tiết 1-6
TIMER

Bài 1: Viết chương trình thực hiện định thời chớp tắt
led đơn với chu kỳ 100ms

Đầu tiên chúng ta khai báo GPIOB ( cụ thể là PB0) , sau đó chúng ta khai
báo TIMER 2 , khai báo PSC(prescaler) = 159 và ARR (bộ chia trước) là
10000 để tính toán t = 100ms.

Trong hàm timer chúng ta thực hiện việc chớp tắt led PB0 và viết 1 câu
lệnh xóa cờ timer . Mục đích của xóa cờ là đánh dấu sự kiện kết thúc của
Timer 2 , đảm bảo rằng các sự kiện được xử lý một cách chính xác và
không xảy ra trùng lặp
Bài 2: Viết chương trình thực hiện định thời chớp tắt
led đơn với chu kỳ 5000ms

Tương tự như bài 1 , chúng ta chỉ thay đổi PSC = 1599 và ARR = 50000 để
tính toán cho t = 5000ms (5s).

Trong hàm timer vẫn như bài 1 chúng ta sẽ thực hiện việc chớp tắt led.
Bài 3: Viết chương trình thực hiện định thời theo yêu
cầu sau:
1. Nhấn nút xanh băng tải quay.
2. Sau đó, nhân nút màu vàng cho băng tải dừng.
3. Nếu như sau (5000ms) không nhấn nút vàng còn
lại thì băng quay lại, trong thời gian đó, 2 đèn
xanh lá cây chớp tắt xen kẻ 200ms. Nếu như nút
vàng dc nhấn thì băng tải không quay.
4. Nếu như băng tải đang hoạt động, nút đỏ dc
nhân thì bằng tải dừng lại tập tức.

Đầu tiên chúng ta sẽ khai báo cho băng tải PB0.

Tiếp theo chúng ta khai báo ngắt D11 ( nút màu xanh )
chúng ta khai báo ngắt C6,C7 lần lượt là nút màu đỏ (PC6) và nút màu
vàng đầu tiên (PC7)

Cuối cùng chúng ta khai báo ngắt PE14 là nút vàng thứ 2.

Chúng ta khai báo ngắt TIMER2 và đặt PSC = 1599 và ARR= 50000 do yêu
cầu của đề bài là nếu sau 5s không nhấn nút ( suy ra chu kỳ của timer là
5s) .
Khai báo TIM2->EGR |= (1<<0) là để loại bỏ chu kỳ đầu tiên của timer , lúc
đó PSC chỉ bằng = 1 , tránh việc chu kỳ đầu tiên của băng tải chạy sai
Đặt trạng thái ban đầu của băng tải là đứng im ( GPIOB->ODR |= (1<<0); )
Khi nhấn nút xanh thì nhảy vào ngắt ngoài D11 và đảo trạng thái của
băng tải , sau đó bang tải chạy.
Tiếp đến nhấn nút màu vàng đầu tiên (PC7) thì dừng băng tải lại và sau 5s
sẽ cho chạy TIMER2

trong lệnh ngắt TIMER2 sẽ đảo trạng thái cho PB0 ( băng tải ) chạy
Còn nếu trước 5s chúng ta nhấn nút vàng thứ 2 (PE14) thì dừng TIMER2
lại và dừng cả băng tải

Trong quá trình chạy nếu nhấn nút màu đỏ (PC6) thì dừng băng tải lại và
dừng cả TIMER2.
TIMER_PWM

Bài 2: Viết chương trình tạo xung PWM có tần số 20


KHz ở 2 kênh : CH1 và CH4 với độ rộng xung CH1 là
50% xung , CH4 là 80% xung.

Chúng ta khai báo cho PA6 (kênh CH1) và PB1 ( kênh CH4) ở TIMER 3 lần
lượt ở step 1 & 2.
ở step 3 chúng ta khai báo TIMER3 và đặt PSC = 2, ARR = 800 để tính toán
được tần số f = 20 KHz.
ở step 4 chúng ta đặt TIM3->CCR1 = 400 nghĩa là 50% tần số
còn TIM3->CCR4 = 640 là 80% tần số.
ở step5 chúng ta đặt CH1 và CH4 ở chế độ PWM mode 1.
Step 6 chúng ta enable Chanel 1,4
Cuối cùng step 7 chúng ta enable timer.

Khí Nén
Bài 8: Lập trình hệ thống theo yêu cầu sau đây:
-Nhấn thả nút B1 tác động piston M3 chạy qua trái ,
đến cuối hành trình thì dừng
-Nhấn thả nút B2 tác động piston M3 chạy qua phải ,
đến cuối hành trình thì dừng
-Nhấn thả nút B3 tác động piston M2 chạy xuống ,
đến cuối hành trình thì dừng
-Nhấn thả nút B4 tác động piston M2 chạy lên , đến
cuối hành trình thì dừng.

Chúng ta khai báo xy lanh M2 (PE8) , xy lanh M3 qua trái (PE9) và xy lanh
M3 qua phải (PE10).
Chúng ta khai báo ngắt D11 , PC6 , PC7 lần lượt là nút nhấn B1,B2,B3.

Cuối cùng chúng ta khai báo ngắt PE14 là nút B4 , và đặt trạng thái ban
đầu cho xy lanh M3 đang ở bên phải , xy lanh M2 đang ở trên.
Giờ chúng ta sẽ thực hiện các lệnh trong ngắt ngoài.
Khi nhấn nút B1 (PD11) là nút màu xanh thì M3 sẽ chạy qua trái , lưu ý ở
set PE10 ở mức 0.
Nếu nhấn nút B2(PC6) là nút màu đỏ thì xy lanh M3 sẽ chạy qua phải , lưu
ý phải set PE9 ở mức 0 , và PE8 ở mức 1 để xy lanh M2 không đi xuống
trong quá trình xy lanh M3 đang chạy qua phải.
Nếu nhấn nút B3(PC7) là nút màu vàng thứ nhất thì xy lanh M2 sẽ đi
xuống
Cuối cùng nhấn nút B4(PE14) là nút màu vàng thứ 2 thì xy lanh M2 sẽ đi
lên.
Bài 9: Tương tự bài 8 nhưng thực hiện chế độ AUTO .
Cách 1) chạy bằng cách Delay.

Chúng ta khai báo xy lanh M1(PE7) M2(PE8) và M3_trái(PE9) ,


M3_phải(PE10).

Chúng ta khai báo 1 biến a = 0.

Trong while(1)
Nếu a == 0 , như biến ban đầu ta đã gán , ta tang giá trị a lên , sau đó đặt
trạng thái ban đầu là xy lanh M1 đóng vào , xy lanh M2 đang ở trên , xy
lanh M3 đang ở bên phải . Sau đó 2s xy lanh M3 sẽ chạy qua trái
Tiếp theo a == 1 là bước tiếp theo , khi xy lanh M3 đã đi qua phải , sau 2s
xy lanh M1 mở ra , 2s sau xy lanh M2 đi xuống , sau khi gắp sản phẩm , xy
lanh M1 đóng vào và 2s sau , xy lanh M2 đi lên.

Bước cuối cùng là xy lanh M3 sẽ chạy qua phải , sau 2s xy lanh M2 sẽ đi


xuống , và xy lanh M1 sẽ mở ra để thả sản phẩm xuống . Chúng ta sẽ sẽ
cho a = 0 để quay lại bước đầu tiên sau 3s.

Cách 2) Sử dụng cảm biến có trên hệ thống.


Đầu tiên chúng ta vẫn sẽ khai báo 3 xy lanh . Sau đó khai báo 4 cảm biến
là PB3,PB4,PB5,PD7 và đặt trạng thái ban đầu cho hệ thống.
Trong while(1):

Chúng ta sẽ cho xy lanh M3 chạy qua phải.

Khi đi tới cảm biến PD7 thì xy lanh M2 sẽ đi xuống


Khi xy lanh M2 xuống dưới và chạm cảm biến PB4 , sau 1s thì xy lanh M1
sẽ đóng vào , 2s sau xy lanh M2 sẽ đi lên.

Khi đi lên thì sẽ chạm cảm biến PD7 thì xy lanh M3 sẽ chạy về bên trái

Khi xy lanh M3 đi qua tới bên phải thì sẽ chạm cảm biến PB3 thì xy lanh
M2 sẽ đi xuống , 1s sau xy lanh M2 sẽ mở ra và sau 1s xy lanh M2 sẽ đi
lên. sau đó sẽ lặp lại trạng thái như từ đầu.

Bài 10: Lập trình hệ thống kết hợp Bài 8 và Bài 9.


-Nút nhấn gạt B5 bên trái chọn chế độ AUTO, còn B5
bên phải chọn chế độ MANUAL.
Đầu tiên chúng ta #define 4 nút nhấn từ B1->B4 tương đương với PD11
PC6 PC7 PE14

Tiếp theo chúng ta khai báo các biến a,b,c và dem = 0.

Khai báo nguyên mẫu hàm : M1,M2,M3, Run_D11,Run_C6.

Trong hàm M1: chúng ta set trạng thái ban đầu là xy lanh M1 đóng vào ,
sau 2s thì xy lanh M3 sẽ chạy qua trái.
Trong hàm M2: là sau 2s, xy lanh M1 sẽ mở ra , sau 2s thì xy lanh M2 đi
xuống , sau 2s xy lanh M1 đóng vào và cuối cùng là xy lanh M2 đi lên.

Trong hàm M3: chúng ta sẽ cho xy lanh M3 chạy qua phải , sau 2s thì xy
lanh M2 đi xuống , sau đó xy lanh M1 mở ra .
Trong hàm Run_D11 chúng ta thực hiện như sau: nếu b==1 thì thực hiện
gán biến b = 2, sau đó cho M3 chạy qua trái . Sau đó nếu b==2 thì thực
hiện gán biến b =1 , sau đó cho M3 chạy qua phải . Mục đích gán b=2 ở
lệnh if(b==1) và b=1 ở else if(b==2) là để thực hiện được liên tục cho xy
lanh M3 chạy qua lại.
Trong hàm Run_C6 cũng gán biến c tương tự như vậy và cũng cho xy lanh
M2 chạy lên xuống khi chúng ta nhấn nút

Chúng ta sẽ khai báo 4 nút nhấn lần lượt là PD11 PC6 PC7 và PE14

Khai báo 3 xy lanh M1,M2 và M3


Khai báo ngắt PA15 và PC8 lần lượt là nút B5 gạt trái và gạt phải.
Và chúng ta đặt trạng thái ban đầu cho hệ thống.

Khi gạt B5 sang trái (PA15) thì cho biến dem = 1.


Trong while(1) khi biến dem == 1 thì nếu biến a == 0 (lúc tạo biến gán =
0) thì thực hiện tăng biến a 1 đơn vị , sau đó gọi hàm M1(), khi a==1 thì
gọi M2() và cuối cùng khi a==2 thì gọi hàm M3(). Đây là Bài 9 khi chạy chế
độ AUTO.

Khi gạt B5 sang phải (PC8) thì thực hiện cho biến dem = 2, b=1,c=1.
Trong While(1) : khi biến dem == 2 thì nếu nhấn D11 (B1) thì gọi Hàm
Run_D11
Còn nếu nhấn C6(B2) thì chạy hàm Run_C6. Đây là bài 8 chạy chế độ
Manual.

You might also like