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

📄 +

📁 基于C8051的步进电机按键控制
💻
字号:

#include <c8051f410.h>
#include<intrins.h>

sbit KEY0=P2^0; //开关
sbit KEY1=P2^1; //加速
sbit KEY2=P2^2; //减速
sbit KEY3=P2^3;//正反转
bit flag=1;	   //正反
bit flag1=0;   //开关

unsigned int zhoushu=5;
//八拍方式驱动,顺序为A AB B BC C CD D DA
unsigned char code fanzhuan[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; 
unsigned char code zhengzhuan[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    
unsigned int  quanshu[]={29907,14953,9969,7476,5981,4984,4272,3738,3323,2990};

void Time0_Init()
{
	TMOD=0x01;
	CKCON=0x00;
}

void Time0_On()
{
	TH0=(65536-quanshu[zhoushu-1])/256;
	TL0=(65536-quanshu[zhoushu-1])%256;
	TR0=1;
	while(!TF0);
	TF0=0;

}

void zhuan()
{	
	unsigned int i;
	if(flag){												 //flag==1,正转
		for(i=0;i<8;i++)
		{
			P1=zhengzhuan[i];
			Time0_On();
	    }
	}
	else{
		 for(i=0;i<8;i++)
		{
			P1=fanzhuan[i];
			Time0_On();
	    }
	}	

}
void start_stop()
{
	if(!flag1){
		while(KEY0);
	}
	if(!KEY0){
		while(!KEY0);
		flag1=!flag1;										  //flag1=1,转,0,不转
	}	
	zhuan();
}

void zhengfan()
{
	if(!KEY3){
		while(!KEY3);
		flag=!flag;										  //flag2=1     zhengzhuan,,0    fanzhuan
	}
}

void speed_up()
{
	if(!KEY1){
		while(!KEY1);
		zhoushu++;
		if(zhoushu>10)
			zhoushu=10;
	}	

}
void speed_down()
{
	if(!KEY2){
		while(!KEY2);
		zhoushu--;
		if(zhoushu<1)
			zhoushu=1;
	}	
}

void main()
{	
	
	PCA0MD &= ~0x40;	 
	PCA0MD  = 0x00; 
	OSCICN  = 0x87;
	XBR1    = 0x40;
	P1MDOUT   = 0xFF;
	Time0_Init();
	while(1)
	{
		start_stop();
		zhengfan();
		speed_up();
		speed_down();  
		zhuan();
	}
}

⌨️ 快捷键说明

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