#include <REG51.H>
/*定義程序中的公共變量參數(shù)*/
unsigned int ti_dis; //定義時間間隔
unsigned int mot_step; //定義步數(shù)
unsigned int mo_bc=25;//定義電機所轉(zhuǎn)圈數(shù)的參數(shù),可根據(jù)實際情況修改
unsigned int js=150; //定義電機速度參數(shù),數(shù)值越小,速度越快,最小為8,小于8可能堵轉(zhuǎn)。根據(jù)實際情況可進行修改。
unsigned int cjs=15; //定義時間基本控制參數(shù),如無問題不需要修改
/*變量參數(shù)定義結(jié)束*/
/*以下為延時控制過程*/
void delay(unsigned int ti_small,unsigned int ti_base)//ti_small為時間最小單位,ti_base=1000時為10ms,a*ti=mS
{
while(--ti_small!=0) //循環(huán)開始
{
for(ti_dis=0;ti_dis<=ti_base;ti_dis++); //時間累加器
}
}
/*時間延時過程結(jié)束*/
/*以下為主程序,執(zhí)行電機的正反轉(zhuǎn),控制速度和延時*/
void main(void)
{
P1=0xFF; //穩(wěn)定信號輸出,防止上電時電機轉(zhuǎn)子因信號不穩(wěn)定抖動
delay(1000,1000); //加電10s后再運行主程序,給調(diào)試人員留出足夠準備時間,防止出現(xiàn)事故?筛鶕(jù)實際情況修改,為安全起見建議時間延長
/*以下程序未控制電機運動方式的主體部分*/
while(1) //無限循環(huán)
{
for(mot_step=0;mot_step<mo_bc;mot_step++) //循環(huán)控制旋轉(zhuǎn)圈數(shù),正轉(zhuǎn)
{
delay(js,cjs); //每步延時
P1=0xF7; //電機轉(zhuǎn)速,正傳
delay(js,cjs); //每步延時
P1=0xFB; //電機轉(zhuǎn)速,正傳
}
P1=0x00; //軟制動,防止機械部件因慣性造成過位
delay(20,cjs); //延長制動時間,防止電機拖動的負荷因慣性造成過未,如果需要調(diào)整制動停留時間,數(shù)字20根據(jù)實際情況修改
P1=0xFF; //防止停車后電機過熱
delay(1000,1000); //間隔10s,還行反轉(zhuǎn),可根據(jù)需求進行修改
for(mot_step=0;mot_step<mo_bc;mot_step++) //循環(huán)控制旋轉(zhuǎn)圈數(shù),反轉(zhuǎn)
{
delay(js,cjs); //每步延時
P1=0xFD; //電機轉(zhuǎn)速,反傳
delay(js,cjs); //每步延時
P1=0xFE; //電機轉(zhuǎn)速,反傳
}
P1=0x00; //軟制動,防止機械部件因慣性造成過位
delay(20,cjs); //延長制動時間,防止電機拖動的負荷因慣性造成過未,如果需要調(diào)整制動停留時間,數(shù)字20根據(jù)實際情況修改
P1=0xFF; //防止停車后電機過熱
delay(1000,1000); //間隔10s,執(zhí)行正傳,可根據(jù)需求進行修改
}
/*電機控制主體部分結(jié)束*/
}
/*主程序段結(jié)束*/
|