PDA

View Full Version : Led sáng dần


ngdnhanbk
12-01-2012, 01:45 AM
Mình viết hiệu ứng led sáng dần dùng chức năng PWM kết hợp timer0 và timer2 post lên cho mấy bạn tham khảo

#include <16F887.h>
#FUSES HS,NOWDT,NOPROTECT
#use delay(clock=4000000)
int16 value;
#INT_TIMER0
void ngattimer0()
{
int16 dem;
clear_interrupt(INT_TIMER0);
disable_interrupts(GLOBAL);
dem=dem+1;
if(dem==500)
{value=value+100;
if(value==1000)
{value=0;
}
dem=0;
}
set_timer0(0);
enable_interrupts(GLOBAL);
}
void main()
{
value=0;
output_high(PIN_C0);
output_low(PIN_C1); // Set CCP2 output low
output_low(PIN_C2); // Set CCP1 output low
setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM
setup_ccp2(CCP_PWM); // Configure CCP2 as a PWM
setup_timer_2(T2_DIV_BY_4,255, 1); // 1kHz
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
set_timer0(0);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
while(1)
{
set_pwm1_duty(value);
set_pwm2_duty(value);
}
}

Mình chưa viết phần tắt dần, nhờ mấy bạn viết giúp
Ai có ý kiến gì hay thì bổ sung giúp nhé

phatcddt08a
12-01-2012, 10:37 AM
mình viết hiệu ứng led sáng dần dùng chức năng pwm kết hợp timer0 và timer2 post lên cho mấy bạn tham khảo

#include <16f887.h>
#fuses hs,nowdt,noprotect
#use delay(clock=4000000)
int16 value;
#int_timer0
void ngattimer0()
{
int16 dem;
clear_interrupt(int_timer0);
disable_interrupts(global);
dem=dem+1;
if(dem==500)
{value=value+100;
if(value==1000)
{value=0;
}
dem=0;
}
set_timer0(0);
enable_interrupts(global);
}
void main()
{
value=0;
output_high(pin_c0);
output_low(pin_c1); // set ccp2 output low
output_low(pin_c2); // set ccp1 output low
setup_ccp1(ccp_pwm); // configure ccp1 as a pwm
setup_ccp2(ccp_pwm); // configure ccp2 as a pwm
setup_timer_2(t2_div_by_4,255, 1); // 1khz
setup_timer_0(rtcc_internal|rtcc_div_4);
set_timer0(0);
enable_interrupts(int_timer0);
enable_interrupts(global);
while(1)
{
set_pwm1_duty(value);
set_pwm2_duty(value);
}
}

mình chưa viết phần tắt dần, nhờ mấy bạn viết giúp
ai có ý kiến gì hay thì bổ sung giúp nhé
cái này chắc chỉ có mạch thật mới mô phổng dc hình như protues thì không. Bạn làm như vậy tì chỉ có 2 chân c1 và c2 thế thì diều khiển dc 2 led thôi bạn .có kết nối thêm ic điều khiển dòng điện gì ko bạn. Nếu ko còn cách nào dể mở rộng số chân ko. Chắc phải dùng timer để làm pwm thì phải