找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5914|回复: 3
收起左侧

QX-A51智能小车单片机程序源码

[复制链接]
ID:319864 发表于 2018-5-1 15:04 | 显示全部楼层 |阅读模式
include <reg52.h> //51头文件
#include <..\CONFIG\QXA51.h>//QX-A51智能小车配置文件
unsigned char pwm_left_val = 140;//左电机占空比值 取值范围0-170,0最快
unsigned char pwm_right_val = 150;//右电机占空比值取值范围0-170 ,0最快
unsigned char pwm_t;//周期

void delay(unsigned int z)//毫秒级延时
{
        unsigned int x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}        
/*小车前进*/
void forward()
{
        left_motor_go; //左电机前进
        right_motor_go; //右电机前进
}
/*小车左转*/
void left_run()
{
        left_motor_stops; //左电机停止
        right_motor_go; //右电机前进        
}
/*小车右转*/
void right_run()
{
        right_motor_stops;//右电机停止
        left_motor_go;    //左电机前进
}

/*PWM控制使能 小车后退*/
void backward()
{
        left_motor_back; //左电机后退
        right_motor_back; //右电机后退        
}
/*PWM控制使能 小车高速右转*/
void right_rapidly()
{
        left_motor_go;
        right_motor_back;        
}

//定时器0中断
void timer0() interrupt 1
{
        pwm_t++;//周期计时加
        if(pwm_t == 255)
                pwm_t = EN1 = EN2 = 0;
        if(pwm_left_val == pwm_t)//左电机占空比        
                EN1 = 1;               
        if(pwm_right_val == pwm_t)//右电机占空比
                EN2 = 1;                        
}
void keyscan()
{
        for(;;)        //死循环
        {
                if(key_s2 == 0)// 实时检测S2按键是否被按下
                {
                        delay(5); //软件消抖
                        if(key_s2 == 0)//再检测S2是否被按下
                        {
                                while(!key_s2);//松手检测
                                beep = 0;        //使能有源蜂鸣器
                                delay(200);//200毫秒延时
                                beep = 1;        //关闭有源蜂鸣器
                                break;                //退出FOR死循环
                        }
                }
        }        
}

void T0_init()
{
        TMOD |= 0x02;//8位自动重装模块
        TH0 = 220;
        TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ
        TR0 = 1;//启动定时器0
        ET0 = 1;//允许定时器0中断
        EA        = 1;//总中断允许        
}
void main()
{

        keyscan();//等待按下S2启动小车
        delay(1000);//延时1秒
        T0_init();//定时器0初始化,产生PWM信号
        while(1)
        {
                //为0 识别障碍物 为1没有识别到障碍物
                if(left_led2 == 1 && right_led2 == 1)//左右都没识别到障碍物
                {
                        pwm_left_val = 140;//左电机占空比值 取值范围0-170,0最快
                        pwm_right_val = 150;//右电机占空比值取值范围0-170 ,0最快
                        forward();//前进
                }
                if(left_led2 == 1 && right_led2 == 0)//小车右侧识别到障碍物,左转躲避
                {
                        pwm_left_val = 180;//左电机占空比值 取值范围0-170,0最快
                        pwm_right_val = 110;//右电机占空比值取值范围0-170 ,0最快
                        left_run();//左转
                        delay(40);//左转40毫秒(实现左小弯转)
                }
                if(left_led2 == 0 && right_led2 == 1)//小车左侧识别到障碍物,右转躲避
                {
                        pwm_left_val = 100;//左电机占空比值 取值范围0-170,0最快
                        pwm_right_val = 180;//右电机占空比值取值范围0-170 ,0最快
                        right_run();//右转
                        delay(40);//右转40毫秒(实现右小弯转)
                }
                if(left_led2 == 0 && right_led2 == 0) //小车左右两侧都识别到障碍物,后退掉头
                {
                        pwm_left_val = 150;//左电机占空比值 取值范围0-170,0最快
                        pwm_right_val = 160;//右电机占空比值取值范围0-170 ,0最快        
                        backward();//后退
                        delay(100);//后退的时间影响后退的距离。后退时间越长、后退距离越远。
                        pwm_left_val = 140;//左电机占空比值 取值范围0-170,0最快
                        pwm_right_val = 150;//右电机占空比值取值范围0-170 ,0最快
                        right_rapidly();//高速右转
                        delay(180);//延时时间越长,转向角度越大。        
                }               
               
        }
}

回复

使用道具 举报

ID:323320 发表于 2018-5-14 10:14 | 显示全部楼层
求助LZ,头文件config/qxa51.h在哪里能找到啊,搜不到这个配置文件的资源
回复

使用道具 举报

ID:323313 发表于 2018-6-27 20:50 | 显示全部楼层
marrytopic 发表于 2018-5-14 10:14
求助LZ,头文件config/qxa51.h在哪里能找到啊,搜不到这个配置文件的资源

我有,你加我qq  2686073741
回复

使用道具 举报

ID:379643 发表于 2018-8-26 18:14 | 显示全部楼层
楼主资料可以分享一下吗,视频教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表