setpping-driver.c

来自「这是9个步进电机控制程序,每个都编译通过,并在使用中,可以共同商讨.联系:gua」· C语言 代码 · 共 63 行

C
63
字号
//功能:方向控制
//加速,匀速,减速,
//定位
//调速
#include<reg51.h>
#define AIMPOSITION  200
sbit DIR   = P0^0; //Z位移电机方向控制,1-up,0-down
sbit PULSE = P0^1; //Z位移电机脉冲输入
unsigned char aimposition;//瞄准高度,隐含参数,不可见
sbit ACKNOWLEDGE=P3^7;	  //应答信号输入
sbit DETECT=P1^2; //针头到位检测,低电平有效
void Alarm(x);
void DelayChar(unsigned char x);
void StepingMotor(unsigned char maxv)	//dir 方向;maxv 最高速度
{
	unsigned char j,step;
	unsigned int i;
	unsigned char v_down,v_up;

	v_down = maxv;
	v_up   = maxv;


	//针头下降-----------------------------------
	DIR = 0;//方向设置
	//-------------------------------------------
	for(i=6;i>0;i--) //加速
	{
		PULSE = 0;	DelayChar(v_down+i*20);
		PULSE = 1;	DelayChar(v_down+i*20);
	}
	for(i=0;i<AIMPOSITION+aimposition-12;i++)
	{
		PULSE = 0;DelayChar(v_down);
		PULSE = 1;DelayChar(v_down);
	}
	for(i=0;i<6;i++) //减速
	{
		PULSE = 0;	DelayChar(v_down+i*20);
		PULSE = 1;	DelayChar(v_down+i*20);
	}
	//检查过片是否完成---------------------------
	if(j<200) //如果没有超时
	{ 
    ACKNOWLEDGE = 1;				
	while(!ACKNOWLEDGE) //则等待过片完成
	
		ACKNOWLEDGE = 1;			
	}
	else
		Alarm(1); //否则,报警
	//检测支架-------------------------------------
	step = 60; //默认检测步数(高度)
	DETECT = 1;				
	while(DETECT&&step)
	{
		PULSE = 0;	DelayChar(60);
		PULSE = 1;	DelayChar(60);
		step--;
		DETECT = 1;
    }
 }

⌨️ 快捷键说明

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