智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
}
if(I_OFFSET>255) I_OFFSET=255;
pwm_kong=P*OFFSET+I_OFFSET+D*D_OFFSET;//PID运算
if(pwm_kong>255)pwm_kong=255;//PWM为8位,总的计数值为0-255
PWM0_set(pwm_kong);
}
else if(OFFSET==0) { zheng=1; fan=1; ting=0; in1=1;
in2=1;//当没有偏差时剎停 in3=0;
in4=0;//防止抖动 } }
//***************************************************************************************
//下面是关于红外遥控模块的功能函数集合 void intersvr1(void) interrupt 2 using 1 //外部中断解码服务子程序 {
Tc=TH0*256+TL0; //提取中断时间间隔时长,以确定信息类型 TH0=0;
TL0=0; //定时中断重新置零 if((Tc>Imin)&&(Tc } //找到启始码 if(f==1) { { Im[m/8]=Im[m/8]>>1|0x80; m++; } //周期长度在这个范围内代表1 if(Tc>Inum1&&Tc 36 智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰) if(Tc>Inum2&&Tc //周期在此范围内代表0 Im[m/8]=Im[m/8]>>1; m++; //取码 } if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) { IrOK=1; } else IrOK=0; //取码无效 } } } //*********************************************************************************** void hongwai() { //修改 in1=0; in2=0; in3=0; in4=0; p1_5=1;fan=0; pwminit(); while(1) { if(IrOK==1) { if(Im[2]==0x0a && flag==1) //左,亮灭 { p1_5=0; p1_6=1; in3=1; in4=0;//电机正转,车向左 //修改 IrOK=0; } if(Im[2]==0x1e && flag==1) { p1_5=1; p1_6=0; in3=0; //右,灭亮 //误差数组计数变量 //红外遥控模式的控制函数 //读码有效 //进行校验 //取够4个八位二进制数 37 智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰) in4=1;//电机反转,车向右 //修改 IrOK=0; } if(Im[2]==0x05 && flag==1) //ok键摆正 { in3=0; in4=0; //修改 IrOK=0; } if(Im[2]==0x0e && flag==1) { zheng=0; fan=1; in1=1; in2=0; //修改 IrOK=0; } if(Im[2]==0x1a&& flag==1) { fan=0; zheng=1; in1=0; in2=1; //修改 IrOK=0; } if(Im[2]==0x54 && flag==1 ) {p1_5=1; p1_6=1; in1=0; in2=0; in3=0; in4=0; //修改 IrOK=0; } if(Im[2]==0x03 && flag==1) { //向前跑 //向后跑 //剎停 //退出红外模式,进入主函数循环 38 智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰) flag_chao=0; flag_hong=0; //修改 IrOK=0; in1=0; in2=0; in3=0; in4=0; return;} //修改 IrOK=0; } } } //*******************************************************************************************//******************************************************************************************* /*-------------------------------------------------------------------------- AT89X51.H Header file for the low voltage Flash Atmel AT89C51 and AT89LV51. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __AT89X51_H__ #define __AT89X51_H__ /*------------------------------------------------ Byte Registers ------------------------------------------------*/ //sfr P0 = 0x80; //sfr SP = 0x81; //sfr DPL = 0x82; //sfr DPH = 0x83; //sfr PCON = 0x87; //sfr TCON = 0x88; //sfr TMOD = 0x89; //sfr TL0 = 0x8A; //sfr TL1 = 0x8B; //sfr TH0 = 0x8C; //sfr TH1 = 0x8D; //sfr P1 = 0x90; //sfr SCON = 0x98; 39 智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰) //sfr SBUF = 0x99; ////sfr P2 = 0xA0; //sfr IE = 0xA8; //sfr P3 = 0xB0; //sfr IP = 0xB8; //sfr PSW = 0xD0; //sfr ACC = 0xE0; //sfr B = 0xF0; /*------------------------------------------------ P0 Bit Registers ------------------------------------------------*/ sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87; /*------------------------------------------------ PCON Bit Values ------------------------------------------------*/ #define IDL_ 0x01 #define STOP_ 0x02 #define PD_ 0x02 /* Alternate definition */ #define GF0_ 0x04 #define GF1_ 0x08 #define SMOD_ 0x80 /*------------------------------------------------ TCON Bit Registers ------------------------------------------------*/ //sbit IT0 = 0x88; //sbit IE0 = 0x89; //sbit IT1 = 0x8A; //sbit IE1 = 0x8B; //sbit TR0 = 0x8C; //sbit TF0 = 0x8D; //sbit TR1 = 0x8E; 40