智能小车源代码_第1页
智能小车源代码_第2页
智能小车源代码_第3页
智能小车源代码_第4页
智能小车源代码_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<r e g 5 1、Hx# i nd u de < in t r i ns、h >/ / #inc 1 ud e "led、h "sbit TX=P 2 A 7 :sbi tRX = P2A6;sbit PWM= Pl A 4;sb i t B e ep= P3人7;s b it led 1 = P 3 A 3 ;sbit led2=P34:s b i t led 3 =P 3 * 5;/* *!»«*蓝牙切换按键*I|C* * */S bit kl=P36:/“*自左义一些数据,注意这些数据对应"51智能车

2、蓝牙无线遥控、exe”软件上得数据设 置"/#defin e le f t dat a 0x1 1#defin e r i gh t data 0x22#d e fi n e forwa r dd a t a 0x3 3#defin e b ac k d ata 0x44#define s t op d ata 0 x55# d efine uchar unsigned c har#define u i n t u n signed intu n si g ned ch a r r ece i v e D a ta, h i g h_ v el o s i t y. low_v e

3、I o si t y;*电机端口定义* * *#*#* *"*/ |N1=P 1 AO:IN 2 =P"1;" IN3=P1 " 2;|N4=P1 人 3;*# *V 0 id UsartConfigu r a t io n ();/* * */ /为高电平时,左电机后转 / /为高电平时,左电机正转/为高电平时,右电机正转/为高电平时右电机后转s b itsbi t sbi t s b it /* 无线遥控模块泄义 * * * */ sbi tKey_A = PMO;。/B 键宿号端。对应 DOsbit Key_B =戸2人1;。/D键信号端。 对应D

4、Isbit Key_C =卩2人2;。/C键信号端对应D2sbitKey_D = P 2 八3;。/ / C键信号端。voi d de I a yO (int a);void delay 1 5 us (void);VOi d d elaylm s (int z ):VOi d di):/蜂鸣器函数声明unsig n ed int t ime; / /用于存放是时器时间值uncharc har f l,f2j 3 . f 4 ,n0: i n t a;int n;/运行次数判断标忠 in t s_le f t,s_ r i g ht;s ign e d in t S;/用于存放距离得值f la

5、g =0;量程溢出标志位voi dD e I a yl0u5(unsign e d ch ar i)Q un s0 do。jig n e d cha r j;= 10: do_nop_(); while(j); whil e (i);*卓*拿* * 車* * * * * *«*«* «««* /d/*»*Lf*#* *»* */ * *«* * * * *«« * 車* * «* * * Id* * * * * *«««* * *#* * * * * *&

6、#171; *«* / void Io 0 p()IN 1 = 1 ; 左电机I N2=0;0 d b 0IN3 =1;。右电机IN 4 =0;void run f ron t ()I Nl=l;./左电机IN2=0;b Q XIN3=0; / /右电机IN4 = 1;小车后退函数 vo id runback()IN 1 =0;。/左电机I N2=l;I N3=lp/右电机IN4= 0;/小车左转 void r u nl e ft ()IN1= 0 ;/左电机IN2=0;IN 3=0:。右电机I N4=l;/小车右转 void r unri g h t()iNi="/左电机

7、I N 2 =0;I N3=0;。右电机IN 4 =0;/小车左后转/void r u n b a c k left() /IN1=O: 左电机IN 2 =0;1N3 = O;4 /右电机 IN 4 =1;/小车右后转/ / V 0 id r u nbackrightO /IN1=1: /左电机I N2= 0;|N3 = 0;s / /右电机IN4=0;/)小车停止函数 VO i d stopOIN1 = O: /左电机 IN 2 =0;IN3=O:。右电机 IN4=0;j 卞 ««* »««*«*««*«

8、;* *»*«88* *«*«*»»*»* * *«*«*/*#» 蓝牙程序*»*/拿* * *«車* * 車* * * * *»* *»* * */voi d d ela y (uns i gn e d in t a)Uns igne d int b; f 0 r (: a> 0 ;a) 0 for (b=3: b >0; b-);左电机转void 1 eft_m o tor_runfro n t (unsigned i n t a)IN1

9、= "左电机IN2=O; d e la y (a);IN 1 =0;I N 2 = 0 ;dela y C 100-a);voi d rig h t_m 0 tor_ru n frontfu n sign e d i n t a)IN3=0; /右电机I N4=l;d e lay(a);IN3=0;IN4=0;d e layf 1 OO-a);*>VO id left_m o tor_ b a c k(unsigned int a)IN1=O; /左电机IN 2=1;de 1 a ya):IN1= 0 ;I N2=0 : delay (100-a) ;V o id rig h

10、t_mot o r _ba ck(uns igned i nt a)IN3=1; /右电机IN 4=0; delayf a );IN3=0;I N4= 0;del a y(100a);爪 void 1 e f t_m o tor_s t op ()INIP;。/左电机IN 2=0;“ voi d r ight_m o t o r_sto p ()IN 3=0;。/左电机I N 4 =0?b/PWM调速voi d PWM_RUNFR 0 NT(unsign e d int a, u n s i gne d int b)/ / a 属于 0 1 0 0left_mot 0 r_ru n f r o

