📄 200931513572716815.txt
字号:
/********************************************************************************
寻迹小车
**********************************************************************************/
//#include<reg51.h>
#include"pin.h"
//#include"delaynms.h"
int T10=0x00,T11=0x00;
xunji()
{
void DC(int zfzhuan,int RoundSpeed);
void buj(int zfzhuan,int T10,int T11);
uchar sensor=0xff,save=0xff;
EA=1;
ET0=1;
TMOD=0x01;
/***************(检测传感器状态)*********************************/
while(1)
{
jianru=key();
if(jianru!=0xff)
{
shuru[i]=tab(jianru); //将键盘输入存入shuru[]中
i++;
if(shuru[i-1]==10) //判断输入是不是清零
{
clear_led(4);
for(k=0;k<5;k++)
shuru[k]=16;
i=0;
}
if(shuru[i-1]==7) //回退模式
{
clear_led(4);
for(k=0;k<5;k++)
shuru[k]=16;
i=0;
break;
}
}
uchar sensor1=p16;
uchar sensor2=p17;
sensor=sensor1*10+sensor2;
if(sensor!=0x0B) save=sensor; //判断是否等于11,不等保存 //if(状态!=11) 存储
/* switch(检测传感器状态)
{
case 00: DC前进;buj不动; break;
case 01: DC前进;buj左转; break;
case 10: DC前进;buj右转; break;
case 11: DC停止;switch(save)
{
case 00:buj停止; break;
case 01:buj大左转; break;
case 10:buj大右转; break;
}
}
*/
switch(sensor)
{
case 00: DC(1,8);break;
case 01: DC(1,8);buj(1,0xFC,0x18); break;
case 10: DC(1,8);buj(0,0xFC,0x18); break;
case 0x0B: {
switch(save)
{
// case 00: buj停止
case 01: DC(1,8);buj(1,0xEC,0x78); break;
case 10: DC(1,8);buj(0,0xEC,0x78); break;
default: break;
}
}
default: break;
}
}
}
void DC(int zfzhuan,int RoundSpeed) //zfzhuan 为1前进,否则后退 RoundSpeed是占空比
{
void DCzz(int RoundSpeed);
void DCfz(int RoundSpeed);
if(zfzhuan==1) DCzz(RoundSpeed);
else DCfz(RoundSpeed);
}
void DCzz(int RoundSpeed) //电机正转
{
int m;
m=10-RoundSpeed;
p25=0;
p26=1; //脉冲产生
delaynms(RoundSpeed); //毫秒延时子程序
p26=0;
delaynms(m);
}
void DCfz(int RoundSpeed) //电机反转
{
int m;
m=10-RoundSpeed;
p26=0;
p25=1; //脉冲产生
delaynms(RoundSpeed);
p25=0;
delaynms(m);
}
void buj(int zfzhuan,int T10,int T11) //zfzhuan 为1左转,否则右转
{
void bujzz(int T10,int T11); //函数声明
void bujfz(int T10,int T11);
switch(zfzhuan)
{
case 1 : bujzz(T10,T11); break; //凋用正转子程序
case 0 : bujfz(T10,T11); break; //凋用反转子程序
default : break; //停止
}
}
void bujzz(int T10,int T11) //电机正转
{
p10=1; //复位控制
p11=1; //HALF/FULL控制
p13=1; //CW/CCW控制(正反转)
p14=1; //使能端控制
TH0=T10;
TL0=T11;
TR0=1;
}
void bujfz(int T10,int T11) //电机反转
{
p10=1; //复位控制
p11=1; //HALF/FULL控制
p13=0; //CW/CCW控制(正反转)
p14=1; //脉冲产生
TH0=T10;
TL0=T11;
TR0=1;
}
inter() interrupt 1
{
TR0=0;
p12=!p12;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -