You are on page 1of 1

Tóm tắt phương pháp PWM:

Xuất ra 1 xung , ở PORT 0.1 chẳng hạn ,có chu kỳ là T , trong đó thời gian xung ở 
mức cao ( mức 1) là T_on , thời gian mức thấp là T_off 

HIDUTY (Độ rộng xung mức cao)= T_on / T ---> HIDUTY có giá trị càng lớn thì Tốc Độ ĐỘNG cơ càng lớn
(CHÚ Ý: Khi điều khiển ĐỘNG CƠ DC , thì Tần số của xung >= 500Hz ---> CHu kỳ của xung T <= 2ms để
khỏi gây Hư ĐỘNG CƠ )

Về Lập trình cho VĐK:


DO 8051 bị hạn chế là không có Khối chuyên dụng PWM để Điều khiển (nhu các họ VĐK khác) --> Ta phải tạo
xung bằng Vòng LẶP hay Timer như sau:

Giải thuật: tạo 1 xung có chu kì là T = 1ms , với HIDUTY = 0.7/1= 70% 

START Cho bit P0.1 lên giá trị 1 (mức cao)


Tạo khoảng thời gian DELAY (T_on = 0.7ms = 700ns chẳng hạn )

Cho nit P0.1 xuống giá trị 0 (mức thấp )


Tạo khoảng thời gian DELAY (T_off = T- T_on = 0.3ms = 300ns chẳng hạn ) 

Quay trở lại nhãn START (cho 1 chu kì mới )

(muốn thay đổi độ rộng xung ,thì ta chỉ cần thay đổi thời gian DELAY khi có mức 1 )

Nếu làm như vậy , ta chỉ cần LƯU sẵn 3 giá trị Nạp cho TIMER (hay Vòng Lặp ) để tạo DELAY cho xung khi ở
mức 1 vào 3 ô nhớ TRƯỚC (ví dụ M_1 ,M_2 ,M_3 )

Sau đó , Kết nối 1 nút nhấn với 1 bit ( giả sử Port1.1) , bình thường khi CHưa nhấn PHÍM , Port1.1 sẽ có mức
1 ,Khi nhấn NÚT -->Port1.1 sẽ Chạm MASS --> có mức 0 . 
Kết hợp 1 biến đếm (giá trị ban đầu là 0 ) 

Mõi lần quét chưng trình ,nếu P1.1 = 1 thì làm tiếp , nếu P1.1 = 0 thì tăng bien_dem lên 1 ---> KIỂM TRA
nếugiá trị bien_dem là 1 (hay 2 ,3) thì NẠP Giá trị lưu sẵn từ Ô nhớ 1 ( hay M2 ,hay M3) vào Giá trị Thanh
ghi để tạo thời gian DELAY cho mức cao của xung ---> Sẽ tạo được Xung có HIDUTY khác mà T = const

Khi bien_dem = 3 --> Reset bien_dem = 0 (cho các lần nhấn sau )

Ngoài ra , bạn có thể dùng NGẮT NGOÀI (external Interrupt) để nhận Tín Hiệu ĐIỀU KHIỂN 

You might also like