日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用32定时器让电机缓慢转动_实验三 步进电机原理及应用

發布時間:2023/12/19 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用32定时器让电机缓慢转动_实验三 步进电机原理及应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文使用 Zhihu On VSCode 創作并發布

姓名: 張 政

學號: 21180615

實驗目的和要求

初步學習和掌握MCS-51的體系結構和匯編語言,了解Keil編程環境和程序下載工具的使用方法。

了解步進電機的工作原理,學習用單片機的步進電機控制系統的硬件設計方法,掌握定時器和中斷系統的應用,熟悉單片機應用系統的設計與調試方法。了解數碼管輸出的原理及編程方式。

實驗內容

編制MCS-51程序使步進電機按照規定的轉速和方向進行旋轉,并將已轉動的步數顯示在數碼管上。

步進電機的轉速分為兩檔,當按下S1開關時,進行快速旋轉,速度為60轉/分。當松開開關時,進行慢速旋轉,速度為10轉/分。當按下S2開關時,按照順時針旋轉;當松開時,按照逆時針旋轉。

本程序要求使用定時器中斷來實現,不準使用程序延時的方式。

實驗原理

1、本實驗采用定時器中斷實現,使用定時器時,首先應由外部條件得到要定時的時間長度t,如本實驗中,就是根據要求的速度計算出的每一步之間的間隔。然后選擇適當的定時器工作方式,去計算想要設定的計數器初值 s,使用如下方程。

定時周期 = 12/CPU 晶振頻率

得到的 s 需要分成高 8 位和低 8 位,分別放入計數器 THx 和 TLx 中(x 為 0 或 1)。如果 s為負數,說明需要的定時時間太長,即使定時器的最大時間也無法滿足要求。這種情況下, 需要加入軟件循環才能實現。我們可以將需要的定時時間分成 n 份,利用定時器達到 t/n 的時間長度,然后在定時器處理程序中,累計某一變量,如果到達 n,說明總的時間 t 已經達到。

要想使用定時器中斷,除了上面的定時器初值設定外,還需要將其他相關的特殊功能寄存器也都設置好。如果使用方式 0 和方式 1,不要忘記在計數結束后重新恢復計數器初值。

2、我們使用的單片機系統的頻率是 12M;步進電機轉動一周需要 24 步。

本步進電機實驗板,使用 FAN8200 作為驅動芯片。CPU 通過如下 4 個引腳與 FAN8200 相連,即:

3、本實驗使用簡單的雙四拍工作模式即可,這也是 FAN8200 比較方便的工作方式。只要將CE1 和 CE2 分別置為高,然后 IN1 和 IN2 按照預定的脈沖輸出,即 01->11->10->00->01 這個循環構成一個方向旋轉的輸出脈沖,將此序列翻轉,就是相反方向的輸出脈沖。

4、數碼管顯示:

本開發平臺有 3 個數碼管,使用串行方式連接在一起,具體電路參見實驗原理。要想輸

出一個字形碼,就需要從高位到低位依次向移位寄存器輸出 8 個比特。移位寄存器的數據線和時鐘線分別接到單片機的 P4.5 和 P4.4 管腳,可以使用 MCS-51 里面的位操作指令進行輸出。連續輸出 3 個字形,24 個 bit 之后,欲顯示的字形將穩定地顯示在數碼管上,程序可以轉而執行其他工作。

七段字形的編碼方式需要通過實驗獲得。這些編碼作為程序中的常數,使用 DB 命令存放。在程序中,需要將數值轉換為相應的字形編碼,可以使用 MOVC 指令來完成。

5、74HC164 是高速 CMOS 器件。74HC164 是 8 位邊沿觸發式移位寄存器,串行輸入數據,然后并行輸出。數據通過兩個輸入端(A 或 B)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數據輸入。兩個輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。

6、時鐘 (CLK) 每次由低變高時,數據右移一位,輸入到 Q0,Q0 是兩個數據輸入端(A 和

B)的邏輯與,它將上升時鐘沿之前保持一個建立時間的長度。

7、主復位(CLR)輸入端上的一個低電平將使其它所有輸入端都無效,同時非同步地清除寄存器,強制所有的輸出為低電平。

8、采用 3 個 74HC164 級聯控制三個數碼管的顯示,具體實驗原理如下圖所示。其中使用單片機P4.5 作為模擬串口數據,使用P4.4 模擬串口時鐘,CLR 端接高電平。使用上一個74HC164的 Q7 作為下一個 74HC164 的輸入端。

實驗步驟

流程圖

完整業務邏輯

匯編代碼如下

ORG 0000H ;復位起始地址LJMP START ORG 000BH ;中間地址保留給中斷向量表LJMP EINT0 ;定時器0中斷程序入口地址 ORG 0040H ;程序實際起始地址START: ;初始化P4 EQU 0C0H ;P4 地址 P4SW EQU 0BBH ;P4 方式控制字地址MOV P4SW,#70H CLK EQU P4.4 ;時鐘線 DAT EQU P4.5 ;數據線 SW EQU P3.6 MOV DPTR,#TAB ;TAB為--5D3E LP:MOV R3,#0 ;計數 MOV R4,#0 MOV R5,#0;TMOD 方式寄存器 I1: MOV TMOD,#01H ;選擇工作方式,即對TMOD賦初值.T0工作在方式1,16位的計數器;GATE(GATE-門控位,控制定時器的兩種啟動方式,) 等于0,不受外部控制MOV IE,#82H ;允許中斷,T0中斷允許 中斷控制字;直接對中斷寄存器IE 和優先級寄存器 IP設置ORL IP,#2H ;邏輯或,T0中斷的優先級高SETB P1.1 ;CE1 置1SETB P1.4 ;CE2 置1NEXT: ;判斷S2JB P3.7,OPP ;若 P3.7=1,s2沒有按下 ,逆時針MOV R0,#01111000B ;按下為順時針 --78MOV 20H,R0 LJMP SS1 OPP:MOV R0,#00101101B ;松開為逆時針 --2DMOV 20H,R0SS1: ;判斷S1JB P3.6,SPD ;若 P3.6=1,s1沒有按下,慢速MOV R2,#0H ;快速,(5D3E #TAB)LJMP L0 SPD:MOV R2,#1H ;慢速L0:MOV R1,#4 ;相位四次變換 MOV R0,20H L1:MOV A,R0 RLC A ;循環左移 MOV P3.2,C ;INT1 RLC A MOV P1.0,C ;INT2 MOV R0,A LCALL NUM LCALL TIME DJNZ R1,L1 ;R1 -1,結果不為0繼續循環LJMP NEXT TIME:CJNE R2,#1,QUICK MOV R6,#6 ;慢速六次計時 TIM2:MOV TH0,#5DH MOV TL0,#3EH SETB TR0 ;允許計數MOV R7,#0H TIM3:CJNE R7,#1H,TIM3 ;空循環,等待DJNZ R6,TIM2 ;R6 -1,結果不為0繼續循環LJMP OUT QUICK: MOV TH0,#5DH ;定時器0啟動,快速狀態60轉/分MOV TL0,#3EH SETB TR0 MOV R7,#0H TIM1: CJNE R7,#1H,TIM1 OUT: RETEINT0: ;中斷程序MOV R7,#1 RETI NUM: ;顯示轉數,每轉一次顯示一個數 S0: MOV A,R3 CALL EXP MOV A,R4 CALL EXP MOV A,R5 CALL EXPCJNE R3,#9,S1 MOV R3,#0 CJNE R4,#9,S2 MOV R4,#0 CJNE R5,#9,S3 MOV R5,#0 S1:INC R3 LJMP STOP S2:INC R4 LJMP STOP S3:INC R5 LJMP STOP STOP: RETEXP: ;顯示數碼管MOV 21H,R0 MOVC A,@A+DPTR ;查詢 TAB 表 MOV R0,#8 CLY: CLR CLK ;時鐘線低電平RLC A ;累加器A的邏輯操作指令MOV DAT,C ;8位數據按位輸出SETB CLK ;P4.4 時鐘線高電平DJNZ R0,CLY MOV R0,21H RETTAB: ;5D3EDB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END

