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

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。
4 @  I2 \5 z3 [2 n3 C单片机源程序如下:1 C% c* G) I5 I
#include <msp430.h>7 ~. I  y7 E. E3 u6 a, x; T. }
#include<msp430f5529.h>
" R, t. y8 n5 m" z#include <USER/driverlib.h>6 z- X  h8 H) z9 ~8 Y9 D8 K
#include "USER/gpio.h"
. p% ^. ^& S! G3 C: q0 e' D' d#define CPU_F ((double)8000000)   //外部高频晶振8MHZ! a3 W6 S# F# x' N7 m: Q  ^
#define delay_us(x) __delay_cycles((long)x)
$ P) k) I) b' K0 ^1 A9 B#define delay_ms(x) __delay_cycles((long)(x*1000.0))" K% Y& g  Y- @6 U& w, E* n  D
" R3 g- I6 Y" M6 x% |* [
/**
# N( q1 v  q% U: _4 r* main.c) b, Q2 X  ^6 d4 P2 X
*/
7 t. v: c7 U: a9 Wvoid stop(void)//停车, B$ B" Y9 d1 v4 ?% u* h/ D4 }
{
/ ?" v6 F* O" n( ~2 e! j, P- S    TA0CCR1=800;9 @( D& h+ e* T) J% e2 j' {1 V
    TA0CCR2=800;
1 x& G2 g: ?7 z- ^3 V1 i5 K    TA0CCR3=800;. @* d6 k: S8 b$ y
    TA0CCR4=800;
( ^. R+ F- Q2 L! t1 s& P+ l4 j* x    }, I' v7 H6 C8 l* M: H  Q8 j
void go(void)//前进$ i; F, M; J, `" L# I
{0 }! _& Z. e# u" |* q" _6 q1 Z
    TA0CCR1=800;- c5 Z6 k! x8 D) |) r5 ]7 M
    TA0CCR2=600;! U( L2 y% F, {, `
    TA0CCR3=800;1 i6 c9 Q8 B0 z# W! n, ]
    TA0CCR4=600;
* P8 l& N: k) p& p1 A' _    }3 [* d& K/ d2 Q" m. w
void tui(void)//后退
& u3 A4 Y" k, Q( g{
) M( s* o7 m+ W( Q8 D    TA0CCR1=600;2 Z- K- ?. B  T8 U7 V$ r
    TA0CCR2=800;
: `: S$ f3 _0 T1 I) \! d    TA0CCR3=600;! K# w+ M, C% n' I
    TA0CCR4=800;2 F: n; p) O& A( {. p
    }5 I3 w% o* G7 u1 u- W/ s+ B  B' Z/ o8 p
void zuo(void)//左转9 @9 ~& v1 @4 S; f, q2 Y/ x
{
6 ]& @' b0 C7 j    TA0CCR1=800;3 G8 u5 I. \+ m/ p6 @, E
    TA0CCR2=700;
0 k/ P7 {9 O- b- K2 |    TA0CCR3=800;. _! Y6 X+ y& c1 N9 f) H0 R6 J
    TA0CCR4=600;
) n* r: h# x$ |    }6 S6 d5 j& w2 c5 w+ \: S" ?
void you(void)//右转+ Y* i. I2 ^4 D5 R& [
{
: u0 k, p% d" D3 M0 X    TA0CCR1=800;$ I7 a8 s% p' p% o) a1 m0 `
    TA0CCR2=600;
4 D$ T1 v0 S' |3 W6 v* }    TA0CCR3=800;! P5 K  ^5 R( y6 X
    TA0CCR4=700;
! w+ G5 E6 H1 q    }
6 L% }- x' Y) m0 B/ e+ D( g- m2 Q5 mvoid zuo1(void)//大幅度左转
: g9 C8 x( |+ k2 |- K# X$ @{
0 b3 O( y# @: g! V    TA0CCR1=800;0 Y/ `% _' L' L6 P$ t
    TA0CCR2=800;' }4 l; ^# _# E9 i
    TA0CCR3=800;
1 f1 Z6 M$ n& @# P    TA0CCR4=550;3 y9 P) N$ j1 ]9 F
    }
! o3 ^8 y; R2 g& v* j# ]$ N0 g' X& ]void you1(void)//大幅度右转( p9 u! W0 i, E, P3 C2 B
{2 I) y% u9 n4 e+ P# ?+ ^
    TA0CCR1=800;' ]* ?' n; {. |) e' z2 ]! V8 Y
    TA0CCR2=550;
7 M* o; r" X0 h& {0 b: ?& o: A9 |    TA0CCR3=800;
  P8 c. y# [" s6 B4 h1 Y. |* x    TA0CCR4=800;8 b7 v$ E& k6 [) u5 G4 o% [' V
    }) B* Z/ d' V  ~9 @" `* f3 o
