首页 红外线调制的软件实现

红外线调制的软件实现

举报
开通vip

红外线调制的软件实现红外线调制的软件实现 通过定时器的方式对红外数据进行软件编码,再调制到载波发送出去。 //本程序对应11.0592M晶振// #include #define uint unsigned int #define uchar unsigned char sbit IR=P1^6; //定义发射端口 sbit speak=P1^1; bit flag,f2,f4,f8,f16,f32; uchar irtime=0,key; //定义计时变量、键盘取值变量 /*******************定时器0方...

红外线调制的软件实现
红外线调制的软件实现 通过定时器的方式对红外数据进行软件编码,再调制到载波发送出去。 //本程序对应11.0592M晶振// #include #define uint unsigned int #define uchar unsigned char sbit IR=P1^6; //定义发射端口 sbit speak=P1^1; bit flag,f2,f4,f8,f16,f32; uchar irtime=0,key; //定义计时变量、键盘取值变量 /*******************定时器0方式2初始化函数***************/ void initT0() { TMOD=0x02; //方式2 TF0=0; //清溢出标志 ET0=1; //使能定时器0中断 TH0=0; //赋初值 TL0=0; EA=1; //开总中断 // TR0=1; //启动定时 } /********************定时器0中断服务函数****************/ void Timer0() interrupt 1 using 1 { irtime++; //中断计数 switch(irtime) { case 2:f2=1;break; //高0.56ms标志位 case 4:f4=1;break; //低0.56ms标志位 case 8:f8=1;break; //地1.68ms标志位 case 16:f16=1;break; //高4.5ms标志位 case 32:f32=1;break; //低4.5ms标志位 } } /*********************键盘扫描函数*********************/ //uchar void keyscan(void) //键盘扫描函数,使用行列反转扫描法 void keyscan() { /* uchar cord_h,cord_l; //行列值中间变量 P3=0x0f; //行线输出全为0 cord_h=P3&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按下 { delay(400); //去抖 if(cord_h!=0x0f) { cord_h=P3&0x0f; //读入列线值 P3=cord_h|0xf0; //输出当前列线值 cord_l=P3&0xf0; //读入行线值 return(cord_h+cord_l); //键盘最后组合码值 } }return(0xff); //返回该值 */ key=0xeb; flag=1; //得到按键值就置标志位 } /*********************引导码发送函数*******************/ void sendstart() { IR=1; while(!f16);IR=0;f16=0; //高电平4.5ms while(!f32);IR=1;irtime=0;f32=0; //低电平4.5ms f2=0; //清零标志位 f4=0; f8=0; } /*******************8位数据发送函数********************/ void sendnum(uchar t) { uchar b=0,i; // t=key; for(i=0;i<8;i++) //发送8位数据 { b=t&0x01; //取出地i位 t=t>>1; if(b==0) //为1时发送 { IR=1; while(!f2);IR=0;f2=0; //等待时间 完成 0.56ms while(!f4);IR=1;irtime=0;f4=0; //0.56ms } else //为0时发送 { IR=1; while(!f2);IR=0;f2=0; //等待时间完成0.56ms while(!f8);irtime=0;IR=1;f8=0; //1.68ms f4=0; //清标志 } } } /*********************终止码发送函数*******************/ /*void sendend() //终止码自由定义 { sendnum(0x0f); } */ /*******************16位客户地址码发送函数********************/ void sendadd() //客户地址码自由定义 { sendnum(0xfb); sendnum(0xed); } /*********************编码发送函数********************/ void send() { TR0=1; //启动定时 while(flag) { sendstart(); //发送起始码 sendadd(); //发送客户地址码 sendnum(key); //发送数据码 sendnum(~key); //发送数据反码 //sendend(); //发送终止码 irtime=0; flag=!flag; } TR0=0; //关闭定时 } /*********************主函数**********************/ void main() { IR=0; // P1=0; //复位后赋初值 initT0(); //调用定时器0初始化函数 while(1) //进入循环,实时监控 { keyscan(); //调用键盘扫描函数 send(); //调用编码发射函数
本文档为【红外线调制的软件实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:0
分类:互联网
上传时间:2017-11-16
浏览量:19