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

📄 moto_step.c

📁 一个有关高速单片机c8051f040控制步进电机的实例
💻 C
字号:
/////////步进电机调试程序//////////////
/////////moto_step//////////////////////////
#include <C8051F040.h>
#define MOTO1_RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
#define MOTO1_STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
typedef unsigned int uint;
typedef unsigned char uchar;
sbit  Moto1_dir=P3^0;//电机1方向控制管脚
sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;
uchar temppage;
void delay1ms(uint time){//延迟1ms
	uint i;
	uint j;
	for (i=0;i<time;i++){
		for(j=0;j<300;j++);
	}
}	
void moto1_vset(uint val){//T3频率设置,计算公式为:(T3时钟频率/(2*val))
//fre=1500kHZ/val,所以val=100时,fre=15khz,建议val不要低于100,最好不要低于150
	temppage=SFRPAGE;
	SFRPAGE=0x01;
	RCAP3=~val+1;
	TMR3=RCAP3;
	SFRPAGE=temppage;
}
void t3_ini(){//t3为频率输出模式,T3时钟频率约为3MHZ
	temppage=SFRPAGE;
	SFRPAGE=0x01;
	TMR3CN=0x00;//TR3=0,T3尚未启动
	TMR3CF=0x0e;//T3采用系统时钟,TOG3=1,T3不计数时输出为1,DCEN=0
	SFRPAGE=temppage;
}
void config(){
//看门狗禁止
	WDTCN = 0x07;	
    WDTCN = 0xDE;   
   	WDTCN = 0xAD;
	SFRPAGE = 0x0F;
//交叉开关配置,T3=P0.0
//即P0.0为频率输出口
	XBR0 = 0x00;	
	XBR1 = 0x00;	
	XBR2 = 0x40;
 	XBR3 = 0x01;   
//管脚输出配置,P0口为开漏输出,其中P0.0接上拉电阻,P0为数字输入口
 	SFRPAGE = 0x0F;
 	P0MDOUT = 0x00; 
 	P1MDIN = 0xFF;  
//晶振配置,采用内部晶振8分频
	SFRPAGE = 0x0F;
 	CLKSEL = 0x00;  
	OSCXCN = 0x00;	
	OSCICN = 0x84;	
}
void main(void){
	uint moto1val;
	config();
	t3_ini();
	while(1){
		//电机正向恒速运行2秒
		Moto1_dir=0;
		moto1_vset(1000);
		MOTO1_RUN;//定时器启动频率输出,电机开始运行
		delay1ms(2000);
		MOTO1_STOP;//定时器停止,电机停止运行
		delay1ms(100);
		//改变方向,电机反向恒速运行2秒
		Moto1_dir=1;
		MOTO1_RUN;
		delay1ms(2000);
		MOTO1_STOP;
		delay1ms(1000);
		//电机逐渐加速运行
		moto1val=2000;
		moto1_vset(moto1val);//低速
		MOTO1_RUN;
		delay1ms(20);
		for(;moto1val>160;moto1val-=20){//最高速度为moto1_vset(160);
			moto1_vset(moto1val);
			delay1ms(20);
		}
		delay1ms(2000);//高速	运行持续2秒
		//电机逐渐减速运行
		for(;moto1val<2000;moto1val+=20){
			moto1_vset(moto1val);
			delay1ms(20);
		}
		MOTO1_STOP;
		delay1ms(1000);
	}
}
		


		


⌨️ 快捷键说明

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