洪嵐峰 發表於 2023-4-11 06:43:12

EM78P153 LM2596S實現LED顏色和時序控制

EM78P153單片機
LM2596S DC-DC Buck變換器
RGB LED
杜邦線
麵包板
連接圖:


           +----------+
           |          |
    VCC ---|VCC   GND|--- GND
           |          |
  GPIO.0 ---|P01   P00|--- GPIO.1
           |          |
  GPIO.2 ---|P03   P02|--- GPIO.3
           |          |
  GPIO.4 ---|P05   P04|--- GPIO.5
           |          |
  GPIO.6 ---|P07   P06|--- GPIO.7
           |          |
           +----------+
               LM2596S
代碼如下:


#include <EM78P153.h>

// 定義IO口
#define R GPIO.0
#define G GPIO.1
#define B GPIO.2

void delay_us(unsigned int us)
{
    unsigned int i,j;
    for(i=0;i<us;i++)
        for(j=0;j<4;j++);
}

void delay_ms(unsigned int ms)
{
    unsigned int i,j;
    for(i=0;i<ms;i++)
        for(j=0;j<4000;j++);
}

void set_color(unsigned char r, unsigned char g, unsigned char b)
{
    // 調節LM2596S的輸出電壓
    ADCON1 = 0x87;      // AIN6 -> VREF, AIN7 -> GND
    DACON = b;          // 設置DAC輸出電壓為b
    delay_us(10);
    DACON = g;          // 設置DAC輸出電壓為g
    delay_us(10);
    DACON = r;          // 設置DAC輸出電壓為r
    delay_us(10);
}

void main()
{
    // 設置GPIO口為輸出
    GP0CON = 0x01;
    GP1CON = 0x01;
    GP2CON = 0x01;
    // 設置DAC輸出口為輸出
    DACCON = 0x10;

    while(1)
    {
        // 紅
        set_color(0xFF, 0x00, 0x00);
        delay_ms(1000);
        // 綠
        set_color(0x00, 0xFF, 0x00);
        delay_ms(1000);
        // 藍
        set_color(0x00, 0x00, 0xFF);
        delay_ms(1000);
        // 黃
        set_color(0xFF, 0xFF, 0x00);
        delay_ms(1000);
        // 紫
        set_color(0xFF, 0x00, 0xFF);
        delay_ms(1000);
        // 青
        set_color(0x00, 0xFF, 0xFF);
        delay_ms(1000);
        // 白
        set_color(0xFF, 0xFF, 0xFF);
        delay_ms(1000);
    }
}
由於LM2596S的輸出電壓受DAC控制,因此可以通過調節DAC輸出電壓來控制RGB LED的顏色。
頁: [1]
查看完整版本: EM78P153 LM2596S實現LED顏色和時序控制