當前位置:編程學習大全網 - 編程語言 - 通過壹個按鍵控制電機的速度,該怎樣?

通過壹個按鍵控制電機的速度,該怎樣?

按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉/分,最低轉帶為25轉/分,按下停止鍵,電機停轉。速度值要求在數碼管上顯示出來。

1.要求分析

按上面的分析,改變轉速,只要改變P1.0~P1.3輪流變低電平的時間即可達到要求,這個時間不應采用延時來實現,因為會影響到其他功能的實現。這裏以定時的方式來實現。下面首先計算壹下定時時間。

按要求,最低轉速為25轉/分,而上述步進電機的步距角為7.5,即每48個脈沖為1周,即在最低轉速時,要求為1200脈沖/分,相當於50ms/脈沖。而在最高轉速時,要求為100轉/分,即48000脈沖/分,相當於12.5ms/脈沖。可以列出下表

表1 步進電機轉速與定時器定時常數關系

速度 單步時間(us) TH1 TL1 實際定時(us)

25 50000 76 0 49996.8

26 48077 82 236 48074.18

27 46296 89 86 46292.61

28 44643 95 73 44640.155

… … … …

100 12500 211 0 12499.2

表中不僅計算出了TH1和TL1,而且還計算出了在這個定時常數下,真實的定時時間,可以根據這個計算值來估算真實速度與理論速度的誤差值。

表中TH1和TL1是根據定時時間算出來的定時初值,這裏用到的晶振是11.0592M。有了上述表格,程序就不難實現了,使用定時/計數器T1為定時器,定時時間到後切換輸出腳即可。

2.程序實現

定義DSB-1A實驗板的S1為啟動鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:

StartEnd bit 01H ;起動及停止標誌

MinSpd EQU 25 ;起始轉動速度

MaxSpd EQU 100 ;最高轉動速度

Speed DATA 23H ;流動速度計數

DjCount DATA 24H ;控制電機輸出的壹個值,初始為11110 111

Hidden EQU 10H ;消隱碼

Counter DATA 57H ;顯示計數器

DISPBUF DATA 58H ;顯示緩沖區

ORG 0000H

AJMP MAIN

ORG 000BH

JMP DISP

ORG 001BH

JMP DJZD

ORG 30H

MAIN:

MOV SP,#5FH

MOV P1,#0FFH

MOV A,#Hidden

MOV DispBuf,A

MOV DispBuf+1,A

MOV DispBuf+2,A

MOV DjCount,#11110111B

MOV SPEED,#MinSpd;起始轉動速度送入計數器

CLR StartEnd;停轉狀態

MOV TMOD,#00010001B ;

MOV TH0,#HIGH(65536-3000)

MOV TL0,#LOW(65536-3000)

MOV TH1,#0FFH;

MOV TL1,#0FFH

SETB TR0

SETB EA

SETB ET0

SETB ET1

LOOP: ACALL KEY ;鍵盤程序

JNB F0,m_NEXT1 ;無鍵繼續

ACALL KEYPROC ;否則調用鍵盤處理程序

m_NEXT1:

MOV A,Speed

MOV B,#10

DIV AB

MOV DispBuf+5,B ;最低位

MOV B,#10

DIV AB

MOV DispBuf+4,B

MOV DispBuf+3,A

JB StartEnd,m_Next2

CLR TR1 ;關閉電機

JMP LOOP

ORL P1,#11110000B

m_Next2:

SETB TR1 ;啟動電機

AJMP LOOP ;主程序結束

  • 上一篇:水槽選擇哪種材料清洗比較省錢?
  • 下一篇:batgirl簡介及詳細資料
  • copyright 2024編程學習大全網