STC51单片机35——五线四相步进电机驱动测试程序(2个步进电机)
/*--------------------------------------------------------------------------------
MCU: STC15W408AS 注意其没有T1,但是有T2
开发板: STC15W408AS最小系统板
晶振: 内部时钟11.0592M,波特率38400
扩展模块: -
软件: Keil.C51.V9.01
-------------------------------------------------------------------------------------*/
#include "STC15.h"
#define u8 unsigned char
#define u16 unsigned int
sbit StepperPin1=P1^2;
sbit StepperPin2=P1^3;
sbit StepperPin3=P1^4;
sbit StepperPin4=P1^5;
sbit Stepper2Pin1=P3^4;
sbit Stepper2Pin2=P3^5;
sbit Stepper2Pin3=P3^6;
sbit Stepper2Pin4=P3^7;
void StepmotorDelay(u8 n){
u16 i;
for(;n>0;n--)
for(i=2000;i>0;i--) //不要小于2000
;
}
void Step(void);
//----------------------------------------------------------
// 函数名称:void IniSerialPort(void)
// 函数功能:串口初始化
//----------------------------------------------------------
void InitSerialPort(void)
{
SCON = 0x50; //8位数据,可变波特率
AUXR = 0x14; //T2为1T模式, 并启动定时器2
AUXR |= 0x01; //选择定时器2为串口1的波特率发生器
T2L = 0xB8; //设置定时初始值
T2H = 0xFF; //设置定时初始值
ES=1; //串口中断开关,采用查询法时不用打开中断
EA=1;
//PS=1;//高优先级
REN=1; //串口为工作方式1,允许接收数据
}
//----------------------------------------------------------
// 函数名称:void SerialPortInte(void)
// 函数功能:串口中断方式接收一个字符
//----------------------------------------------------------
#define Download_command 0xf1 //功能码
void SerialPortInte(void) interrupt 4
{
unsigned char dat;
unsigned int ISP_i,ISP_j;
if(TI==1)
{
TI=0;
}
else
{
RI=0;
dat=SBUF;
SBUF=dat;
if(dat==Download_command)
{
for(ISP_j=1000;ISP_j>0;ISP_j--)
for(ISP_i=123;ISP_i>0;ISP_i--);
IAP_CONTR =0x60;//软件复位
}
}
}
/************************主函数******************************************************/
void main()
{
InitSerialPort();
while(1)
{
Step();
StepmotorDelay(1);
}
}
u8 StepN=1;
void Step(void) //4 相8 拍
{
switch(StepN){
case 1: StepperPin1=1;
StepperPin2=0;
StepperPin3=0;
StepperPin4=0;
Stepper2Pin1=1;
Stepper2Pin2=0;
Stepper2Pin3=0;
Stepper2Pin4=0;
break;
case 2: StepperPin1=1;
StepperPin2=1;
StepperPin3=0;
StepperPin4=0;
Stepper2Pin1=1;
Stepper2Pin2=1;
Stepper2Pin3=0;
Stepper2Pin4=0;
break;
case 3: StepperPin1=0;
StepperPin2=1;
StepperPin3=0;
StepperPin4=0;
Stepper2Pin1=0;
Stepper2Pin2=1;
Stepper2Pin3=0;
Stepper2Pin4=0;
break;
case 4: StepperPin1=0;
StepperPin2=1;
StepperPin3=1;
StepperPin4=0;
Stepper2Pin1=0;
Stepper2Pin2=1;
Stepper2Pin3=1;
Stepper2Pin4=0;
break;
case 5: StepperPin1=0;
StepperPin2=0;
StepperPin3=1;
StepperPin4=0;
Stepper2Pin1=0;
Stepper2Pin2=0;
Stepper2Pin3=1;
Stepper2Pin4=0;
break;
case 6: StepperPin1=0;
StepperPin2=0;
StepperPin3=1;
StepperPin4=1;
Stepper2Pin1=0;
Stepper2Pin2=0;
Stepper2Pin3=1;
Stepper2Pin4=1;
break;
case 7: StepperPin1=0;
StepperPin2=0;
StepperPin3=0;
StepperPin4=1;
Stepper2Pin1=0;
Stepper2Pin2=0;
Stepper2Pin3=0;
Stepper2Pin4=1;
break;
case 8: StepperPin1=1;
StepperPin2=0;
StepperPin3=0;
StepperPin4=1;
Stepper2Pin1=1;
Stepper2Pin2=0;
Stepper2Pin3=0;
Stepper2Pin4=1;
StepN=0;
break;
default:break;
}
StepN++;
StepmotorDelay(1);
}
完整资料打包:
STC51单片机35-五线四相步进电机驱动测试程序(2个步进电机)-单片机文档类资源-CSDN下载
STC51单片机35——五线四相步进电机驱动测试程序(2个步进电机)相关推荐
- 28BYJ-48五线四相步进电机驱动(解决为啥抖动但是转不起来)
首先我用的单片机是普中51单片机开发板中的一款,而且由于单片机接口信号不够大需要通过ULN2003(集成7对达林顿管的芯片)放大(相当于一个功率放大电路)再连接到相应的电机接口 按照这样去接:红线接电 ...
- arduino 步进电机驱动库_Arduino驱动 步进电机
本帖最后由 李逍遥 于 2019-6-3 23:16 编辑 首先,感谢作者的分享,认真读完代码,学到了很多知识,但在其中发现一些错误,可能是我的拙见,如果理解错误请指出. 问题:在运行原代码时,电机总 ...
- stc51单片机入门 c语言,STC51单片机入门 (C语言)
51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...
- STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数
STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数 一.步进电机闭环驱动器 二.CubeMx配置 1.Clock Configuration 2.脉冲端 定时器配置 3. ...
- 【电机驱动芯片(单、双极性步进电机驱动方式/四相五线和42步进电机)——ULN2003、双H桥芯片(DRV8833/DRV8825)】
文章目录 一.步进电机工作原理 1.基本原理 2.相关总结 二.单极性步进电机驱动(以ULN2003芯片+28BYJ-48电机为例) 1.28BYJ-48四相五线步进电机介绍 2.ULN2003芯片介 ...
- 步进电机驱动器设计c语言软件,最新基于单片机系统的步进电机驱动STC单片机步进电机驱动器的设计及C语言程序.doc...
最新基于单片机系统的步进电机驱动STC单片机步进电机驱动器的设计及C语言程序 基于单片机系统的步进电机驱动 摘 要 本文介绍了基于80C52单片机的步进电机控制系统的设计.分别概括的介绍了单片机和步进 ...
- 单片机四线步进电机驱动 PROTEUS 和51单片机教程(附仿真文件+源代码)
单片机四线步进电机驱动 程序功能: 当按下SW1时步进电机正转,按下SW2后步进电机反转,并可以根据源码任意调节旋转速度和每一个脉冲旋转角度 程序参考源代码如下: /C语言程序:/ #include ...
- 基于单片机的步进电机驱动电路设计
基于单片机的步进电机驱动电路设计 步进电机在控制系统中具有广泛的应用.它可以把脉冲信号转换成角位移,并且可用作电磁制动轮.电磁差分器.或角位移发生器等. 有时从一些旧设备上拆下的步进电机(这种电机一般 ...
- 基于51单片机的步进电机驱动,亲测无误
文章目录 前言 一.我们该如何实现电机驱动? 二.驱动实现 1.硬件准备 2.软件编写 3.实物 总结 前言 这一次要分享的项目是最近接单做的一个小玩意儿,基于51单片机的步进电机驱动.最近积压了两个 ...
最新文章
- php接口图片转二进制,怎么在php项目中对图片进行二进制转换
- Consul入门01 - 安装Consul
- 临河天气预报软件测试,临河天气预报15天
- NFS服务器是什么?(Network File System 网络文件系统)(远程主机间 mount 挂载目录)(ubuntu:nfs-kernel-server)
- 有关WriteableBitmap和BitmapImage之间的相互转换
- 虚拟目录继承根Web.Config的问题解决(转)
- Android 用MediaRecorder录制视频太短崩的问题
- 3个简单步骤即可测试Java 8
- linux的mysql小记
- InnoDB自增原理都搞不清楚,还怎么CRUD?
- linux下配置钉钉内网穿透_4G工业路由器内嵌花生壳PHTunnel,为工业物联网提供智能内网穿透...
- uniapp —— 配合腾讯地图实现小程序自动定位
- MySQL 新增、修改、删除 字段 sql语句
- 射频放大电路的优化及ADS仿真
- 个人sublime定制
- 树莓派如何接硬盘_树莓派添加USB外接硬盘
- python数据按照分组进行频率分布_python实现读取类别频数数据画水平条形图案例...
- VS配置永久OpenCV(小萌轻松操作):超细致
- 开启Windows11休眠功能
- Go测试开发(二) 多线程简单斗地主
热门文章
- 力扣题——2.除数与被除数
- 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景
- 经济学:宏观经济学计算题
- 解决MySQL CPU占用100%的经验总结
- biopython中文指南_Biopython新手指南-第1部分
- MATLAB 2008a 激活成功后还要激活(许可证过期)
- 专家谈房产两难:力图房价回归理性 担心地产崩溃
- 锐浪(Grid++Report)报表脚本通过某些字段隐藏控件
- Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
- 5000字 大数据时代读书笔记_《大数据时代》读后感5篇