找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1807|回复: 0
打印 上一主题 下一主题
收起左侧

简单程序用单片机定时器1和2测量红外高低脉冲时间及个数

[复制链接]
跳转到指定楼层
楼主

遥控红外引导码



高低脉冲时间us






我用的数码管电路图

单片机源程序如下:
  1. #include<reg52.h>
  2. sfr T2MOD=0XC9; //定义定时器2
  3. #define u8  unsigned char
  4. #define u16 unsigned int
  5. sbit ir=P3^2;sbit LSA=P2^2;        sbit LSB=P2^3;sbit LSC=P2^4;//数码管用的138
  6. bit di=0,gao=0,c=0;
  7. u8 js=0,us=0;          //js是计算低脉冲个数
  8. u16 idata IR[75];//所有高低脉冲都装在里面
  9. //红外一组为68个高低脉冲,设75个,随便改脉冲个数
  10. u8 code tab[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0};
  11. u8 dw[5];//数码管显示0--9,最后那个0是关显示
  12. void Delay(u16 n){while(--n);}//12M公式n=(延时-6)*0.12493899(us)
  13. void disp()
  14. {                P0=tab[dw[i]];
  15.                 Delay(70); //间隔一段时间扫描        
  16.                 P0=0x00;//消隐
  17. }
  18. void T0init(void) //定时器0模式2初始化,完成一次中断为256us,10次就乘10次
  19. {TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;TR0=1;}
  20. void E0init(void)//外P3^2中断0 初始化
  21. {IT0=1;EX0=1;}

  22. void main(void)
  23. { T2MOD=0;T2CON=0;    //定时器2初始化,向上计数,16位自动重装模式
  24.   TL2=0x00;TH2=0x00;   //设置定时初值,完成一次中断为65536us=65ms
  25.   RCAP2L=0x00;RCAP2H=0x00; //设置定时重载值
  26.   IE=0xa0;        //EA=1,ET2=1;
  27.   E0init();
  28.   T0init();
  29. while(1)
  30.    {static u8 a=0;
  31.            while(!ir){        //低脉冲时计算高脉冲时间
  32.         if(gao){IR[a]=TH2*256+TL2+8;
  33.                a++;gao=0;TH2=0;TL2=0;}}
  34.         if(di){TR0=0;TR2=1;IR[a]=us*256+TL0-4;//1个us为256,减4补误差
  35.                a++;di=0;TL0=0;us=0;}//高脉冲时计算低脉冲时间
  36.         if(TH2>78){TR2=0;TH2=0;TL2=0;a=0;c=1;}//TH2>78高脉冲超20ms结束
  37.     if(c)disp();//结束后显示高低脉冲时间us
  38. }  }
  39. void t0() interrupt 1
  40. {us++;di=1;}
  41. void E0() interrupt 0
  42. {TR0=1;if(TR2)gao=1;TR2=0;js++;}
  43. void t2() interrupt 5   
  44. {TF2=0;}              //要写TF2=0
复制代码

显示部分不同程序就不同,显示程序自己写就行了,只要是显示IR[]数组。
如果数码管电路和我的一样,就下载下面直接运行,w=100,我测试快用的,改为w=500慢显示。

代码:
捕捉红外高低脉冲时间.rar (1.37 KB, 下载次数: 6)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表