教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

智能循迹小车程序[1]

来源:网络收集 时间:2026-01-20
导读: 智能循迹小车程序 #includereg52.h #define uchar unsigned char #define uint unsigned int //D0-D7:f,b,a,e,d,h,c,g 共阴 依次编码 //74LS04反相器驱动数码管 uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7}; uchar i = 0;

智能循迹小车程序

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//D0-D7:f,b,a,e,d,h,c,g 共阴 依次编码

//74LS04反相器驱动数码管

uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7};

uchar i = 0; //用于0-3数码管轮流显示

uint j = 0;

//计时的次数 uint time=0; uint pwm=16; uint speed; //计时 //占空比 //调制PWM波的当前的值

sbit R=P3^2; //右边传感器 P3^2

sbit L=P3^3; //左边传感器 P3^3

//电机驱动口定义

sbit ENB=P1^0; //前轮电机停止控制使能

sbit ENA=P1^1; //后轮控制调速控制端口

sbit IN1=P1^2;

sbit IN2=P1^3;

sbit IN3=P1^4;

sbit IN4=P1^5;

void Init()

{

TMOD = 0x12;

//定时器0用方式2,定时器1用方式1 //前轮 //前轮 //后轮 //后轮 TH0=(256-200)/256; //pwm

TL0=(256-200)/256;

TH1 = 0x0F8; //定时2ms

TL1 = 0x30;

EA = 1;

ET0 = 1; ET1 = 1; TR0 = 1;

TR1 = 1;

}

void tim0(void) interrupt 1 //产生PWM

{

speed ++; if(speed <= pwm) //pwm 就相当于占100的比例

} { ENA = 1; } else if(speed < 100) { } else speed = 0; ENA = 0;

void time1() interrupt 3

{

TH1 = 0x0F8;

TL1 = 0x30;

i =(i+1) % 4;

}

//定时2ms //0-3循环 //显示最低位数码管 //段选清零防止乱码 //送段码信号 j++; if(i == 0) { P0 = 0x00; P0 = table[time%10]; } if(i == 1) { P0 = 0x00; } P0 = table[time/ 10% 10]; if(i == 2) { P0 = 0x00; } P0 = table[time/ 100% 10]; if(i == 3) { P0 = 0x00; P0 = table[time/ 1000% 10]; //送位选信号 } P2 = ( 0x10 << i ); if(j == 500) { } time ++; j = 0; //500次为1秒

void forward()

{

IN2=1;

IN1=0;

}

void back()

{

IN2=0;

IN1=1;

}

void left() //前进 //后退

//左转 //打开使能 { ENB=1;

IN3=1;

IN4=0;

}

void right()

//右转 //打开使能 { ENB=1;

IN3=0;

IN4=1;

}

void stop()

{

IN2=0;

IN1=0;

IN3=0;

IN4=0;

}

void main()

{

Init();

while(1)

//停止 //定时器初始化 { if(R==0 && L==1) { right(); forward(); //右传感器检测到黑线 //右转 while(R==0 && L==1);

//左传感器检测到黑线

} if(R==1 && L==0) { left();

forward(); while(R==1 && L==0); } if(R==0 && L==0) //都检测到黑线则停止 { stop(); j = 0; //定时器仍在工作,计数时间清空 } else //都没有检测到黑线 {

}

}

}

ENB = 0; forward(); //关闭转向控制

智能循迹小车程序[1].doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/39558.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)