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