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

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。
  {+ {& D5 v" E  w0 T单片机源程序如下:+ w4 a5 b! c  D( O5 ]7 j- g3 V* r
#include <msp430.h>5 v+ R* a4 b; q, }+ j# x6 [
#include<msp430f5529.h>
# t* ^: m9 s& p$ W- i% U' r' o#include <USER/driverlib.h>
  w" u& ]/ ^! r1 m5 h4 D#include "USER/gpio.h"8 i8 L' H5 M+ y( s: h! p6 H% q4 i
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
2 [( Y9 \% ~0 K; {$ ?; v% y) x#define delay_us(x) __delay_cycles((long)x)
5 w" d9 y0 t3 e' O- m8 J#define delay_ms(x) __delay_cycles((long)(x*1000.0))
7 V! \+ V6 P7 t; m# v6 _1 N$ Q" F6 R2 ~0 a+ j
/**
9 s; r9 @: k. e; N5 B* main.c- v* I8 Z' \! I  i$ v
*/
# N% k9 P, a9 f- J% h' avoid stop(void)//停车
4 d+ M$ H$ r5 m( n{
* }" @# U; z% w    TA0CCR1=800;
8 r# s# w+ t  ~. }    TA0CCR2=800;6 P  u7 V8 [- R% J" R* o& w* j
    TA0CCR3=800;
* Y: n: U+ J. s2 V& e    TA0CCR4=800;
. M% }- p$ [9 ^/ g  N. j9 h    }
/ g. G4 y  s# \( o$ }) K& xvoid go(void)//前进- i' t4 n+ X; G. C: W% X( c5 \
{
4 W. s# z; V5 H    TA0CCR1=800;0 ]' }( g$ _; d
    TA0CCR2=600;# V7 S4 l+ M# ^. X4 c- J* h
    TA0CCR3=800;
# n! m* i1 G$ \3 ]( f# V    TA0CCR4=600;
  s' R9 r  _' t' G/ t1 C$ d    }
$ V3 c; n2 A* H/ D: a3 r" i# Pvoid tui(void)//后退& B5 A. s4 _% @; N$ z% q# ^7 ^4 H2 ~
{7 `! x  [& w0 \2 F6 {% P! Y
    TA0CCR1=600;
3 Z5 C+ j! ?- t9 U    TA0CCR2=800;
% F: l; s6 V; K$ i& o    TA0CCR3=600;9 z* J3 S; u) i9 n2 i, W: @
    TA0CCR4=800;
, C7 a) k1 m- a    }2 e, G4 B) a4 v/ O0 L9 H
void zuo(void)//左转. Q# A! D% A" ?2 a$ s6 e" r
{) @  s$ c7 p& D+ \# ?
    TA0CCR1=800;
4 X( A! R& |. ?* ?    TA0CCR2=700;3 q- i. C, q4 Z) g! }
    TA0CCR3=800;6 c/ c7 `5 y5 c  p" U  A
    TA0CCR4=600;
/ {; T5 h0 V8 {7 O! z: S2 j  r    }0 n0 Y# e; ~2 v' W8 a" u8 B! _
void you(void)//右转" T0 a- m* h5 @' p
{
' M5 b7 g2 V0 {$ |. u0 U) b- e    TA0CCR1=800;
2 b$ I1 V" O  S+ w    TA0CCR2=600;- q) r) D& w; w" O  m. _+ m7 X
    TA0CCR3=800;
& o9 }8 h1 M9 C& w8 I- u    TA0CCR4=700;; I" F' g* B1 U1 A" q  l8 ^
    }2 f' e5 R$ @, V; Z" F& u/ `
void zuo1(void)//大幅度左转# z: l3 H6 ?; g8 o% d; E
{! {* r5 X; m0 u* f% `
    TA0CCR1=800;) g: |7 B" y& ?* P7 v* d* w1 l* @& w
    TA0CCR2=800;
0 o9 _" M& c+ ^0 b3 s! e* h" _# X" a    TA0CCR3=800;
$ `8 ]( r0 u! _7 v8 I% d3 `: H) o    TA0CCR4=550;
0 F  h( i% H% x/ Q- |0 X    }. s- f0 \' l/ E4 q4 T
void you1(void)//大幅度右转
# Y; u* _$ q3 L) N! ?{
$ |8 ^5 P. E4 I9 t: a    TA0CCR1=800;
5 [) R+ S6 f4 _2 T2 X1 c8 w$ p    TA0CCR2=550;
* S/ }5 T3 M1 \    TA0CCR3=800;
8 r6 r" L% H# h8 B! T2 X    TA0CCR4=800;5 x: s, ~: r, g6 ^
    }
5 k6 {' D' C+ I/ W" @0 ?* }% s$ i
void bizhang(void)
4 |3 s* j; L9 H# J: c% d; {3 m1 D{3 M  B( B) `7 p% Z$ j  ^5 E: K
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);& u! G/ D7 r3 R" K$ w
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);( p7 W0 Y+ T8 Q
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍
9 E" e9 u% _* y4 Q& ~& K- E    {
) D: ?+ x- J4 @' r/ M1 H8 u7 k        go();
$ X( f! `" {* C9 h5 |    }  D9 b; }3 U, w7 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 E; S3 Y" t& F$ R# o4 z: @
        {
, M" B$ g/ Q* d2 v* w- ~% m            stop();- L" C3 B! L! P) l7 E' Q
            delay_ms(1000);
, r0 ^) C; {! z+ e2 |3 T( ?# L            tui();
* ?: e, z$ `/ u# q% f# f            delay_ms(2000);5 R3 B( P& _1 D, Q4 ~6 Y
            you();
; J  j# p: Z& n5 s            delay_ms(1200);
% B$ I: y* K1 S( V6 C$ W9 y            go();
# q, X# J8 X1 Z! ]% ?7 V. S( R) K$ H* Z8 C8 ~% I$ H9 V. M
        }
# B( l6 `0 A6 y    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍). O, U* ~0 P  B9 l1 f* r
   {
; Z3 m9 p/ `4 P% {' U4 q# Z       zuo1();
# L* F' J4 a8 p3 {        delay_ms(800);
2 M, J. k% Y, t' T0 N' o0 @        go();
' \7 Q' W/ Z, L( i( h    }
7 P: H' X" X* [0 v/ f2 |    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)) G  L' Z7 ^1 f: \  C
    {
; o3 p  G9 ^- V. m         you1();
* T  M' Y; G; G# O; Q! E        delay_ms(800);
' x; o* n9 h0 |1 e        go();
# `! V2 \5 M! G8 L3 C    }
7 ^4 M$ A3 X. E' _* F    else stop();6 F1 R7 w. L( I: f

! T/ _' P3 J4 u8 n}
9 \" W8 L( E! X8 f5 l* Q# {1 O1 J( w
2 k, u# I% P9 L- |3 Jint main(void)
9 z9 e2 c6 v2 E" L4 S% V- i{3 I  ]2 E6 J" s( w5 Y
     bizhang();' z( W# d; d$ x) X
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗6 P; {% C; G% }  n# K9 O+ d
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);
6 Z7 D" l' e" M- y    P1DIR|=(BIT2+BIT3+BIT4+BIT5);
! P4 {% B( ]6 x/ S$ d    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);
. a/ x& ?3 g  \! |5 \
8 T1 ^5 ~# p4 r) H6 `8 f' l    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);
3 M: g1 t. x# d5 @, |    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);
% {% F, J0 d, ]2 w9 m8 F  P6 v% w/ q' h- p& j4 j: x5 G# I
    TA0CCR0=1000;
. M& X6 l! j9 O    TA0CCTL1=OUTMOD_7;
) S5 L% {2 c( B& O* v    TA0CCTL2=OUTMOD_7;) }: C' x* C% E, O+ C  r
    TA0CCTL3=OUTMOD_7;7 ^& g6 e( F* O+ Y7 f
    TA0CCTL4=OUTMOD_7;! A5 K  u7 c. T3 i" r4 G

1 e% r2 C- Y  I  O    TA0CTL=TASSEL_2+MC_1;$ P1 F' R3 {1 ~5 m7 k1 s2 m
& g8 P  \  E9 ?& s* J
    while(1)
) T% \; I& g9 I& g/ ?5 T    {
6 \2 r* e0 U7 W        bizhang();+ F" A5 c% _8 A: O
    }1 ~) J$ e3 b* i: O" n. c

, y1 F2 ^! x' q3 D5 M* c: W2 G: P- J1 D}- t( t/ H; D$ }) }

# q$ r3 I* u/ b& k

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的' n" M- T* V* G6 l9 o$ z, ?

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-31 20:59 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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