找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6175|回復(fù): 3
收起左側(cè)

MSP430F5529入門項(xiàng)目—紅外循跡小車程序

[復(fù)制鏈接]
ID:734275 發(fā)表于 2020-11-18 20:12 | 顯示全部樓層 |閱讀模式
小車采用雙電機(jī)驅(qū)動(dòng),雙路紅外循跡,pwm調(diào)節(jié)占空比以此調(diào)速,輸于入門級(jí)別程序,只涉及i/o口和pwm知識(shí)相關(guān)知識(shí),可以作為入門練手提升自信。 無標(biāo)題.png
單片機(jī)源程序如下:
  1. // finish 2020/11/3 GaoYuan
  2. #include <msp430f5529.h>

  3. int pwm_l = 20;                                  //給pwm附一個(gè)初始值
  4. int pwm_r = 20;
  5. void Keyscan();
  6. int begin=20;


  7. //pwm判斷控制
  8. void detect();

  9. int main(void)
  10. {
  11.         WDTCTL = WDTPW + WDTHOLD;              // 關(guān)閉看門狗
  12. //初始化
  13.         //motor 正轉(zhuǎn)
  14.           P1DIR |=BIT4+BIT5;//左電機(jī)
  15.           P2DIR |=BIT4+BIT5;//右邊電機(jī)
  16.           P1OUT |=BIT4;
  17.           P1OUT &=~BIT5;
  18.           P2OUT |=BIT4;
  19.           P2OUT &=~BIT5;

  20.           P1DIR |=BIT0;//led
  21.           P4DIR |=BIT7;

  22.           P1DIR |=BIT2+BIT3;//pwm
  23.           P1SEL |= BIT2+BIT3;

  24.           P2DIR &=~(BIT2+BIT3) ;  //left,right detection
  25.           P2OUT |= BIT2+BIT3;
  26.           P2REN |=BIT2+BIT3;

  27.           TA0CCR0 = 124;                       //PWM周期定義

  28.         TA0CTL = TASSEL_1 + MC_1 + TACLR;      //參考時(shí)鐘選擇ACLK,增計(jì)數(shù)模式,清除TAR計(jì)數(shù)器

  29.         while(1)
  30.         {
  31.             TA0CCTL1=OUTMOD_7;
  32.             TA0CCTL2=OUTMOD_7;
  33.             detect();
  34.             TA0CCR1=pwm_l;
  35.             TA0CCR2=pwm_r;
  36.             __delay_cycles(30000);
  37.             pwm_r=begin;
  38.             pwm_l=begin;
  39.         }
  40. }


  41. void detect()
  42. {
  43.     {

  44.         if(  (P2IN & BIT2) && ( (P2IN & BIT3)==0) )//右偏
  45.         {
  46.             P4OUT |=BIT7;
  47.             __delay_cycles(10000);
  48.             P4OUT &=~BIT7;//led down 4.7
  49.             pwm_l=pwm_l+20;
  50.         }
  51.     } if( ((P2IN & BIT2) ==0) && (P2IN & BIT3)   )//左偏
  52.         {

  53.             P1OUT |=BIT0;
  54.             __delay_cycles(10000);
  55.             P1OUT &=~BIT0;//led down 1.0
  56.             pwm_r=pwm_r+20;
  57.          }

  58. }

復(fù)制代碼

car_control.zip (78.17 KB, 下載次數(shù): 117)

回復(fù)

使用道具 舉報(bào)

ID:935312 發(fā)表于 2021-7-12 16:40 | 顯示全部樓層
為什么循跡有效但小車不動(dòng)呢
回復(fù)

使用道具 舉報(bào)

ID:954312 發(fā)表于 2021-7-21 22:03 | 顯示全部樓層
左轉(zhuǎn)端口P2的設(shè)置為什么是先設(shè)置輸入,再定義輸出然后再允許上拉電阻?
回復(fù)

使用道具 舉報(bào)

ID:1038285 發(fā)表于 2022-7-12 17:00 | 顯示全部樓層
控制不了轉(zhuǎn)速
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表