步进电机正反转设计
设计要求:
设置开始、停止以及正反转键。转速以及转向由数码管显示。
【51单片机控制步进电机】 https://www.bilibili.com/video/BV1mf4y1J7iR/?share_source=copy_web&vd_source=7d72cfb77b74ed500ae232ab0425c3e5
#include <reg52.h>
/*
步进电机正反转设计
设计要求:
设置开始、停止以及正反转键。转速以及转向由数码管显示。
步距角=5.625°/64,其意思就是每64个脉冲步进电机就会转5.625度。
转一圈的脉冲数为 (360 / 5.625) * 64 = 4096 个脉冲
计算发送 4096/4 个脉冲需要的时间t 转速 = 1/t*4 rad/s
注意:这里由于实际开发板驱动能力不足及电机性能不够,在此显示转速的导数
即转一圈需要多少时间 单位s/rad
*/
/*
参考资料:https://www.bilibili.com/read/cv11379422/
https://blog.youkuaiyun.com/wuhenyouyuyouyu/article/details/51612073
https://blog.youkuaiyun.com/sdkdlwk/article/details/106573784
https://blog.youkuaiyun.com/weixin_54092701/article/details/113484193
*/
#define uc unsigned
unsigned char code F_Rotation[8]={
0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//正转表格
unsigned char code B_Rotation[8]={
0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//反转表格 1000 1100 1011
uc code x[13]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x80,0x00,0x40}; // 小数点 全隐 负号
int shumaguan[8]={
0}; // 第一位定义为mod 模式选择
//mod x x z . z z z
// mod 0 (停止)
// mod 1 (开始) k2 正转 k3 反转 k4 停止
// mod 2 (开始) k2 加速 k3 减速 k4 停止
// C51 没有bool
bit is_action = 0; //是否开始旋转
bit correct = 1; //1 正转 0 反转
int hz = 150;
sbit k1 = P3^1; //模式选择 按下时 mod+1
sbit k2 = P3^0;
sbit k3 = P3^2;
sbit k4 = P3^3;
sbit lsa = P2^2;
sbit lsb = P2^3;
sbit lsc = P2^4;
int num = 0; //计算发送的脉冲数
int time = 0;
int mod = 0;

最低0.47元/天 解锁文章
1678

被折叠的 条评论
为什么被折叠?



