桁车无线自动遥控装置的设计2.docx
- 文档编号:28056064
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:21
- 大小:117.76KB
桁车无线自动遥控装置的设计2.docx
《桁车无线自动遥控装置的设计2.docx》由会员分享,可在线阅读,更多相关《桁车无线自动遥控装置的设计2.docx(21页珍藏版)》请在冰豆网上搜索。
桁车无线自动遥控装置的设计2
附录
附录A1无线遥控发射电路
附录A1无线遥控发射电路
附录A2无线遥控接收电路
附录A2无线遥控接收电路
附录A3电机驱动电路
图附录A3直流电机驱动电路
A4发射端PCB
发射部分PCB图
A5接收端PCB
接收部分PCB图
A6电机控制部分原理图
电机控制部分PCB图
A6程序清单
发送部分程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitdong=P1^0;
sbitxi=P1^1;
sbitnan=P1^2;
sbitbei=P1^3;
sbitsheng=P1^4;
sbitjiang=P1^5;
sbitting=P1^6;
sbitkai=P1^7;
sbitD0=P2^0;
main();
bitsend_flag=0;
uintgvalue=0;
uintsum=0;
uinttime=0;
uintData[10]={0x0a,0x09,0,0,0,0,0,0,0,0x0f};
voidinit_timer(void);
voidInit(void);
voidScanKey(void);
voidsend_data(void);
//主函数
voidmain()
{
Init();
while
(1)
{
ScanKey();
send_data();
}
}
//定时器初始化、数据初始化
voidinit_timer(void)
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
EA=1;
}
voidInit(void)
{
init_timer();
dong=0;
xi=0;
nan=0;
bei=0;
sheng=0;
jiang=0;
ting=0;
kai=0;
}
//按键扫描
voidScanKey(void)
{
if(dong==1)
{
Data[2]=0x0b;
gvalue=0011;
}
if(xi==1)
{
Data[2]=0x0c;
gvalue=0101;
}
if(nan==1)
{
Data[2]=0x0d;
gvalue=0110;
}
if(bei==1)
{
Data[2]=0x0e;
gvalue=1001;
}
if(sheng==1)
{
Data[2]=0x05;
gvalue=1010;
}
if(jiang==1)
{
Data[2]=0x07;
gvalue=1100;
}
if(ting==1)
{
Data[2]=0x0a;
gvalue=1010;
}
if(kai==1)
{
Data[2]=0x09;
gvalue=1010;
}
}
//发送数据帧的组装
zu_data(uintgvalue)
{
uinti=0,swei=0;
for(i=6;i>=3;i--)
{
swei=gvalue%10;
Data[i]=swei;
gvalue=gvalue/10;
}
for(i=0;i<7;i++)
{
sum=sum+Data[i];
}
for(i=8;i>=7;i--)
{
Data[i]=sum%10;
sum=sum/10;
}
sum=0;
}
//发送数据
voidsend_data(void)
{
uintu;
if(send_flag==1)
{
EA=0;
if(!
(gvalue==0))
{
zu_data(gvalue);
if(u<10)
{
D0=Data[u]/2;
Ds=Data[u]/4;
D1=Data[u]/8;
D2=Data[u]/16;
D3=Data[u]/32;
u++;
}
else
{
u=0;
gvalue=0;
}
}
send_flag=0;
EA=1;
}
}
//定时中断
voidtimer_0()interrupt1
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==4)
{
time=0;
send_flag=1;
}
}
接收部分程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitD0=P2^0;
sbitDs=P2^1;
sbitD3=P0^3;
sbitENA=P1^6;
sbitENB=P1^7;
sbitIN1=P1^0;
sbitIN2=P1^1;
sbitIN3=P1^2;
sbitIN4=P1^3;
sbitU2IN1=P1^4;
sbitU2IN4=P1^5;
bitdong_flag,xi_flag,nan_flag,bei_flag,sheng_flag,jiang_flag,ting_flag,kai_flag,;
uintRec[10]={0};
uintflag=0;
uintsum=0;
uintt;
uintpwm_num=0;
uinttime_num=0;
voidInit(void);
voidreceive_data(void);
voidmanage_data(void);
voidCarAction(void);
voidmain()
{
Init();
while(!
ting_flag)
{
receive_data();
manage_data();
CarAction();
}
}
voidinit_timer(void)
{
TMOD=0x12;
TL0=0x38;
ET0=1;
TR0=1;
TH1=0x3c;
TL1=0xb0;
ET1=1;
TR1=1;
EA=1;
}
voidInit(void)
{
init_timer();
dong_flag=0;
xi_flag=0;
nan_flag=0;
bei_flag=0;
sheng_flag=0;
jiang_flag=0;
ting_flag=0;
kai_flag=0;
ENA=1;
ENB=1;
}
//接收数据
voidreceive_data(void)
{
uintD_sum=0;
uintD0_data=0;
uintDs_data=0;
D0_data=D0;
Ds_data=D1;
D_sum=D0_data+Ds_data*2;
if(D_sum==0x000a)
{
flag=1;
t=0;
}
if(flag==1)
{
Rec[t++]=D_sum;
flag=1;
}
if(Rec[t]==0x0f)
{
flag=0;
t=0;
}
}
//数据处理
voidmanage_data(void)
{
uinti;
sum=0;
for(i=0;i<7;i++)
{
sum=sum+Rec[i];
}
if((sum==(Rec[7]*10+Rec[8]))&Rec[9]==0x0f)
{
sum=0;
switch(Rec[2])
{
case0x0b:
dong_flag=1;
break;
case0x0c:
xi_flag=1;
break;
case0x0d:
nan_flag=1;
break;
case0x0e:
bei_flag=1;
break;
case0x05:
sheng_flag=1;
break;
case0x07:
jiang_flag=1;
break;
case0x07:
ting_flag=1;
break;
case0x07:
kai_flag=1;
break;
}
}
}
//小车运动
voidCarAction(void)
{
if(dong_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN1=1;
IN4=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
}
if(xi_flag==1)
{
IN1=0;
IN4=0;
if(pwm_num==70)
{
IN2=1;
IN3=1;
}
if(pwm_num==100)
{
IN2=0;
IN3=0;
pwm_num=0;
}
}
if(nan_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN4=1;
}
if(pwm_num==50)
{
IN1=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
}
if(sheng_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN1=1;
}
if(pwm_num==50)
{
IN4=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
if(jiang_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN1=1;
}
if(pwm_num==50)
{
IN4=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
if(ting_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN1=1;
}
if(pwm_num==50)
{
IN4=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
if(bei_flag==1)
{
IN2=0;
IN3=0;
if(pwm_num==20)
{
IN1=1;
}
if(pwm_num==50)
{
IN4=1;
}
if(pwm_num==100)
{
IN1=0;
IN4=0;
pwm_num=0;
}
}
voidtimer_1()interrupt3
{
TH0=0x3c;
TL0=0xb0;
time_num++;
if(time_num==4)
{
dong_num=0;
xi_flag=0;
nan_flag=0;
bei_flag=0;
sheng_flag=0;
jiang_flag=0;
sting_flag=0;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 自动 遥控装置 设计