View Single Post
Old 14-11-2008, 05:29 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nguyenquoctoan View Post
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:

Code:
#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
Tôi không dùng CCS C, nhưng tin rằng giá trị mà bạn đã xuất ra LCD không phải là giá trị duty cycle, và duty cycle của bạn cũng không phải là 500 us/2048 us (mà là 500/512). Bạn nên đọc lại datasheet của PIC16F877A về module CCP.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn