- Sơ đồ mạch:
Hình 1. Sơ đồ điểu khiển led đơn mô phỏng trên Proteus |
- Chương trình:
#INCLUDE <16F887.H>
#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP
#USE DELAY(CLOCK=20M)
VOID MAIN()
{
SET_TRIS_D(0x00);
WHILE(TRUE)
{
OUTPUT_D(0xFF); DELAY_MS(1000);
OUTPUT_D(0x00); DELAY_MS(1000);
}
}
- Giải thích ý nghĩa chương trình:
Hàng thứ hai “#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP” là khai báo cấu hình cho PIC.
Hàng thứ ba “#USE DELAY(CLOCK=20M)” khai báo tần số tụ thạch anh mà vi điều khiển sử dụng, với khai báo trên thì tần số sử dụng là 20MHz.
Các hàm định thời là:
o DELAY_MS(VALUE) - Thời gian định thời là mili giây.
o DELAY_US(VALUE) - Thời gian định thời là µS.
Chương trình chính gồm:
Lệnh “SET_TRIS_D(0x00);” có chức năng khởi tạo portD là port xuất.
Lệnh “OUTPUT_D(0xFF);” có chức năng xuất dữ liệu 0xFF ra portD làm 8 led sáng, tiến hành gọi hàm delay, sau đó xuất dữ liệu 0x00 ra portD làm 8 led tắt, gọi hàm delay và lặp lại.
Các thông số cấu hình:
Lệnh “OUTPUT_D(0xFF);” có chức năng xuất dữ liệu 0xFF ra portD làm 8 led sáng, tiến hành gọi hàm delay, sau đó xuất dữ liệu 0x00 ra portD làm 8 led tắt, gọi hàm delay và lặp lại.
Các thông số cấu hình:
“NOWDT” là không sử dụng bộ định thời giám sát (No watchdog timer),
“PUT” là sử dụng bộ định thời khi có nguồn để kéo dài them thời gian reset vi điều khiển để chờ
nguồn điện ổn định, thời gian kéo dài them 72ms (Power up timer).
“PUT” là sử dụng bộ định thời khi có nguồn để kéo dài them thời gian reset vi điều khiển để chờ
nguồn điện ổn định, thời gian kéo dài them 72ms (Power up timer).
“HS” là sử dụng bộ dao động tần số cao từ 4MHz đến 20MHz (High Speed).
“NOPROTECT” là không sử dụng bảo vệ mã code nạp vào bộ nhớ flash bên trong.
“NOLVP” là không sử dụng chế độ nạp code dùng nguồn điện áp thấp 5V mà dùng nguồn 12,5V.
Tài liệu tham khảo:
- Nguyễn Đình Phú (2014). Giáo trình VI ĐIỀU KHIỂN PIC 16F887.
Video hướng dẫn thực hiện dùng vi điều khiển 16F887 điều khiển 8 led đơn sáng tắt mô phỏng trên Proteus:
Link download code: https://drive.google.com/file/d/1m4WU6d3705sJFzvIXIPV6gIaAM6c81Ey/view
Comments
Post a Comment