⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chekongzhi.txt

📁 学习12864液晶显示测试
💻 TXT
字号:
 /*
第一阶段,方向可控,速度恒定
P1口的前7个(0-7)为方向输入(光电管的输入,单片机收到高电平认为有信号)
P2的1口为舵机的pwm
P2的0口为后电机的pwm
*/


#include <regx52.h> 
#define uint unsigned int 
uint a,c;                  /*timer0用,调整占空比舵机用基本不用改动*/
uint max=10,zan=5,dang=0,dang3=0;  /*timer1用,调整占空比后电机用*/
uint psw=0,biao[7]={1790,1707,1624,1540,1456,1373,1290},i=3; 
int jishu=0,jizun,temp1;

sbit p20=P2^1;
sbit p21=P2^0;
sbit p22=P2^2;
sbit p23=P2^3;
sbit p24=P2^4;
sbit p25=P2^5;
sbit p26=P2^6;

sbit p11=P1^0;
sbit p12=P1^1;
sbit p13=P1^2;
sbit p14=P1^3;
sbit p15=P1^4;
sbit p16=P1^5;
sbit p17=P1^6;
sbit p18=P1^7;

void delay(uint k)        //k 秒
{ 
uint i,j; 
for(i=0;i<k*1000;i++) 
for(j=0;j<121;j++) ; 
} 



void timer0(void) interrupt 1 using 1 		   /*定时器0,输出PWM舵机用*/
{p20=!p20;  
c=20000-c;  
TH0=-(c/256); TL0=-(c%256);  
if(c>=500&&c<=2500)c=a; 
else c=20000-a;  
} 

void timer1(void) interrupt 3 using 1 		   /*定时器1,输出PWM后电机用*/
{ 
  if(zan)
   {
   if(dang==zan)
   		{ p21=0; }
   if(dang==max)  
   		{ p21=1;dang=0; }
   	dang++;
    } 
	else p21=0;
   TH1=0xff;TL1=0x00;
}

void timer2(void) interrupt 5
{

jishu++; 

if(!p11&&!p18&&p13&&p16&&(!p14||!p15)) zan=0;


  if(p11==0)
     i=0,psw=1;
  if(p12==0)
     i=1,psw=1;
  if(p13==0)
     i=2,psw=1;
  if(p14==0||p15==0)
     i=3,psw=1;
  if(p16==0)
     i=4,psw=1;
  if(p17==0)
     i=5,psw=1;
  if(p18==0)
     i=6,psw=1; 



 if(psw==1)
 {while(p20==0);a=c=biao[i];TH0=-(c/256); TL0=-(c%256);psw=0;
  while(!p11);while(!p12);while(!p13);while(!p14);while(!p15);while(!p16);while(!p17);while(!p18);
 }

}


void main(void) 
{

 /* 数组每个对应一个角度,现在为依次按顺序排列*/


TMOD=0x11;
  
p20=1; 
p23=p24=p25=p22=p21=1;

p11=p12=p13=p14=p15=p16=p17=p18=1;
a=1520;  
c=a;
 

TH0=-(a/256); TL0=-(a%256); 
EA=1; 
ET0=1; TR0=1;EX0=1; 
PX0=0;PT0=1; 

TH1=0XFF;TL1=0X00;
ET1=1;TR1=1;EX1=1; 
PX1=0;PT1=1;

ET2=1;TH2=0xff;TL2=0x00;TR2=1;	   RCAP2H=0xfa;      RCAP2L=0x24; 

if(p22)zan=5;
if(p23)zan=6;
if(p24)zan=7;
if(p25)zan=8;
temp1=zan;

delay(3);

while(p26);
while(p26==0);
jishu=0;
while(p26);
jizun=jishu;
for(;;) 
{ while(p26==0);
  jishu=0;
  while(p26);
  if(jishu-jizun>jizun*0.1)
    zan=10;
  if(-(jishu-jizun)>(jizun*0.1))
    zan=temp1;

} 


} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -