|

采用L298N模块带光耦来驱动步进电机与原理图与资料详见:
http://www.51hei.com/bbs/dpj-79474-1.html
下面是程序源码:
- /******************************步进电机的驱动*************************************
- ;FOSC = 12MHz
- ;---------------------------------------------------------------------------------
- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!
- ; 本步进电机步进角为 5.625度 . 一圈 360 度 , 需要64个脉冲完成!!!
- ;---------------------------------------------------------------------------------
- ; A组线圈对应 P0.0
- ; B组线圈对应 P0.1
- ; C组线圈对应 P0.2
- ; D组线圈对应 P0.3
- ; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转5.625度)
- ;----------------------------------------------------------------------------------
- **********************************************************************************/
- /*头文件*/
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define nop() _nop_()
- uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正转表*/
- uchar code table2[]={0x03,0x09,0x0c,0x06}; /*反转表*/
- #define motor P0
- void delay(uchar ms) /*延时*/
- {
- uchar j;
- while(ms--){
- for(j=0;j<250;j++)
- {;}
- }
- }
- void main()
- {
- uchar i,j;
- while(1){
- //正转3圈共192个脉冲
- j=0;
- for(i=0;i<192;i++){
- motor = 0x00;
- motor = table1[j];
- j++;
- if(j>=4) j=0;
- delay(2);
- }
- delay(200);
- delay(200);
- delay(200);
- delay(200);
- delay(200);
- //反转2圈共128个脉冲
- j=0;
- for(i=0;i<128;i++){
- motor = 0x00;
- motor = table2[j];
- j++;
- if(j>=4) j=0;
- delay(2);
- }
- …………余下代码请下载附件…………
复制代码 下载:
L298N加光耦电机驱动.rar
(898.33 KB, 下载次数: 88)
|
|