一线制,单总线接口,【STC8H2K32UT】首次配置【一线制】,直接驱动WS2812
STC 最新研发的单片机型号STC8H2K32UT一线制,单总线接口,【STC8H2K32UT】首次配置,
【一线制,单总线】,直接驱动 WS2812!!!
新型号 STC8H2K32UT 内部增加了4组硬件单总线接口
单总线目前可支持的工作模式:
WS2812模式、
DS18B20 模式、DHT11 模式、
红外模式、
UARTX模式和UART模式。
STC 最新推出一个新的单片机型号STC8H2K32UT
一线制,单总线接口,【STC8H2K32UT】首次配置,
【一线制,单总线】,直接驱动 WS2812!!!
这个新型号的STC单片机内部增加了4组硬件单总线接口
初步测试用单总线接口驱动WS2812灯带,功能正常
1064
驱动核心代码如下:
#include <stdio.h>
#include <intrins.h>
#include "def.h"
#include "stc8h.h"
#include "ow.h"
#define FOSC 24000000UL
#define BAUD (65536 - FOSC/4/115200)
#define T1MS (65536 - FOSC / 1000)
#define LED_NUM 12
#define BUF_SIZE (LED_NUM * 3)
#define PSCR 0
#define tRES (60 * FOSC / 1000000 - 1)
#define t0H (0.35 * FOSC / 1000000 - 1)
#define t0L (0.70 * FOSC / 1000000 - 1)
#define t1H (0.70 * FOSC / 1000000 - 1)
#define t1L (0.35 * FOSC / 1000000 - 1)
#define TEST_OW 1
BYTE code COD[] =
{
//G R B
0x00, 0xff, 0xff, //紫
0xff, 0x00, 0xff, //靛
0x00, 0x00, 0xff, //蓝
0xff, 0x00, 0x00, //绿
0xff, 0xff, 0x00, //黄
0x80, 0xff, 0x00, //橙
0x00, 0xff, 0x00, //红
};
BOOL f1ms;
BOOL trig;
int count;
int index;
int offset;
BYTE xdata BUF;
void main()
{
int i;
P_SW2 = 0x80;
P0M0 = 0xff; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x40; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
SCON = 0x52;
AUXR = 0x40;
TMOD = 0x00;
TL1 = BAUD;
TH1 = BAUD >> 8;
TR1 = 1;
AUXR |= 0x80;
TL0 = T1MS;
TH0 = T1MS >> 8;
TR0 = 1;
ET0 = 1;
printf("STC8H2K32UT Test (OneWire WS2812 REG) !\n");
OW1_SetWS2812Mode(); //设置OW模式为WS2812模式
OW1_SetWS2812_RST(tRES); //设置复位信号的低电平维持时间:(N+1)个OW时钟
OW1_SetWS2812_D0H(t0H); //设置数据0的高电平维持时间:(N+1)个OW时钟
OW1_SetWS2812_D0L(t0L); //设置数据0的低电平维持时间:(N+1)个OW时钟
OW1_SetWS2812_D1H(t1H); //设置数据1的高电平维持时间:(N+1)个OW时钟
OW1_SetWS2812_D1L(t1L); //设置数据1的低电平维持时间:(N+1)个OW时钟
OW1_SetClockDivider(PSCR); //设置OW总线时钟分频(SYSclk/(PSCR+1))
OW1_SwitchP36(); //选择P36口为单总线数据口
OW1_ClearAllIntFlag(); //清除OW状态
OW1_EnableResetInt(); //使能OW复位中断
OW1_EnableTxInt(); //使能OW发送中断
OW1_Enable(); //使能OW功能
EA = 1;
trig = 0;
count = 0;
index = 0;
offset = 0;
while (1)
{
if (f1ms)
{
f1ms = 0;
if (count++ >= 100)
{
count = 0;
for (i = 0; i < BUF_SIZE; i++)
BUF = 0;
for (i = 0; i < sizeof(COD); i++)
BUF[(i + offset * 3) % BUF_SIZE] = COD / 16;
if (++offset >= LED_NUM)
offset = 0;
OW1_ResetBus(); //触发总线复位
}
}
if (trig)
{
trig = 0;
if (index < BUF_SIZE)
{
OW1_WriteData(BUF);
}
}
}
}
void ow1_isr() interrupt OW1_VECTOR
{
BYTE sr;
sr = OW1_ReadIntStatus(); //读取中断标志
OW1_ClearAllIntFlag(); //清除OW状态
if (OWn_CheckResetFlag(sr))
{
index = 0;
trig = 1;
}
if (OWn_CheckTxFlag(sr))
{
trig = 1;
}
}
void tm0_isr() interrupt 1
{
f1ms = 1;
}
下面的STC新触摸MCU开始全面标配【一线制,单总线】
STC8T1K17-45I-TSSOP20
STC8T1K17-45I-TSSOP20
下面的STC新触摸MCU开始全面标配【一线制,单总线】
STC8T2K32-45I-LQFP32
STC8T2K32-45I-QFN32
STC8T2K32-45I-TSSOP20
可否用于单总线传感器接口
比如DS18B20
和DHT等等 狂热主宰 发表于 2026-5-29 19:17
可否用于单总线传感器接口
比如DS18B20
和DHT等等
全支持 什么时候能买到 太好啦{:4_174:},希望进口上架积分商城。 感觉非常不错。做红外遥控器解码 什么时候正式上市 STC8T1K08-45I-TSSOP20
STC8T2K32-45I-LQFP32
今年会先定型量产
页:
[1]