找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机学习型红外线遥控器(接收存储与发射源程序+原理图+PCB)

  [复制链接]
跳转到指定楼层
楼主
前言:我要黑币啊,黑币不够用!

基于51单片机学习型红外遥控器制作介绍:

     本设计思想是不考虑红外编码方式,对多个红外遥控编码的脉冲宽度进行测量,电路采用51单片机AT89S52作为主控制芯片,外围接红外接收解调器和发射机二极管以及电阻、电容构成。电路设计简单,用洞洞板就可以完成设计。

功能描述:

当按下学习键P3.2时,处于学习状态时,此时红外接收电路就开始接收外来红外信号,并将其转换为电信号,找一个电视遥控器,电视遥控器的发射头对着模块的接收头,按下任一按键,模块开始接收遥控码并存储,当学习指示灯灭,发射指示灯亮起时,学习完毕;


Altium Designer画的学习型红外线遥控器电路原理图和PCB图如下:(51hei附件中可下载工程文件)


单片机源程序如下:
  1. /*********************************************************************/
  2. //                         remote.c
  3. //                       学习型遥控器
  4. //                     使用keil c51   
  5. /*********************************************************************/
  6. //使用AT89S52单片机,12MHZ晶振,
  7. //
  8. //#pragma src(E:\remote.asm)
  9. #include"reg52.h"
  10. #include"intrins.h"     //_nop_();延时函数用
  11. //
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. //
  15. sbit  studylamp=P1^6;        //学习状态指示灯
  16. sbit  lamp=P1^7;             //发射指示灯
  17. sbit  studykey=P3^2;         //学习键(中断口)
  18. sbit  remotein=P3^4;         //遥控信号输入口
  19. sbit  remoteout=P3^5;         // 遥控输出口
  20. sbit  txkey=P1^0   ;           //发射键
  21. //
  22. //
  23. uint i,j,m=255,n,k,s;
  24. uchar idata  remotedata[206];//存肪冲宽度数据用
  25. uint   head;           //存起始位用
  26. uint   remdata;
  27. //
  28. //
  29. ////
  30. /*********1毫秒延时程序**********/
  31. delay1ms(uint t)
  32. {
  33. for(i=0;i<t;i++)
  34.    for(j=0;j<120;j++)
  35.    ;
  36. }
  37. //
  38. //
  39. /***********初始化函数**********/
  40. clearmen()
  41. {
  42. studylamp=0;           //关学习灯
  43. lamp=0;                //关发射指示
  44. remoteout=0;           //关遥控输出
  45. remotein=1;            //
  46. for(i=0;i<206;i++)     //清内存
  47. {remotedata[i]=0x00;}
  48. IE=0x00;
  49. IP=0x01;
  50. TMOD=0x22;             //8位自动重装模式
  51. PCON=0X00;
  52. TH1=0xf3;              //40KHZ初值
  53. TL1=0xf3;
  54. IT0=1;
  55. EX0=1;                //外中断允许
  56. EA=1;                 //开总中断
  57. }
  58. //
  59. //
  60. /**********键功能函数************/
  61. keywork()
  62. {
  63. if(txkey==0)
  64. {
  65.     while(txkey==0);     //等待键释放
  66.     ET1=1;TR1=1;         //发起始位
  67.     for(i=head;i>0;i--){;}
  68.         remoteout=0;ET1=0;TR1=0;
  69.         n=0;
  70.         while(1)
  71.         {
  72.       if(remotedata[n]==0x00){delay1ms(10);break;}//数据为0结束
  73.           for(i=remotedata[n];i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
  74.           lamp=~lamp;n++;//偶地址不发脉冲
  75. //
  76.           ET1=1;TR1=1;  //奇地址发调制脉冲
  77.       for(i=remotedata[n];i>0;i--){;}
  78.           remoteout=0;ET1=0;TR1=0;n++;
  79.         }
  80.   }
  81. }
  82. //
  83. //
  84. /***********主函数***************/
  85. main()
  86. {
  87. clearmen();          //初始化
  88. while(1)
  89. {
  90.   keywork();       //按键扫描
  91.   }
  92. }
  93. //
  94. //
  95. /*********40KHZ发生器***********/
  96. //定时中断T1
  97. void time_intt1(void) interrupt 3
  98. {
  99. remoteout=~remoteout;
  100. }
  101. //
  102. //
  103. /***********学习函数 ***********/
  104. //外中断0
  105. void intt0(void) interrupt 0
  106. {
  107. ET1=0;TR1=0;EX0=0;EA=0;
  108. head=0;studylamp=1;lamp=0;
  109. while(studykey==0);           //等待键释放
  110. while(remotein==1);           //等待遥控码输入
  111. head=0;                       //读入起始位
  112. while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();head++;}
  113. n=0;remdata=0x0000;
  114. while(1)
  115.          {
  116.        while(remotein==1){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}
  117.            if(remdata>m)                  //高电平>5毫秒退出
  118.            {remotedata[n]=0x00;EX0=1;EA=1;goto end;}
  119.            remotedata[n]=remdata;n++;     //存高电平脉宽数据
  120.        remdata=0x0000;                  //脉宽计数器清零
  121.            while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}  //低电平计数
  122.            remotedata[n]=remdata;n++;remdata=0x00;//存低电平脉宽数据
  123.           }
  124. end: lamp=1;studylamp=0;
  125. }
  126. //
  127. //*********************结束**************************//
