欢迎来到天天文库
浏览记录
ID:39504290
大小:35.00 KB
页数:3页
时间:2019-07-04
《红外编码与解码及仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//////////////////////////////////////////////红外解码程序///////////////////制作:无名小贝///////////////////////MCU:AT89S51//////////////////////首制:2011年5月31日/////////////////功能:红外遥控解码/////////////////修改:2011年6月4日///////////修改目的:仿真解码1-16////////////////////////////////////////////////#inc
2、lude#include"display_lcd.h"#defineucharunsignedchar#defineuintunsignedintucharxianshi2[]={"xiaobei0604"};ucharirtime;//红外信号拉高时间(定时中断计数)ucharirdata[33];//红外数据数组ucharbitnum;//红外数组下标ucharstartflag=0;//开始接收信号标志ucharirreceok;//红外接收完毕标志ucharirprosok;//红外解码完成标志ucharircode[4];
3、//红外解码出来的值数组uchardisp[8];ucharvar;//************************************************//延时函数,在12MHz的晶振频率下//大约的延时//************************************************/*voiddelay_50ms(uintt)//毫秒级延时{ucharj;for(;t>0;t--)for(j=6245;j>0;j--);}voiddelay_50us(uintt)//微秒级延时{ucharj;for(;t>0;t
4、--)for(j=19;j>0;j--);}*/voidtimer0init()//定时器工作方式18位自动重装{TMOD=0X02;TH0=0;//256us定时TL0=0;ET0=1;EA=1;TR0=1;}voidinit0init()//初始化外中断0{IT0=1;EX0=1;EA=1;}voidirpros()//接收到的红外数据数组解码程序{uchari,j,k,value;k=2;//第0位为引导码略过for(i=0;i<1;i++)//控制{for(j=0;j<4;j++){value>>=1;if(irdata[k]<6){valu
5、e
6、=0x08;}k++;}ircode[i]=value;}irprosok=1;}voidirfenjie(){disp[0]=ircode[0]/16;disp[1]=ircode[0]%16;var=16*disp[0]+1*disp[1];//var=0x01;}voidmain(){timer0init();init0init();InitLcd();delay(50);display_lcd2(xianshi2);while(1){//display_lcd(var);if(irreceok){irreceok=0;irpros();d
7、elay(20);if(irprosok){irreceok=0;irfenjie();delay(10);}display_lcd(ircode[0]);P2=var;}}}voidtimer0()interrupt1{irtime++;//用定时器来判断信号高电平的时间}voidyaokongzhongduan()interrupt0//红外接收起始中断处理{if(startflag)//第一次中断不接收{//第二次中断以后进入并判断是否为if(irtime>30){bitnum=0;}//检测引导码使irtime数组数据重新装irdata[bi
8、tnum]=irtime;//irtime=0;//定时计数清零重新计数供下次使用bitnum++;//if(bitnum==6){bitnum=0;irreceok=1;startflag=0;}//红外接收完毕标志}else{startflag=1;//第一次中断信号使标志置1为下一次中断做接收数据准备irtime=0;//定时计数清零重新计数供下次使用}}
此文档下载收益归作者所有