找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 5974|回复: 7
收起左侧

51单片机+315M无线控制小车

  [复制链接]
ID:124161 发表于 2016-6-3 20:29 | 显示全部楼层 |阅读模式
该项目利用单通道无线电实现了多路遥控功能。遥控距离100m左右。
单通道无线电路若想实现多路遥控,必须对无线电进行编码,该项目利用单片机进行编解码,实现了16路无线电控制。在进行无线电编码前必须先定义一个协议规则。
现定义如下:
下降沿:1ms的高电平,随后500us的低电平。
起始位:4ms的高电平,随后4ms的低电平。
数据1: 2ms的高电平,随后500us的低电平。
数据0: 1ms的高电平,随后500us的低电平。
结束位:4ms的低电平。
以上就是通信协议规则,只要无线电收发双方都遵循该协议规则,则实现对小车的多路控制将非常容易。

源代码:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. sbit key0=P3^4;
  4. sbit key1=P3^5;
  5. sbit key2=P3^6;
  6. sbit key3=P3^7;
  7. sbit TX=P2^0;

  8. uchar m;

  9. void v0();
  10. void v1();
  11. void v2();
  12. void v3();
  13. void delay_315();

  14. void main()
  15. {
  16.         uchar i;
  17.         bit dong=0;                       
  18.         TMOD=0X01;                        //开定时器0中断
  19.         TH0=(65536-100)/256;
  20.         TL0=(65536-100)%256;
  21.         EA=1;
  22.         ET0=1;
  23.         TR0=1;
  24.         TX=0;
  25.         while(1)                                                 //发送指令0
  26.         {
  27.                 if(key0==0)
  28.                 {
  29.                          delay_315();
  30.                          while(key0==0){v3();v2();v0();v0();v0();m=0;while(m<40);}
  31.                          dong=1;
  32.                 }               
  33.                                                                                                                                                                                                                                     
  34.                 if(key1==0)                //发送指令1
  35.                 {
  36.                         delay_315();
  37.                         while(key1==0){v3();v2();v0();v0();v1();m=0;while(m<40);}
  38.                         dong=1;
  39.                 }                                                       
  40.                                                                                                                                                                
  41.                 if(key2==0)
  42.                 {
  43.                         delay_315();
  44.                         while(key2==0){v3();v2();v0();v1();v0();m=0;while(m<40);}
  45.                         dong=1;                       
  46.                 }

  47.                 if(key3==0)
  48.                 {
  49.                         delay_315();
  50.                         while(key3==0){v3();v2();v0();v1();v1();m=0;while(m<40);}
  51.                         dong=1;       
  52.                 }

  53.                 if(dong==1)
  54.                 {
  55.                         dong=0;
  56.                         for(i=0;i<5;i++){v3();v2();v1();v0();v0();m=0;while(m<40);}
  57.                  }
  58.         }
  59. }


  60. void timer0() interrupt 1
  61. {
  62.         TH0=(65536-100)/256;
  63.         TL0=(65536-100)%256;
  64.         m++;
  65.         TF0=0;
  66. }


  67. void v0()                                                                 // 1MS高电平 500us低电平
  68. {
  69.         m=0;
  70.         while(m<10)
  71.         TX=1;
  72.         m=0;
  73.         while(m<5)
  74.         TX=0;
  75. }

  76. void v1()                                                         // 2MS高电平 500us低电平
  77. {
  78.         m=0;
  79.         while(m<20)
  80.         TX=1;
  81.         m=0;
  82.         while(m<5)
  83.         TX=0;       
  84. }

  85. void v2()                                                 // 4MS高电平 4ms低电平
  86. {
  87.         m=0;
  88.         while(m<40)
  89.         TX=1;
  90.         m=0;
  91.         while(m<40)
  92.         TX=0;       
  93. }

  94. void v3()                                                                // 1MS高电平 500us低电平
  95. {
  96.         m=0;
  97.         while(m<10)
  98.         TX=1;
  99.         m=0;
  100.         while(m<5)
  101.         TX=0;       
  102. }


  103. void delay_315()
  104. {
  105.         uchar i,j;
  106.         for(i=0;i<10;i++)
  107.                 for(j=0;j<110;j++);
  108. }
复制代码
0.png
压缩包全部内容下载:
315无线.zip (56.17 KB, 下载次数: 132)


评分

参与人数 1黑币 +5 收起 理由
zqy181818 + 5 赞一个!

查看全部评分

回复

举报

ID:130231 发表于 2017-3-20 19:58 | 显示全部楼层
感谢你的分享。
回复

举报

ID:64273 发表于 2018-1-4 19:58 | 显示全部楼层
谢谢你的分享
回复

举报

ID:107827 发表于 2018-12-12 17:08 | 显示全部楼层
顶楼主,正在做遥控小车,这正是我需要的,顺便问一下楼主晶振频率是多少的
回复

举报

ID:320226 发表于 2019-1-12 19:48 | 显示全部楼层
楼主  你好  可以发个电路原理图上来参考下吗
回复

举报

ID:456878 发表于 2019-1-12 21:36 | 显示全部楼层
正好想要315m的编码器,谢谢了。
回复

举报

ID:483191 发表于 2019-3-2 14:13 | 显示全部楼层
特别有用,感谢分享
回复

举报

ID:445096 发表于 2020-1-2 11:39 | 显示全部楼层
跪求电路图  感谢楼主
回复

举报

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

本版积分规则

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

Powered by 单片机教程网

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