700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Proteus8仿真:51单片机使用ULNA控制步进电机

Proteus8仿真:51单片机使用ULNA控制步进电机

时间:2019-04-16 23:03:05

相关推荐

Proteus8仿真:51单片机使用ULNA控制步进电机

51单片机使用ULNA控制步进电机

元器件原理图部分代码main.c工程文件

实验内容:使用按键控制步进电机正反转。

元器件

原理图部分

ULNA引脚连接

电机激励方式:

中间要加入延迟

拿1相激励法举例:

假设P20-P23四个引脚接到了ULNA输入,ULNA输出接到了电机,那么驱动方式就是

P20=1>delayms(5)>P21=1>delayms(5)>P22=1>delayms(5)>P23=1>delayms(5)

现象就是电机正转一定角度

代码

main.c

代码如下:

#include <reg51.h>//头文件sbit KEY1=P1^0;sbit KEY2=P1^1;sbit B4=P2^0;sbit B5=P2^1;sbit B6=P2^2;sbit B7=P2^3;#define u8 unsigned char //宏定义#define u16 unsigned intu8 get_key(void);void motor_right(void);//正void motor_left(void);//反void motor_stop(void);void delay_ms(u16 ms);void main(void){u8 key=0;char var=0;while(1){key=get_key();if(key==0){motor_stop();}else if(key==1){motor_right();}else if(key==2){motor_left();}}}void motor_stop(void){B7=0;B6=0;B5=0;B4=0;delay_ms(5);}void motor_left(void){B7=1;B6=0;B5=0;B4=0;delay_ms(5);B7=0;B6=1;B5=0;B4=0;delay_ms(5);B7=0;B6=0;B5=1;B4=0;delay_ms(5);B7=0;B6=0;B5=0;B4=1;delay_ms(5);}void motor_right(void){B7=0;B6=0;B5=0;B4=1;delay_ms(5);B7=0;B6=0;B5=1;B4=0;delay_ms(5);B7=0;B6=1;B5=0;B4=0;delay_ms(5);B7=1;B6=0;B5=0;B4=0;delay_ms(5);}u8 get_key(void){u8 key=0;if(KEY1==0) return 1;else if(KEY2==0) return 2;else return 0;}//延时函数void delay_ms(u16 ms){u16 i,j;for(i=0;i<ms;i++)for(j=71;j>0;j--);}

工程文件

工程文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。