Phát xung vuông từ vi điều khiển có lẽ là bài học kinh điển đối với những người học lập trình vi điều khiển cho dù là dòng vi điều khiển nào từ 8051 với những dòng code Assemply (ASM) đến các dòng vi điều khiển PIC, Arduino, AVR, ARM ...viết bằng code C.

pulse generation

Xung vuông được ứng dụng khắp mọi nơi trong các mạch điện tử, như các máy phát tần số, điều khiển động cơ, PWM, tạo xung clock trong các giao tiếp, xung đồng bộ...

Trong bài tập này mình sẽ giới thiệu cho các bạn 3 cách có thể phát ra xung vuông từ vi điều khiển PIC 16F877A viết code CCS và mô phỏng bằng phần mềm Proteus

Cách thứ nhất : Dùng timer các bạn có thể tham khảo bài  Bộ định thời Timer và Counter của vi điều khiển PIC

Cách này phát ra xung vuông tần số 1Khz dùng timer 0 các lệnh cần thiết :

enable_interrupts(GLOBAL); // Cho phep tat cac ac ngat
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64); // cai dat timer 0 voi he so chia 64
set_timer0(231); // Nap so de tinh delay
enable_interrupts(INT_RTCC); // cho phep ngat timer 0

#INT_TIMER0
void isr_timer0(void){
set_timer0(231); //500us dat lai so nap
output_toggle(PIN_B1); // Dao chan RB1 sau khi tran Timer
}

Cách thứ hai : Dùng PWM phát ra tần số 10Khz với duty cycle 50% các bạn có thể tham khảo bài Điều chế độ rộng xung PWM học lập trình vi điều khiển PIC

setup_timer_2(T2_DIV_BY_4,75,1); //100 us overflow, 100 us interrupt

setup_ccp1(CCP_PWM);
set_pwm1_duty((int16)150);

Cách thứ ba: Dùng hàm delay phát ra tần số 500Hz các bạn có thể tham khảo bài Các hàm xử lý số, xử lý bit, delay

output_high(PIN_B2);
delay_ms(1);
output_low(PIN_B2);
delay_ms(1);

Các bạn vào Proteus vẽ sơ đồ mạch như hình bên dưới :

xungvuong

Các thông số : 

- Thạch anh 12Mhz

- PIC 16F877A

Các tần số 1Khz, 10Khz và 500Hz

Kết luận : Với bài tập nho nhỏ này mình mong sẽ giúp được các bạn mới học lập trình có được những giải pháp khi có nhu cầu phát xung vuông tùy vào ứng dụng mà bạn đang làm mà sử dụng các cách cho phù hợp.

Download bài học 3 cách phát xung vuông  học lập trình vi điều khiển PIC

Xem video mô phỏng bài học

Nếu bạn thấy hay hãy đăng ký , chia sẻ giúp tôi nhé chúng tôi sẽ thường xuyên cập nhật kiến thức mới về vi điều khiển PIC tại đây