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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

本文使用 Zhihu On VSCode 創(chuàng)作并發(fā)布

姓名: 張 政

學(xué)號: 21180615

實(shí)驗(yàn)?zāi)康暮鸵?/strong>

初步學(xué)習(xí)和掌握MCS-51的體系結(jié)構(gòu)和匯編語言,了解Keil編程環(huán)境和程序下載工具的使用方法。

了解步進(jìn)電機(jī)的工作原理,學(xué)習(xí)用單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)的硬件設(shè)計(jì)方法,掌握定時(shí)器和中斷系統(tǒng)的應(yīng)用,熟悉單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與調(diào)試方法。了解數(shù)碼管輸出的原理及編程方式。

實(shí)驗(yàn)內(nèi)容

編制MCS-51程序使步進(jìn)電機(jī)按照規(guī)定的轉(zhuǎn)速和方向進(jìn)行旋轉(zhuǎn),并將已轉(zhuǎn)動的步數(shù)顯示在數(shù)碼管上。

步進(jìn)電機(jī)的轉(zhuǎn)速分為兩檔,當(dāng)按下S1開關(guān)時(shí),進(jìn)行快速旋轉(zhuǎn),速度為60轉(zhuǎn)/分。當(dāng)松開開關(guān)時(shí),進(jìn)行慢速旋轉(zhuǎn),速度為10轉(zhuǎn)/分。當(dāng)按下S2開關(guān)時(shí),按照順時(shí)針旋轉(zhuǎn);當(dāng)松開時(shí),按照逆時(shí)針旋轉(zhuǎn)。

本程序要求使用定時(shí)器中斷來實(shí)現(xiàn),不準(zhǔn)使用程序延時(shí)的方式。

實(shí)驗(yàn)原理

1、本實(shí)驗(yàn)采用定時(shí)器中斷實(shí)現(xiàn),使用定時(shí)器時(shí),首先應(yīng)由外部條件得到要定時(shí)的時(shí)間長度t,如本實(shí)驗(yàn)中,就是根據(jù)要求的速度計(jì)算出的每一步之間的間隔。然后選擇適當(dāng)?shù)亩〞r(shí)器工作方式,去計(jì)算想要設(shè)定的計(jì)數(shù)器初值 s,使用如下方程。

定時(shí)周期 = 12/CPU 晶振頻率

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

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

2、我們使用的單片機(jī)系統(tǒng)的頻率是 12M;步進(jìn)電機(jī)轉(zhuǎn)動一周需要 24 步。

本步進(jìn)電機(jī)實(shí)驗(yàn)板,使用 FAN8200 作為驅(qū)動芯片。CPU 通過如下 4 個(gè)引腳與 FAN8200 相連,即:

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

4、數(shù)碼管顯示:

本開發(fā)平臺有 3 個(gè)數(shù)碼管,使用串行方式連接在一起,具體電路參見實(shí)驗(yàn)原理。要想輸

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

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

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

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

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

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

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

實(shí)驗(yàn)步驟

流程圖

完整業(yè)務(wù)邏輯

匯編代碼如下

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

思考題

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

    修改相位值即可。

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

    修改定時(shí)初始值,相位和循環(huán)次數(shù)也要改變。

  • 步進(jìn)電機(jī)的轉(zhuǎn)速取決于哪些因素?上下限如何?
  • 取決于脈沖頻率和工作模式

    步進(jìn)電機(jī)的轉(zhuǎn)速有上下限;受物理因素(摩擦,機(jī)械慣性,響應(yīng)時(shí)間)影響,上限根據(jù)電機(jī)不同而不同,下限為0

  • 如何改變步進(jìn)電機(jī)的轉(zhuǎn)向?
  • 改變轉(zhuǎn)動脈沖。

  • 步進(jìn)電機(jī)有那些規(guī)格參數(shù),如何根據(jù)需要選擇型號?

  • 功率,馬力,電流,轉(zhuǎn)速,效率,功率因數(shù),額定轉(zhuǎn)矩,額定電流,重量,空起頻率等

  • 根據(jù)需要

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

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

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

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

  • MCS51中有哪些可存取的單元,存取方式如何?它們之間的區(qū)別和聯(lián)系有哪些?

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

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

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

    內(nèi)部 RAM 的 20H-2FH 為位尋址區(qū)域,這 16 個(gè)單元的每一位都對應(yīng)一個(gè)位地址,占據(jù)位地址空間的 0-7FH,每一位都可以獨(dú)立置位、清除、取反等操作。

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

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

    在內(nèi)部 RAM 中,所有的單元都可以作為通用的數(shù)據(jù)存儲器使用,存放輸入 的數(shù)據(jù)或計(jì)算的中間結(jié)果等,也可以作為條件轉(zhuǎn)移的條件使用。

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

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

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

  • MCS51的指令時(shí)序是什么樣的,哪類指令的執(zhí)行時(shí)間較長?
  • MCS51的時(shí)序是用定時(shí)單位來描述的,MCS51的時(shí)序單位有四個(gè),分別為節(jié)拍,狀態(tài),機(jī)器周期和指令周期。

    乘除法指令執(zhí)行時(shí)間較長

  • 在本實(shí)驗(yàn)環(huán)境下,能否控制顯示數(shù)碼的亮度?如何實(shí)現(xiàn)?可以,通過修改刷新頻率。
  • 可以,改變刷新頻率即可。

    實(shí)驗(yàn)心得

    中斷中執(zhí)行的程序太多,但由于使用的是定時(shí)器中斷,不能保證程序在定時(shí)周期內(nèi)執(zhí)行完畢。

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。