專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

電機(jī)轉(zhuǎn)速測(cè)量控制程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年08月16日   【字體:

  以單片機(jī)8031為核心, 利用8279芯片實(shí)現(xiàn)按鍵輸入和利用數(shù)碼管顯示所測(cè)轉(zhuǎn)速,利用ADC0809將輸入電壓模擬量轉(zhuǎn)化為數(shù)字量(實(shí)驗(yàn)箱內(nèi)部已接好相關(guān)接口)控制電機(jī)轉(zhuǎn)速的目的。然后利用DA0832將電機(jī)上的傳感器配合DA0832的CKMOT接口將脈沖信號(hào)接到8031的INT0,利用外中斷實(shí)現(xiàn)速度的測(cè)量,一次外中斷會(huì)使速度計(jì)數(shù)器自動(dòng)加一,利用定時(shí)器產(chǎn)生一秒的計(jì)時(shí),得出一秒內(nèi)速度計(jì)數(shù)器的值就可以得到電機(jī)的轉(zhuǎn)速。另定時(shí)計(jì)數(shù)器每250MS產(chǎn)生一次定時(shí)器中斷,利用中斷來(lái)檢測(cè)是否有新的控制信號(hào)輸入,以達(dá)到實(shí)時(shí)控制轉(zhuǎn)速的目的。
 


 ORG 0000h
   ajmp main
   ORG 0003h  ;外部中斷0
   AJMP ZS
   ORG 000BH  ;定時(shí)計(jì)數(shù)器0中斷
   AJMP JS
   ORG 0100H
main: mov sp,#60h
      CLR PSW.5    ;清零標(biāo)志位
   SETB P1.0    ;置位檢測(cè)位
   setb et0
   SETB IT0 ;外部中斷0下降沿有效
   SETB EX0 ;允許T0中斷
   mov DPTR,#5FFFH ;8279初始化
   MOV A,#0DCH
   MOVX @DPTR,A
WAIT: MOVX A,@DPTR
      JB ACC.7,WAIT
   MOV A,#00H
   MOVX @DPTR,A
   MOV A,#34H
   MOVX @DPTR,A

   MOV R0,#30H ;清零所用數(shù)值緩沖區(qū)
CL:   MOV A,#00H
   MOV @R0,A
   INC R0
   CJNE R0,#36H,CL
   MOV 36H,#200
   MOV 37H,#20
   ACALL DIR
TIME: MOV TMOD,#02H ;一秒定時(shí)
      MOV TH0,#6
   MOV TL0,#6
   SETB TR0  ;開(kāi)啟T0中斷
   SETB EA

LOP2: JNB PSW.5,LOP3
      CLR PSW.5
   ACALL DIR   ;到一秒顯示轉(zhuǎn)速
   JMP LOP2
LOP3: MOV DPTR,#9FF4H ;啟動(dòng)a/d
   MOVX @DPTR,A
   ;ACALL DELAY1
   JB P1.0, $
   MOVX A,@DPTR
   MOV DPTR,#7FFFH ;啟動(dòng)d/a
   MOVX @DPTR,A
   AJMP LOP2

JS:   PUSH ACC   ;T0中斷子程序
      DJNZ 36H,OUT
   DJNZ 37H,next
   ajmp next1 
next: MOV 36H,#200
   ajmp out
next1:SETB PSW.5
   MOV 33H,30H
   MOV 34H,31H
   MOV 35H,32H
   MOV 30H,#0
   MOV 31H,#0
   MOV 32H,#0
   MOV 36H,#200
   MOV 37H,#20
OUT:  POP ACC
      RETI

ZS:   PUSH ACC   ;外部中斷子程序
      CLR EX0
   MOV A,30H
   ADD A,#1
   DA A
   MOV 30H,A
   CJNE A,#99H,OUT1
   MOV 30H,#0
   MOV A,31H
   ADD A,#1
   DA A
   MOV 31H,A
   CJNE A,#99H,OUT1
   MOV 31H,#0
   MOV A,32H
   ADD A,#1
   DA A
   MOV 32H,A
OUT1: SETB EX0
   POP ACC
      
   RETI   
   
DIR:  MOV R0,#33H
      MOV DPTR,#5FFFH
   MOV A,#92H
   MOVX @DPTR,A
   MOV R2,#03H
LED:  MOV A,@R0
      ANL A,#0FH
      MOV DPTR,#LEDTAB
   MOVC A,@A+DPTR
   MOV DPTR,#5EFFH
   MOVX @DPTR,A
   MOV A,@R0
   SWAP A
   ANL A,#0FH
   MOV DPTR,#LEDTAB
   MOVC A,@A+DPTR
   MOV DPTR,#5EFFH
   MOVX @DPTR,A
   INC R0
   DJNZ R2,LED
   RET

LEDTAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H

DELAY1: MOV R6,#5
DELAY2: MOV R7,#200
        DJNZ R7,$
        DJNZ R6,DELAY2  
  RET
  
END

 

 

關(guān)閉窗口

相關(guān)文章