nguyenquoctoan
14-11-2008, 11:39 AM
tiểu đệ điều xung xuất giá trị ra lcd tăng giảm độ sáng của một bóng đèn,đoạn code như sau:
#include<16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#device PIC16f877a*=16 ADC=10
#use delay(clock=4000000)
#include<lcd_lib_4bit.c>
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
void main()
{
set_tris_b(0);
set_tris_e(0);
LCD_init();
delay_us(10);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"do_sang !");
setup_ccp1(CCP_PWM); // CCP1 la chan PWM
//(1/4000000)*4*16*128= 2048 us or 488 Hz
setup_timer_2(T2_DIV_BY_16, 127, 1);
set_pwm1_duty(500);
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar," %lu",CCP_1);//xuat gia r\tri g
while(1)
{
}
}
chương trình đã chạy ok,nhưng khi hiển thị lcd giá trị của ccp_1 thì lại là 32125,kô biết giá trị này ở đâu ra trong khi giá trị duty của đệ là 500us,và chu kỳ là 2048us,xin các sư huynh chỉ giáo
#include<16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#device PIC16f877a*=16 ADC=10
#use delay(clock=4000000)
#include<lcd_lib_4bit.c>
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
void main()
{
set_tris_b(0);
set_tris_e(0);
LCD_init();
delay_us(10);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"do_sang !");
setup_ccp1(CCP_PWM); // CCP1 la chan PWM
//(1/4000000)*4*16*128= 2048 us or 488 Hz
setup_timer_2(T2_DIV_BY_16, 127, 1);
set_pwm1_duty(500);
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar," %lu",CCP_1);//xuat gia r\tri g
while(1)
{
}
}
chương trình đã chạy ok,nhưng khi hiển thị lcd giá trị của ccp_1 thì lại là 32125,kô biết giá trị này ở đâu ra trong khi giá trị duty của đệ là 500us,và chu kỳ là 2048us,xin các sư huynh chỉ giáo