详解STC89C52单片机红外遥控器解码 |
您所在的位置:网站首页 › 51单片机红外遥控器程序 › 详解STC89C52单片机红外遥控器解码 |
实现功能: 按实验板所佩带的红外遥控器上面的数字键,把所按的数字显示在实 验板上的数码管上,一定注意要跟红外探测头的距离不要太远,而且 程序里只编写了遥控器上的数字键的部分 实验板型号:KBL-XYD-C52 实验名称: 红外控制数码管的显示 #include #define uchar unsigned char #define uint unsigned int sbit IR = P3^3; //红外接收器数据线 sbit Duan=P2^6; //定义数码管的段选使能端 sbit Wei =P2^7; //定义数码管的位选使能端 #define Digital_tube_Wei_Enable Wei=1; //开启控制数码管的位选使能端 #define Digital_tube_Wei_Disable Wei=0; //关闭控制数码管的位选使能端 #define Digital_tube_Duan_Enable Duan=1; //开启控制数码管的段选使能端 #define Digital_tube_Duan_Disable Duan=0; //关闭控制数码管的段选使能端 #define Digital_tube_Duan P0 //定义数码管数据端口 uchar cIRReceiveData[7]; uchar code Dis_table[]= //将BCD码转换成数码管扫描码的数组 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; 函数名称:毫秒延时函数 函数功能:实现毫秒级的延时 参数介绍:Delay_MS: 定义需要延时的毫秒的数值 iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时 iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得 返回值: 无 注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形 式完成,所以如果改变了晶振的频率,请做相应的改变 void DelayMs(uint Delay_MS) { uint iNumber,iValue; for(iNumber=0;iNumber { iValue=107; //107这个数值是通过测定而得 while(iValue--); } } 函数名称:Delay 函数功能:延时0.14毫秒,主要是用于红外解码 参数介绍:cDelay:延时0.14ms的次数 返回值: 无 注意事项:无 void Delay(unsigned char cDelay) //x*0.14MS { unsigned char cNumber; while(cDelay--) { for (cNumber=0;cNumber 1;//数据最高位补“0” if(cCount>=8) //协议里定义‘1’的电平为2.25ms,因为Delay(1)延时为0.14ms { //加上其他指令执行时的延时,所以大于等于8时,为高电平 cIRReceiveData[cNumber1] = cIRReceiveData[cNumber1] | 0x80; } //数据最高位补“1” cCount=0; }//end for k }//end for j if(cIRReceiveData[2]!=~cIRReceiveData[3])//判断接收到指令是不是正确,协议里规定 { //第一次发指令和第二次发的正好的按位取反的,以此保证接收数据的可靠性 EX1=1; return; } switch(cIRReceiveData[2]) //把解码得到的数据转换成实验板上能够显示的数字 { case 0x16: One_DigitalTube_display(0); break; case 0x0c: One_DigitalTube_display(1); break; case 0x18: One_DigitalTube_display(2); break; case 0x5e: One_DigitalTube_display(3); break; case 0x08: One_DigitalTube_display(4); break; case 0x1c: One_DigitalTube_display(5); break; case 0x5a: One_DigitalTube_display(6); break; case 0x42: One_DigitalTube_display(7); break; case 0x52: One_DigitalTube_display(8); break; case 0x4a: One_DigitalTube_display(9); break; } EX1 = 1; //打开中断,解码完成,以进行下次解码 } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |