當前位置:星座運勢大全官網 - 八字算命 - 51單片機,如何實現步進電機的循環正反轉

51單片機,如何實現步進電機的循環正反轉

下面的程序是我自己在實驗中寫的,幾乎都有詳細的註釋。相信學過單片機的同學都能輕松讀懂。

讀者可以做壹些修改,比如我用跳轉指令,讀者可以在進入加減速循環時改成調用指令。電機速度也可以修改為沒有下限。

而且判斷按鍵按下過程也可以有自己的方法,我的判斷按下釋放可能更麻煩。

我在數據表裏設置的是每個脈沖轉9,妳也可以根據實際需要修改自己的數據表。

這個程序我參考了《單片機實用系統設計與仿真經典範例》(編者:周景潤劉曉霞)的P25。有興趣的讀者可以從圖書館借這本書。

ORG 0000H

LJMP總管

ORG 0030H

主營:MOV 30H,# 05H加速和減速速度控制,控制延遲周期數(初始值)

MOV DPTR,# tab 1;向P2分配值的表查找方法

MOV R0,# 03HP2初始值

MOV R4,# 00H查找表指針值

MOV·P2,R0;估價

等待:MOV P0,# 0FFHP0需要輸出壹個1才能輸入。

JNB P0.0,宋3;檢查鍵是否按下,宋表示鍵是否放開,否則程序會混亂。

JNB P0.1,宋4;節目中的宋就是上面的意思。

SJMP等待;如果妳不按這個按鈕,它就不會啟動。

宋3:JB p 0.0,鄭;輸入正向旋轉

SJMP歌曲3;

宋4:JB p 0.1,範;輸入反轉

SJMP歌曲4;

鄭:01H;開始查表

loop 1:JB p 0.1,雲星1;檢查是否反轉,如果沒有按下反轉鍵,運轉正常。

宋1:JNB p 0.1,範;按下倒檔釋放並進入倒檔。

SJMP宋1;

運興1:MOV A,R4;查表

MOVC A,@ A+DPTR;

MOV·P2;

呼叫延遲;進入延時程序控制電機速度。

JB P0.3,cool 1;檢測減速按鈕是否按下,如果沒有,檢測加速按鈕是否按下。

宋5:JNB p 0.3,降1;按下進入延遲程序,修改循環次數。

SJMP歌曲5;

cool 1:JB p 0.2,normal 1;檢測加速按鈕是否按下,不按會正常運行。

宋6:JNB p 0.2,up 1;按加速鍵進入延遲程序,修改循環次數。

SJMP歌曲6;

nomal 1:INC R4;檢查下壹個數據

CJNE R4,#09H,loop 1;檢查完表中的數據後,重置R4的值,如果未選中,則不要重置R4。

鄭;循環正轉

粉絲:R4,# 07H反向R4初始值

loop 2:JB p 0.0,雲星2;檢測正向鍵是否被按下,如果沒有,正常運行反向程序。

宋2:p 0.0,鄭;按下正向旋轉按鈕並松開,進入正向旋轉程序。

SJMP歌曲2;

運星2:MOV A,R4;開始查表

MOVC A,@ A+DPTR;

MOV·P2;

呼叫延遲;進入延時程序控制電機速度。

JB P0.3,COOL2檢測減速按鈕是否按下,如果沒有,檢測加速按鈕是否按下。

宋7:JNB p 0.3,降2;按下進入延遲程序,修改循環次數。

SJMP歌曲7;

cool 2:JB p 0.2,正常2;檢測加速按鈕是否按下,不按會正常運行。

宋8:JNB p 0.2,UP2按下進入延遲程序,修改循環次數。

SJMP歌曲8;

師範2:R4 DEC;圓形查找表

CJNE R4,#00H,LOOP2再次檢查後,重置並重新檢查數據。

SJMP範;反轉循環

延時:MOV R6,# 05H

DD1: MOV R5,# 080H

DD2:MOV R7,# 05H

DD3:DJNZ R7,DD3;

DJNZ R5

DJNZ R6,DD 1;固定延遲

DJNZ R1,延時;通過改變延遲程序的循環時間來控制電機速度。

速度:MOV r 1.30h;將每個周期的速度值輸入R1。

SJMP回來了;

down 1:INC 30H;速度降低是因為循環數是+1。

CJNE R1,#10H,normal 1;限速下限為10。如果小於10,可以繼續減速。

MOV 30H,# 10H;到了下限就不能減速了,壹直是10。

SJMP師範1;返回到正向旋轉循環

up 1:12月30日;速度加,因為循環數是-1。

CJNE R1,#01H,normal 1;速度上限為1。如果小於1,可以繼續加速。

MOV 30H,# 01H;速度達到上限就無法加速,永遠是1。

SJMP師範1;返回正向旋轉循環

down 2:INC 30H;速度降低是因為循環數是+1。

CJNE R1,#10H,正常2;限速下限為10。如果小於10,可以繼續減速。

MOV 30H,# 10H;到了下限就不能減速了,壹直是10。

SJMP·諾瑪2;回到相反的循環

UP2:12月30日h;速度加,因為循環數是-1。

CJNE R1,#01H,正常2;速度上限為1。如果小於1,可以繼續加速。

MOV 30H,# 01H;速度達到上限就無法加速,永遠是1。

SJMP·諾瑪2;回到相反的循環

回:RET延遲子程序返回

tab 1:DB 00H,02H,06H,04H

DB 0CH,08H,09H,01H,03H控制每個通電順序的數值表。

結束;結束