1、智能小车源代码#includenclde #incudlcd、hsbit TX=P;si RXP26;sbit PWM=14;sb ep37;sitled=P;sbit led2=P34;st led=P5;/*蓝牙切换按键*/bitk1=P36;/*自定义一些数据,注意这些数据对应“51智能车蓝牙无线遥控、exe”软件上得数据设置*/#defin ledat 0x1#defin rghdata#dfie forwaddt 0x3#defin acata 0x44#definesopata x55#efine uchar unsignedhar#define it usignedintusin
2、ed chr eceta,hh_elsy,lowvlsiy;id UsartConfiguio();/*电机端口定义*/sitI1=P0; 为高电平时,左电机后转 sbi INP11; 为高电平时,左电机正转sbi IN3=P1; /为高电平时,右电机正转sitI4=P13; /为高电平时,右电机后转/*无线遥控模块定义*/sbiKey_A= 20; /B键信号端 对应0bt eB= P2; /D键信号端 对应D1sbtKey_ P22; /C键信号端 对应D2bit Ky_ =P3; 键信号端voi dey0(int a);viddelays(vid);vod elay1m(int );vo
3、di();蜂鸣器函数声明unied int ime;/用于存放定时器时间值unign in S; /用于存放距离得值char lag =0; /量程溢出标志位har 1,f2,f,n0;it a;int n;/运行次数判断标志in slet,s_iht;voi Dly10us(unsigndcar i) unigecha j; do = 10; d _op(); while(-j); hil(-i); /* /*电机程序*/*void lop() IN; /左电机 N2=0; IN1;/右电机 IN=0;void runron() 1=1;/左电机 IN20; IN3=0;右电机 IN41;/
4、小车后退函数vid runback() IN=0;/左电机 N2=1; N31;/右电机 IN4=;/小车左转void rnlft() IN1=; /左电机 IN2=0;IN=0;/右电机 4=1;/小车右转vunrit() IN11;/左电机 0; 3=0;/右电机 IN=0;/小车左后转/void rbcleft()/ IN1=0; /左电机/ IN=0; N;/右电机/ IN=1;/小车右后转/vid rnbackright()/ IN1=1;/左电机/ N2=;/ I30;右电机/ IN4=0;/小车停止函数vodstop() IN10;/左电机 I0; I3=0;/右电机 IN40;
5、/*/ /*蓝牙程序*/*/voi ela(unsgnd it a) nigneint b; r(;a;a-) for(b=3;0;b-);/左电机转voi efttor_runfrot(unsined a) I11;/左电机 I2=; dla(a); IN=0; N=; dela(100-a); voirigt_mtor_rufront(usigndn a) IN3=; /右电机 N41; dlay(a); IN3=0; N=; dlay(00-a); vid left_mtor_ak(unsigned inta) IN10; /左电机 I2=1; dey(a); IN1=; 2=; del
6、ay(100-a); id rigtmot_bak(uednta) IN3=1;/右电机 I=0; delay(); IN3=0; 4;dely(100-a); voi tmtor_sop() IN1=0;/左电机 IN2=0; voi ighttr_sto() IN=0;/左电机 N=0; /WM调速voi PW_RUNFRNT(unsignd int a,ngne int ) /a属于0 left_motrrufnt(a); ight_moor_rufn(b);vod PW_RUNAC(unned in a,unindint b) /a属于000 let_motr_bac(a); ight
7、motorback(b);oidMRUNLEFT(nsigndint )属于010 rht_motounfon(a); left_mor_top();vidPWMRUNRGHT(une inta) /a属于000 rght_motor_stop(); left_oto_unfront(a);bestop() left_otor_sto(); rih_moto_stop(); voidUsarConiguratn()SCON=50; /设置为工作方式1TMO=MOD|0x21; /设置计数器工作方式2 O=0X; /波特率加倍T10FA; /计数器初始值设置,注意波特率就是800得 T1XA;E
8、S=1; /打开接收中断 A=1;/打开总中断TR1=1; T0=0; TL0=0; ET=1; /打开计数器* 函数名 :Dely(niedint i)* 函数功能 : 延时函数* 输入 : 无* 输出 : 无*/voi Usart()iterrupt 4recevDt=SU;/出去接收到得数据RI 0;/清除接收中断标志位 if(ivData=6) lvlosty1; ighveoiy0;/ rite(0x80); i(receiveDat=077) loveosty=; igh_eloity=;/*/ /*舵机程序*/*/id delax(int) car ; fr(;t0;t-) or(j19;j;j-);void dege0()int i; fo(i=0;i0;+) PWM=; dely(10);/1 P0; dlyx(90);/19msvod dege()inti;or(i=0;i;i+) PW=1; deayx();/W=0; dela(3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1