PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   PICPIC_16F877A_hoi_dap (http://www.picvietnam.com/forum/showthread.php?t=2745)

0509592 27-08-2008 01:12 AM

PICPIC_16F877A_hoi_dap
 
/*chào các bác!
em viết đoạn code pwm này nhưng gặp một vấn đề là em thử đưa ra led thì chỉ thấy led ở kênh hai sáng dần lên, còn led ở kênh một thì vẫn sáng mà không hề tối dần. Em hiển thị lên lcd thì thấy giá trị hiển thị đúng! không hiểu tại sao?? hay là em làm sai??? các bác giúp em với???
thanks!
/truongtv0510@gmail.com/
*/

Code:
Code:

#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#include <lcd_lib_4bit.c>
#bit TMR2ON =0x12.2
int16 i,j;
int16 n;
int a1,b1,c1,a2,b2,c2;
void main()
{
trisc=0x00;
 lcd_init();
  LCD_PutCmd (0x82 );
 lcd_putchar("DKH_4X");
 LCD_PutCmd (0xC3 );
 lcd_putchar("robocon");
 delay_ms(500);
  LCD_PutCmd (0x01 );
 
n=0;
while(n<300)
{
setup_timer_2(T2_DIV_BY_16,255,1);
  setup_ccp1(CCP_PWM);
  setup_ccp2(CCP_PWM);
  set_pwm1_duty(299 - n);
  set_pwm2_duty(n);
 
  a1=n/100;
  b1=(n-100*a1)/10;
  c1=n%10;
  a2=(299-n)/100;
  b2=((299-n)-100*a2)/10;
  c2=(299-n)%10;
  lcd_init();
 
  LCD_PutCmd (0x80);
 lcd_putchar(a1+48);
  LCD_PutCmd (0x81);
 lcd_putchar(b1+48);
  LCD_PutCmd (0x82);
 lcd_putchar(c1+48);
 LCD_PutCmd (0xC0 );
 lcd_putchar(a2+48);
 LCD_PutCmd (0xC1 );
 lcd_putchar(b2+48);
 LCD_PutCmd (0xC2);
 lcd_putchar(c2+48);
 delay_ms(200);
  LCD_PutCmd (0x01 );
  n++;
 
if(n==300)
goto thoat;
}
thoat:
TMR2ON=0;
setup_ccp1 (CCP_OFF);
setup_ccp2 (CCP_OFF);
}


namqn 27-08-2008 02:03 AM

Tài liệu hướng dẫn của CCS C cho biết giá trị tham số của hàm set_pwm1_duty() là hằng số hoặc biến. Bạn đang dùng một biểu thức. Bạn thử khai báo thêm một biến (m chẳng hạn), cùng kiểu với n, và gán biểu thức (299 - n) cho biến đó, rồi dùng biến đó trong hàm set_pwm1_duty(), xem thế nào.

Thân,

0509592 28-08-2008 08:23 AM

vâng! cảm ơn bác! để em thử xem sao?????

cong1810 07-09-2008 10:20 AM

các anh cho em hỏi?!! các chân ADC có cần thiết phải có điện trở kéo nguồn để nó ổn định ko??

picpen 07-09-2008 06:23 PM

Các chân chuyển đổi ADC. nếu bạn dùng nó với chức năng I/O thì hoang toàn có thể kéo lên Vcc hoặc kéo xuống MASS .Nhưng nếu dùng làm đầu vào chuyển đổi ADC thì tuyệt đối ko được kéo trở lên Vcc làm như vậy thì tín hiệu đầu vào ADC của bạn sẽ bị sai hoàn toàn. bạn thử vẽ mạch phần cứng ra rồi ngồi nghiên cứu ,phân tích là sẽ biết vì sao ngay ........

********* Chúc thành công


Múi giờ GMT. Hiện tại là 01:23 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam