本帖最后由 ZHNAGR 于 2022-3-30 16:26 编辑
S
CA51F152S1是基于 1T 8051 内核的 8 位微控制器,通常情况下,运行速度比传统的 8051 芯片快 10 倍,
内置 16K Flash 程序存储器,可多次重复编程的特性,给用户开发带来了极大的方便。
1.最大支持 5 个触摸通道,支持触摸低功耗(小于5uA);高抗干扰性能,符合 EMC(CS)标准
2.1个串口+IIC接口
3.3路16位PWM(可调占空比跟频率)
4.一路单线级联 LED 驱动(可以驱动WS2811/WS2812灯带芯片)
(联系张生 15813832603)
单线级联 LED 驱动灯带控制例程
以 PWM1 为例,驱动 8 级 RGB LED ,使 RGB LED 循环变色,程序如下:
----------------------------------------------------------------------------------------
//PWMxCON
#define TOG(n)
(n<<6)
#define PWM_CKS_SYS (0<<0)
#define PWM_CKS_IL (1<<0)
#define PWM_CKS_IH (2<<0)
#define PWMMOD(N)
(N<<3) //N=0-7
#define PWMPOL(N)
(N<<2) //N=0-1
void PWM_init(void)
{
PWM1CON = TOG(0)| PWMMOD(3) | PWMPOL(0) | PWM_CKS_IH; //设置 IRCH 为 PWM 时钟源,发
送 3 个字节后插入暂停时间
PWM1CKD = 0; //设置预分频系数,设置为 0 表示不分频
PWM1DIVH = 0;
//设置位周期时间
PWM1DIVL = 20;
PWM1DUTH = 0;
//设置位码 0 时间
PWM1DUTL = 6;
LEDUTH= 0;
//设置位码 1 时间
LEDUTL= 13;
LEDWTMH = 0; //设置暂停时间
LEDWTML = 50;
P34F = 6;
//设置 P34 为 PWM 引脚功能
PWMEN |= (1<<1);
//PWM1 使能
}
void main(void)
{
PWM_init(void);
while(1)
{
unsigned char i;
static unsigned char color_index = 0;
code unsigned char LED_DAT[][3] =
{
{0xff,0x00,0x00},
{0xff,0xff,0x00},
{0x00,0xff,0x00},
{0x00,0xff,0xff},
{0x00,0x00,0xff},
{0xff,0x00,0xff},
};
for(i=0;i<24;i++)
{
while(LE** & LEF0);
LEDAT0 = LED_DAT[color_index][i%3];
}
color_index++;
if(color_index>=6)
color_index=0;
Delay_ms(500);
}
}代码中WS2811驱动RBG共3路是3组数据,8组就24个数据.如果要不同变化就改变数据来获取得不同效果
|