找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2936|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

基于AVR單片機(jī)的智能小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于AVR單片機(jī)的智能小車,加入了紅外模塊和超聲波模塊,用來避障

P80920-154542.jpg (3.72 MB, 下載次數(shù): 201)

P80920-154542.jpg

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-9-20 17:32 | 只看該作者
好東東 樓主能分享一下源碼和資料嗎?
回復(fù)

使用道具 舉報

板凳
ID:399687 發(fā)表于 2018-9-20 17:57 | 只看該作者
  1. #include <mega32a.h>
  2. #include <delay.h>
  3. void dao_car(void); //倒車
  4. void r_zhuan(void);//右轉(zhuǎn)
  5. void l_zhuan(void);//左轉(zhuǎn)
  6. void q_jing(void);//前進(jìn)
  7. void stop_car(void);//停車
  8. void time0_init(void);//定時器初值
  9. void sonic_scan(void);//超聲波掃描
  10. void r_hong(void);//右邊紅外檢測
  11. void l_hong(void);//左邊紅外檢測
  12. volatile int n,a;
  13. char temp;
  14. void main(void)
  15. {
  16.    DDRA=0x00;
  17.    DDRB=0XFF;
  18.     DDRD=0xff;
  19.     PORTA=0xff;
  20.     PORTB=0XFE;
  21.     PORTD=0xff;
  22.      temp=1;
  23.      n=0;
  24.      a=0;
  25.     time0_init();
  26. while (1)
  27.       {   
  28.         r_hong();//右紅外
  29.         l_hong();//左紅外
  30.        sonic_scan();
  31.       if (temp==0)
  32.         {   
  33.            if(PINA.2==1)
  34.            {
  35.             dao_car(); //倒車
  36.             delay_ms(30);
  37.            }
  38.              r_zhuan();//右轉(zhuǎn)
  39.              r_zhuan();//右轉(zhuǎn)
  40.              r_zhuan();//右轉(zhuǎn)
  41.              r_zhuan();//右轉(zhuǎn)
  42.             //////////////////////////////////////////////////////////////////////////////
  43.             sonic_scan();//超波聲掃描
  44.              if (temp==0)
  45.              {
  46.                  l_zhuan();//左轉(zhuǎn)
  47.                  l_zhuan();//左轉(zhuǎn)
  48.                  l_zhuan();//左轉(zhuǎn)
  49.                  l_zhuan();//左轉(zhuǎn)
  50.                  l_zhuan();//左轉(zhuǎn)
  51.                  l_zhuan();//左轉(zhuǎn)
  52.                  l_zhuan();//左轉(zhuǎn)
  53.                   l_zhuan();//左轉(zhuǎn)
  54.              }
  55.             else
  56.             {
  57.                 goto exit;
  58.              }
  59.          //////////////////////////////////////////////////////////////////////////////////   
  60.             sonic_scan();//超波聲掃描
  61.             if (temp==0)
  62.             {
  63.                 l_zhuan();//左轉(zhuǎn)
  64.                  l_zhuan();//左轉(zhuǎn)
  65.                  l_zhuan();//左轉(zhuǎn)
  66.                  l_zhuan();//左轉(zhuǎn)
  67.                  l_zhuan();//左轉(zhuǎn)
  68.                  l_zhuan();//左轉(zhuǎn)
  69.                  l_zhuan();//左轉(zhuǎn)
  70.             }
  71.          }
  72.     exit:
  73.     q_jing();//前進(jìn)
  74.    }
  75. }
  76. void q_jing(void) //前進(jìn)
  77. {
  78.     PORTD.7=1;
  79.     PORTD.6=0;
  80.     PORTD.5=0;
  81.     PORTD.4=1;
  82. }
  83. //////////////////////////////////////////////////////////////////////////////////////
  84. void l_zhuan(void) //左轉(zhuǎn)
  85. {
  86.      PORTD.7=0;
  87.     PORTD.6=1;
  88.     PORTD.5=0;
  89.     PORTD.4=1;
  90.     delay_ms(10);
  91.     stop_car();
  92.    delay_ms(20);
  93. }
  94. /////////////////////////////////////////////////////////////////////////////////////////////
  95. void r_zhuan(void)//右轉(zhuǎn)
  96. {
  97.     PORTD.7=1;
  98.     PORTD.6=0;
  99.     PORTD.5=1;
  100.     PORTD.4=0;
  101.     delay_ms(10);
  102.     stop_car();
  103.     delay_ms(20);
  104. }
  105. //////////////////////////////////////////////////////////////////////////////////////////////
  106. void dao_car(void)//倒車
  107. {
  108.     PORTD.7=0;
  109.     PORTD.6=1;
  110.     PORTD.5=1;
  111.     PORTD.4=0;
  112. }
  113. //////////////////////////////////////////////////////////////////////////////////////////////////
  114. void stop_car(void)//停車
  115. {
  116.     PORTD.7=1;
  117.     PORTD.6=1;
  118.     PORTD.5=1;
  119.     PORTD.4=1;  
  120. }
  121. ///////////////////////////////////////////////////////////////////////////////////////////////////
  122. interrupt [TIM0_OVF] void timer0_ovf_isr(void)//定時器0中斷溢出
  123. {
  124.   TCNT0 = 255;  
  125.   n++;
  126. }
  127. /////////////////////////////////////////////////////////////////////////////////////////////////////
  128. void time0_init(void)//定時器初值
  129. {   
  130.      SREG=0X80;
  131.      TCCR0 = 0x00;  
  132.      TCNT0 = 255;
  133.     TIMSK= 0x01;
  134. }
  135. //////////////////////////////////////////////////////////////////////////////////////////////////////
  136. void sonic_scan(void)//超聲波掃描
  137. {
  138.     while(1)
  139.     {
  140.       PORTB.0=1;
  141.       delay_us(20);
  142.       PORTB.0=0;
  143.       while(1)
  144.       {  
  145.          if(PINA.4==1)
  146.          {
  147.             break;
  148.          }
  149.         
  150.       }
  151.        TCCR0 = 0x02;
  152.        n=0;  
  153.        while(1)
  154.        {  
  155.           if(PINA.4==0)
  156.           {
  157.            TCCR0 = 0x00;
  158.            break;
  159.           }
  160.         }
  161.        n=n/58;
  162.        if(n==0)
  163.        {
  164.          temp=0;
  165.          break;
  166.         }
  167.        else
  168.        {
  169.          temp=1;
  170.          break;
  171.        }
  172.       
  173. }
  174. delay_ms(1);
  175. }      

  176. //////////////////////////////////////////////////////////////////////////////////////////
  177. void r_hong(void)//右邊紅外檢測
  178. {
  179.     if (PINA.0==0)
  180.     {
  181.        l_zhuan();//左轉(zhuǎn)
  182.     }
  183. }
  184. //////////////////////////////////////////////////////////////////////////////
  185. void l_hong(void)//左邊紅外檢測
  186. {
  187.     if (PINA.1==0)
  188.     {
  189.         r_zhuan();//右轉(zhuǎn)
  190.     }
  191. }




