- UID
- 373967
- 帖子
- 8882
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 0
- 威望
- 977
- 存款
- 34955
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 455 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-25
|
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的顏色。 |
|