电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
单片机步进电机程序问题
已解决
73482
个问题
已帮助
5993
位优秀工程师
单片机步进电机程序问题
前功尽弃
2021-03-08
浏览量:681
请问这里unsigned int MotorDelaySpeed=1TIMCT;中的TIM和CT分别代表什么意思?还有A = 0; //0xf1
b = 1;
C = 1;
D = 1;
A=0,B=1表示什么意思?0XF1是怎么来的求求大神
单片机源程序如下:
/@@*************************************************************************************
* 标题: 步进电机试验一 *
* *
* 通过本例程了解步进马达使用及驱动程序编写 *
*; 单双八拍工作方式: *
*; A-AB-B-BC-C-CD-D-DA (即一个脉冲转 3.75 度) *
* J14短路冒需断开 *
* 请学员一定要消化掉本例程 *
*
**************************************************************************************/
#include "reg52.h"
//Motor
sbit A = P1^0; //定义管脚
sbit b = P1^1;
sbit C = P1^2;
sbit D = P1^3;
///////////////////////////////////////
//步进电机驱动
unsigned char MotorStep=0;
unsigned int MotorTimer = 0;
unsigned int MotorDelaySpeed=1TIMCT;
#define speed 8 // 调整速度 数值不要设的太低 低了会引起震动。
/@@*****************************************************
* 初始化马达 *
******************************************************/
void InitMotor()
{
A = 1;
b = 1;
C = 1;
D = 1;
}
void SetMotor()
{
// if(Speed == 0) return;
MotorDelay=Speed; //调整速度
switch(MotorStep)
{
case 0:
if(TIM) // A
{
A = 0; //0xf1
b = 1;
C = 1;
D = 1;
MotorStep = 1;
TIM=0;
}
break;
case 1: // AB
if(TIM)
{
A = 0; //0xf3
b = 0;
C = 1;
D = 1;
MotorStep = 2;
TIM=0;
}
break;
case 2: //B
if(TIM)
{
A = 1;
b = 0; //0xf2
C = 1;
D = 1;
MotorStep = 3;
TIM=0;
}
break;
case 3: //BC
if(TIM)
{
A = 1;
b = 0; //0xf6
C = 0;
D = 1;
MotorStep = 4;
TIM=0;
}
break;
case 4: //C
if(TIM)
{
A = 1;
b = 1; //0xf4
C = 0;
D = 1;
MotorStep = 5;
TIM=0;
}
break;
case 5: //CD
if(TIM)
{
A = 1;
b = 1; //0xfc
C = 0;
D = 0;
MotorStep = 6;
TIM=0;
}
break;
case 6: //D
if(TIM)
{
A = 1;
b = 1; //0xf8
C = 1;
D = 0;
MotorStep = 7;
TIM=0;
}
break;
case 7: //DA
if(TIM)
{
A = 0;
b = 1; //0xf9
C = 1;
D = 0;
MotorStep = 0;
TIM=0;
}
break;
}
}
void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;
}
main()
{ system_Ini();
InitMotor();
while(1)
{
SetMotor();
}
}
/@@************************************************
* *
* 定时中断延时 *
************************************************/
void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;
if( CT++==speed)
{TIM=1;
CT=0;
}
}
m data-ke-on
click="copycode($('code_vI6'));">复制代码
显示全部
单片机
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
yhj416606438
abcd是步进电机2相引脚,ab是一相线圈,cd是一相线圈,1是高电平,0是低电平,一个线圈只有2个不同电平才能工作,比如ad分别是01或者10才通电
发布于
2021-03-08
举报
评论 0
0
0
其他答案
数量:
2
一笔之名也
ABC就是引脚号啊,前面的定义的,=1就是高电平,=0就是低电平啊
发布于
2021-03-08
举报
评论 0
0
0
莱克迷KW
最前面有定义啊
sbit A = P1^0; //定义管脚
sbit b = P1^1;
sbit C = P1^2;
sbit D = P1^3;
这不就是引脚的定义么
1是高电平,0是低电平
发布于
2021-03-11
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
单片机步进电机程序问题
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: