步进电机297 298驱动程序

步进电机297 298驱动程序,第1张

最近正好自己在搞一个小车,经过测试了,可用,有不懂得地方再联系:

驱动用的l298n。

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar rec_int_flag=0

void delay_ms(uint x)

void motor_con(uchar angle,uchar speed ,uchar back,uchar direction)

uchar code Fan[8]={0x0a, 0x0b, 0x09, 0x0d, 0x05, 0x07, 0x06, 0x0e}

//1010 ,1011, 1001 ,1101,0101,0111,0110, 1110

uchar code Zhen[8] ={0x0e, 0x06, 0x07, 0x05, 0x0d, 0x09, 0x0b, 0x0a}

// 1110 ,0110 ,0111, 0101,1101,1001,1011,1010

void main()

{

while(1)

{

motor_con(1,20,0,2)

if(rec_int_flag==1)

{

while(1)

}

}

}

void delay_ms(uint x)

{

uchar i,j

for(i=0i<xi++)

for(j=0j<120j++)

}

void rev_int(void) interrupt 0

{

rec_int_flag=1

}

/***********************************************************

函数说明:

direction==0时左轮动,为1时右轮动,为2时直行。

转动角度为(7.2度*angle)。

back==1时代表后退,back==0时代表前进。

speed用于延时speed毫秒来调速。

P0为左轮电机,P1为右轮电机

***********************************************************/

void motor_con(uchar angle,uchar speed ,uchar back,uchar direction)

{

uchar m,n

switch(back)

{

case 1: //判断前进后退与否 0代表前进

{

for(m=0m<anglem++) //前进角度

{

for(n=0n<8n++)

{

if(direction==0) P1=Fan[n]//左转右转或直行。

else if(direction==1) P0=Fan[n]

else {P1=Fan[n]P0=Fan[n]}

delay_ms(speed) //调速

}

}

}break

case 0:

{

for(m=0m<anglem++)

{

for(n=0n<8n++)

{

if(direction==0) P1=Zhen[n]

else if(direction==1) P0=Zhen[n]

else {P1=Zhen[n]P0=Zhen[n]}

delay_ms(speed)

}

}

}break

default: break

}

}

不是很复杂,自己编就行,找片两路pwm的stc片,用定时器0做它的时钟,再用定时器1做个定时中断,定时刷新两路pwm的占空比,在存储器上开一片数据区存下正弦表给定时器1用。定时器0的定时长度决定画圆的大小,数据区决定圆的平滑度

60分钟。海尔创立于1984年,是全球领先的美好生活和数字化转型解决方案服务商。海尔298洗烘一体机时间则为60分钟。洗衣机将显示在标准烘干程序,显示时间为2小时,同时按下启动键,洗衣机即可启动运行。连续按3下烘干键,洗衣机将显示在60分烘干程序。


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

原文地址: https://outofmemory.cn/yw/11211369.html

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

发表评论

登录后才能评论

评论列表(0条)

保存