目录
一、主要功能
基于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