欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于AVR單片機的智能小車 [打印本頁]

作者: mz_gzw    時間: 2018-9-20 15:49
標題: 基于AVR單片機的智能小車
基于AVR單片機的智能小車,加入了紅外模塊和超聲波模塊,用來避障

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

P80920-154542.jpg

作者: admin    時間: 2018-9-20 17:32
好東東 樓主能分享一下源碼和資料嗎?
作者: mz_gzw    時間: 2018-9-20 17:57
  1. #include <mega32a.h>
  2. #include <delay.h>
  3. void dao_car(void); //倒車
  4. void r_zhuan(void);//右轉
  5. void l_zhuan(void);//左轉
  6. void q_jing(void);//前進
  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();//右轉
  39.              r_zhuan();//右轉
  40.              r_zhuan();//右轉
  41.              r_zhuan();//右轉
  42.             //////////////////////////////////////////////////////////////////////////////
  43.             sonic_scan();//超波聲掃描
  44.              if (temp==0)
  45.              {
  46.                  l_zhuan();//左轉
  47.                  l_zhuan();//左轉
  48.                  l_zhuan();//左轉
  49.                  l_zhuan();//左轉
  50.                  l_zhuan();//左轉
  51.                  l_zhuan();//左轉
  52.                  l_zhuan();//左轉
  53.                   l_zhuan();//左轉
  54.              }
  55.             else
  56.             {
  57.                 goto exit;
  58.              }
  59.          //////////////////////////////////////////////////////////////////////////////////   
  60.             sonic_scan();//超波聲掃描
  61.             if (temp==0)
  62.             {
  63.                 l_zhuan();//左轉
  64.                  l_zhuan();//左轉
  65.                  l_zhuan();//左轉
  66.                  l_zhuan();//左轉
  67.                  l_zhuan();//左轉
  68.                  l_zhuan();//左轉
  69.                  l_zhuan();//左轉
  70.             }
  71.          }
  72.     exit:
  73.     q_jing();//前進
  74.    }
  75. }
  76. void q_jing(void) //前進
  77. {
  78.     PORTD.7=1;
  79.     PORTD.6=0;
  80.     PORTD.5=0;
  81.     PORTD.4=1;
  82. }
  83. //////////////////////////////////////////////////////////////////////////////////////
  84. void l_zhuan(void) //左轉
  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)//右轉
  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();//左轉
  182.     }
  183. }
  184. //////////////////////////////////////////////////////////////////////////////
  185. void l_hong(void)//左邊紅外檢測
  186. {
  187.     if (PINA.1==0)
  188.     {
  189.         r_zhuan();//右轉
  190.     }
  191. }




復制代碼

作者: mz_gzw    時間: 2018-9-20 17:59
  1. #include <mega32a.h>
  2. #include <delay.h>
  3. void dao_car(void); //倒車
  4. void r_zhuan(void);//右轉
  5. void l_zhuan(void);//左轉
  6. void q_jing(void);//前進
  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();//右轉
  39.              r_zhuan();//右轉
  40.              r_zhuan();//右轉
  41.              r_zhuan();//右轉
  42.             //////////////////////////////////////////////////////////////////////////////
  43.             sonic_scan();//超波聲掃描
  44.              if (temp==0)
  45.              {
  46.                  l_zhuan();//左轉
  47.                  l_zhuan();//左轉
  48.                  l_zhuan();//左轉
  49.                  l_zhuan();//左轉
  50.                  l_zhuan();//左轉
  51.                  l_zhuan();//左轉
  52.                  l_zhuan();//左轉
  53.                   l_zhuan();//左轉
  54.              }
  55.             else
  56.             {
  57.                 goto exit;
  58.              }
  59.          //////////////////////////////////////////////////////////////////////////////////   
  60.             sonic_scan();//超波聲掃描
  61.             if (temp==0)
  62.             {
  63.                 l_zhuan();//左轉
  64.                  l_zhuan();//左轉
  65.                  l_zhuan();//左轉
  66.                  l_zhuan();//左轉
  67.                  l_zhuan();//左轉
  68.                  l_zhuan();//左轉
  69.                  l_zhuan();//左轉
  70.             }
  71.          }
  72.     exit:
  73.     q_jing();//前進
  74.    }
  75. }
  76. void q_jing(void) //前進
  77. {
  78.     PORTD.7=1;
  79.     PORTD.6=0;
  80.     PORTD.5=0;
  81.     PORTD.4=1;
  82. }
  83. //////////////////////////////////////////////////////////////////////////////////////
  84. void l_zhuan(void) //左轉
  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)//右轉
  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();//左轉
  182.     }
  183. }
  184. //////////////////////////////////////////////////////////////////////////////
  185. void l_hong(void)//左邊紅外檢測
  186. {
  187.     if (PINA.1==0)
  188.     {
  189.         r_zhuan();//右轉
  190.     }
  191. }




復制代碼





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1