求助啊,用uln2003驅(qū)動,但是電機抖動,轉(zhuǎn)的非常慢,抖動的也很厲害,大佬們看一下,是程序
- #include "reg52.h"
- void delay(unsigned int t);
- //Motor
- sbit F1 = P3 ^ 0;
- sbit F2 = P3 ^ 1;
- sbit F3 = P3 ^ 2;
- sbit F4 = P3 ^ 3;
- unsigned char code FFW[8] = {0xf1, 0xf3, 0xf2, 0xf6, 0xf4, 0xfc, 0xf8, 0xf9}; //反轉(zhuǎn)
- unsigned char code FFZ[8] = {0xf9, 0xf8, 0xfc, 0xf4, 0xf6, 0xf2, 0xf3, 0xf1}; //正轉(zhuǎn)
- unsigned int K;
- /**********************************************************************
- * *
- * 步進電機驅(qū)動 *
- * *
- ***********************************************************************/
- void motor_ffw()
- {
- unsigned char i;
- unsigned int j;
- for (j = 0; j < 12; j++) //轉(zhuǎn)1*n圈
- {
- for (i = 0; i < 8; i++) //一個周期轉(zhuǎn)30度
- {
- if(K == 1) P1 = FFW[i] & 0x1f; //取數(shù)據(jù)
- if(K == 2) P1 = FFZ[i] & 0x1f;
- delay(100); //調(diào)節(jié)轉(zhuǎn)速
- }
- }
- }
- /******************************************************
- *
- * 延時程序
- *
- ********************************************************/
- 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();
- }
- }
復制代碼
|