锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

单片机红外接受解码程序成功版

时间:2024-05-04 17:07:09

1、效果图
2、发射码格式
3、
38KH载波发射(完整的发射图)
4、
0 与 1的区别
5、
载 波
6、小结
7、代码




发射码格式



38KH载波发射(完整的发射)





0与1的区别




载 波





小 结
1、发射端发射出来的是高电平。但是接收到的是低电平。(接收到的数据与发射的相反)

2、我这里用的外部下降沿触发的中断
3、使用12M的晶振
4、整源码下载地址:http://www.51hei.com/f/hongc.rar




代码

#include sbit =P3^2; //红外标志 sbit dm = P2^2; //段码 sbit wm = P2^3; //位码

unsigned char hc[8]; //显示缓存 unsigned char []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F unsigned char WM[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码。显示的位置 unsigned char sj[33]; //接收脉冲时间数组 char w=0; //数码管显示缓存指针(0~7) unsigned char i; //脉冲个数记录 unsigned char mcsj; //脉冲时间(大于0.56ms小于1.125ms为0,大于1.125ms小于2.25ms) bit MC=0; //接收红外脉冲开始标志(0:脉冲已经结束,1:脉冲刚开始) bit JS=0; //脉冲接收结束标志位(1标志接收结束) bit JM=0; //解码完成标志位(1:解码完成) void Delay(unsigned char f); void dsq_0() interrupt 1 using 1 //定时器T0中断服务函数 { mcsj++; //256 } void wbzd_0() interrupt 0 //外部中断服务函数 {
if(MC) { if(mcsj>32) //判断是不是引导码。(如果是i=0) i=0; sj[i]=mcsj; //把脉冲时间存入sj这个数组里 mcsj=0; //清空脉冲时间准备接收下一个脉冲时间 i++; if(i==33) //判断是否接收完脉冲时间 { i=0; JS = 1; //接收完成标志位置1 MC=0; //红外脉冲结束 }
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章