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

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。
( m1 i/ V+ b! f& L9 W/ Q$ B7 K# j, Y) C单片机源程序如下:% ]; W* L* }+ X( H
#include <msp430.h>
- Y7 c6 X( W7 V- b  m1 D, `#include<msp430f5529.h>( M3 Z3 `6 w" o% h* |3 e; m( d. p$ k
#include <USER/driverlib.h>
# k: z9 F4 l) U. N) R#include "USER/gpio.h"
2 Q" r1 e, |# j" y% [#define CPU_F ((double)8000000)   //外部高频晶振8MHZ0 p/ ]% J9 Z) Z( ^$ _1 X4 k
#define delay_us(x) __delay_cycles((long)x); B- P7 @/ V' D. S5 f/ }
#define delay_ms(x) __delay_cycles((long)(x*1000.0))6 K- S, a0 ?# O& H; z' g9 p# \6 k# G

  y, B$ H/ c3 F# B/**
: ]& r4 @8 C) b1 C) h8 p* main.c2 Z3 J3 |$ o( D5 k. F3 Q: f, v
*/
) x: h% o/ x5 i. G8 K) c% M1 ivoid stop(void)//停车  F' }; F6 [: R, ^$ D" D
{( T4 k+ ^& I* Y
    TA0CCR1=800;
' ^2 o4 y/ ^4 V" E    TA0CCR2=800;
2 q( K+ m) [) t* n; I. K" y0 k# k# B    TA0CCR3=800;* U3 V2 i, w* p5 n0 c
    TA0CCR4=800;
! b8 o! p. ]" j5 ]% H    }7 |8 r# Q* _3 t- _, J
void go(void)//前进
8 L% Y4 X7 {! q0 i{
* Y: S# z! v" \5 Z0 M$ A    TA0CCR1=800;) c5 A  y, }. i2 w& \& d
    TA0CCR2=600;1 E& t8 U. x- B% E
    TA0CCR3=800;
: h% {# ?/ j* s: R7 G* L6 K    TA0CCR4=600;
% i; z1 m. u% H1 j+ L6 A    }4 c  A8 h8 @8 h! V
void tui(void)//后退8 p% O9 G, @0 B5 r; J
{& p2 H$ J5 ^2 _2 k: R, \" h& H; p
    TA0CCR1=600;
1 e( U; b9 a- H, J5 l+ v    TA0CCR2=800;
' t. W! d" D  Z; H    TA0CCR3=600;* X4 z0 F/ h+ f) B0 E
    TA0CCR4=800;0 Q% G# |/ h1 V6 C) @
    }8 e" `5 ]* K( v
void zuo(void)//左转, F" `0 K/ S5 k7 R2 X" W6 o
{
% p7 X& G0 b  _    TA0CCR1=800;
" x6 {% ]( u, P$ f- ^  d) c    TA0CCR2=700;6 [5 \/ N4 C8 a) i# e7 R: u% X& r/ f
    TA0CCR3=800;
  M2 V$ a" k" @; ]/ E& l$ Y5 g    TA0CCR4=600;
( L4 W+ p4 {% I" y, i7 b    }. w1 U6 i6 \, V1 [/ p' D7 {
void you(void)//右转. O# Z* `9 g/ L+ l
{' }% R0 i+ |/ h" S: a9 A. o
    TA0CCR1=800;0 x) S# b* W3 q+ n
    TA0CCR2=600;; U  c$ G: R; }2 X
    TA0CCR3=800;/ u/ S& k  u) z" s# u4 }: v
    TA0CCR4=700;) m5 E( ]0 S5 s7 v- C5 F: O$ g
    }0 _5 |4 v; v9 m' a4 k1 b
void zuo1(void)//大幅度左转
5 C! C" `; {# y& \1 W{. C" `+ }1 [0 F0 W1 @( X
    TA0CCR1=800;
- y+ T4 Q8 Q( |6 m# D, E    TA0CCR2=800;
# d* A, O( w4 T2 b1 a    TA0CCR3=800;
; J6 o' T/ c& R, J) k    TA0CCR4=550;
. ~- t3 B5 x+ [/ j    }
; f9 v& T) y6 Mvoid you1(void)//大幅度右转
. d7 s1 Q6 T" f# r  R{9 I( f' z% y/ Q8 K; v- P. o
    TA0CCR1=800;3 L3 T& h2 {+ j  G
    TA0CCR2=550;2 x& G: g3 ?% r3 v2 F% I3 D
    TA0CCR3=800;
/ N6 X. D6 v) \% c/ R- O1 ?: v    TA0CCR4=800;: N  v& a3 _8 c2 o7 h, Q) m5 T; B
    }- S. Z* j9 L8 y% [; m
( q6 O/ A6 C* T6 ~
void bizhang(void)' K8 Z  G/ a. y
{
- [" ?* v7 W% |1 S    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);+ L" [) ^1 g' l4 i7 p1 p
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);
/ _7 p5 Z+ m' f4 g. v/ A    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍0 M* s5 b7 |- Z! u- e
    {
0 g6 J  o0 r3 k" I! j1 w9 ^3 P  [        go();
# B" n# v" r; b* m    }0 C' U3 u5 G& z; P# A. x
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍
$ }3 m$ N" n/ [- \- E! j        {- i" B8 ^  v8 n: @1 Y
            stop();
6 O* r: H* y1 T0 w' z& f+ J* @( ^3 z9 H            delay_ms(1000);4 n/ k7 @) K7 F+ r% E
            tui();
; f/ t1 W$ E+ `  l; H9 b: }            delay_ms(2000);
" J' t- }2 V8 W1 s- K  @! v            you();
( \  v1 O& x3 t. H0 |( y! L            delay_ms(1200);
% M/ O7 e" i4 f  `% q* x  l# O            go();
7 {. ~0 ?5 h) x; M; r4 F; U
  \- H) A8 p3 j/ O5 j' t        }& M- T* V  D6 Y. v0 q
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍), ~6 T$ W3 e5 K( I8 g
   {1 E' h% j( r$ Z- k4 @2 b9 o; N8 K; T
       zuo1();
! d' [+ \' H1 v5 ~        delay_ms(800);
5 k( X3 _/ g7 ], Q4 r        go();
# j/ U+ d4 w3 F    }% t3 C0 @; _# {. F, v9 x" U/ u* n
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)
" [9 D* g9 r+ u6 T4 P    {& g, m8 {/ ~1 F" t2 z) J. `4 z
         you1();' S! s' q9 j, u+ H
        delay_ms(800);# O+ b* r* s; l3 I4 H: h
        go();1 z% `* h( ~" m6 \  ^% _( [8 l
    }7 y1 m" h# }! k5 S4 C
    else stop();- b8 M: U3 g+ f9 o) n
