在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
            智能小車黑線循跡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í)小車停
            {
            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后小車開(kāi)始運(yùn)動(dòng)
            TR0=1;
            if(aa==60) //定時(shí)3s后置標(biāo)志位
            {
            aa=0;
            flag=1;
            }
            }


            關(guān)鍵詞: 智能小車C語(yǔ)言程

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