单片机学习小组
直播中

申根换

7年用户 1596经验值
私信 关注

请问有51控制循迹小车的C代码吗?


回帖(3)

徐音之

2019-5-28 08:52:51
[C] 纯文本查看 复制代码
#include "reg52.h"***it Moto_RA=P1^6;***it Moto_RB=P1^5;***it Moto_LA=P1^4;***it Moto_LB=P1^3;//左右电机驱动/************************************函数名称:void Delay(unsigned char num)*函数功能:延时*参数说明:num 延时时间 数值最大255*返回说明:无*其它说明:不精准延时***********************************/void Delay(unsigned char num){unsigned int temp=0;while(num--){temp=2000;while(temp--);}}/************************************函数名称:void Car_Run(unsigned char dire)*函数功能:行进方向控制*参数说明:dire 方向 0:停止   1:前   2:后   3:左   4:右*返回说明:无*其它说明:左右方向为原地转弯 【若想前进中和后退中转弯 需要与调速函数配合 使两个车轮转速不同】***********************************/void Car_Run(unsigned char dire){switch (dire){case 0: //停止{Moto_RA=0;Moto_RB=0;Moto_LA=0;Moto_LB=0;}break;case 1://前进{Moto_RA=1;Moto_RB=0;Moto_LA=1;Moto_LB=0;}break;case 2://后退{Moto_RA=0;Moto_RB=1;Moto_LA=0;Moto_LB=1;}break;case 3://左转{Moto_RA=1;Moto_RB=0;Moto_LA=0;Moto_LB=1;}break;case 4://右转{Moto_RA=0;Moto_RB=1;Moto_LA=1;Moto_LB=0;}break;default:break;}}/************************************函数名称:void main(void)*函数功能:程序入口*参数说明:无*返回说明:无*其它说明:main函数有且只有一个***********************************/void main(void){while(1){Car_Run(1);//前进Delay(20);Car_Run(2);//后退Delay(20);Car_Run(3);//左转Delay(20);Car_Run(4);//右转Delay(20);Car_Run(0);//停止Delay(20);}}
补充内容 (2016-5-15 13:38):
#include
***it IN1=P1^0;
***it IN2=P1^1;
***it ENA=P1^3;
void delay(unsigned int z);
void delay_us(unsigned int aa);
void main()
{
        while(1)
        {
                unsigned int i,cycle=0,T=2048;
                IN1=1;                         /...
补充内容 (2016-5-15 13:40):
IN2=0;
                for(i=0;i<1000;i++)
                {
                        delay(10);        //PWM占空比为50%,修改延时调整PWM脉冲
                        ENA=~ENA;
                }
                IN1=0;        //反转
                IN2=1;
                for(i=0;i<1000;i++)
                {
                        delay(20);                 //PWM占空比为50%,修改延时调...
补充内容 (2016-5-15 13:40):
                        ENA=~ENA;
                }
                IN1=1;           //自动加速正转
                IN2=0;
                while(cycle!=T);
                {
                ENA=1;
                delay_us(cycle++);
                ENA=0;
                delay_us(T-cycle);
                }
                IN1=0;           //自动减速反转
                IN2=1;
                while...
补充内容 (2016-5-15 13:41):
while(cycle!=T);
                {
                ENA=1;
                delay_us(cycle++);
                ENA=0;
                delay_us(T-cycle);
                }
        }
}
补充内容 (2016-5-15 13:42):
void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
           for(y=110;y>0;y--);
}
void delay_us(unsigned int aa)
{
        while(aa--);
}
举报

宋明星

2019-5-28 09:10:23
百度上一大把吧,多数都是红外对管做的  
举报

林秀玲

2019-5-28 09:22:02
确实红外对管做的经典,一般是黑线吧?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分