<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智能小車(chē)C語(yǔ)言程序

          智能小車(chē)C語(yǔ)言程序

          作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
          智能小車(chē)黑線(xiàn)循跡C語(yǔ)言程序
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int

          sbit LeftIR=P1^6; //左邊紅外接收
          sbit RightIR=P1^7; //右邊紅外接收
          sbit ENA=P1^2; // L298的Enable A
          sbit IN1=P1^0; // L298的Input 1
          sbit IN2=P1^1; // L298的Input 2
          sbit ENB=P1^5; // L298的Enable B
          sbit IN3=P1^3; // L298的Input 3
          sbit IN4=P1^4; // L298的Input 4
          uchar t=0; //中斷計(jì)數(shù)器
          uchar motor_1=0,motor_2=0; //電機(jī)1,2速度值
          uchar tmp1,tmp2; // 電機(jī)當(dāng)前速度值
          uchar aa; //定時(shí)器1中斷計(jì)數(shù)
          bit flag=0; //標(biāo)志位


          void motor(uchar index, char speed)
          {
          if(speed>=-100 && speed<=100)
          {
          if(index==1) // 電機(jī)1的處理
          {
          motor_1=abs(speed); // 取速度的絕對(duì)值
          if(speed<0) // 速度值為負(fù)則反轉(zhuǎn)
          {
          IN1=0;
          IN2=1;
          }
          else // 不為負(fù)數(shù)則正轉(zhuǎn)
          {
          IN1=1;
          IN2=0;
          }
          }
          if(index==2) // 電機(jī)1的處理
          {
          motor_2=abs(speed); // 取速度的絕對(duì)值
          if(speed<0) // 速度值為負(fù)則反轉(zhuǎn)
          {
          IN3=0;
          IN4=1;
          }
          else // 不為負(fù)數(shù)則正轉(zhuǎn)
          {
          IN3=1;
          IN4=0;
          }
          }
          }
          }
          void init()
          {
          TMOD=0x12; // 設(shè)定T0的工作模式為2
          TH0=0x9B; // 裝入定時(shí)器的初值
          TL0=0x9B;
          TH1=(65536-50000)/256; //設(shè)置初值定時(shí)50ms
          TL1=(65536-50000)%6;
          EA=1; // 開(kāi)中斷
          ET0=1; // 定時(shí)器0允許中斷
          ET1=1; //定時(shí)器1允許中斷
          TR0=0; // 關(guān)閉定時(shí)器0
          TR1=0; // 關(guān)閉定時(shí)器0
          ENA=0; //關(guān)閉電機(jī)1
          ENB=0; //關(guān)閉電機(jī)2
          }
          void main()
          {
          int irDetectLeft,irDetectRight;
          init();
          while(1)// 電機(jī)實(shí)際控制演示
          {
          irDetectRight = RightIR;//右邊接收
          irDetectLeft = LeftIR;//左邊接收
          if((irDetectLeft==0)&&(irDetectRight==0))//向前進(jìn)
          {
          motor(1,100);
          motor(2,100);
          }
          if((irDetectLeft==0)&&(irDetectRight==1))//右轉(zhuǎn)
          {
          motor(1,-100);
          motor(2,100);
          }
          if((irDetectLeft==1)&&(irDetectRight==0))//左轉(zhuǎn)
          {
          motor(1,100);
          motor(2,-100);
          }
          if((irDetectLeft==1)&&(irDetectRight==1)&&(flag==0)) //第一次探測(cè)定時(shí)器1開(kāi)始計(jì)時(shí)
          {
          motor(1,100);
          motor(2,100);
          TR1=1;
          }
          if((irDetectLeft==1)&&(irDetectRight==1)&&(flag==1))//第二次探測(cè)時(shí)小車(chē)停
          {
          TR0=0;
          ENA=0;
          ENB=0;
          }
          }
          }
          void timer0() interrupt 1 // T0中斷服務(wù)程序
          {
          if(t==0) // 1個(gè)PWM周期完成后才會(huì)接受新數(shù)值
          {
          tmp1=motor_1;
          tmp2=motor_2;
          }
          if(t ENA=1;
          else
          ENA=0; // 產(chǎn)生電機(jī)1的PWM信號(hào)
          if(t ENB=1;
          else
          ENB=0; // 產(chǎn)生電機(jī)2的PWM信號(hào)
          t++;
          if(t>=100)
          t=0; // 1個(gè)PWM信號(hào)由100次中斷產(chǎn)生
          }
          void timer1() interrupt 3
          {
          TH1=(65536-50000)/256;
          TL1=(65536-50000)%6;
          aa++;
          if(aa==40) //定時(shí)2s后小車(chē)開(kāi)始運(yùn)動(dòng)
          TR0=1;
          if(aa==60) //定時(shí)3s后置標(biāo)志位
          {
          aa=0;
          flag=1;
          }
          }


          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();