#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit key1=P3^0
sbit led=P3^4
sbit in=P3^5
sbit out=P3^3
bit flang
uchar D[24]
ulong DATA=0//记录数据
void delay() //误差 0us延时101us
{
uchar a,b
for(b=93b>0b--)
// for(a=5a>0a--)
}
void decode()
{
uchar j
uint i
/* i=0
while(!in)
{
delay()
i++
if(i>8800)
return
} */
// if(i>7200)
// {
// led=1
for(j=0j<24j++)
{
i=0
while(!in) //判断低电平(窄的为1,宽的为0)
{
delay()
i++
if(i>70)
return //限时解码
}
if(i>20)D[j]=0
else D[j]=1
}
flang=1
}
//}
void main()
{
led=0
while(1)
{
decode()
if(flang==1)
{
flang=0
if(D[20]==0)led=1
if(D[21]==0)led=0
if(D[22]==0)led=1
if(D[23]==0)led=0
}
}
}
我建议你不要用单片机解码,我刚刚搞的,编码芯片是EV1527,我已经用逻辑分析仪分解出信号调制发射之前的原始信号,就是同步码加地址码之类的,很纯的。但用逻辑分析仪分析超再生接收模块的输出口信号时,干扰信号不断,单片机即使能解码也需要灰常灰常强的编程。单片机解码还有个问题,即使解码了,还得把地址码存EEPROM,以后接收信号以对比,我都准备换TDH6300芯片解码了,还带学习功能的。
今晚回去把超再生接收模块的供电电源屏蔽下,看是否是电源干扰。有点可确定的,工业上有用单片机解码的,我的超再生接收模块就是从家里坏了的报警器主机上拆的,上面就没用解码芯片直接用的是单片机口,此单片机伟STC抗干扰系列的。但我逻辑分析仪测试的时候没用单片机供电,用的一个独立电源供电的,照理不是单片机影响的,此模块也是上面拆的,照理也不会有问题。
最后说下:如果保证信号相对较纯的时候,我有个想法(未证实),用单片机检测高低电平脉冲宽度大致比例,接近芯片手册上的介绍,然后将各位地址存入EEPROM,下次与新收到的地址比较
**********************************************************************************************************************
最新实践已经成功学习并识别不同的PT2262,EV1527即将可以修改即可,EV1527和PT2262脉冲数一样,EV1527是24+1个脉冲,PT2262是12*2+1个脉冲,以下是程序核心原理:根据同步码的低电平时间,在任何一个下降沿开外部中断,并定时(时间为同步码低电平时间一半再少点),定时器中断产生时,查看这段时间里下降沿次数,如大于0证明不是同步码低电平,为0继续,假设进入同步码低电平时间段(因为有杂波存在低电平时间较长),在第一个高脉冲下降沿的时候开定时,定时时间取全部脉冲时间+同步码低电平时间一半,定时中断结束时查看这段时间里的脉冲个数,如果为上面提到的25则进入正式阶段。利用定时器查看每两个高脉冲的宽度,取定时器TH0里面的值,一般宽脉冲为3或4,低脉冲为1,通过除法比值确定前后两个脉冲的比值(此法容错高)。因为一个程序要识别PT2262即EV1527,所以中间要先加识别脉冲是PT2262还是EV1527的,PT2262前8个信号即8*2个脉冲不会出现先宽后窄的脉冲的,如出现即为EV1527,PT2262最后4个信号即4*2个脉冲里每两个是相等,如不等即为EV1527,当然如都相等也不一定是PT2262(EV1527四个按键全部没按情况下也是一样,但一般不出现此情况,忽略掉)。里面经常要用到某个地址作为标示,如30H内存处,某种情况值为0,另一种情况为1,然后再程序通过检测该值,决定走那种程序,好了以上全部是自己查阅各种资料及实践所得的经验,为了帮助广大的学友少走弯路,或许有其他的好办法,就靠大家的悟性了,我因为有虚拟逻辑分析仪,所以信号容易分析。
*********************************************************************************************************
最新已经解码成功,单片机是STC89C52,我用单片机可以同时解码EV1527和PT2262芯片,也把代码单独分开成两个独立的,带学习功能,代码里注释的很清楚,代码已完整,根据自己的硬件更改相应的IO设置就可以直接使用,新浪共享网站可以查询PT2262.TXT,EV1527.TXT,CODE.TXT都能搜到
不用,主频433MHz与315MHz是1527芯片频率。编码芯片EV1527:
有两种解码方法:
利用解码芯片TDH6300硬件解码、采用单片机软件解码。
EV1527是一片由CMOS设计制造的可预烧内码的学习码编码芯片,由软件解码。
内码共有20位元可预烧100万组内码组合,大大降低了使用编码上重复的机率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)