智能小车源代码Word下载.docx

上传人:b****6 文档编号:16241632 上传时间:2022-11-21 格式:DOCX 页数:16 大小:17.35KB
下载 相关 举报
智能小车源代码Word下载.docx_第1页
第1页 / 共16页
智能小车源代码Word下载.docx_第2页
第2页 / 共16页
智能小车源代码Word下载.docx_第3页
第3页 / 共16页
智能小车源代码Word下载.docx_第4页
第4页 / 共16页
智能小车源代码Word下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

智能小车源代码Word下载.docx

《智能小车源代码Word下载.docx》由会员分享,可在线阅读,更多相关《智能小车源代码Word下载.docx(16页珍藏版)》请在冰豆网上搜索。

智能小车源代码Word下载.docx

sbitKey_A=P2^0;

//B键信号端对应D0

sbitKey_B=P2^1;

//D键信号端对应D1

sbitKey_C=P2^2;

//C键信号端对应D2

sbitKey_D=P2^3;

//C键信号端

voiddelay0(inta);

voiddelay15us(void);

voiddelay1ms(intz);

voiddi();

//蜂鸣器函数声明

unsignedinttime;

//用于存放定时器时间值

unsignedintS;

//用于存放距离的值

charflag=0;

//量程溢出标志位

charf1,f2,f3,f4,n0;

inta;

intn;

//运行次数判断标志

ints_left,s_right;

voidDelay10us(unsignedchari)

{

unsignedcharj;

do{

j=10;

_nop_();

}while(--j);

}while(--i);

}

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

/*****************电机程序********************/

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

voidloop()

{

IN1=1;

//左电机

IN2=0;

IN3=1;

//右电机

IN4=0;

}

voidrunfront()

IN3=0;

IN4=1;

//小车后退函数

voidrunback()

IN1=0;

IN2=1;

//小车左转

voidrunleft()

//小车右转

voidrunright()

////小车左后转

//voidrunbackleft()

//{

//IN1=0;

//IN2=0;

//IN3=0;

//IN4=1;

//}

////小车右后转

//voidrunbackright()

//IN1=1;

//IN4=0;

//小车停止函数

voidstop()

/***********蓝牙程序************/

voiddelay(unsignedinta)

unsignedintb;

for(;

a>

0;

a--)

for(b=3;

b>

b--);

//左电机转

voidleft_motor_runfront(unsignedinta)

delay(a);

delay(100-a);

voidright_motor_runfront(unsignedinta)

voidleft_motor_back(unsignedinta)

voidright_motor_back(unsignedinta)

voidleft_motor_stop()

voidright_motor_stop()

//PWM调速

voidPWM_RUNFRONT(unsignedinta,unsignedintb)//a属于0~100

left_motor_runfront(a);

right_motor_runfront(b);

voidPWM_RUNBACK(unsignedinta,unsignedintb)//a属于0~100

left_motor_back(a);

right_motor_back(b);

voidPWM_RUNLEFT(unsignedinta)//a属于0~100

right_motor_runfront(a);

left_motor_stop();

voidPWM_RUNRIGHT(unsignedinta)//a属于0~100

right_motor_stop();

voidbluestop()

left_motor_stop();

right_motor_stop();

voidUsartConfiguration()

SCON=0X50;

//设置为工作方式1

TMOD=TMOD|0x21;

//设置计数器工作方式2

PCON=0X80;

//波特率加倍

TH1=0XFA;

//计数器初始值设置,注意波特率就是4800的

TL1=0XFA;

ES=1;

//打开接收中断

EA=1;

//打开总中断

TR1=1;

TH0=0;

TL0=0;

ET0=1;

//打开计数器

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

*函数名:

Delay(unsignedinti)

*函数功能:

延时函数

*输入:

*输出:

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

voidUsart()interrupt4

receiveData=SBUF;

//出去接收到的数据

RI=0;

//清除接收中断标志位

if(receiveData==0x66)

{

low_velosity=1;

high_velosity=0;

//write_com(0x80);

}

if(receiveData==0x77)

low_velosity=0;

high_velosity=1;

/***********舵机程序************/

voiddelayx(intt)

charj;

t>

t--)

for(j=19;

j>

j--);

voiddegree0()

inti;

for(i=0;

i<

10;

i++)

PWM=1;

delayx(10);

//1ms

PWM=0;

delayx(390);

//19ms

voiddegree90()

delayx(24);

//50

delayx(376);

//18、5ms

voiddegree180()

15;

delayx(40);

//1、5ms

delayx(360);

/**************超声波程序**************/

/****A键被按下后,前进*****/

voidCount1(void)

time=TH1*256+TL1;

TH1=0;

TL1=0;

S=(time*1、7)/100;

n++;

if(S<

=30&

&

n==1)

{

led1=0;

stop();

degree0();

di();

if(S>

30&

n==1)

led1=1;

runfront();

n=0;

if(n==2)

s_left=S;

degree180();

if(n==3)

s_right=S;

degree90();

//标志位清零

if(s_left>

s_right)

{

led2=1;

delay1ms(50);

led2=0;

runright();

delayx(1250);

}

else

led3=1;

delay(800);

led3=0;

delay(500);

runleft();

/********超声波高电平脉冲宽度计算程序***************/

voidTimer_Count(void)

//开启计数

while(RX);

//当RX为1计数并等待

TR1=0;

//关闭计数

//Count1();

//计算

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

voidStartModule()//启动模块

TX=1;

//启动一次模块

Delay10us

(2);

TX=0;

/********************主程序*******************/

voidmain(void)

UsartConfiguration();

while

(1)

if(k1==0&

n0==0)

delay1ms(20);

if(k1==0)

{

n0++;

}

}

elseif(k1==0&

n0==1)

n0--;

if(n0==0)

if(Key_B==0&

Key_D==0&

Key_C==0&

Key_A==1)//A键被按下

f1=1;

f2=0;

f3=0;

f4=0;

elseif(Key_A==0&

Key_B==1&

Key_C==0)//B键被按下

f1=0;

f2=1;

elseif(Key_B==0&

Key_A==0&

Key_C==1)//C键被按下

{

f3=1;

elseif(Key_D==1&

Key_B==0&

Key_C==0)//D键被按下

f4=1;

if(f1)

StartModule();

for(a=951;

if(RX==1)

{

Timer_Count();

Count1();

}

if(f2)

runback();

if(f3)

loop();

if(f4)

stop();

if(n0==1)

if(low_velosity)

switch(receiveData)

caseleftdata:

PWM_RUNLEFT(30);

break;

caserightdata:

PWM_RUNRIGHT(30);

caseforwarddata:

PWM_RUNFRONT(64,70);

casebackdata:

PWM_RUNBACK(64,70);

casestopdata:

bluestop();

if(high_velosity)

PWM_RUNLEFT(50);

PWM_RUNRIGHT(50);

PWM_RUNFRONT(94,100);

PWM_RUNBACK(94,100);

stop();

/*****************蜂鸣器*********************/

voiddi()

150;

Beep=1;

delay0(20);

Beep=0;

voiddelay0(inta)

inti;

for(i=a;

i>

0;

i--)

for(j=200;

j>

j--);

voiddelay1ms(intz)//延时1ms

intx,y;

for(x=z;

x>

x--)

for(y=110;

y>

y--);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1