51单片机驱动步进电机,能正反转,键盘调速,数码管显示转速

51单片机驱动步进电机,能正反转,键盘调速,数码管显示转速,第1张

#include "reg52h"

void delay(unsigned int t);

sbit F1 = P1^0;

sbit F2 = P1^1;

sbit F3 = P1^2;

sbit F4 = P1^3;

unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转

unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转

unsigned int K;

void motor_ffw()

{

unsigned char i;

unsigned int j;

for (j=0; j<12; j++) //转1n圈

{

for (i=0; i<8; i++) //一个周期转30度

{

if(K==1) P1 = FFW[i]&0x1f; //取数据

if(K==2) P1 = FFZ[i]&0x1f;

delay(20); //调节转速

}

}

}

void delay(unsigned int t)

{

unsigned int k;

while(t--)

{

for(k=0; k<80; k++)

{ }

}

}

main()

{

while(1)

{

K=1;

motor_ffw();

K=2;

motor_ffw();

}

}

我这个是用pwm+adc做的

ADC EQU 35H

CLOCK BIT P24 ;定义ADC0808时钟位

ST  BIT  P25

EOC  BIT  P26

OE  BIT  P27

PWM BIT P37

ORG  00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV TMOD,#02H    ;

MOV TH0,#20

MOV TL0,#00H

MOV IE,#82H

SETB TR0

WAIT:  CLR  ST   

SETB  ST

CLR  ST ;启动AD转换

JNB  EOC,$ ;等待转换结束

SETB  OE

MOV  ADC,P1 ;读取AD转换结果

CLR  OE

SETB PWM     ;PWM输出

MOV  A,ADC

LCALL DELAY

CLR PWM

MOV A,#255

SUBB A,ADC

LCALL DELAY

SJMP  WAIT

INT_T0: CPL CLOCK   ;提供ADC0808时钟信号

RETI

DELAY: MOV R6,#1

D1: DJNZ R6,D1

DJNZ ACC,D1

RET

END

以上就是关于51单片机驱动步进电机,能正反转,键盘调速,数码管显示转速全部的内容,包括:51单片机驱动步进电机,能正反转,键盘调速,数码管显示转速、用51单片机控制直流电动机并测量转速、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10118791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存