STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能,掉电储存
最近在玩STC15W104这个8脚小钢炮,折腾出个支持1527/2262编码的万能遥控解码器。先看硬件配置:P3.2接315M超外差接收头,P5.4-P5.7四个输出口,P3.3用来进学习模式。存储用片内EEPROM,STC15自带IAP功能真香,省了外置24C02。这方案成本不到5块钱,比某宝成品香多了,老铁们赶紧焊起来!STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能
STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能,掉电储存。

老铁们今天咱们搞点硬核的!最近在玩STC15W104这个8脚小钢炮,折腾出个支持1527/2262编码的万能遥控解码器。核心功能就三点:自动学习遥控器、掉电记忆数据、四路输出控制。直接上干货!

STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能,掉电储存。

先看硬件配置:P3.2接315M超外差接收头,P5.4-P5.7四个输出口,P3.3用来进学习模式。存储用片内EEPROM,STC15自带IAP功能真香,省了外置24C02。
// 存储结构体
typedef struct {
unsigned long addrCode; // 地址码
unsigned char dataCode; // 数据码
unsigned char validFlag; // 有效标志
} RemoteCode;
RemoteCode savedCodes[4]; // 对应四个输出通道
学习模式的关键在于捕捉2262的时序特征。实测发现1527的引导码约9ms高电平,跟2262兼容。用定时器1的捕获功能稳如老狗:
void Timer1_Init() {
AUXR &= 0xBF; // 定时器时钟12T模式
TMOD &= 0x0F; // 16位自动重装
TL1 = 0x00;
TH1 = 0x00;
TR1 = 1; // 启动定时器
}
// 中断里抓取高低电平时间
if (TF1) {
pulseWidth = (TH1 << 8) | TL1;
TH1 = TL1 = 0;
TF1 = 0;
decodeProcess(pulseWidth); // 核心解码逻辑
}
解码状态机才是精髓!用switch-case处理不同阶段的电平:
enum DecodeState { IDLE, SYNC, DATA };
enum DecodeState currentState = IDLE;
void decodeProcess(unsigned int width) {
switch(currentState) {
case IDLE:
if(width > 8000) { // 识别到同步头
currentState = SYNC;
bitCounter = 0;
tempCode = 0;
}
break;
case SYNC:
if(width < 2000) { // 短脉冲可能是0或1
tempCode <<= 1;
if(width > 1000) tempCode |= 1;
if(++bitCounter >= 24) { // 24位编码
saveLearnedCode();
currentState = IDLE;
}
}
break;
}
}
掉电存储要特别注意擦除次数限制。STC15的EEPROM本质是Flash,写之前必须擦除整个扇区:
void SaveToEEPROM() {
IAP_CONTR = 0x80; // 使能IAP
IAP_CMD = 0x03; // 扇区擦除
IAP_ADDRH = 0x00; // 扇区地址
IAP_ADDRL = 0x00;
IAP_Trigger();
_nop_();_nop_();
// 逐个字节写入
for(int i=0; i<sizeof(savedCodes); i++) {
IAP_CMD = 0x02;
IAP_ADDRL = i;
IAP_DATA = *((byte*)&savedCodes + i);
IAP_Trigger();
}
IAP_CONTR = 0; // 关闭IAP
}
实际应用中发现几个坑:
- 接收头输出要接10K上拉,否则低电平不稳
- 学习时按住遥控键至少3秒,确保完整接收三组编码
- 用软件去抖代替硬件电路,节省空间
完整代码里加了超时机制——超过2秒没收到后续信号自动退出学习模式。输出部分用74HC595扩展,PWM控制继电器也没压力。这个小东西塞进86型开关盒里,改造传统灯具美滋滋!

最后给个快速测试技巧:用镊子短接VCC和GND模拟掉电,立马验证存储是否靠谱。这方案成本不到5块钱,比某宝成品香多了,老铁们赶紧焊起来!


更多推荐



所有评论(0)