找回密码
 立即注册

QQ登录

只需一步,快速开始

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

89C52单片机定时器2捕获模式解码红外遥控程序与Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


以下部分为单片机代码:
  1. bit IR_Done = 0;
  2. union {
  3.         u8 THTL[2];
  4.         u16 TIME;
  5. }U_THTL[33];
  6. void Timer2Init(void)
  7. {
  8.         EXF2 = 0;
  9.         EXEN2 = 1;
  10.         CP_RL2 = 1;
  11. }
  12. void timer2_int() interrupt 5
  13. {
  14.         static u8 i = 0;
  15.         if(TF2)
  16.     {
  17.                 TF2 = 0;
  18.                 TR2 = 0;
  19.         }
  20.         if(EXF2)
  21.     {
  22.                 EXF2 = 0;
  23.                 if(!TR2)
  24.                 {
  25.                         TL2 = 0;
  26.                         TH2 = 0;
  27.                         TR2 = 1;
  28.                         i = 0;
  29.                 }else{
  30.                         U_THTL[i].THTL[0] = RCAP2H;
  31.                         U_THTL[i].THTL[1] = RCAP2L;
  32.                         TL2 = 0;
  33.                         TH2 = 0;
  34.                         if(++i>=33)
  35.                         {
  36.                                 i=0;
  37.                                 IR_Done = 1;
  38.                         }
  39.                 }
  40.         }        
  41. }
  42. void main()
  43. {
  44.         Timer1Init();
  45.         Timer2Init();
  46.         ET1 = 1;
  47.         ET2 = 1;
  48.         EA = 1;
  49.     while (1)
  50.     {
  51.         if(IR_Done)
  52.                 {
  53.                         u8 i;
  54.                         u16 Temp[2];
  55.                         IR_Done = 0;
  56.                         for(i=1;i<33;i++)
  57.                         {
  58.                                 Temp[(i-1)/16]<<=1;
  59.                                 if(U_THTL[i].TIME>0x0648)
  60.                                 {
  61.                                         Temp[(i-1)/16] |= 0x0001;
  62.                                 }
  63.                         }
  64.                         Disp_Buff[0] = Temp[1]>>12 & 0x0F;
  65.                         Disp_Buff[1] = Temp[1]>>8 & 0x0F;
  66.                         Disp_Buff[2] = Temp[1]>>4 & 0x0F;
  67.                         Disp_Buff[3] = Temp[1] & 0x0F;
  68.                         DispEN = 1;
  69.                 }
  70.     }
  71. }
复制代码

Timer2_IR.rar (121.11 KB, 下载次数: 78)



评分

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

查看全部评分

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

使用道具 举报

沙发
ID:648281 发表于 2022-12-22 21:34 | 只看该作者
好资料,想问下,proteus是用什么版本打开仿真
回复

使用道具 举报

板凳
ID:161164 发表于 2022-12-23 08:48 | 只看该作者
51hei**1140 发表于 2022-12-22 21:34
好资料,想问下,proteus是用什么版本打开仿真

我用的是8.13
回复

使用道具 举报

地板
ID:1055614 发表于 2024-3-13 21:07 | 只看该作者
这个遥控键码是多少啊?找不到资料
回复

使用道具 举报

5#
ID:161164 发表于 2024-3-14 09:04 | 只看该作者
213608 发表于 2024-3-13 21:07
这个遥控键码是多少啊?找不到资料

可以一个一个试出来啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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