2831.CX4多功能家居控制系统及应用设计红外解码程序_第1页
2831.CX4多功能家居控制系统及应用设计红外解码程序_第2页
2831.CX4多功能家居控制系统及应用设计红外解码程序_第3页
2831.CX4多功能家居控制系统及应用设计红外解码程序_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、红外解码程序: /*/*将从接收头出来的红外二进制脉冲信号先与取反再与标志位(p24)进行逻辑/*与,然后再输入到int0(p3.2)引脚,经非门u6缓冲与p24的判断信号进行/*逻辑与,使得输入int0的信号恰好是红外数据发射电路输出端p25的相反的/*相位信号,只要检测到int0信号下降沿到上升沿的这段时间。只需要在同一/*个高(低)电平脉冲里,将低电平去掉(脉宽为0.565ms、间隔0.56ms、周期/*为1.125ms的组合表示二进制“0”中的脉宽为0.565ms去掉;以脉宽为/*0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”中的脉宽/*为0.565ms

2、去掉)。在接收完控制指令后再接收校对数据以确认红外发射数据/*的正确性,脉冲电平的每一次下降沿跳变都会形成一次中断,在中断服务子程/*中即可实现一次性对一连串连续波形的测量,从而测出控制指令的功/*能。/*程序设置部分:/*tmod=0x05 t1h=0 t1l=0 p24=0 ea=1/*定时器0工作方式1,在int外部中断信号下降沿到来定时器开始计数/*sfr p0=0x80;sfr p3=0xb0;sbit p32=p32;sbit p11=p1.1;sbit p12=p1.2;sbit p13=p1.3;sbit t00=p34;sbit t11=p35;unsigned char d

3、m,i,j,k,dj1,dj2,dj3,ss,tt,ssc;unsigned long int mmt;unsigned char data a80,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-)

4、 ;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

5、; /*/*检验红外线的辐射区域内的设备是否被选项中/*dj1表示选择的是设备1,dj2 表示选择的是设备2,dj3 表示选择的是设备3/*设备的选择是通过djflag的值来进行判断/*void daji( unsigned char djflag) 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 )

6、设备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)ah+=0; /将测得的0和1的值存放在a数组里if(mmt=1685)ah+=1;void t1(void) interrupt 2 using 2ss+; /每个机器周期加1if(ss=256)/每256个机器周期清零 ss=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论