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

📄 main.c

📁 epson_u110打印头输纸步进电机驱动
💻 C
字号:
#include <reg52.h>
#include <string.h>
#include <absacc.h>
#define PAPERMOTOR_Data    XBYTE[0x4000]
#define PRN_Control		   XBYTE[0x4000]
#define  uint   unsigned int
#define  uchar  unsigned char
uint code Pap_acdata[20] = {0x3266,0x2156,0x198f,0x1599,0x1302,0x1135,0xfc4,0xeb0,0xdd2,0xd08,
						       	 0xc74,0xbe1,0xb60,0xaf1,0xa95,0xa39,0x9ef,0x9a5,0x95c,0x924};
uint code Pap_dcdata[2] = {0xc06,0x1200};
sbit HOME_Pin = P3^2;
sbit Paper_Pin = P3^4;
bit PrintDirect;
bit homeflag;
bit PAPERMOTOR_Flag;
//bit CARRIGEMOTOR_Flag;
//sbit Cut_A = P1^5;
//sbit Cut_B = P1^6;
sbit Sens = P1^7;
sbit Mark_Pin = P3^5;
uchar xdata  LOW_PRN_ControlState;
void PAPERMOTOR_Init();
void PAPERMOTOR_Hold();
void PAPERMOTOR_Rush();
void PAPERMOTOR_On();
void PAPERMOTOR_Off();
void CARRIGEMOTOR_Acce_Dece_11steps(uchar AC_DC);
void LOW_PRN_InitDotTimer(uint T0_DATA);
void PAPERMOTOR_SetStep(uchar Papermove_Direc);
void PAPERMOTOR_Move(uchar Direc, uint Steps);


void PAPERMOTOR_Init()
{
	
	LOW_PRN_ControlState &= 0x33;
	LOW_PRN_ControlState |= 0xc0;
	PAPERMOTOR_Flag = 0;

}

void PH_Timer_Set(uint PH_DATA)
{
	TH1 = -(PH_DATA/256);
	TL1 = -(PH_DATA%256);
	ET1 = 1;
	TR1 = 1;
}

/* void LOW_PRN_InitDotTimer(uint T0_DATA)
{
	TH0 = -T0_DATA/256;
	TL0 = -T0_DATA%256;
	ET0 = 1;
	TR0 = 1;
}*/
void PAPERMOTOR_Move(uchar Direc, uint Steps)
{
	uint i,PAPERSteps;
	PAPERSteps = Steps;
	PAPERMOTOR_Flag = 0;
	PAPERMOTOR_On();
	if(PAPERSteps < 22)
	{
		for(i=0;i<PAPERSteps;i++)
		{
			PAPERMOTOR_SetStep(Direc);
			//LOW_PRN_InitDotTimer(0x3266);
//			while(!PAPERMOTOR_Flag);
			PAPERMOTOR_Flag = 0;
		}
	}
	else
	{
		for(i=0;i<20;i++)
		{
			PAPERMOTOR_SetStep(Direc);
		//	LOW_PRN_InitDotTimer(Pap_acdata[i]);
	//		while(!PAPERMOTOR_Flag);
			PAPERMOTOR_Flag = 0;
		}
	 	for(i=0;i<(PAPERSteps-22);i++)
		{
			PAPERMOTOR_SetStep(Direc);
		//	LOW_PRN_InitDotTimer(0x900);
		//	while(!PAPERMOTOR_Flag);
			PAPERMOTOR_Flag = 0;	
		}
		for(i=0;i<2;i++)
		{
			PAPERMOTOR_SetStep(Direc);
		//	LOW_PRN_InitDotTimer(Pap_dcdata[i]);
		//	while(!PAPERMOTOR_Flag);
			PAPERMOTOR_Flag = 0;	
		}
	}
	PAPERMOTOR_Off();
}



void PAPERMOTOR_SetStep(uchar Papermove_Direc)
{
	uchar i;
	uchar temp;
	uchar PH_State[5] = {0x00,0x04,0x0c,0x08,0x00};

	temp = LOW_PRN_ControlState;
	temp &= 0x0c;
	if(Papermove_Direc)
	{
		for(i=0;i<5;i++)
		{
			if(temp == PH_State[i])
			{	
				temp = PH_State[i+1];
				break;
			}
		}
	}
	else
	{
		for(i=4;i>0;i--)
		{
			if(temp == PH_State[i])
			{
				temp = PH_State[i-1];
				break;
			}	
		}
	}
	LOW_PRN_ControlState &= 0xf3;
	LOW_PRN_ControlState |= temp;
	PAPERMOTOR_Data = LOW_PRN_ControlState;
}

void PAPERMOTOR_On()
{
	PAPERMOTOR_Hold();
	PAPERMOTOR_Rush();
}

void PAPERMOTOR_Off()
{
	PAPERMOTOR_Rush();
	PAPERMOTOR_Hold();
}

void Delay_6ms()
{
	uint i;
	for(i=0;i<0x0b33;i++);
}

void PAPERMOTOR_Hold()
{
	LOW_PRN_ControlState &= 0x3f;
	LOW_PRN_ControlState |= 0x80;
	PAPERMOTOR_Data = LOW_PRN_ControlState;
	Delay_6ms();
}

void PAPERMOTOR_Rush()
{
	LOW_PRN_ControlState &= 0x3f;
	PAPERMOTOR_Data = LOW_PRN_ControlState;
	Delay_6ms();
}



/*  void LOW_PRN_Findhome()
{
	uchar i;
	CARRIGEMOTOR_Hold();
	CARRIGEMOTOR_Rush();
	if(!HOME_Pin)
	{
		PrintDirect = 0;
		CARRIGEMOTOR_Acce_Dece_11steps(1);
		for(i=0;i<180;i++)
		{
			CARRIGEMOTOR_PH_Set();
			PH_Timer_Set(0x05f2);
			while(!CARRIGEMOTOR_Flag);
			CARRIGEMOTOR_Flag = 0;	
		}
		CARRIGEMOTOR_Acce_Dece_11steps(0);
	}
	for(;;)
	{
		if(HOME_Pin)
		{
			PrintDirect = 1;
			homeflag = HOME_Pin;
		}	
		else
 	    {
			PrintDirect = 0;
			homeflag = HOME_Pin;
		}
		CARRIGEMOTOR_PH_Set();
		PH_Timer_Set(0x2347);
		while(!CARRIGEMOTOR_Flag);
		CARRIGEMOTOR_Flag = 0;
		if(homeflag == !HOME_Pin)
			break;
	}
	PrintDirect = 0;
	CARRIGEMOTOR_Acce_Dece_11steps(1);
	CARRIGEMOTOR_Acce_Dece_11steps(0);
	CARRIGEMOTOR_Rush();
	CARRIGEMOTOR_Hold();
	PrintDirect = 1;
}*/	

void main()
{
	   Sens = 1;
       PAPERMOTOR_Init();
       if(Sens)
       {
         PAPERMOTOR_SetStep(0);
        }
	//	for(;;)
	//	{
		PRN_Control &= 0x3f;
		PAPERMOTOR_Move(0, 20);
	//	}
	//	PAPERMOTOR_Off();
       
}






⌨️ 快捷键说明

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