繁体   English   中英

如何在 mplab 中为 PIC18F4550 制作 RGB LED 作品?

[英]How can I made a rgb led works in mplab for a PIC18F4550?

I've tried in C to make the WS2812 works in mplab with pic18f4550, the energy reach the led, but it doesn't turn on and I can't select the led that I ant to use, but it doesn't, how我可以解决这个问题吗? 这是我正在使用的代码:谢谢

main.c

#define _XTAL_FREQ 4000000UL
#include "config.h"
#include "ws2812.h"

void main(void) {
    ADCON1=0b00001111;
    TRISB=0b00000001; 
    if (energy_port==1){
             pin_strip_led=1;
            ws2812_setPixelColorLed(1, ws2812_Color(255, 0, 0));
    }
    else{ 
        pin_strip_led=0;
    }
    return;
}

这是我在 ws2812.h 中使用的:

#define STRIP_SIZE 8
#define pin_strip_led PORTBbits.RB1
#define energy_port PORTBbits.RB0
void ws2812_setPixelColorLed(unsigned char pixel, unsigned long color) {
    Strip_RGBData[pixel][0] = (char) (color >> 16); 
    Strip_RGBData[pixel][1] = (char) (color >> 8);
    Strip_RGBData[pixel][2] = (char) (color);
}
unsigned long ws2812_Color(unsigned char r, unsigned char g, unsigned char b) {
    return ((unsigned long) r << 16) | ((unsigned long) g << 8) | b; 
}

所示程序将读取端口 B0,将 B1 设置为相同的 state,如果设置,则填充数组 Strip_RGBData 的一行(既未声明也未使用)。 它会这样做一次。 你问:“我该如何解决这个问题?”

WS2812 数据表是一个很好的起点。 使用它来确定如何组成控制 LED 所需的信号。 在您的代码中设置一个计时器,以按照时序要求输出该信号的位。

之后,您可以添加一个循环来读取 select 单个 LED 的输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM