新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 智能小車循跡記時測速程序

        智能小車循跡記時測速程序

        作者: 時間:2016-12-02 來源:網絡 收藏

        while(1)
        {
        if(P10==0&&P11==0&&P12==0)
        {
        TR0=0; //顯示時間 停
        P0=d[0];
        P2=0XFE;
        delay(1);
        P0=d[3];
        P2=0XFB;
        delay(3);

        P0=d[2]; //顯示測速 停
        P2=0XFD;
        delay(3);
        P0=d[3];
        P2=0XF7;
        delay(3);
        P14=1;P15=1;P16=1; P17=1;
        }
        }
        }
        void timer1() interrupt 3 //中斷 服務程序
        {
        unsigned int qq=0,ww=0;
        TH1=0XFc;
        TL1=0X18;//1ms
        i++;
        switch(i%4)
        {
        case 0:P0=c[0],P2=0XFE;d[0]=c[0];break;
        case 1:P0=c[1],P2=0XFD;d[1]=c[1];break;
        case 2:P0=c[2],P2=0XFB;d[2]=c[2]; break;
        case 3:P0=c[3],P2=0XF7;d[3]=c[3]; break;
        default:break;
        }
        P14=1;P15=1;P16=1; P17=1;

        if(P10==0&&P11==0&&P12==0)//全測到
        dr=0;
        if(P10==1&&P11==0&&P12==1)//中間測到
        dr=1;
        if(P10==0&&P11==1&&P12==1) //左邊測到
        dr=2;
        if(P10==1&&P11==1&&P12==0) //右邊測到
        dr=3;
        if(P10==0&&P11==0&&P12==1) //左兩測到
        dr=4;
        if(P10==1&&P11==0&&P12==0) //右兩測到
        dr=5;

        switch(dr)
        {
        case 0:P14=1,P15=1,P16=1,P17=1,TR1=0;break; //全測到 停

        case 1:P14=0,P15=1,P16=0,P17=1;break; //直走

        case 2:P14=1,P15=1,P16=0,P17=1,ww=1;break; //左拐

        case 3:P14=0,P15=1,P16=1,P17=1,qq=1;break; //右拐

        case 4:P14=1,P15=0,P16=0,P17=1,ww=1;break; //左兩測到 左拐

        case 5:P14=0,P15=1,P16=1,P17=0,qq=1;break; //右兩測到 右拐
        }
        /*跑出跑道外記憶 回到跑道內 */
        if(dr==2&&ww==1||dr==4&&ww==1) //單邊或雙邊 測到跑出去
        {
        qq=0;
        P14=1;P15=1;P16=0;P17=1;
        }
        if(dr==3&&qq==1||dr==5&&qq==1)
        {
        ww=0;
        P14=0;P15=1;P16=1;P17=1;
        }

        if(i==1000) //1s
        {
        kop=TH0;//計數器計入脈沖
        kop=kop<<8;
        kop=kop+TL0;
        kop=kop*15;
        c[3]=a[kop/10];
        c[2]=a[kop%10];
        time++;
        c[1]=a[time/10];
        c[0]=a[time%10];
        i=0;
        TH0=0;
        TL0=0;
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 大理市| 玛沁县| 社会| 讷河市| 神木县| 义乌市| 东莞市| 特克斯县| 泰州市| 南澳县| 饶平县| 萨迦县| 宜川县| 筠连县| 南漳县| 武平县| 苍南县| 白城市| 临夏县| 镇宁| 孟津县| 安徽省| 离岛区| 会同县| 石景山区| 桂平市| 岢岚县| 重庆市| 富锦市| 沅陵县| 富平县| 竹山县| 贞丰县| 平凉市| 漯河市| 荥经县| 南充市| 桂东县| 资阳市| 台前县| 安丘市|