找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机红外遥控点灯程序

  [复制链接]
跳转到指定楼层
楼主
程序绝对行的。ok的
我也是花了一两才弄懂得红外遥控原理还要解码的
本人有着”我为人人,人人为我“的精神

制作出来的实物图如下:


单片机源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. /*端口定义*/
  5. sbit led1=P1^0;
  6. sbit led2=P1^1;
  7. sbit led3=P1^2;
  8. sbit led4=P1^3;
  9. sbit led5=P1^4;//发光二极管控制端定义

  10. unsigned char irtime;//红外用全局变量
  11. bit irpro_ok,irok;
  12. unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码
  13. unsigned char irdata[33];//用来存放32位码值

  14. void tim0_isr()interrupt 1 using 1//定时器0中断服务函数
  15. {
  16.         irtime++;
  17. }

  18. void ex0_isr()interrupt 0 using 0//外部中断0服务函数
  19. {
  20.         static unsigned char i;
  21.         static bit startflag;
  22.         if(startflag)
  23.         {
  24.                 if(irtime<63&&irtime>=33)//引导码TC9012的头码
  25.                 i=0;
  26.                 irdata[i]=irtime;
  27.                 irtime=0;
  28.                 i++;
  29.                 if(i==33)
  30.                 {
  31.                         irok=1;
  32.                         i=0;
  33.                 }
  34.         }
  35.         else{irtime=0;startflag=1;}
  36. }

  37. void TIM0init()//定时器0初始化
  38. {
  39.         TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
  40.         TH0=0x00;//reload value
  41.         TL0=0x00;//initial value
  42.         ET0=1;//开总中断
  43.         TR0=1;
  44. }
  45. void EX0init()
  46. {
  47.         IT0=1;//Configure interrupt 0 for falling edge on/INT0(P3.2)
  48.         EX0=1;//Enable EX0 Interrupt
  49.         EA=1;
  50. }////////////////////////////////////////////////////////////////////////
  51. void Ircordpro()//红外码值处理函数(关键函数)
  52. {
  53.         unsigned char i,j,k=1;
  54.         unsigned char cord,value;

  55.         for(i=0;i<4;i++)
  56.         {/////////////////////处理4个字节
  57.                 for(j=1;j<=8;j++)
  58.                 {//////////////////处理1个字节8位
  59.                         cord=irdata[k];
  60.                         value=value>>1;
  61.                         if(cord>7)value=value|0x80;//大于某值为1
  62.                         k++;
  63.                 }
  64.                 IRcord[i]=value;
  65.                 value=0;
  66.         }
  67.         irpro_ok=1;//处理完毕标志位置1
  68. }

  69. void main()
  70. {
  71.         EX0init();//Enable GlobaI Interrupt Flag
  72.         TIM0init();
  73.         while(1)
  74.         {
  75.                 if(irok)
  76.                 {
  77.                         Ircordpro();
  78.                         irok=0;
  79.                 }
  80.                 if(irpro_ok)//遥控成功接收
  81.                 {
  82.                         switch(IRcord[2])
  83.                         {
  84.                                
  85.                                         case 0x19:led1=0;break;  //(0)
  86.                 case 0x40:led5=0;break;  //(5)
  87.                 case 0x47:led3=0;break;  //按关机键,灯全灭(6)
  88.                 case 0x44:led4=0;break;  //(4)
  89.                 case 0x45:led1=0;break;  //(1)
  90.                 case 0x46:led2=0;break;  //(2)


  91.                 case 0x43: P1=0xff;break;//(3)
  92.                         }
  93.                 }
  94.         }
  95. }
复制代码

所有资料51hei提供下载:
51单片机红外遥控点灯程序.7z (192.97 KB, 下载次数: 198)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:282091 发表于 2020-4-12 07:32 来自手机 | 只看该作者
你好,红外引脚定义是哪个!
回复

使用道具 举报

板凳
ID:699194 发表于 2020-4-15 22:10 | 只看该作者
huigo1822 发表于 2020-4-12 07:32
你好,红外引脚定义是哪个!

红外引脚是 P3^2
回复

使用道具 举报

地板
ID:282091 发表于 2020-4-17 02:03 来自手机 | 只看该作者
我叫小大打 发表于 2020-4-15 22:10
红外引脚是 P3^2

哦!怎么没定义出来呢?还有我解码出来00 FF 02 FD要怎么用这个来控制开关呢?小白不懂望指教!谢谢
回复

使用道具 举报

5#
ID:699194 发表于 2020-4-22 21:59 | 只看该作者
huigo1822 发表于 2020-4-17 02:03
哦!怎么没定义出来呢?还有我解码出来00 FF 02 FD要怎么用这个来控制开关呢?小白不懂望指教!谢谢

????你说说你的问题哈
回复

使用道具 举报

6#
ID:89072 发表于 2020-4-23 11:49 | 只看该作者
huigo1822 发表于 2020-4-17 02:03
哦!怎么没定义出来呢?还有我解码出来00 FF 02 FD要怎么用这个来控制开关呢?小白不懂望指教!谢谢

http://www.51hei.com/bbs/dpj-184729-1.html
看一下我的帖子,详细介绍的红外案例
回复

使用道具 举报

7#
ID:734389 发表于 2020-4-23 23:09 | 只看该作者
程序对我们初学者很有用,但是有问题呀1-5只能开,不能关,要6能关却不能开。你能搞P0--P7定义1-7键,8、9、0上下左右OK键设P20--P27.米或井全开全关吗,谢谢
回复

使用道具 举报

8#
ID:699194 发表于 2020-4-25 13:36 | 只看该作者
lmnb2678202 发表于 2020-4-23 23:09
程序对我们初学者很有用,但是有问题呀1-5只能开,不能关,要6能关却不能开。你能搞P0--P7定义1-7键,8、9 ...

可以全部搞的啊,我就是弄几个简单的而已啊
回复

使用道具 举报

9#
ID:734389 发表于 2020-4-25 21:42 | 只看该作者
我叫小大打 发表于 2020-4-25 13:36
可以全部搞的啊,我就是弄几个简单的而已啊

我搞了下,但是乱跳码,你改的程序看下被,交流下
回复

使用道具 举报

10#
ID:699194 发表于 2020-4-25 21:51 | 只看该作者
lmnb2678202 发表于 2020-4-25 21:42
我搞了下,但是乱跳码,你改的程序看下被,交流下

你可能红外取码错误了
回复

使用道具 举报

11#
ID:618097 发表于 2020-4-26 15:50 | 只看该作者
这个和红外接收器有没有关系,我用的VS1838,和CHR1838,晶振12M都不行
回复

使用道具 举报

12#
ID:699194 发表于 2020-4-26 22:33 | 只看该作者
a2910983970 发表于 2020-4-26 15:50
这个和红外接收器有没有关系,我用的VS1838,和CHR1838,晶振12M都不行

我的红外型号是:HX1838。最好是用同一个型号的,要不然你得自己改程序哈
回复

使用道具 举报

13#
ID:899579 发表于 2021-4-14 16:33 | 只看该作者
有protues电路图吗
回复

使用道具 举报

14#
ID:899579 发表于 2021-4-14 16:43 | 只看该作者
有没有电路图
回复

使用道具 举报

15#
ID:699194 发表于 2021-6-14 15:13 | 只看该作者

没有的
回复

使用道具 举报

16#
ID:965189 发表于 2021-10-9 17:53 | 只看该作者
我看看能不能利用。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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