找回密码
 注册
关于网站域名变更的通知
查看: 423|回复: 2
打印 上一主题 下一主题

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-9-28 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。! N$ ^# y7 B9 W1 I  d3 X* N) v
单片机源程序如下:
9 t; X* C7 H6 [; O; T1 b#include <msp430.h>
5 i7 n& W4 ]6 w, M, Y# \$ F1 C. E) k#include<msp430f5529.h>) \& D, Q% [( D# \9 o. ^! f0 G
#include <USER/driverlib.h>
0 j8 h5 N! k$ D& c#include "USER/gpio.h"% _  r: U, ]8 v4 K' v4 v+ w8 ?
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ, Y, S& h: Y1 \1 X6 O: v9 F8 F
#define delay_us(x) __delay_cycles((long)x)
0 X' g/ W8 |7 R( p#define delay_ms(x) __delay_cycles((long)(x*1000.0))% X( e- Y' D7 [" ?  M
6 ]& n# n# x- ?: _, }
/**
! n, ]( K  T, T# X& _+ w! R* main.c# `3 k) @/ ^0 U  |" |3 ?' q" D
*/$ |! R0 e2 }( S- T$ I( [- ]1 X: ~
void stop(void)//停车+ [8 K9 {% j# g. m" W. @
{  @( E" |, K1 k+ [4 w
    TA0CCR1=800;
+ L- S& P. j5 A: a0 c    TA0CCR2=800;
7 L  ~% ]$ w2 w! z    TA0CCR3=800;
( U$ w! J9 U5 |! g2 C- P& g    TA0CCR4=800;) [8 O- ^2 o' W. ]3 ]- }
    }4 v  ]& g8 F, K3 c
void go(void)//前进1 R: t6 i, R. v0 P0 R& w6 |7 s
{5 K+ a7 j& R5 P! P# Y1 u" @
    TA0CCR1=800;
$ g( s- q2 @# r- g2 p' R2 z    TA0CCR2=600;
; O0 g' j" b/ K% v. ]" c    TA0CCR3=800;
6 E0 P% R& p" g4 ^  w& m    TA0CCR4=600;
, [* q, e; I" o! H( M4 H    }
/ @5 Q2 x. W9 p' h, ~2 Z; ovoid tui(void)//后退
" P1 ]& S4 d" b6 A9 n( ]1 q{. Y3 e8 x" ^1 k& F
    TA0CCR1=600;
$ I$ K2 }. ]5 k  `/ e) Z) U7 ?    TA0CCR2=800;
% _7 [$ W* @- ^$ O, A( n    TA0CCR3=600;
7 y( S* n2 b! }- E& o1 I    TA0CCR4=800;
3 b1 z7 I* q( @7 J    }. N& i0 S3 s2 m' I+ u
void zuo(void)//左转! u" i/ H- z: C* c
{
9 G& K4 O: B1 |: ], g+ b2 P7 T" o    TA0CCR1=800;
) O: z4 s: J: c3 r2 C# |# v    TA0CCR2=700;
3 d# Z" b) S8 o* P# B, [) n' x- B    TA0CCR3=800;
' R  y: R4 S: G/ V' W8 N    TA0CCR4=600;
" B" t, E1 |  A    }: R; I/ J8 m) U, M
void you(void)//右转
7 l8 m, m9 r0 q0 y{6 y5 D& Q0 }0 C+ F' W# A! g
    TA0CCR1=800;6 z: c* P, v, y: W$ v
    TA0CCR2=600;- {( u; G# j, F' r/ `3 f: f/ Z
    TA0CCR3=800;/ R$ n( U7 ^, C1 l
    TA0CCR4=700;5 N% y$ l! Z! G; G7 K
    }
& j* x# s5 b2 C$ k/ Y% Y; svoid zuo1(void)//大幅度左转
0 C4 F, H" x0 \9 [7 a{
" J( ]8 O/ _: d5 v' [9 W    TA0CCR1=800;
" D  m, i( o$ o9 K4 _9 n* c6 d    TA0CCR2=800;
$ D+ r3 C! @, J5 |- T6 |; D0 \    TA0CCR3=800;
% c: v* p5 p9 k3 n    TA0CCR4=550;, @0 c( P9 v6 H4 z3 R
    }. P' b- R. O/ h3 F: l' ^
void you1(void)//大幅度右转( w& c) G/ x* d$ J3 T- Y$ h
{4 O% Y5 f7 D9 e0 k9 i3 a; ^0 Y0 D
    TA0CCR1=800;2 P- p% m- C9 Q, w+ O
    TA0CCR2=550;% d; D! O- ?" b, ~. m& N* U6 l
    TA0CCR3=800;
1 E8 p# X1 G! a8 T6 A$ J    TA0CCR4=800;' l, a0 ]: R7 H, }9 a# d
    }! F5 q) k! j$ n. m& J6 G! k, |  W8 c6 \
* H% q: X7 l: }. S
void bizhang(void)
' ~9 P- X# ?9 q/ O  [) j{
* d6 c5 V" [  `! I    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);
) A; s7 e9 ?" ]: ?    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);) ~2 e' N1 L& ~& B! x* M- H/ L
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍( @3 Y5 x1 `3 w: y
    {7 V; K5 o8 m( Z! ^" t
        go();$ Z; m9 `" }- }4 l1 i8 j$ K9 ?
    }
5 B# D/ b8 E) F& X) P! D! d    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍
2 Q# Q3 i1 o7 e* t3 c& |3 G        {
, U/ V: H8 `. r' l" L            stop();
% m; {7 h$ w1 a; d            delay_ms(1000);
, C3 d" I; Y% x3 D$ @* m7 o            tui();
1 J( \9 }* k" t8 |            delay_ms(2000);2 @( H" s/ |5 m4 C
            you();8 q: |( _- B- C1 A
            delay_ms(1200);( S& z! Q% ?! |/ x$ `7 z- X9 m
            go();0 D2 c) m/ j5 z/ m8 N9 d3 p4 E

