步进电机控制Proteus仿真

本文提供了一个使用Proteus进行控制的代码实例,通过按键控制电机正反转及速度调节。采用C语言编程,利用8051单片机的P1口读取按键状态,并实现电机正反转及速度变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Proteus原理图

控制代码(人人都说goto的坏处,但是用起来真的很爽,hahaha~

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
uchar speed=65;
uchar code zheng[] = {0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
uchar code fan[] = {0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

void delay1ms(uint t){
	char i;
	while(t--){
	 	for(i=0;i<113;i++);
	}
}
void main()
{
	uchar i;
	uchar button=0;
	while(1){
		if (key1==0){
			button=1;
		}
		if (key2==0){
			button=2;
		}
		if(button==1||button==2)
		{
			if(button==1)
			{
				zhengzhuan:for(i=0;i<8;i++){
					if(key2==0) {button=2;goto fanzhuan;}
				P2 = fan[i];
				delay1ms(speed);
				if(key5==0||key3==0||key4==0) goto next;
				}
			}
			if(button==2)
			{
				fanzhuan:for(i=0;i<8;i++){
					if(key1==0) {button=1;goto zhengzhuan;}
				P2 = zheng [i];
				delay1ms(speed);
				if(key5==0|| key3 == 0 || key4 == 0) goto next;
			  }
		  }
		}
		next:if (key3==0){
			speed = speed + 5;
			if (speed>100)	speed = 100;
		}
		if (key4==0){
			speed = speed - 5;
			if (speed<40)	speed = 40;
		}
		if(key5==0)
		{	
			button=0;
		}
	}
}





 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值