找回密码
 注册
查看: 356|回复: 2
打印 上一主题 下一主题

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。: I6 B6 h& z) }/ z2 G& Q
单片机源程序如下:
6 k5 s) o  Z" ^# R1 t! h#include <msp430.h>
* c& w5 T+ m& m) @3 q0 c3 t#include<msp430f5529.h>
! e# W6 Y4 k0 L2 h. _2 N* R#include <USER/driverlib.h>
2 L: S4 Y/ W8 N4 z7 g#include "USER/gpio.h"
6 L/ S' q" Y3 {. z( U, a#define CPU_F ((double)8000000)   //外部高频晶振8MHZ) C7 _3 e/ t6 H. R2 F
#define delay_us(x) __delay_cycles((long)x)
: \: B" F4 ~( I# V#define delay_ms(x) __delay_cycles((long)(x*1000.0))
( B& X; J( \9 D" r, B2 {; K8 y: ^5 q, p, W  \
/**
. ]& A$ ]) ^0 h" r# N( a* main.c
( P  X) Z7 {" ^( Y" G$ H0 o  j5 G  p*/
6 b* s4 a% h$ w& W0 ~  lvoid stop(void)//停车
) H2 e2 D4 v4 }) z& \{
' T6 R6 m* t; \3 x    TA0CCR1=800;
2 p4 T! P# x# q3 C# n  R# P1 H8 f    TA0CCR2=800;
: T4 m/ W1 k+ C# o    TA0CCR3=800;+ h) ~+ g* \( K9 H+ V( E- I
    TA0CCR4=800;
% d0 T. n; \! k% t: Q. N    }
& l9 z. t, `  t1 [, V# Tvoid go(void)//前进4 e% M# j$ I7 i" q* A
{! o1 J' ~6 q. g
    TA0CCR1=800;% O! w/ G8 Q& [* o, S
    TA0CCR2=600;
7 X6 G/ [, x+ V. H* u    TA0CCR3=800;
! }" W0 H* O/ W6 i    TA0CCR4=600;# M5 O9 r+ E* s, o) Z# D$ N, b8 p
    }3 d4 q  E; X% b6 F8 ^
void tui(void)//后退) \: |/ u, N. B+ c- F
{, f# d! H/ Z/ G2 x# e* i
    TA0CCR1=600;+ N" |" p% Q4 u5 ]# d% l4 D7 A/ s
    TA0CCR2=800;: O! M7 L6 u0 T  W
    TA0CCR3=600;
2 p2 y, @" Z5 O    TA0CCR4=800;
3 ~1 }' G+ j3 E. K6 t    }
, n% b4 Q. b) E: I: ]+ xvoid zuo(void)//左转
# F! O: S3 C# D" j6 T6 o+ n{
/ a" u  i$ R& _: S) F! o    TA0CCR1=800;
/ f( ~! x# |9 ^% A2 ^    TA0CCR2=700;: n9 Z' m3 q; X, j. E# V
    TA0CCR3=800;( x. g9 K( s8 N
    TA0CCR4=600;0 @" w, m' D& V: o: V3 ?
    }% W- r% ?/ z8 p" B
void you(void)//右转
. d) }/ n- j1 u2 L{
' s1 p' W; h4 K# H- l    TA0CCR1=800;
, H. Y, r+ W# W    TA0CCR2=600;
1 T+ b# _8 N4 r: E9 a9 k, ]    TA0CCR3=800;0 h2 B2 R( I' w* w
    TA0CCR4=700;1 i, b7 a" N+ H+ m( l
    }
' I5 e6 {1 m5 a) o0 t( Q& Gvoid zuo1(void)//大幅度左转1 E" A8 r' z9 v! ]+ q7 I
{7 n, e7 Y, V  M9 H
    TA0CCR1=800;
3 D8 j" |' r; p* l9 N8 F0 `    TA0CCR2=800;
0 F; J& F! s, i2 C$ b2 y) E    TA0CCR3=800;
" s8 W- a" Z; c0 `6 e0 }    TA0CCR4=550;* }( M3 s6 b2 |: T8 [4 |% T% M9 c
    }
4 [+ c- j1 c: [2 ovoid you1(void)//大幅度右转
+ f& ^3 x. n& V8 w{
5 u4 u/ Y+ @* R' I9 d0 |    TA0CCR1=800;
) M! F  s& k3 R* c+ E6 C( R    TA0CCR2=550;4 G7 b+ B4 U- }% i
    TA0CCR3=800;& K7 S: f" Y  ^( t3 U
    TA0CCR4=800;
" u4 @. U" v: I/ K3 h    }
# Y1 W& i7 Y3 f2 B: ~2 H
6 a/ f. g8 A- _# ]5 i  H+ i. v1 Kvoid bizhang(void)
1 `4 O8 z/ m9 [" w1 O{' z3 H" \  |( t. c8 u
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);' E# ], Y1 J9 z* a4 l
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);2 U! I8 k& N' _) L' _" u
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍
7 f3 u6 W3 \. Z% R    {
; K4 C  R, H% T# |/ C        go();) ~, ?" Z. `' e
    }3 A: f! t2 h5 t" j4 ~! _. `
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍
# _5 |- `9 V) y+ ^( n! n        {
& r. Z8 `9 u! ~  J& _& D7 l: |            stop();
% K, q1 G( [% q# `1 x+ O            delay_ms(1000);
. R9 s: L2 B- y            tui();
1 G/ {" ?& _) L5 x3 D8 F6 J+ [            delay_ms(2000);
" r+ e6 n4 ?1 x. u# J            you();
5 e( i& P( }1 C; ~8 K+ {            delay_ms(1200);% `! m: V, b# ]; X
            go();
. l) X& H& K; v4 E
2 {* W6 r2 e( x" \0 y        }
) a) a" t6 V+ `  X8 i    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)
  ^% p" P' V" A, F  D7 Q8 g1 Q, @   {
. p$ u' Y) ]+ u. K1 g* I       zuo1();/ u2 E- P, ]$ N& q. F2 q1 X
        delay_ms(800);8 ]  g1 T& ^: {& g/ F: [
        go();- k, S7 X. q# Z) E. n7 W. B
    }9 I/ E6 s" j7 X  r( b3 V. v
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)" I! K- g! d5 p) x
    {7 M* ]) ~7 x* r! F( m, a1 X
         you1();
6 y. D5 S% G! Q5 X        delay_ms(800);( p% _) M, M' b0 P) {
        go();
+ M4 O) v: L3 }, w7 z    }; K0 y$ o/ C7 F; d
    else stop();
