wifi智能小车控制程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar Buffer =0; //从串口接收的数据

uint URTAReceivedCount=0,n=1;

uchar data Tempdatatable[5],CommandDatatable[5];//数据包

uchar serVal[2];

uint pwm[]={1120,1190,1382,1382,1382,1382,1382,1382}; //初始90度,(实际是1382.4,取整得1382)

uchar pwm_flag=0;

uint code ms0_5Con=461; //0.5ms计数(实际是460.8,取整得461)

uint code ms2_5Con=2304; //2.5ms计数

bit key_stime_ok;

sbit StatusLight=P2^0; //状态灯

sbit MainLight=P2^1; //主大灯

sbit servo0=P0^0; //舵机控制

sbit servo1=P0^1;

sbit servo2=P0^2;

sbit servo3=P0^3;

sbit servo4=P0^4;

sbit servo5=P0^5;

sbit servo6=P0^6;

sbit servo7=P0^7;

//定义智能小车驱动模块输入IO

sbit IN1 = P1^0; // 高电平1 后退(反转)

sbit IN2 = P1^1; // 高电平1 前进(正转)

sbit IN3 = P1^2; // 高电平1 前进(正转)

sbit IN4 = P1^3; // 高电平1 后退(反转)

sbit EN1 = P1^4; // 高电平使能

sbit EN2 = P1^5; // 高电平使能

/********************************************************************

* 名称: Delay_1ms()

* 功能: 延时子程序,延时时间为1ms * x

* 输入: x (延时一毫秒的个数)

* 输出: 无

***********************************************************************/

void Delay_1ms(uint i)//1ms延时

{

uchar x,j;

for(j=0;j

for(x=0;x<=148;x++);

}

void TurnOnStatusLight()

{

StatusLight=0;

}

/********************************************************************

* 名称: Send_Data()

* 功能: 向上位机传送字符

* 输入: 无

* 输出: 无

***********************************************************************/

void Send_Data(uchar type,uchar cmd,uchar dat)

{

uchar data Buffer[5];//构建数据包

uchar *p;

uint Send_Count=0;

p = Buffer;

Buffer[0]=0XFF;

Buffer[1]=type;

Buffer[2]=cmd;

Buffer[3]=dat;

Buffer[4]=0XFF;

while(1)

{

if(*p==0XFF)

{

Send_Count++; //0XFF标志统计位

}

SBUF = *p; //发送

while(!TI) //如果发送完毕,硬件会置位TI,等待发送完毕

{

_nop_();

}

p++;

TI = 0;

if(Send_Count == 2) //当统计到两次出现0XFF,则认为一个数据包发送完毕,跳出循环

{

TI = 0;

break;

}

}

}

/********************************************************************

协议规定:

包头类型位数据位数据位结束位

0XFF 0X** OX** 0X** 0XFF

各命令说明:

类型位数据位数据位功能

0X00 0X02 0X00 前进

0X00 0X01 0X00 后退

0X00 0X03 0X00 左转

0X00 0X04 0X00 右转

0X00 0X00 0X00 停止

0X01 0X01 角度舵机1

0X01 0X02 . 舵机2

0X01 0X01 . 舵机3

0X01 0X02 . 舵机4

0X01 0X01 . 舵机5

0X01 0X02 . 舵机6

0X01 0X01 . 舵机7

0X01 0X02 数据舵机8

0X02 0X01 车灯亮

0X02 0X02 车灯灭

0X03 雷达数据发送雷达数据

***********************************************************************/ /********************************************************************

* 名称: Com_Int()

* 功能: 串口中断子函数

***********************************************************************/ void Com_Int(void) interrupt 4

{

uchar temp;

ES=0; //关串口中断

RI=0; //软件清除接收中断

temp=SBUF;

if(temp==0XFF && URTAReceivedCount<3)

相关文档
最新文档