找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4163|回复: 1
打印 上一主题 下一主题
收起左侧

四探头循迹小车代码16种全情况单片机源代码

[复制链接]
跳转到指定楼层
楼主
ID:593787 发表于 2019-8-1 19:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>

sbit r1=P2^7;
sbit r2=P2^6;        
sbit l1=P2^4;        
sbit l2=P2^3;
sbit z=P1^4;//定义单片机连接循迹板右边光电管的引脚
sbit y=P1^1;//定义单片机连接循迹板左边光电管的引脚
sbit q1=P1^3;
sbit q2=P1^2;


void delay(int z)//pwm中使用的延时函数
{
        int i,j;
        for(i=2;i>0;i--)
        for(j=z;j>0;j--);
}

void qian()//左右轮协同前进子函数
{
        r1=0;
        r2=1;        
        l1=1;        
        l2=0;
        delay(8);//pwm调速 此为pwm有效值,前进时速度为全速的90%
        r1=1;
        r2=1;
        l1=1;
        l2=1;
        delay(10-8);         
}
void turnright()//左右轮协同  右转子函数
{
        r1=1;
        r2=0;
        l1=1;
        l2=0;
        delay(7);//pwm调速 此为pwm有效值,前进时速度为全速的80%
        r1=1;
        r2=1;
        l1=1;
        l2=1;
        delay(10-7);
}
void turnleft()//左右轮协同  左转子函数
{
        r1=0;
        r2=1;
        l1=0;
        l2=1;
        delay(7);//pwm调速 此为pwm有效值,前进时速度为全速的80%
        r1=1;
        r2=1;
        l1=1;
        l2=1;
        delay(10-7);
}
void ting()//左右轮都停止转动
{
        r1=1;
        r2=1;
        l1=1;
        l2=1;
        delay(50000);
}

void main()//主函数
{
           z=1;
           y=1;
           q1=1;
           q2=1;

                while(1)//单片机不间断监测 (是个死循环)
                {           
                                                                  
                                        qian();//调用前进子函数,使小车光电管不满足以下几个条件时都处于前进状态
                                while((q1==1)&&(q2==0))//判断当左边光电管遇到黑线时
                                {                                                        
                                        turnleft();//调用左转子函数
                                }
                                while((q1==0)&&(q2==1))//判断当右边光电管遇到黑线时
                                {        
                                        turnright();//调用右转子函数
                                }
                                while((z==1)&&(y==1)&&(q1==1)&&(q2==1))//判断当左、前、右光电管均遇到黑线时
                                {
                                         qian();                     //即遇到十字路口时 继续前进                                                        
                                }
                                while((z==1)&&(y==1)&&(q1==0)&&(q2==0))//判断当左、右光电管均遇到黑线,前光电管时
                                {
                                        ting();                          //即遇到T字路口时 停止        
                                }
                        

以上代码51hei打包下载:
循迹小车16种.zip (932 Bytes, 下载次数: 58)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1007161 发表于 2022-2-27 22:54 | 只看该作者
q1q2是什么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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