" _- n' H# z# D% Y4 _, U+ W
void bizhang(void)
; y# j4 M' }) i5 W6 Z+ ]1 f2 C1 ^  b  K{' G# E0 p; t' X+ h; `
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);* O  ^+ d, m8 C2 j- e
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);2 p( e. I7 `' e1 x
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍
9 Q& ]+ y! s4 O% N! X    {0 d! P. z1 g1 E9 ~7 x
        go();) i2 P  d1 ^  ]( W+ ~9 J
    }( |/ L$ }7 C+ _: K
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍
& L, \9 ~7 {' P( v. e+ w        {! P" J/ @' Q" z& s$ }; H' O. l
            stop();5 i1 l+ N0 ?/ F! J
            delay_ms(1000);' H5 R8 Z  t& W; K
            tui();
7 h9 S  j1 g* E0 i& s0 |2 b+ {# r& C. `            delay_ms(2000);; _: y0 U% d4 X
            you();; Z) P( G0 w) ?5 M2 I
            delay_ms(1200);
- e+ K) [& x( n3 J, D- _            go();
- S  @/ V2 _0 c9 z
8 ^7 ?2 T* W$ A7 l( \        }
/ C7 C. v% Z. }7 z    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)1 C* y& E9 g8 _/ P$ o4 Q
   {
& M9 A. ^2 z8 s( X1 M/ W       zuo1();* d% f! n* |$ ^* O# U, q
        delay_ms(800);
9 t1 _" s" `: h0 n8 ^/ A        go();
" O3 l3 K( N, k    }, {$ f- _' B+ f1 H
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)
+ Y+ n+ l- i9 q8 H3 g    {9 s$ W" F4 v: V3 e* V  _" H1 u
         you1();0 k5 ?% b6 ~7 j% X( R, z3 h
        delay_ms(800);
, r, B1 Q6 c7 A( Z        go();$ f4 S9 y8 }# K& n( o# ]5 B2 `
    }
; o7 Y6 u/ I  m5 q7 o( X6 |    else stop();
* o. e7 g, J% u! Z( N/ @) o7 O6 w  r4 Q- y
}
8 ~" x+ H$ b# N( I" X  V- S$ F( h  N3 a- Z
int main(void)* g' @0 a2 m+ n/ v8 v$ v
{
; G; J- p/ J% q: T" A     bizhang();+ U( t/ h4 ~* k$ u' l
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗& ^  v- }8 C2 Z5 Y0 }
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);& E! m0 B7 _; F* S. x4 E
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);  d" F. [; E( I' n+ x
    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);6 W; O) L1 [( y/ P0 c- R6 U

+ F& `* U2 C+ I* J' q  Y    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);/ k! C5 Q- D7 _3 M
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);
2 S/ x, E3 Q6 T
! t: I: t8 {4 U* P2 g3 k* s9 ?    TA0CCR0=1000;' Q6 L4 J5 o- V; R/ X) P
    TA0CCTL1=OUTMOD_7;! j6 w! X0 }, e/ G% }3 [
    TA0CCTL2=OUTMOD_7;' t) u2 V1 h7 {. {, G$ \
    TA0CCTL3=OUTMOD_7;
9 {" p. w+ b3 \( [- o. e    TA0CCTL4=OUTMOD_7;9 I$ ~8 m' `4 f% G) }
6 [( W, i& a" U, M# E5 _- w0 U
    TA0CTL=TASSEL_2+MC_1;
( d! j) W$ s4 q* ^; x; [
, v$ g+ j" U# r1 n; P    while(1)4 D. [( M  Y/ D% c# e$ X8 F# L; W
    {
* a) Z3 }# ~& c5 Z        bizhang();
/ o) w4 `  |' q+ A, R    }; g5 R* G* F/ V9 i( d

/ ?" q: s. w: K4 \. }% [7 H9 ~" K}
3 m) R1 i! S# C4 R- Y- S, _

/ C+ ~) d" `  q0 q9 c9 r1 l) i

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的
" T- ?9 w+ @# x

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-17 03:18 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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