復(fù)制代碼

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:399687 發(fā)表于 2018-9-20 17:59 | 只看該作者
  1. #include <mega32a.h>
  2. #include <delay.h>
  3. void dao_car(void); //倒車
  4. void r_zhuan(void);//右轉(zhuǎn)
  5. void l_zhuan(void);//左轉(zhuǎn)
  6. void q_jing(void);//前進(jìn)
  7. void stop_car(void);//停車
  8. void time0_init(void);//定時器初值
  9. void sonic_scan(void);//超聲波掃描
  10. void r_hong(void);//右邊紅外檢測
  11. void l_hong(void);//左邊紅外檢測
  12. volatile int n,a;
  13. char temp;
  14. void main(void)
  15. {
  16.    DDRA=0x00;
  17.    DDRB=0XFF;
  18.     DDRD=0xff;
  19.     PORTA=0xff;
  20.     PORTB=0XFE;
  21.     PORTD=0xff;
  22.      temp=1;
  23.      n=0;
  24.      a=0;
  25.     time0_init();
  26. while (1)
  27.       {   
  28.         r_hong();//右紅外
  29.         l_hong();//左紅外
  30.        sonic_scan();
  31.       if (temp==0)
  32.         {   
  33.            if(PINA.2==1)
  34.            {
  35.             dao_car(); //倒車
  36.             delay_ms(30);
  37.            }
  38.              r_zhuan();//右轉(zhuǎn)
  39.              r_zhuan();//右轉(zhuǎn)
  40.              r_zhuan();//右轉(zhuǎn)
  41.              r_zhuan();//右轉(zhuǎn)
  42.             //////////////////////////////////////////////////////////////////////////////
  43.             sonic_scan();//超波聲掃描
  44.              if (temp==0)
  45.              {
  46.                  l_zhuan();//左轉(zhuǎn)
  47.                  l_zhuan();//左轉(zhuǎn)
  48.                  l_zhuan();//左轉(zhuǎn)
  49.                  l_zhuan();//左轉(zhuǎn)
  50.                  l_zhuan();//左轉(zhuǎn)
  51.                  l_zhuan();//左轉(zhuǎn)
  52.                  l_zhuan();//左轉(zhuǎn)
  53.                   l_zhuan();//左轉(zhuǎn)
  54.              }
  55.             else
  56.             {
  57.                 goto exit;
  58.              }
  59.          //////////////////////////////////////////////////////////////////////////////////   
  60.             sonic_scan();//超波聲掃描
  61.             if (temp==0)
  62.             {
  63.                 l_zhuan();//左轉(zhuǎn)
  64.                  l_zhuan();//左轉(zhuǎn)
  65.                  l_zhuan();//左轉(zhuǎn)
  66.                  l_zhuan();//左轉(zhuǎn)
  67.                  l_zhuan();//左轉(zhuǎn)
  68.                  l_zhuan();//左轉(zhuǎn)
  69.                  l_zhuan();//左轉(zhuǎn)
  70.             }
  71.          }
  72.     exit:
  73.     q_jing();//前進(jìn)
  74.    }
  75. }
  76. void q_jing(void) //前進(jìn)
  77. {
  78.     PORTD.7=1;
  79.     PORTD.6=0;
  80.     PORTD.5=0;
  81.     PORTD.4=1;
  82. }
  83. //////////////////////////////////////////////////////////////////////////////////////
  84. void l_zhuan(void) //左轉(zhuǎn)
  85. {
  86.      PORTD.7=0;
  87.     PORTD.6=1;
  88.     PORTD.5=0;
  89.     PORTD.4=1;
  90.     delay_ms(10);
  91.     stop_car();
  92.    delay_ms(20);
  93. }
  94. /////////////////////////////////////////////////////////////////////////////////////////////
  95. void r_zhuan(void)//右轉(zhuǎn)
  96. {
  97.     PORTD.7=1;
  98.     PORTD.6=0;
  99.     PORTD.5=1;
  100.     PORTD.4=0;
  101.     delay_ms(10);
  102.     stop_car();
  103.     delay_ms(20);
  104. }
  105. //////////////////////////////////////////////////////////////////////////////////////////////
  106. void dao_car(void)//倒車
  107. {
  108.     PORTD.7=0;
  109.     PORTD.6=1;
  110.     PORTD.5=1;
  111.     PORTD.4=0;
  112. }
  113. //////////////////////////////////////////////////////////////////////////////////////////////////
  114. void stop_car(void)//停車
  115. {
  116.     PORTD.7=1;
  117.     PORTD.6=1;
  118.     PORTD.5=1;
  119.     PORTD.4=1;  
  120. }
  121. ///////////////////////////////////////////////////////////////////////////////////////////////////
  122. interrupt [TIM0_OVF] void timer0_ovf_isr(void)//定時器0中斷溢出
  123. {
  124.   TCNT0 = 255;  
  125.   n++;
  126. }
  127. /////////////////////////////////////////////////////////////////////////////////////////////////////
  128. void time0_init(void)//定時器初值
  129. {   
  130.      SREG=0X80;
  131.      TCCR0 = 0x00;  
  132.      TCNT0 = 255;
  133.     TIMSK= 0x01;
  134. }
  135. //////////////////////////////////////////////////////////////////////////////////////////////////////
  136. void sonic_scan(void)//超聲波掃描
  137. {
  138.     while(1)
  139.     {
  140.       PORTB.0=1;
  141.       delay_us(20);
  142.       PORTB.0=0;
  143.       while(1)
  144.       {  
  145.          if(PINA.4==1)
  146.          {
  147.             break;
  148.          }
  149.         
  150.       }
  151.        TCCR0 = 0x02;
  152.        n=0;  
  153.        while(1)
  154.        {  
  155.           if(PINA.4==0)
  156.           {
  157.            TCCR0 = 0x00;
  158.            break;
  159.           }
  160.         }
  161.        n=n/58;
  162.        if(n==0)
  163.        {
  164.          temp=0;
  165.          break;
  166.         }
  167.        else
  168.        {
  169.          temp=1;
  170.          break;
  171.        }
  172.       
  173. }
  174. delay_ms(1);
  175. }      

  176. //////////////////////////////////////////////////////////////////////////////////////////
  177. void r_hong(void)//右邊紅外檢測
  178. {
  179.     if (PINA.0==0)
  180.     {
  181.        l_zhuan();//左轉(zhuǎn)
  182.     }
  183. }
  184. //////////////////////////////////////////////////////////////////////////////
  185. void l_hong(void)//左邊紅外檢測
  186. {
  187.     if (PINA.1==0)
  188.     {
  189.         r_zhuan();//右轉(zhuǎn)
  190.     }
  191. }




復(fù)制代碼
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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