Trích:
Nguyên văn bởi nhanh0112
Theo tui bạn thử sử dụng PWM với duty cycle thay đổi dần với tần số cố định (Một số cái còi "ngân" của ô tô cũng sử dụng phương pháp này... tiếng nhỏ dần).
Còn về nguyên lý hoạt động thì dutycle càng ngắn thì thời gian sáng của led càng ngắn (chớp nhanh) -> tối và ngược lại.
Như vậy khoảng thời gian để đèn từ tắt hẳn đến sáng hoàn toàn thì cũng chính là thời gian để duty cycle chạy từ 0 đến max.
Ví dụ:
Code:
void main()
{
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_1,25,1);
set_pwm1_duty(0);
while(true)
{
for(i=0;i<25;i++)
{
set_pwm1_duty(i);
delay_ms(200);
}
}
}
Như vậy để từ tắt hẳn đến sáng nhất là 200x25=5000ms (5s).
Cái này tui chưa làm thử, nhưng đây là ý tưởng của tui... bạn tham khảo xem sao 
|
Mình thử code của bạn, biên dịch và mô phỏng nhưng led ở chân CCP1 không có tín hiệu gì cả. Mình mô phỏng bằng proteus.
Mình thấy pic16f877a chỉ có 2 chân băm xung thôi nhưng mình muốn sử dụng 8 chân thì làm như thế nào mong được chỉ giáo!
Trân trọng cảm ơn!