资源简介
自己做的五路循迹,基于51单片机的。能成功寻迹。四路驱动
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define lcd P0
sbit lcden=P2^7;
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
uchar code table1[]=“cm/s“;
uchar code table2[]=“s“;
uchar code table3[]=“Speed“;
uchar code table4[]=“Time“;
void delay(uint xms);
sbit ENA=P3^4;//左前pwm使能
sbit ENB=P3^5;//右前电机pwm使能
sbit ENC=P3^6;//左后
sbit END=P3^7;//右后
uchar pwmA=0;//左前轮的占空比
uchar pwmB=0; //右前
uchar pwmC=0;// 左后
uchar pwmD=0;// 右后
sbit left1=P2^0;//四路寻迹左一探头
sbit left2=P2^1;
sbit right1=P2^2;
sbit right2=P2^3;//从左到右依次为左二左一,右一右二
sbit middle=P2^4;
sbit left_front1=P1^0;//四个电机的io口
sbit left_front2=P1^1;
sbit right_front1=P1^2;
sbit right_front2=P1^3;
sbit left_back1=P1^4;
sbit left_back2=P1^5;
sbit right_back1=P1^6;
sbit right_back2=P1^7;
uchar t=0;
uint numz;
long int miao=0;
long int v;
long int M1s;
long int M=0;
uchar baishigebaitshitget;
void T1_init()//用于产生调pwm
{
TMOD=0x10;
TH1=(65536-50)/256;
TL1=(65536-50)%256;
EA=1;
ET1=1;
TR1=1;
}
void timer1() interrupt 3//频率20k,pwm
{
TH1=(65536-50)/256;
TL1=(65536-50)%256;
t++;
if(t else {ENA=0;}
if(t else {ENB=0;}
if(t else {ENC=0;}
if(t else {END=0;}
if(t>=100)
{t=0;}
}
void straight()
{
left_front1=1;
left_front2=0;
pwmA=99;//60
TR1=1;
right_front1=1;
right_front2=0;
pwmB=99;//35
TR1=1;
left_back1=1;
left_back2=0;
pwmC=99;//35
TR1=1;
right_back1=1;
right_back2=0;
pwmD=99;//
TR1=1;
}
void stop()
{
left_front1=1;
left_front2=1;
right_front1=1;
right_front2=1;
left_back1=1;
left_back2=1;
right_back1=1;
right_back2=1;
}
void lefts()//小幅度左转
{
left_front1=0;
left_front2=0;
pwmA=15;
right_front1=1;
right_front2=0;
pwmB=80;
left_back1=0;
left_back2=0;
pwmC=20;
right_back1=1;
right_back2=0;
pwmD=80;
}
void leftq()//大幅度左转
{
left_front1=0;
left_front2=1;
pwmA=15;
right_front1=1;
right_front2=0;
pwmB=50;
left_back1=0;
left_back2=1;
pwmC=15;
right_back1=1;
right_back2=0;
pwmD=50;
}
void rights()
{
left_front1=1;
left_front2=0;
pwmA=60;
right_front1=1;
right_front2=0;
pwmB=25;
left_back1=1;
left_back2=0;
pwmC=60;
right_back1=1;
right_back2=0;
pwmD=20;
}
void rightq()
{
left_front1=1;
left_front2=0;
pwmA=50;
right_front1=0;
right_front2=1;
pwmB=15;
left_back1=1;
left_back2=0;
pwmC=50;
right_back1=0;
right_back2=1;
pwmD=15;
}
void xunji()
{
uchar flag;
if((left1==1)&&(left2==1)&&(middle==0)&&(right1==1)&&(right2==1)||(left1==0)&&(left2==1)&&(middle==0)&&(right1==0)&&(right2==1))
{
flag=1;//直行
}
else if((left1==1)&&(left2==1)&&(middle==1)&&(right1==0)&&(right2==1)||(
- 上一篇:MVC做的小说管理系统
- 下一篇:石材仿形机程序
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
评论
共有 条评论