找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于红外遥控模拟发射程序没反应的问题

[复制链接]
跳转到指定楼层
楼主
大佬们帮看一下为什么我做的小遥控运行没反应,是不是哪里接错了还是程序写错了
发射
  1. #include<reg51.h>
  2. sbit IR=P2^0;
  3. sbit k1=P1^0;
  4. sbit k2=P1^1;
  5. sbit k3=P1^2;
  6. sbit k4=P1^3;
  7. unsigned int a,b,c,d,e,f,g;
  8. unsigned char Adress_Code=0xff;
  9. void Delay8_77us()          //延时8.77us
  10. {
  11. unsigned char i;
  12. while(--i);
  13. }
  14. void IR_1r()
  15. {
  16. IR=1;
  17.    Delay8_77us();
  18. IR=0;
  19. for(a=0;a<2;a++)
  20.    Delay8_77us();
  21. }
  22. void Send_0()
  23. {
  24. for(b=0;b<21;b++)
  25.   IR_1r();
  26. for(c=0;c<64;c++)
  27.    Delay8_77us();
  28. }
  29. void Send_1()
  30. {
  31. for(c=0;c<21;c++)
  32.   IR_1r();
  33. for(d=0;d<192;d++)
  34.    Delay8_77us();
  35. }
  36. void Send_YDM()         //引导码  9ms  4.5ms
  37. {
  38. for(f=0;f<342;f++)
  39. IR_1r();
  40. for(g=0;g<513;g++)
  41. Delay8_77us();


  42. }
  43. void Send_IR(unsigned char x)  //按位发送
  44. {
  45. for(e=0;e<8;e++)
  46. {
  47.   if(x&0x01)Send_1();
  48.   else Send_0();
  49.   x>>=1;
  50. }
  51. }
  52. void go()
  53. {

  54. if(k1==0)
  55.   {
  56.    Send_YDM();
  57.    Send_IR(Adress_Code);
  58.    Send_IR(~Adress_Code);
  59.    Send_IR(0x08);
  60.    Send_IR(~0x08);
  61.    Send_0();
  62.   }
  63. }
  64. void down()
  65. {

  66.   if(k2==0)
  67.   {
  68.    Send_YDM();
  69.    Send_IR(Adress_Code);
  70.    Send_IR(~Adress_Code);
  71.    Send_IR(0x02);
  72.    Send_IR(~0x02);
  73.    Send_0();
  74.   }
  75. }
  76. void left()
  77. {

  78.   if(k3==0)
  79.   {
  80.    Send_YDM();
  81.    Send_IR(Adress_Code);
  82.    Send_IR(~Adress_Code);
  83.    Send_IR(0x04);
  84.    Send_IR(~0x04);
  85.    Send_0();
  86.   }
  87. }
  88. void right()
  89. {

  90.   if(k4==0)
  91.   {
  92.    Send_YDM();
  93.    Send_IR(Adress_Code);
  94.    Send_IR(~Adress_Code);
  95.    Send_IR(0x06);
  96.    Send_IR(~0x06);
  97.    Send_0();
  98.   }
  99. }
  100. void main()
  101. {
  102. IR=0;
  103. while(1)
  104. {
  105.   go();
  106.   down();
  107.   left();
  108.   right();
  109.   IR=0;
  110. }
  111. }
复制代码



接收
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint LowTime,HighTime,num;
  5. uchar N[4];
  6. sbit IR=P3^2;
  7. sbit k1=P3^4;
  8. sbit k2=P3^5;
  9. sbit k3=P3^6;
  10. sbit k4=P3^7;
  11. void IRjudge() interrupt 0
  12. {
  13. TMOD=0x01;
  14. EX0=0;
  15. TL0=0;
  16. TH0=0;
  17. TR0=1;
  18. while(IR==0);
  19. TR0=0;
  20. LowTime=TH0*256+TL0;
  21. if((LowTime>8500)&&(LowTime<9500)!=1)
  22. {
  23.   EX0=1;
  24.   return;
  25. }
  26. TL0=0;
  27. TH0=0;
  28. TR0=1;
  29. while(IR);
  30. HighTime=TH0*256+TL0;
  31. if((HighTime>4000)&&(HighTime<5000))
  32. {
  33.   uchar i,j;
  34.   uchar x=0;
  35.   for(i=0;i<4;i++)
  36.   {
  37.   for(j=0;j<8;j++)
  38.    {
  39.     x>>=1;
  40.     TH0=0;
  41.     TL0=0;
  42.     TR0=1;
  43.     while(IR);
  44.     TR0=0;
  45.     LowTime=TH0*256+TL0;
  46.     TH0=0;
  47.     TL0=0;
  48.     TR0=1;
  49.     while(IR);
  50.     TR0=0;
  51.     HighTime=TH0*256+TL0;
  52.     if((LowTime<360)||(LowTime>650))
  53.     return;
  54.     if((HighTime>500)&&(HighTime<650))
  55.     x=x&0x7f;
  56.     if((HighTime>1500)&&(HighTime<1800))
  57.     x=x|0x80;
  58.    }
  59.     N[i]=x;
  60.     x=0;
  61.   }
  62.   if((N[0]=~N[1])&&(N[2]=~N[3]))
  63.   {
  64.    switch(N[4])
  65.    {
  66.     case 0x02:num=0;break;
  67.     case 0x04:num=1;break;
  68.     case 0x06:num=2;break;
  69.     case 0x08:num=3;break;
  70.    }
  71. }
  72. }
  73. EX0=1;
  74. }

  75. void go()
  76. {
  77. if(num==3)
  78. {
  79.   k1=1;
  80.   k2=0;
  81.   k3=1;
  82.   k4=0;
  83. }
  84. }
  85. void left()
  86. {
  87. if(num==1)
  88. {
  89.   k1=0;
  90.   k2=1;
  91.   k3=1;
  92.   k4=0;
  93. }
  94. }
  95. void right()
  96. {
  97. if(num==2)
  98. {
  99.   k1=1;
  100.   k2=0;
  101.   k3=0;
  102.   k4=1;
  103. }
  104. }
  105. void back()
  106. {
  107. if(num==3)
  108. {
  109.   k1=0;
  110.   k2=1;
  111.   k3=0;
  112.   k4=1;
  113. }
  114. }

  115. void main()
  116. {
  117. IT0=1;
  118. EX0=1;
  119. EA=1;
  120. while(1)
  121. {
  122.   go();
  123.   left();
  124.   right();
  125.   back();
  126. }
  127. }
复制代码

FVN0]AOGAD5LN_[}35NH0X9.png (47.01 KB, 下载次数: 53)

FVN0]AOGAD5LN_[}35NH0X9.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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