复制代码

所有资料51hei提供下载:
学习型红外线遥控器.zip (539.5 KB, 下载次数: 327)


评分

参与人数 4黑币 +121 收起 理由
dzbj + 4 感谢分享
CAD板 + 6 楼楼看一下R7连接哪里呢
zqy181818 + 11 很给力!
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:419018 发表于 2018-11-16 09:20 | 只看该作者
请教楼主,这个程序是学习一个按键的吗?如果学习多个按键(比如8个),程序和电路如何改,请指教。
回复

使用道具 举报

板凳
ID:419018 发表于 2018-11-16 09:23 | 只看该作者
菜鸟请教大师们:此程序是只学习一个按键吗?如果设置多个按键,程序和电路如何改?
回复

使用道具 举报

地板
ID:303383 发表于 2018-11-16 09:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
ID:182535 发表于 2019-3-11 23:31 | 只看该作者
正好需要这个东西
回复

使用道具 举报

6#
ID:489442 发表于 2019-3-13 17:17 | 只看该作者
极强,这篇文章是非常有参考价值的
回复

使用道具 举报

7#
ID:499283 发表于 2019-3-27 21:31 | 只看该作者
楼主能看到吗?如果看到请说一下原理图中R7连接哪里?
回复

使用道具 举报

8#
ID:217448 发表于 2019-4-27 09:37 | 只看该作者
非常好的东西,学习啦
回复

使用道具 举报

9#
ID:217448 发表于 2019-4-27 09:37 | 只看该作者
好东西,学习啦,谢谢
回复

使用道具 举报

10#
ID:73182 发表于 2019-4-27 14:47 | 只看该作者
感谢分享
回复

使用道具 举报

11#
ID:375715 发表于 2019-4-27 19:34 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
ID:266802 发表于 2019-5-9 19:31 | 只看该作者
楼主,您的那个原理图有一部分和pcb不符合啊,那个电阻R7没有连到单片机的第9引脚,而pcb却连上了
回复

使用道具 举报

13#
ID:143122 发表于 2019-5-27 17:29 | 只看该作者
学习学习学习!!!!!
回复

使用道具 举报

14#
ID:565144 发表于 2019-6-17 22:57 | 只看该作者
学习一波,好好研究一番
回复

使用道具 举报

15#
ID:243394 发表于 2019-6-22 17:48 | 只看该作者
谢谢分享
回复

使用道具 举报

16#
ID:377251 发表于 2019-8-27 14:29 | 只看该作者
哈哈 是哪个芯片呢
回复

使用道具 举报

17#
ID:412391 发表于 2019-9-19 15:35 | 只看该作者
非常好的东西,学习啦
回复

使用道具 举报

18#
ID:293063 发表于 2020-2-16 19:42 | 只看该作者
插眼
回复

使用道具 举报

19#
ID:747044 发表于 2020-5-11 15:56 | 只看该作者
很好的分享!谢谢!
回复

使用道具 举报

20#
ID:128463 发表于 2020-5-11 21:15 | 只看该作者

谢谢分享!!
回复

使用道具 举报

21#
ID:762282 发表于 2020-5-27 10:48 | 只看该作者
有非常大的参考价值
回复

使用道具 举报

22#
ID:302325 发表于 2020-6-1 02:01 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

23#
ID:1104796 发表于 2023-12-18 07:20 | 只看该作者
2018my2018 发表于 2018-11-16 09:23
菜鸟请教大师们:此程序是只学习一个按键吗?如果设置多个按键,程序和电路如何改?

不会啊。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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