11、 nt (a);r ight_mo t or_ru n f r o n t (b);VO i d PWM_RUN BACK(un $ i g ned in t 00a,un signed int b)/a属于0 1le f t_mot 0 r_bac k (a): b r ight_motor_back (b);V oid P W M_RUNLEFT u nsign e d inta )/ / a属于or 0 0r i g ht_moto r _ r unf r on t (a);0 left_mo t o r_ s top();void P WM_RUNR 1 GHT(u n s i gne

12、dint a)/a 属于 CT 1 00r i ght_motor_stop (); left_moto r _ r unfront(a);void b I u estopOleft_m otor_sto p (); ri s h t _moto r _stop()void Usar t Con f igurat i o n ()SCON= 0 X50:。设置为工作方式1 .TMOD = TMOD|Ox21;/设置汁数器工作方式2P CON=OX8 0 :。波特率加倍»TII1 = OXFA;=/计数器初始值设置,注意波特率就是4 800得TL1= OX fa;» ES=1

13、; 4 4/打开接收中断E A=l: 0 on " a 打开总中断TR1=1;TH 0=0;TLO=O;打开计数器ET 0 =1;./* * *# * * *“ * * * *“* *«* 車*«*函数名函数功能“输入输出:Del ay (unsig ned int i) :延时函数:无:无* * * * *« *«*«* «*« * * ««*«* * * */voi d Usart) i n terrupt 40 rece 1 v e “Rl =if(Data二SBUF;/出去接收

14、到得数据0;/淸除接收中断标志位rec e iv e Data= 0 x 6 6 )/I 0 w_V e tos i ty=l; h igh_ve 1 o s i t y=0;w rite_(0x80);i f (receiveDat a =0 x 77)low_ve I os i ty= 0 ;h igh- V elo s ity= 1;/ 拿弓F * 牛* 車車* 卓*拿*««* 車*!»* * *««* *«*«» 夫* 夬 *«*«*/* *和* 車舵机程序* * */ *»4

15、c*4t* *«*«*«*«*«* *» * *)1(拿* * /V o id dels y x(in t t)b c h ar j ;f 0 r(: t>O;t一)for (j=19: j>0 : j);void deg r e e0)0 int i;fo r(1=0: i< 1 0; i +)。PWM= 1 ;del a y X (10):/lm sPWM=0:d e I a yx ( 3 90):/19msVO i d deg r e e 9 0 ) 0 int i;0 f ori=0;i< 1 0 :

16、i+) 0 PWM=1;de 1 ayx(2 4): 5 0X PWM=0:。 delay x(376); /18、Sms void d e g r e el8 0 ()MH t i :fo r (i=0;i<l 5 ;i+)s PWM=1;delay x 40): /I、SmsPWM= 0 :0delay x360): /18. 5ms/ * * *""*»*"*"* * * *» * *#*# 拿* *«* 夬*車 * * *«*/* * * *超声波程序*/«* * * * *)|i*

17、1;« * «« * i|i#*#*«* * i|i#*«* * *« * *« * iH#*# * * * * *#*/*和* A键被按下后,前进*和床* /V oi d Count 1 (v 0 i d)t ime=TlI 1 *256+T LI: TH 1 = 0 ;TL1 = O;。S= (t i me"、7) / 1 0 0; 0 n+;if(S<=3 0 &&n= 1 )b te d 1=0:s top();degr e eO();di C):I f (S>30&&a

18、mp; n = 1 )ledl 1;0 r u nfron t ();n =0:if(n= 2)s Jeft=S;d e gree 1 8 0(); d i();0ifn=3)注_ righ t =S; degree90);di();n=0; 标志位清零 if (s_left>s_rig h t)2 I e d2=l; delay 1ms (5 0 );l e d2= 0 ;del a ylms (50);6 r u nrigh t ():X d elay x (125 0 );6 Ied3= 1 ;deldy(8 0 0) ;le d 3=O;de I a y (500); 6

19、4; ru n left ();»d e I a y X ( 1 25 0):亠/ * *超声波高电平脉冲宽度讣算程序*/ void Time r_C o u n t (void)。 开启计数-/当RX为1汁数并等待。关闭计数TR1=1:。 while ( R X):T R 1=0;/ /Countl();八八 / /计算 / *«* *««*拿*««*««*«* ««*/启动一次模块VO i d Star t M o dul e ()。启动模块TX=1; 0Delay 1 0 u s

20、(2);oTX=0;/««* *«* 車* A*««* *«* 拿*車 /*«* 拿* *主程序 */拿 * «*«*«« * * * * * * * * * * * *« * * * * * *車* «« * *«* * *«* * «*«*«*«««*«/voi d ma i n(void)UsartConfigu rati o n); wh i le(l)I f

21、 (kl=O&&nOHO )dela y 1 ms2 0 ); o if( k l=0)n 0 +:else if (k 1 =0&& n 0=l)dels y Im s ( 2 0); if(kl=0)d i f (nO= 0 )if(Key_B= = 0&&Key_D=0&& K ev_C= 0 &&Key_A= 1 )/A 键被按下ai=ljf 2 = o;f3 = 0;f4=O: di (;0“ e 1 seif(Key_A=O&& Key_D=0&&Key_B=l&

22、& Ke y_C =0)。/B 键被按下f 1=0: f 2=l;f 3 =0; f4=0;d i ();el s e i f K ey_B=0 && Key _D=0&&Key_A=0&&Key_C=l)/ / C键被按下fl=0; f 2=0; f 3= 1 ; f 4 =0; di ();else ifK e y_D=1&& Key_B=0&&K e y_A= 0 &&Key_C=0) /D 键被按下f 1 =0: f 2 = 0 ;f3=0;f4 = l;di()Ai f(fl)S t a rtM 0 du 1 e);24 f 0 r ( a =95 1 ;a>0: a -)if(RX=l)八 T i mer_Count (); Countl);"if( f 2)runb a ck():op();if (f4)stopO:i f( n 0 = I )00X i f (low_velo s ity)swit c h(rece i v eDat a )casec a se。leftdata:PWM_RUNLEFT(3 0 ); bre a k:s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论