4 h! O' g6 D  e% [0 B, g  E        }
& C4 z8 t% @8 Z3 A    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)
" @" v: y3 ?6 d0 w   {8 v3 V6 p! F8 J: \; n
       zuo1();" g; Q* F6 Y1 h* j% x
        delay_ms(800);+ O& Y) W' c% F9 g" w
        go();
/ b1 V+ M7 k7 x0 r    }
5 f# B9 `) _! }7 y& w8 E: ]    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)$ g: I( Q4 ^7 ~" B) }: L% a) r
    {
1 `' e0 w$ j6 `7 `. u9 K; R         you1();# U: j4 q* z9 c# \. n8 O
        delay_ms(800);$ j2 y5 G7 X9 z+ i. ^4 Q+ x/ B' y% Y
        go();5 t/ o! W+ q# x  ]6 `7 |
    }0 s! g$ U- S0 R% n) O2 X+ t! e
    else stop();
' q/ }  r. G% W0 C8 E2 }) j7 z
9 k( M5 f" n2 n* W6 g* I}4 u; J, M5 j0 S. H' B: D

3 ~+ n2 W( t" a& t5 yint main(void). N7 f3 j- n7 f* T$ H$ e
{, u3 X0 |; m- N
     bizhang();. i9 x) j3 _7 m/ d- @
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗8 t2 d2 u6 F% |2 O
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);$ ~% s; B4 f- z) t" R' d0 a
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);) y  M7 l( m6 V2 m: S4 M- m
    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);
( X  S9 Q$ J/ {! \- X6 i1 T7 Z' b8 v( I, E
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);
; u: b$ ^: ^; G+ V8 d    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);$ P. b( C# K7 Z2 D9 [8 k. _0 n4 ]

4 ?" d9 R1 O. }- P0 ?2 [$ _. H    TA0CCR0=1000;
  I8 B! I$ W. Z+ N    TA0CCTL1=OUTMOD_7;
; P% G1 x" N; q1 N( K3 `    TA0CCTL2=OUTMOD_7;
% k' o6 ]/ j9 A! p$ p/ U    TA0CCTL3=OUTMOD_7;
* ?6 j9 o0 j7 {9 e* d3 x    TA0CCTL4=OUTMOD_7;
  s2 o# X9 e+ {$ Y: i
+ o+ g1 x1 ?8 s* w) z" z    TA0CTL=TASSEL_2+MC_1;, n  G' V' b7 A5 e6 y

& [$ v2 ^7 d% D. F# z* U# k    while(1)! K8 z- L9 t( Z
    {* u( l3 X( x: }0 r, l
        bizhang();
6 S+ Z) `: I4 k# E# U- N4 W    }  n. o/ g& R: @, f6 m

( t9 k7 N6 |. @, T, N}
! a1 l( P' Z3 e

4 J% F2 X- ?4 v7 G( T

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的$ h* Y- j: A: ?3 ?

该用户从未签到

3#
发表于 2021-9-28 16:47 | 只看该作者
学习了  感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-30 17:15 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表