. G1 ]' l% P& s$ C; D$ L3 k6 x* G$ z: a6 b; |) X6 r5 d/ P
}0 ?# m" Z1 j9 j

7 e1 J& Y- N4 V# g' Uint main(void)0 d( Q0 G  m8 A  ?
{
8 }0 b& N3 ]) N3 P     bizhang();( z6 T0 P8 Y9 s9 F
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗% \5 {, N* ]7 {! [! j" I
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);' f+ R  C4 ?; D) M7 K
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);
& z0 v/ U* S6 N) j4 z1 s    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);
; T% a& M6 o9 K: p
( Q/ Z( _1 `! r# X! d: D: e    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);
  @( O6 ^5 m* {! L4 g1 w    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);5 c5 K  |" h  V* K' h

% |% {" m* _- B8 o( y    TA0CCR0=1000;
2 n1 M, n7 K  g$ Z# v% M    TA0CCTL1=OUTMOD_7;
4 m' Z- O. G- H' ]; H! `' u( S    TA0CCTL2=OUTMOD_7;- V- ~' y" w$ m# s6 B5 }/ F
    TA0CCTL3=OUTMOD_7;) l) l& e1 m" f, ?
    TA0CCTL4=OUTMOD_7;
3 y/ n) w7 J  U/ N& {" P8 I* x5 K. i
( t5 L/ \# g' u) _5 ^( j; D    TA0CTL=TASSEL_2+MC_1;7 S8 u2 A3 g9 o: k3 I1 N: W; q

- u+ `7 J( G' j! e5 }    while(1)
% s* j  N, s: b' e0 I! ?/ l9 S    {
, a/ Q  z) g+ I" y, z5 R        bizhang();
  w7 w, n7 T1 D% ?+ u( z    }
6 T6 E  A* Q+ D: T  `" e2 ~1 s) s& I) {5 e! }! _6 \: c
}
) e+ H# \! ]& J& q

5 o5 @3 n; g' h

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的
! o3 n6 m0 U- K, E2 e( b

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-5-24 05:55 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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