×
单片机 > 单片机程序设计 > 详情

51单片机循迹小车Proteus仿真程序

发布时间:2021-01-21 发布时间:
|

51循迹智能小车仿真电路及程序
仿真原理图如下


单片机源程序如下:

#include

#define uchar unsigned char 

#define uint unsigned int

uchar temp,signal,tt1,t0,t1,t2,t3,t4,t5,t6;



void delay_1ms(uint d)

{

        uint i;

        while(d--)

                for(i=0;i<75;i++);

}


void motor_run()                   //电机起动

{

          P1=0x35;

        delay_1ms(200);

        P1=0x53;

        delay_1ms(10);

/*        ENA=1;


        OUT1=0;


        OUT2=1;

        delay_1ms(800);

        OUT2=0;

        delay_1ms(200);

        

        ENB=1;


        OUT4=0;


        OUT3=1;

        delay_1ms(800);

        OUT3=0;

        delay_1ms(200);

*/

}

void motor_left()                         //左进

{

        P1=0x30;

        delay_1ms(200);

        P1=0x00;

        delay_1ms(20);

}


void motor_right()                   //右进

{

        P1=0x05;

        delay_1ms(200);

        P1=0x00;

        delay_1ms(20);

}


void motor_big_right()                         //粗右进

{

        P1=0x55;

        delay_1ms(200);

        P1=0x00;

        delay_1ms(20);

}

void motor_big_left()

{

        P1=0x33;

        delay_1ms(200);

        P1=0x00;

        delay_1ms(20);

}

void motor_stop()                                        //电机停止

{

         P1=0x00;

}

void motor_back()

{

        P1=0x53;

}

void main()

{

        t0=0;

        t1=0;

        t2=0;

        t3=0;

        t4=0;

        t5=0;

        t6=0;


        tt1=0;

        EA=1;

        ET1=1;

        TR1=1;

        TMOD=0x01;

        TH1=-(1000/256);

        TL1=-(1000%256);

        while(1)

        {


                 temp=P2;

                signal=temp&0xff;                   //得到红外反向信号

                switch(signal)

                {

                        case 0xff:           //无偏差

                                motor_run();

                                t0++;

                                if(t0==10)

                                {

                                        t0=0;

                                        motor_left();

                                        motor_right();

                                }

                                t1=t2=t3=t4=t5=t6=0;        

                                break;

                        case 0xfd:           //1轮右偏                        


                                motor_big_left();

                                t1++;

                                if(t1==4)

                                {

                                        t1=0;

                                        motor_left();

                                }

                                t0=t2=t3=t4=t5=t6=0;        

                                break;

                        case 0xef:            //4轮左偏                           


                                motor_big_right(); 

                                t2++;

                                if(t2==4)

                                {

                                        t2=0;

                                        motor_right();

                                }

                                t0=t1=t3=t4=t5=t6=0;        

                                break;

                        case 0xfb:     //2轮右偏出轨

                        case 0xf9:           //1、2轮右偏                                                

                                motor_big_left();

                                t3++;

                                if(t3==4)

                                {

                                        t3=0;

                                        motor_left();

                                }

                                t0=t1=t2=t4=t5=t6=0;        

//                                delay_1ms(10);

                                break;


                        case 0xdf:           //5左偏出轨                           

                        case 0xcf:      //4、5轮左偏

                                motor_big_right();

t4++;



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多