/***************************************************
小车接收语音模块命令,完成相应指令
***************************************************/
#include<reg51.h>
#include<intrins.h>
#define FOSC 11059200L
#define BAUD 57600 //无线通讯模块的晶振和波特率
#define uchar unsigned char //uchar为无符号字节
typedef unsigned char BYTE; // BYTE为无符号字节
unsigned char received_data=0xff; //sbuf里接收到的数据变量
//右前轮
sbit rightfront_1 = P0^1;
sbit rightfront_2 = P0^2;
//左前轮
sbit leftfront_1 = P0^5;
sbit leftfront_2 = P0^6;
//右后轮
sbit rightback_1 = P1^1;
sbit rightback_2 = P1^2;
//左后轮
sbit leftback_1 = P1^3;
sbit leftback_2 = P1^4;
//控制端,右前,左前,右后,左后
sbit kong_rightfront=P0^0;
sbit kong_leftfront=P0^7;
sbit kong_rightback=P1^0;
sbit kong_leftback=P1^5;
//函数声明
void delay_long(unsigned int uiDelaylong); //延时函数
void initial_Serial(); //串口初始化
void Go_choose(); //运动方式选择
void kong_start(); //启动使能端
void kong_stop();
void run(); //前进
void stop(); //停止
void back(); //后退
void right(); //右移动
void left(); //左移动
void rightforward(); //右前斜移动
void leftforward(); //左前斜移动
void rightbackward(); //右后斜移动
void leftbackward(); //左后斜移动
void rightturn(); //右原地转圈
void leftturn(); //左原地转圈
void lateral(); //侧弧度
void left_turn(); //左转划弧
void right_turn(); //右转划弧
/*************************************
*************主函数*******************
**************************************/
void main()
{
initial_Serial(); //串口初始化
delay_long(100); //等待外围设备初始换Arduino板
while(1) //小车状态选择
{
Go_choose();
}
}
/*************串口中断函数*******************/
void Uart_Isr() interrupt 4 using 1
{
if(RI)
{
RI=0; //接收中断请求标志
received_data=SBUF; //接收到的数据放到SBUF中
}
}
/*************串口初始化*******************/
void initial_Serial()
{ SCON=0X50; //串口接收模式选择
PCON=0X80; //倍频
TMOD=0X20; //定时器工作模式选择,工作方式2,自动重装初值
TH1=TL1=-(2*FOSC/12/32/BAUD); //串口波特率57600,定时器初始值计算
TR1=1; //定时器1运行控制位
EA=1; //开总中断
ES=1; //开串口中断
}
/*************延时函数*******************/
void delay_long(unsigned int uiDelayLong)
{
unsigned int i;
unsigned int j;
for(i=0;i<uiDelayLong;i++)
{
for(j=0;j<500;j++) //内嵌循环的空指令数量
{
; //一个分号相当于执行一条空语句
}
}
}
/*********运动方式选择*******/
void Go_choose()
{
//上下左右————前进,后退,左转,右转 //左摇杆
if(received_data==0x61)
{
kong_start();
run();
}
if(received_data==0x62)
{ kong_start();
back();
}
if(received_data==0x63)
{ kong_start();
left_turn();
}
if(received_data==0x64)
{ kong_start();
right_turn();
}
//红圆 粉方 绿三————左原地,右原地,划弧
if(received_data==0x65)
{
kong_start();
leftturn();
}
if(received_data==0x66)
{ kong_start();
rightturn();
}
if(received_data==0x67)
{ kong_start();
lateral();
}
//手柄前1,2————右平移,左平移
if(received_data==0x68)
{ kong_start();
left();
}
if(received_data==0x69)
{ kong_start();
right();
}
//右摇杆上下左右————45度左前,右后,右前,左后
if(received_data==0x6a)
{
kong_start();
leftforward();
}
if(received_data==0x6b)
{ kong_start();
rightbackward();
}
if(received_data==0x6c)
{ kong_start();
rightforward();
}
if(received_data==0x6d)
{ kong_start();
leftbackward();
}
//停止判断标志
if(received_data==0x6e)
{
kong_stop();
stop();
}
}
/*********开启使能端*******/
void kong_start()
{
kong_rightfront=1;
kong_leftfront=1;
kong_rightback=1;
kong_leftback=1;
}
//*********关闭使能端*******//
void kong_stop()
{
kong_rightfront=0;
kong_leftfront=0;
kong_rightback=0;
kong_leftback=0;
}
/*******直行***************/
void run()
{
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
}
//*******后退***************//
void back()
{
//右前轮
rightfront_1 = 0;
rightfront_2 = 1;
//左前轮
leftfront_1 = 0;
leftfront_2 = 1;
//右后轮
rightback_1 = 0;
rightback_2 = 1;
//左后轮
leftback_1 = 0;
leftback_2 = 1;
}
/*******左转内侧轮慢一半***************/
void left_turn()
{
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
delay_long(10);
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左前轮
leftfront_1 = 0;
leftfront_2 = 0;
//左后轮
leftback_1 = 0;
leftback_2 = 0;
delay_long(10);
}
/*******右转内侧轮慢一半***************/
void right_turn()
{
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
delay_long(10);
//右前轮
rightfront_1 = 0;
rightfront_2 = 0;
//右后轮
rightback_1 = 0;
rightback_2 = 0;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
delay_long(10);
}
//*******右移直行***************//
void right()
{
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//左前轮
leftfront_1 = 0;
leftfront_2 = 1;
//右后轮
rightback_1 = 0;
rightback_2 = 1;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
}
//*******左移直行***************//
void left()
{
//右前轮
rightfront_1 = 0;
rightfront_2 = 1;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左后轮
leftback_1 = 0;
leftback_2 = 1;
}
//*******右移斜行***************//
void rightforward()
{
//右前轮
rightfront_1 = 1;
rightfront_2 = 0;
//左前轮
leftfront_1 = 0;
leftfront_2 = 0;
//右后轮
rightback_1 = 0;
rightback_2 = 0;
//左后轮
leftback_1 = 1;
leftback_2 = 0;
}
//*******左斜直行***************//
void leftforward()
{
//右前轮
rightfront_1 = 0;
rightfront_2 = 0;
//左前轮
leftfront_1 = 1;
leftfront_2 = 0;
//右后轮
rightback_1 = 1;
rightback_2 = 0;
//左后轮
leftback_1 = 0;
leftback_2 = 0;
}
//*******右后移斜行***************//
void rightbackward()
{
//右前轮
rightfront_1 = 0;
rightfront_2 = 0;
//左前轮
leftfront_1 = 0;
leftfront_2 = 1;
//右后轮
rightback_1 = 0;
rightback_2 = 1;
//左后轮
leftback_1 = 0;
leftback_2 = 0;
}
//*******左后斜直行***************//
void leftbackward()
{
//右前轮
rightfront_1 = 0;
rightfront_2 = 1;
//左前轮
leftfront_1 = 0;
leftfront_2 = 0;
//右后轮
rightback_1 = 0;
rightba
没有合适的资源?快使用搜索试试~ 我知道了~
ps2手柄控制麦克纳木轮小车程序
共15个文件
bak:2个
lst:2个
obj:2个
需积分: 50 59 下载量 57 浏览量
2017-11-11
20:41:51
上传
评论 11
收藏 33KB RAR 举报
温馨提示
ps2手柄控制麦克纳木轮小车程序,是用c语言写的,可以用手柄远程控制
资源推荐
资源详情
资源评论
收起资源包目录
ps2小车接收程序.rar (15个子文件)
ps2小车接收程序
ps2receive_uvproj.bak 0B
ps2receive.uvproj 13KB
ps2receive_uvopt.bak 54KB
ps2receive.OBJ 14KB
ps2receive.lnp 53B
ps2receive.hex 2KB
STARTUP.LST 14KB
ps2receive 12KB
ps2receive.LST 19KB
STARTUP.A51 6KB
ps2receive.c 9KB
ps2receive.plg 183B
ps2receive.M51 21KB
STARTUP.OBJ 749B
ps2receive.uvopt 54KB
共 15 条
- 1
资源评论
jacklass
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功