PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 20-08-2008, 12:44 AM   #1
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
Pic6f877a

--------------------------------------------------------------------------------

em dung pic 16F877A !
em bam xung PWM de dieu khien den led.
nhưng em chưa làm được!
bác nào có đoạn code CCS C về pwm thì cho em xin!
thanks!
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 12:30 PM   #2
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Bạn dùng pwm để điều khiển đèn led thì rất khó quan sát bằng mắt thường.
bạn vào vào thư mục cài phần mềm ccs có một ví dụ rất chi tiết về pwm .vi dụ đó là :EX_PWM.C
********** CHÚC BẠN HỌC TỐT ***********
__________________
** xin hãy cho tôi là tượng đá
** Để muôn đời không nhớ thương ai ..!!
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 02:26 PM   #3
tallht
Đệ tử 5 túi
 
tallht's Avatar
 
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
:
Nếu dùng pwm thì bạn chỉ có thể dùng oscilloscope để xem ouput thôi,chứ led thì bó tay vì chu kì xung pwm rất ngắn!
__________________
-------------------------------------------------------------------
Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo.
Mời tham quan: https://www.facebook.com/eshop1109

Cung cấp dịch vụ order hàng từ Aliexpress
Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/
tallht vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 04:09 PM   #4
LTD_LEO
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 12
:
Trích:
Nguyên văn bởi 0509592 View Post
--------------------------------------------------------------------------------

em dung pic 16F877A !
em bam xung PWM de dieu khien den led.
nhưng em chưa làm được!
bác nào có đoạn code CCS C về pwm thì cho em xin!
thanks!
bạn muốn điều khiển độ sáng của led ?
Code:
void led(int value,int value1)
{
   set_pwm1_duty(value);
   set_pwm2_duty(value1);

}
void main()
{
set_tris_c(0);   // portc output.

ouput_c(0);

setup_timer_2(t2_div_by_16,249,1); //PWM Period = 2ms, ứng với thạch anh 8M
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
while(1)
 {
    led(a,b);    // a,b giá trị tư 0 ->255,ứng với từng chân ccp1(rc2),ccp2(rc1)
 }
}
chỉ đơn giản vậy thôi . Kô biết có đúng ý bạn ko ?
LTD_LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 08:32 PM   #5
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
vâng đúng là nếu dùng pwm thì với led là không quan sát được!
trước em cũng dùng Micro C làm rồi!
bây giờ chuyển sang CCS C nhưng không làm được!
cảm ơn bác đã cho đoạn code!
em thử xem sao!
thanks!
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 10:02 PM   #6
LTD_LEO
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 12
:
Trích:
Nguyên văn bởi 0509592 View Post
vâng đúng là nếu dùng pwm thì với led là không quan sát được!
trước em cũng dùng Micro C làm rồi!
bây giờ chuyển sang CCS C nhưng không làm được!
cảm ơn bác đã cho đoạn code!
em thử xem sao!
thanks!
dùng pwm thì với led vẫn nhìn thấy được chứ bạn . Mình sử dụng các khối pwm để điều chỉnh độ sáng của led , hoặc bạn cũng có thể dùng để pha màu được mà ... ko biết bạn làm thế nào mà ko quan sát được ? bạn có thể đưa phần cứng và code của bạn lên đề xem ko?
LTD_LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 10:23 PM   #7
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
vâng thì đúng vẫn quan sát được!
nhưng chỉ quan sát được độ sáng tối của led! hoặc thay đổi màu!
còn chớp tắt giống như trong chu kì xung của nó thì không quan sát được!
vậy có đúng không bác!
bác đoạn code nào đơn giản về pwm bằng CCS C thì post lên cho em xin!
thanks!
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2008, 10:47 PM   #8
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 0509592 View Post
vâng thì đúng vẫn quan sát được!
nhưng chỉ quan sát được độ sáng tối của led! hoặc thay đổi màu!
còn chớp tắt giống như trong chu kì xung của nó thì không quan sát được!
vậy có đúng không bác!
bác đoạn code nào đơn giản về pwm bằng CCS C thì post lên cho em xin!
thanks!
Nếu bạn muốn làm cho LED nhấp nháy thì không cần sử dụng PWM, bạn chỉ cần chờ đủ lâu (từ 100 ms trở lên) rồi lật trạng thái LED. Có thể dùng delay, timer (kiểu hỏi vòng hay ngắt) để định thời gian chờ.

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
Old 24-08-2008, 12:12 AM   #9
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
/*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:
#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==500)
goto thoat;
}
thoat:
TMR2ON=0;
setup_ccp1 (CCP_OFF);
setup_ccp2 (CCP_OFF);
}

thay đổi nội dung bởi: namqn, 24-08-2008 lúc 01:27 AM.
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2008, 01:34 AM   #10
popeye_ts22
Đệ tử 2 túi
 
popeye_ts22's Avatar
 
Tham gia ngày: Jul 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 42
:
Send a message via Yahoo to popeye_ts22
Em mới làm về CCS.Cũng đang gặp rắc rối gần giống như trên.Mô phỏng được 2 kênh nhưng làm ra mạch thật chỉ được 1 kênh thay đổi duty.Không biết làm sao.Ah,trong lệnh setup_timer_2(T2_DIV_BY_16,255,1);số 1 ở đây thấy help ghi là số lần tràn trước khi ngắt,có giá trị từ 1 đến 16.Em không hiểu chỗ này,bác nào giúp em với/.
popeye_ts22 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2008, 11:04 PM   #11
0509592
Đệ tử 3 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 58
:
sao không thấy bác nào quan tâm đến mục này vậy??
các bác nghé thăm giúp em với!
thanks!
0509592 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam