当前位置:首页 » 编程语言 » c语言电机正转反转程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言电机正转反转程序

发布时间: 2022-12-16 15:18:34

A. 如何用c语言控制步进电机 正转后自动反转

中断2,启动-停止切换(通过切换flag_status),显示状态。do-while是延时。
中断1,计数器count增1,如果达到预设的数值tab[sp],计数器归零,标志flag置1。这个好像与速度有关。通过调整延时时间来调整速度。
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。
while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。
没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。

原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解。

B. C语言或者汇编程序,要求用开关K1,K2控制四项步进电机的正转反转和停止,使用51单片机,哪位大哥帮下忙啊

MOV
20H,#00H
;20H单元置初值,电机正转位置指针
MOV
21H,#00H
;21H单元置初值,电机反转位置指针
MOV
P1,#0C0H
;P1口置初值,防止电机上电短路
MOV
TMOD,#60H
;T1计数器置初值,开中断
MOV
TL1,#0FFH
MOV
TH1,#0FFH
SETB
ET1
SETB
EA
SETB
TR1
SJMP
$
;***********计数器1中断程序************
IT1P:
JB
P3.7,FAN
;电机正、反转指针
;*************电机正转*****************
JB
00H,LOOP0
JB
01H,LOOP1
JB
02H,LOOP2
JB
03H,LOOP3
JB
04H,LOOP4
JB
05H,LOOP5
JB
06H,LOOP6
JB
07H,LOOP7
LOOP0:
MOV
P1,#0D0H
MOV
20H,#02H
MOV
21H,#40H
AJMP
QUIT
LOOP1:
MOV
P1,#090H
MOV
20H,#04H
MOV
21H,#20H
AJMP
QUIT
LOOP2:
MOV
P1,#0B0H
MOV
20H,#08H
MOV
21H,#10H
AJMP
QUIT
LOOP3:
MOV
P1,#030H
MOV
20H,#10H
MOV
21H,#08H
AJMP
QUIT
LOOP4:
MOV
P1,#070H
MOV
20H,#20H
MOV
21H,#04H
AJMP
QUIT
LOOP5:
MOV
P1,#060H
MOV
20H,#40H
MOV
21H,#02H
AJMP
QUIT
LOOP6:
MOV
P1,#0E0H
MOV
20H,#80H
MOV
21H,#01H
AJMP
QUIT
LOOP7:
MOV
P1,#0C0H
MOV
;
20H,#01H
MOV
21H,#80H
AJMP
QUIT
;***************电机反转*****************
FAN:
JB
08H,LOOQ0
JB
09H,LOO
Q1
JB
0AH,LOOQ2
JB
0BH,LOOQ3
JB
0CH,LOOQ4
JB
0DH,LOOQ5
JB
0EH,LOOQ6
JB
0FH,LOOQ7
LOOQ0:
MOV
P1,#0A0H
MOV
21H,#02H
MOV
20H,#40H
AJMP
QUIT
LOOQ1:
MOV
P1,#0E0H
MOV
21H,#04H
MOV
20H,#20H
AJMP
QUIT
LOOQ2:
MOV
P1,#0C0H
MOV
21H,#08H
MOV
20H,#10H
AJMP
QUIT
LOOQ3:
MOV
P1,#0D0H
MOV
21H,#10H
MOV
20H,#08H
AJMP
QUIT
LOOQ4:
MOV
P1,#050H
MOV
21H,#20H
MOV
20H,#04H
AJMP
QUIT
LOOQ5:
MOV
P1,#070H
MOV
21H,#40H
MOV
20H,#02H
AJMP
QUIT
LOOQ6:
MOV
P1,#030H
MOV
21H,#80H
MOV
20H,#01H
AJMP
QUIT
LOOQ7:
MOV
P1,#0B0H
MOV
21H,#01H
MOV
20H,#80H
QUIT:
RETIEND

C. 单片机控制交流电机正反转的C语言程序

这个很简单,我教你怎么玩,下面是思路和方式
思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看你接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;
PS:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我
现在我们来写程序:
#include <reg51.h> //选用晶振11.0592MHz
unsigned char k=0; //k表示正反转次数
sbit X0=P3^2; //调节按钮
sbit X1=P1^1; //上限位接近开关信号
sbit X2=P1^2; //下限位接近开关信号
sbit Y1=P0^0; //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)
sbit Y2=P0^1; //电机下降
void delay50ms(unsigned int i)
{
unsigned int j;
for (i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1; //下降沿触发
EX0=1; //开P3.2外部中断
EA=1; //总中断开
while(1)
while(k)
{
Y1=0; //正转
while(X1==1); //等待正转接近开关反应
Y1=1; //正转停
delay50ms(1); //停止时间50ms
Y2=0; //反转
while(X2==1); //等待反转接近开关反应
Y2=1; //反转停
k--; //圈数减一
}
}
void counter0(void) interrupt 0
{
k++; //外部中断控制圈数加一
//这个位置可以加你显示程序
}
程序已经通过测试,放上去就能用,很好玩哟,呵呵

D. 单片机控制交流电机正反转的C语言程序是什么

这个很简单,我教你怎么玩,下面是思路和方式x0dx0a思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看你接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;x0dx0aPS:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我x0dx0a现在我们来写程序:x0dx0a#include //选用晶振11.0592MHzx0dx0aunsigned char k=0; //k表示正反转次数x0dx0asbit X0=P3^2; //调节按钮x0dx0asbit X1=P1^1; //上限位接近开关信号x0dx0asbit X2=P1^2; //下限位接近开关信号x0dx0asbit Y1=P0^0; //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)x0dx0asbit Y2=P0^1; //电机下降x0dx0avoid delay50ms(unsigned int i)x0dx0a{ x0dx0a unsigned int j;x0dx0a for (i;i>0;i--)x0dx0a for(j=46078;j>0;j--);x0dx0a}x0dx0amain()x0dx0a{x0dx0a IT0=1; //下降沿触发x0dx0a EX0=1; //开P3.2外部中断x0dx0a EA=1; //总中断开 x0dx0a while(1)x0dx0a while(k)x0dx0a {x0dx0a Y1=0; //正转x0dx0a while(X1==1); //等待正转接近开关反应x0dx0a Y1=1; //正转停x0dx0a delay50ms(1); //停止时间50msx0dx0a Y2=0; //反转x0dx0a while(X2==1); //等待反转接近开关反应x0dx0a Y2=1; //反转停x0dx0a k--; //圈数减一 x0dx0a }x0dx0a}x0dx0avoid counter0(void) interrupt 0x0dx0a{x0dx0a k++; //外部中断控制圈数加一x0dx0a //这个位置可以加你显示程序x0dx0a}x0dx0a程序已经通过测试,放上去就能用,很好玩哟,呵呵

E. 用c语言程序实现步进电机的正反转加减速的编程

内容:1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/

#include <reg52.h>

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{

unsigned char i;

EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开

while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反

}

F. 单片机控制电机正反转动的c语言程序

首先要看你的电机是直流电机还是步进电机。直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。比如让单片机P1.0 = 0,P1.1 = 1;(单片机I/0口要与电机驱动芯片的输入脚相连)这样的话,电机驱动芯片就会输出一个电压差,可以使直流电机向一个方向转,如果使P1.0 = 1,P1.1 = 0,则电机驱动芯片会输出一个和刚才相反的电压,使电机向相反的方向转动。H桥电路和电机驱动芯片的原理差不多,网上多的是。我这说的只是简单的原理,实际中,L298N的输入端和单片机相连的时候要加光耦隔离,否则单片机会工作不正常。步进电机就稍微复杂点,也得需要电机驱动芯片才行,只不过控制信号是按一定的规律给的,规律变了,电机转动的方向也就变了。楼上给出的貌似是步进电机的驱动程序。