网站大量收购独家精品文档,联系QQ:2885784924

CX4多功能家居控制系统及应用设计红外解码程序推荐.doc

CX4多功能家居控制系统及应用设计红外解码程序推荐.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CX4多功能家居控制系统及应用设计红外解码程序推荐

红外解码程序: /**************************************************************************************** /*将从接收头出来的红外二进制脉冲信号先与标志位(P)进行,然后再输入到INT0(P3.2)引脚只需要在同一个高(低)电平脉冲里,脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”脉冲电平的每一次跳变都会形成一次中断,在中断服务子程中即可实现一次性对一连串连续波形的测量。 sfr P0=0x80; sfr P3=0xb0; sbit P32=P3^2; Sbit P11=P1.1; Sbit P12=P1.2; Sbit P13=P1.3; Sbit T00=P3^4; Sbit T11=P3^5; unsigned char dm,i,j,k,dj1,dj2,dj3,ss,tt,ssc; Unsigned long int mmt; unsigned char data a[80],h; //定义数组,用来存储代码 void ds0_9ms(void) { ? unsigned char j,k; ??for(j=18;j0;j--) ??for(k=20;k0;k--) ; } void ds1ms(void) { ?unsigned char i,j; ?for(i=2;i0;i--) ?? for(j=230;j0;j--) ; } void ds4_5ms(void) { ?unsigned char i,j; ??? for(i=10;i0;i--) ?? for(j=225;j0;j--) ; } void ds2s(void) { unsigned char i,j,k; ?for(i=200;i0;i--)? ?for(j=200;j0;j--) ?for(k=10;k0;k--) ; } Void ds10ms(void) { Unsigned char sk,ms,hh; For(sk=20;sk0;sk--) For(ms=225;ms0;ms--); } void t0(void) interrupt 1 using 1 //定时器T0中断{ ?While( ) { For(i=13;i0;i--) //产生13us高电平脉冲 { T00=1; //T0口连续输出脉冲电平 } For(j=13;j0;j--) //产生13us低电平脉冲 { T00=0; } } }? /**************************************************************************************** /*?检While( djflag!=0 ) { If( djflag==1 ) //设备1选中 { P11=1; ET1=1; //定时器1初始化 EX1=1; des1ms( ); ET1=0; EX1=0; } If( djflag==2 ) //设备2选中 { P12=1; EX1=1; ET1=1; des1ms( ); ET1=0; EX1=0; } If( djflag==3 ) 设备3选中 { P13=1; ET1=1; EX1=1; des1ms( ); ET1=0; EX1=0; } } } Void INT_0(void) interrupt 0 using 0 //时间间隔测量 { While( ) //调用jiji测时间间隔与判断 { Jiji( ); } } Void jiji(void) //用来根据INT_0测出的时间周期 { If(P32=0) { ET1=1; EX1=1; } Else { ET1=0; EX1=0; Mmt=ssc*65536+tt*256+ss; //计算脉冲时间的宽度 If(mmt==565) //时间为0.565ms时不记 { Mmt=0; } If(mmt==560) { a[h++]=0; //将测得的0和1的值存放在a数组里 } If(mmt==

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档