Trích:
Nguyên văn bởi xalachxoan
Chào bạn Nhanh0112!
Mình đã thử mô phỏng lại với PIC2f683, led nhấp nháy rồi! Nếu mạch thực thì nó sáng dần phải không bạn? Mình đã thử lại với PiC6f877a nhưng vẫn không được. Bạn thử mô phỏng xem sao?
Còn giả sữ mình muốn điều khiển 8 led đơn cho nó sáng dần từ con 1 đến con thứ 8 thì không sử dụng chân CCPx được rồi! Vậy mình lập trình ra sao? Mong được anh em post lên cho y kiến với!
Trân trọng cảm ơn!
|
đây là đoạn code nhỏ đc viết trong ngắt timer (với khoảng thời gian tràn là 1 xung lấy mẫu)
Ở đây viết là xung mẫu là 500us, và chiều dài của 1 xung đc băm ra là 100 khoảng (là độ phân giải của nó ấy). Thời gian của 1 xung là T=500x100=50ms
Đoạn code đc viết cho 4 chân (bạn có thể mở rộng tùy thích)
Các giá trị độ rộng xung đc nạp 1 lần vào mảng Pulse[] từ phần tử 0 đến phần tử 3 tương ứng từ kênh 1 đến kênh 4, với giá trị:0-100
ví dụ
pulse[0]=20;//0=min,100=max
pulse[1]=45;
.....
Code:
#int_timer0 //overflow every 500us
void decode()
{
set_timer0(0);
xung++;
if(xung<pulse[0])//1
{output_high(PIN_D0);}
else
{output_low(PIN_D0);}
if(xung<pulse[1])//2
{output_high(PIN_D1);}
else
{output_low(PIN_D1);}
if(xung<pulse[2])//3
{output_high(PIN_D2);}
else
{output_low(PIN_D2);}
if(xung<pulse[3])//4
{output_high(PIN_D3);}
else
{output_low(PIN_D3);}
if(xung>100){xung=0;}//end of pulse
}
đoạn code này tui lấy từ một ứng dụng khác của tui, và đã sửa sang lại chút để phù hợp với đầu bài, nên chưa kịp test. Bạn nào có dịp làm thì test dùm luôn. Ai có ý tưởng nào hay về PWM nhiều kênh thì post lên tham khảo với nha