![]() |
|
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 |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Nov 2010
Bài gửi: 26
: |
![]() Chào các pan đề tài của e là: viết chường trình điều khiển độ sáng tồi của bóng đèn dùng PWM của PIC16f877A. e có cầu hỏi này muốn hỏi
1. khi ta phát hiện được điểm "0" của sóng sin thì ta kích 1 xung bằng PWM vậy thì Timer nó có liên quan gì tới chỗ này(thấy có người nói dùng timer gì gì đó ) 2.Khi ta muốn góc kích tăng lên thì mình chỉ cần thay đổi duty của nó phải không nhỉ ? 3. E có doạn code điều khiển Led đơn như vầy: khi nhấn nút nhấn sẽ tạo ra một chuỗi xung điều khiển led đơn. E có thắc mắc là tại sao nhấn xong, một chuỗi xung được tạo ra,thả nút nhấn ra chuỗi xung vần còn. Vậy hàm CCP1 chỉ cần khởi tạo 1 lần là hoạt động luôn sao,muốn nó hoạt động theo ý muốn thì phải làm như thế nào,mong các bạn, các thầy hướng dẫn #include <16F877A.h> #include <def_16f877a.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=12000000) #define diem0 rb0 #define led1 rc0 int16 duty1=0,i,j; void kich (void){ setup_ccp1(CCP_PWM); //khoi tao bo PWM1 setup_timer_2(T2_div_by_16,187,1); //tao chu ky xung 1ms (1/clock)*4*t2div*(period+1) duty1=120; set_pwm1_duty(duty1); //theo cong thuc = duty1*t2div/clock delay_ms(10); } void main() { set_tris_b(0); set_tris_c(0); while(true) { if(diem0==0){ delay_ms(1); kich(); } } } |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |