51单片机编码控制315无线模块传送指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无线电编码程序设计思想
该项目利用单通道无线电实现了多路遥控功能。遥控距离100m左右。
单通道无线电路若想实现多路遥控,必须对无线电进行编码,该项目利用单片机进行编解码,实现了16路无线电控制。在进行无线电编码前必须先定义一个协议规则。
现定义如下:
下降沿:1ms的高电平,随后500us的低电平。v0
起始位:4ms的高电平,随后4ms的低电平。v2
数据1:2ms的高电平,随后500us的低电平。v1
数据0:1ms的高电平,随后500us的低电平。v3
结束位:4ms的低电平。
以上就是通信协议规则,只要无线电收发双方都遵循该协议规则,则实现对小车的多路控制将非常容易。
//发射模块c程序
#include
#define uchar unsigned char
sbit key0=P3^4;
sbit key1=P3^5;
sbit key2=P3^6;
sbit key3=P3^7;
sbit TX=P2^0;
uchar m;
void v0();
void v1();
void v2();
void v3();
void delay_315();
void main()
{
uchar i;
bit dong=0; //开定时器0中断
TMOD=0X01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
TX=0;
while(1) //发送指令0
{
if(key0==0)
{
delay_315();
while(key0==0){v3();v2();v0();v0();v0();m=0;while(m<40);}
dong=1;
}
if(key1==0) //发送指令1
{
delay_315();
while(key1==0){v3();v2();v0();v0();v1();m=0;while(m<40);}
dong=1;
}
if(key2==0)
{
delay_315();
while(key2==0){v3();v2();v0();v1();v0();m=0;while(m<40);}
dong=1;
}
if(key3==0)
{
delay_315();
while(key3==0){v3();v2();v0();v1();v1();m=0;while(m<40);}
dong=1;
}
if(dong==1)
{
dong=0;
for(i=0;i<5;i++){v3();v2();v1();v0();v0();m=0;while(m<40);} }
}
}
void timer0() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
m++;
TF0=0;
}
void v0() // 1MS高电平500us低电平{
m=0;
while(m<10)
TX=1;
m=0;
while(m<5)
TX=0;
}
void v1() // 2MS高电平500us低电平{
m=0;
while(m<20)
TX=1;
m=0;
while(m<5)
TX=0;
}
void v2() // 4MS高电平4ms低电平
{
m=0;
while(m<40)
TX=1;
m=0;
while(m<40)
TX=0;
}
void v3() // 1MS高电平500us低电平{
m=0;
while(m<10)
TX=1;
m=0;
while(m<5)
TX=0;
}
void delay_315()
{
uchar i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
//接收程序
#include"reg52.h"
#define uchar unsigned char
sbit RX=P3^3;
sbit red0=P0^0;
sbit red1=P0^1;
sbit red2=P0^2;
sbit red3=P0^3;
sbit red4=P0^4;
uchar m;
bit n;
void main()
{
uchar a,b,c,p,x,y; //定义存取的数据
TMOD=0X01;
TH0=(65536-100)/256; //开定时器0
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
EX1=1;
IT1=1;
P0=0XFF;
p=5;
x=0;