/********************************************************************
* 文件名 : 红外解码.c
* 描述 : 该程序实现用单片机来实现对红外遥控器编码信号的解码。
该遥控板使用的是3010的芯片。解码可以参考http://www.laogu.com/laogubbs/vbbs_10079.htm
该程序不是标准的红外解码程序,只取了遥控板的按键码,区别出了0--9这10个按键。
注意:做这个实验时,请关闭日光灯,日光灯会干扰红外的解码。
* 创建人 : 东流,2009年4月9日
* 版本号 : 2.0
* 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
* 感谢“中国自动化资讯网”对本工作室的大力支持。
***********************************************************************/
#include"reg52.h"
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rf=P3^3; //一体化接收头输出口
uchar Count = 0;
uchar code table[11] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09, 0xff};
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : Time0_Init()
* 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振
定时器工作方式为 2 ,定时时间为200毫秒。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Time0_Init()
{
TMOD = 0x02;
IE = 0x82;
TH0 = 0x76;
TL0 = 0x76;
}
/********************************************************************
* 名称 : Time0_Int()
* 功能 : 定时器中断,Count为中断中的自加变量。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Time0_Int() interrupt 1
{
Count++; //长度加1
}
/********************************************************************
* 名称 : Key_Choose()
* 功能 : 键值转换为数码管值
* 输入 : 键值
* 输出 : 数码管值
***********************************************************************/
uchar Key_Choose(uchar Key_temp)
{
uchar return_temp = 0;
switch(Key_temp)
{
case 0x6a:
return_temp = 1;
break;
case 0x9a:
return_temp = 2;
break;
case 0x5a:
return_temp = 3;
break;
case 0xa6:
return_temp = 4;
break;
case 0x66:
return_temp = 5;
break;
case 0x96:
return_temp = 6;
break;
case 0x56:
return_temp = 7;
break;
case 0xd4:
return_temp = 8;
break;
case 0xb4:
return_temp = 9;
break;
case 0xaa:
return_temp = 0;
break;
default: return_temp = 10; //如果不是 0 -- 9 这几个数,数码管不显示
}
return return_temp;
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
uchar temp, i; //temp用来存按键码
P0=0xff;
Time0_Init();
while(1)
{
for(i=0;i<9;i++) //放弃前面数位,因为我们只取后面的按键码
{
while(rf);
while(!rf);
}
while(rf);
TR0 = 1;
for(i=0; i<8; i++)
{
Count = 0;
while(Count <= 4);
if(rf == 1) temp += 0<<i; //当一体化接收头输出口为高电平时,点亮LED
else temp += 1<<i;
}
//P0 = temp; //这两行用来把按键码在P0口显示出来,这个也是我Key_Choose()中值的来源。
//while(1);
P0 = table[Key_Choose(~temp)];
P2 = 0x01;
temp = 0;
TR0 = 0; //关闭定时器
TH0 = 0x76; //初始化定时器值
TL0 = 0x76;
for(i=0; i<100; i++) //等待一段时间采集下次红外信号
Delay_1ms(5);
}
}
ir-remote.rar_IR_remote
版权申诉
177 浏览量
2022-09-23
11:23:34
上传
评论
收藏 19KB RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