54 基于单片机的L293D驱动步进电机

发布于:2024-12-06 ⋅ 阅读:(53) ⋅ 点赞:(0)

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,L293D驱动步进电机,正转三个模式,反转三个模式

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程


#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;

sbit D1 = P2^0;
sbit D2 = P2^1;
sbit D3 = P2^2;
sbit D4 = P2^3;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
sbit key6 = P1^5;

int i;
void zhengzhuan();
void fanzhuang();
void ting();
void buttonscan();
// 步进电机控制顺序表
unsigned char step_sequence[4][4] = {
    {1, 0, 0, 1},  // Step 1
    {0, 1, 0, 1},  // Step 2
    {0, 1, 1, 0},  // Step 3
    {1, 0, 1, 0}   // Step 4
};

void delay(uint count)      //delay
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}
void main (){
	P2=0x00;
	while(1)
	{
		 buttonscan();		
	}
}

void zz3(){
	D1=1;
	D2=0;
	D3=0;
	D4=0;
	delay(50);
	D1=1;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	D1=0;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	D1=0;
	D2=1;
	D3=1;
	D4=0;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=0;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
}
void zz2(){
	D1=1;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	D1=0;
	D2=1;
	D3=1;
	D4=0;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=1;
	delay(50);
	D1=1;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
}
void zz1(){
	D1=1;
	D2=0;
	D3=0;
	D4=0;
	delay(50);
	D1=0;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=0;
	delay(50);
	D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
}

void fz1(){
  D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=0;
	delay(50);
	D1=0;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	D1=1;
	D2=0;
	D3=0;
	D4=0;
	delay(50);
}

void fz2(){
  D1=1;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=1;
	delay(50);
	D1=0;
	D2=1;
	D3=1;
	D4=0;
	delay(50);
	D1=1;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
}

void fz3(){
  D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=1;
	D4=1;
	delay(50);
	D1=0;
	D2=1;
	D3=1;
	D4=0;
	delay(50);
	D1=1;
	D2=1;
	D3=0;
	D4=0;
	delay(50);
	
	D1=1;
	D2=0;
	D3=0;
	D4=0;
	delay(50);
	D1=1;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
	D1=0;
	D2=0;
	D3=0;
	D4=1;
	delay(50);
}
void buttonscan(){
	if(key1==0){
		zz1();
	}
	if(key2==0){
		zz2();
	}	
		if(key3==0){
		zz3();
	}	
		if(key4==0){
		fz1();
	}	
			if(key5==0){
		fz2();
	}	
				if(key6==0){
		fz3();
	}	
}




四、实现现象

具体动态效果看B站演示视频:

54 基于单片机的L293D驱动步进电机_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、演示视频):
链接: https://pan.baidu.com/s/1xlJGyzD117C0SNKwi1iCfQ?pwd=d7xd 提取码: d7xd 


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章