思考題

  • 如果采用單四拍工作模式,每次步進角度為15度,程序如何修改?
  • 單四拍: A -- B -- ~A -- ~B -- A …

    修改相位值即可。

  • 如果采用單雙八拍工作模式,每次步進角度為7.5度,程序如何修改?
  • 八拍: A -- AB -- B -- BC -- C -- CD -- D -- DA -- A

    修改定時初始值,相位和循環次數也要改變。

  • 步進電機的轉速取決于哪些因素?上下限如何?
  • 取決于脈沖頻率和工作模式

    步進電機的轉速有上下限;受物理因素(摩擦,機械慣性,響應時間)影響,上限根據電機不同而不同,下限為0

  • 如何改變步進電機的轉向?
  • 改變轉動脈沖。

  • 步進電機有那些規格參數,如何根據需要選擇型號?

  • 功率,馬力,電流,轉速,效率,功率因數,額定轉矩,額定電流,重量,空起頻率等

  • 根據需要

    a) 選定需要的額定轉矩,通常根據需要的轉矩大小(所要帶動物體的扭力大小),來選擇哪種型號的電機。大致來說,扭力越大,所需選擇的電機的額定轉矩越大,電機尺寸越大。

    b) 選擇合適的轉速,電機的轉速和輸出轉矩成反比。步進電機在低速時輸出轉矩較大,高速時輸出轉矩較小。如果高速的時候希望獲得較大轉矩,需要選擇電感稍小的電機,低速大力度時候,選擇電感和電阻大的電機。

    c) 使用環境,特種步進電機需要防水,防油,可用于某些特殊場合。比如水下機器人就需要防水電機。

    d) 空起頻率的選擇,步進電機空載啟動頻率通常稱為“空起頻率”,如果要求頻繁在瞬間啟動,停止,高轉速,就要加速啟動。如果需要直接啟動并高速運轉,最好選用永磁電機。

  • MCS51中有哪些可存取的單元,存取方式如何?它們之間的區別和聯系有哪些?

  • a. 工作寄存器組(00H——1FH)

    內部RAM的0-1FH為四組工作寄存器區,每個區有 8 個工作寄存器(R0 -R7)。在同一時刻,只能使用一組工作寄存器,這是通過程序狀態字 PSW 的地 3,4 位來控制的。例如當此兩位為 00 時,使用第 0 組工作寄存器,對應于 00H 到 07H 的內部 RAM 空間。也就是說,這時指令中使用 R0 與直接使用 00 單元是 等價的,不過使用工作寄存器的指令簡單,且執行快。

    b. 可定位尋址RAM區(20H——2FH)

    內部 RAM 的 20H-2FH 為位尋址區域,這 16 個單元的每一位都對應一個位地址,占據位地址空間的 0-7FH,每一位都可以獨立置位、清除、取反等操作。

    c. 通用的RAM區(30H——7FH)

    在中斷和子程序調用中都需要堆棧。MCS-51 的堆棧理論上可以設置在內部 RAM 的任意區域,但由于 0-1FH 和 20-2FH 區域有上面說的特殊功能,因此一般設置在 30H 以后。

    在內部 RAM 中,所有的單元都可以作為通用的數據存儲器使用,存放輸入 的數據或計算的中間結果等,也可以作為條件轉移的條件使用。

  • 說明MOVC指令的使用方法。
  • MOVC是c51單片機匯編中斷查表指令,在匯編中,MOVC指令是用來表示程序存儲器中的內容和別的存儲單元進行傳送的。主要是用在累加器A和程序存儲器的數據傳送。

    以16位程序計數器PC或者數據指針DPTR作為基寄存器,以8位的累加器A作為變址寄存器,基址寄存器和變址寄存器的內容相加為16位的地址訪問程序存儲器。

    如MOVC A,@A+PC ; MOVC A.@A+DPTR ;

  • MCS51的指令時序是什么樣的,哪類指令的執行時間較長?
  • MCS51的時序是用定時單位來描述的,MCS51的時序單位有四個,分別為節拍,狀態,機器周期和指令周期。

    乘除法指令執行時間較長

  • 在本實驗環境下,能否控制顯示數碼的亮度?如何實現?可以,通過修改刷新頻率。
  • 可以,改變刷新頻率即可。

    實驗心得

    中斷中執行的程序太多,但由于使用的是定時器中斷,不能保證程序在定時周期內執行完畢。

    總結

    以上是生活随笔為你收集整理的用32定时器让电机缓慢转动_实验三 步进电机原理及应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。