一,程序設計方案的構想:
1)
步進電機是將電脈衝信號轉變為角位移或線位移的開環控制元件.在非超載的情況下,電機的轉速,停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響.即給電機加一個信號,電機則轉過一個步距角.這一線形關係的存在,加上步進電機只有周期性的誤差而無積累誤差等特點,使得在線速度,位置等控制領域用步進電機來控制變的非常的簡單.
2)
使用單片機以軟體方式驅動步進電機通過編輯方法,對步進電機的轉速,往返轉動的角度以及轉動次數等進行控制使其在一定的範圍下進行,還可以方便靈活的控制步進電機的運行狀態:
3)原理圖:
4)連接圖:
輸出端 | 輸入端 | ||||
A | C1 | P2.0 | KM1 | P1.0 | 1B |
B | C2 | P2.1 | KM2 | P1.1 | 2B |
C | C3 | P2.2 | KM3 | P1.2 | 3B |
D | C4 | P2.3 | KM4 | P1.3 | 4B |
P2.4 | KM5 |
5)運用元件及電路圖
元件名稱 | 型號 | 件數 |
單片機 | AT89C51 | 1 |
晶振 | CRYSTAL | 1 |
電容 | CAP | 2 |
電阻 | RES | 1 |
步進電機 | STEPER | 1 |
步進電機晶片 | ULN2003A | 1 |
按鈕 | BUTTON | 6 |
二、 實驗程序
org 0000H
start:
jnb p2.0,step
jnb p2.1,step
sjmp start
step:
jnb p2.2,one
jnb p2.3,ten
jnb p2.4,hundred
ljmp start
one:
mov r0,#2
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
ten:
mov r0,#10
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
hundred:
mov r0,#100
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
zh1:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,zh2
ljmp stop
zh2:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,zh3
ljmp stop
zh3:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,zh4
ljmp stop
zh4:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,zh1
sjmp stop
fan1:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,fan2
ljmp stop
fan2:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,fan3
ljmp stop
fan3:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,fan4
ljmp stop
fan4:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,fan1
sjmp stop
stop:
mov p1,#00H
ljmp start
delay:
mov r2,#200
d1:mov r1,#200
djnz r1,$
djnz r2,d1
ret
end
三、調試記錄:
當程序編譯完成後,下載到單片機中後,在運行過程當中時發現按下10步按鈕無法運行,其他都正常運行,回到程序檢查時發現10步程序編寫出現錯誤,經過改正後,可以運行.