|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
27-08-2008, 01:12 AM | #1 |
Đệ tử 3 túi
Tham gia ngày: Jul 2008
Bài gửi: 58
: |
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); } thay đổi nội dung bởi: namqn, 27-08-2008 lúc 01:56 AM. |
27-08-2008, 02:03 AM | #2 |
Trưởng lão PIC bang
|
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,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
28-08-2008, 08:23 AM | #3 |
Đệ tử 3 túi
Tham gia ngày: Jul 2008
Bài gửi: 58
: |
vâng! cảm ơn bác! để em thử xem sao?????
|
07-09-2008, 10:20 AM | #4 |
Đệ tử 4 túi
|
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??
|
07-09-2008, 06:23 PM | #5 |
Đệ tử 5 túi
Tham gia ngày: Jun 2008
Bài gửi: 112
: |
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
__________________
** xin hãy cho tôi là tượng đá ** Để muôn đời không nhớ thương ai ..!! |
|
|