6 O, i2 k. H" G
}
3 Z1 H) `- v6 c! y: H2 o0 v1 Q$ L# m% x
int main(void)6 l; Q' l$ p2 J
{
$ S5 T' s4 I1 e# R     bizhang();+ o# R  j# G# x) i5 r5 ~
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗7 d$ v# K- P4 M0 m9 P; o5 R
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);( A, n6 G4 }1 D9 Y
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);0 \" x7 E  \" k
    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);! U7 f, @0 W0 W4 Q$ p/ |1 _
7 B+ c' M. W) T
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);
% l1 s: @+ }) K+ H5 I    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);
/ V; E1 s- a2 v% U" a- z
7 K" ~- D: `/ j+ a; ?! U2 J9 ~2 `+ z( x    TA0CCR0=1000;( l$ F; A0 E8 g! R% B: E
    TA0CCTL1=OUTMOD_7;" Q  v' Y& ~: W& f, f" Q
    TA0CCTL2=OUTMOD_7;; I$ h& b2 C9 p- B: a+ n  X) U1 M
    TA0CCTL3=OUTMOD_7;
7 }9 t! |5 f* M( J1 }' d' Z    TA0CCTL4=OUTMOD_7;, U' S; a" P5 b9 T: A, }

1 o2 K+ q* x* I" M: Y3 Z8 D) m( ]9 ^* X    TA0CTL=TASSEL_2+MC_1;7 |2 b% q/ S. e/ d* U3 Q

( ~8 V& t  V, j    while(1)
$ n, s7 i! f1 h3 ?( b* `    {
8 m3 |+ h# g7 W, G        bizhang();
4 N' \2 P/ |$ T    }* v- Z' [* D, _% k/ B" L7 Q

7 X; o2 h* B; u: Q8 Y}0 s" q: m+ o& K0 s

3 B- f8 W* z: ]+ l& r7 R2 P' }

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的
  K3 v9 D) z% i% |

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-18 00:41 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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