一、實驗?zāi)康暮鸵?/p>
了解步進(jìn)電機的工作原理,學(xué)習(xí)用單片機的步進(jìn)電機控制系統(tǒng)的硬件設(shè)計方法,掌握定時器和中斷系統(tǒng)的應(yīng)用,熟悉單片機應(yīng)用系統(tǒng)的設(shè)計與調(diào)試方法。
二、實驗設(shè)備
1.單片機測控實驗系統(tǒng)
2.步進(jìn)電機控制實驗?zāi)K
3.Keil開發(fā)環(huán)境
4.STC-ISP程序下載工具
三、實驗內(nèi)容
1.編制MCS-51程序使步進(jìn)電機按照規(guī)定的轉(zhuǎn)速和方向進(jìn)行旋轉(zhuǎn),并將已轉(zhuǎn)動的步數(shù)顯示在數(shù)碼管上。
2.步進(jìn)電機的轉(zhuǎn)速分為兩檔,當(dāng)按下S1開關(guān)時,進(jìn)行快速旋轉(zhuǎn),速度為60轉(zhuǎn)/分。當(dāng)松開開關(guān)時,進(jìn)行慢速旋轉(zhuǎn),速度為10轉(zhuǎn)/分。當(dāng)按下S2開關(guān)時,按照順時針旋轉(zhuǎn);當(dāng)松開 時,按照逆時針旋轉(zhuǎn)。
3.本程序要求使用定時器中斷來實現(xiàn),不準(zhǔn)使用程序延時的方式。
四、實驗步驟
1.預(yù)習(xí) 參考輔助材料,學(xué)習(xí)C51編程語言使用和步進(jìn)電機原理。
2.簡單程序錄入和調(diào)試
本程序需要使用定時器定時,并使用中斷來同步。
中斷程序的典型例子如下:
格式:void 函數(shù)名()interrupt 中斷號 using 工作組
{
中斷服務(wù)程序內(nèi)容
}
注意:中斷不能返回任何值,所以前面是 void 后面是函數(shù)名,名字可以自己起,但不要與c語言的關(guān)鍵字相同;中斷函數(shù)不帶任何參數(shù),所以 函數(shù)名后面的()內(nèi)是 空的,中 斷號是指單片機的幾個中斷源的序號。這個序號是單片機識別不同中斷的唯一標(biāo)志。所以一定要寫正確。 后面的using 工作組 是指這個這個中斷使用單片機內(nèi)存中 4 個工作寄 存器的哪一組,c51 編譯后會自動分配工作組,因此最后這句話我們通常省略不寫。
c51 中斷寫法實例
void T1-time() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
上面的意思是定時器 1 的中斷服務(wù)程序,定時器 1 的中斷服務(wù)序號是 3 ,因此我們要寫成 interrupt 3 ,服務(wù)程序的內(nèi)容是給 兩個初值寄存器裝入新值。。
寫中斷前的準(zhǔn)備:
2.1. TMOD 賦值 確定工作方式。T0 還是T1 的工作方式。
2.2.計算初值 裝入 TH0 TL0 或者 TH1 TL1
2.3.中斷方式時 ,對 IE 賦值,開放中斷。
2.4. 使 TR0 和 TR1 置位,啟動定時器/計數(shù)器 定時/計數(shù)。
3.程序調(diào)試及現(xiàn)象觀測
用單步、斷點、連續(xù)方式調(diào)試程序,觀察狀態(tài)指示燈及電機狀態(tài),檢查運行結(jié)果。如果需要,可以將四個輸出信號的狀態(tài)同時輸出到P0口的某些位上,便于觀察。
五、實驗原理
1. 定時器中斷
使用定時器時,首先應(yīng)由外部條件得到要定時的時間長度t,如本實驗中,就是根據(jù)要求的速度計算出的每一步之間的間隔。然后選擇適當(dāng)?shù)亩〞r器工作方式,去計算想要設(shè)定 的計數(shù)器初值s,使用如下方程。
(2定時器最大位數(shù) - s)× 定時周期 =t (2的多少次方)
定時周期 = 12/CPU晶振頻率
注意#1. 得到的s需要分成高8位和低8位,分別放入計數(shù)器THx和TLx中(x為0或1)。如果s為負(fù)數(shù),說明需要的定時時間太長,即使定時器的最大時間也無法滿足要求。這 種情況下,需要加入軟件循環(huán)才能實現(xiàn)。我們可以將需要的定時時間分成n份,利用定時器達(dá)到t/n的時間長度,然后在定時器處理程序中,累計某一變量,如果到達(dá) n,說明總的時間t已經(jīng)達(dá)到。
#2.要想使用定時器中斷,除了上面的定時器初值設(shè)定外,還需要將其他相關(guān)的特殊功能寄存器也都設(shè)置好。如果使用方式0和方式1,不要忘記在計數(shù)結(jié)束后重新恢復(fù)計數(shù)器初 值。
2.我們使用的單片機系統(tǒng)的頻率是12M;步進(jìn)電機轉(zhuǎn)動一周需要24步。
本步進(jìn)電機實驗板,使用FAN8200作為驅(qū)動芯片。CPU通過如下4個引腳與FAN8200相連。
本實驗使用簡單的雙四拍工作模式即可,這也是FAN8200比較方便的工作方式。只要將CE1和CE2分別置為高,然后IN1和IN2按照預(yù)定的脈沖輸出,即01->11->10->00- >01這個循環(huán)構(gòu)成一個方向旋轉(zhuǎn)的輸出脈沖,將此序列翻轉(zhuǎn),就是相反方向的輸出脈沖。
六、思考題
1. 如采用單四拍工作模式,每次步進(jìn)角度是多少,程序要如何修改?
2. 如采用單雙八拍工作模式,每次步進(jìn)角度是多少,程序要如何修改?
3. 步進(jìn)電機的轉(zhuǎn)速取決于那些因素?有沒有上、下限?
4. 如何改變步進(jìn)電機的轉(zhuǎn)向?
5. 步進(jìn)電機有那些規(guī)格參數(shù),如何根據(jù)需要選擇型號?
以下是匯編程序:
ORG 0000H ;復(fù)位起始地址
LJMP START
ORG 000BH ;中間地址保留給中斷向量表
LJMP EINT0 ;定時器0中斷程序入口地址
ORG 0040H ;程序?qū)嶋H起始地址
START:
P4 EQU 0C0H
P4SW EQU 0BBH
CLK EQU P4.4 ;時鐘線
DAT EQU P4.5 ;數(shù)據(jù)線
SW EQU P3.6
MOV P4SW,#70H
MOV DPTR,#TAB ;s = 23869 --5D3E
LP:
MOV R3,#0 ;計數(shù)
MOV R4,#0
MOV R5,#0
I1: MOV TMOD,#01H ; 選擇工作方式,即對TMOD 賦初值。T0都工作在方式1,16位的計數(shù)器 GATE(GATE -門控位,控制定時器的兩種啟動方式,)等于0,不受外部控制
MOV IE,#82H ;全局中斷,T0中斷允許 中斷控制字;直接對中斷允許寄存器IE 和 優(yōu)先級寄存器 IP 設(shè)置
;ORL IP,#2H ;邏輯或,T0中斷優(yōu)先級高
SETB P1.1 ;CE1置高
SETB P1.4 ;CE2置高
NEXT:
JB P3.7,OPP ;如果P3.7等于1則轉(zhuǎn)移
MOV R0,#00101101B ;按下,順時針
MOV 20H,R0
LJMP SS1
OPP: MOV R0,#01111000B ;松開,逆時針
MOV 20H,R0
SS1:
JB P3.6,SPD
MOV R2,#0H ;按下,快速 ;23870 5D3E
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 ;IN1
RLC A
MOV P1.0,C ;IN2
MOV R0,A
LCALL NUM
LCALL TIME
DJNZ R1,L1
LJMP NEXT
TIME:
CJNE R2,#1,QUICK
MOV R6,#6 ;慢速 ;分6次來記時
TIM2: MOV TH0,#5DH
MOV TL0,#3EH
SETB TR0
MOV R7,#0H
TIM3: CJNE R7,#1H,TIM3
DJNZ R6,TIM2
LJMP OUT
QUICK: MOV TH0,#5DH ;定時器0啟動;;快速,60轉(zhuǎn)/分
MOV TL0,#3EH
SETB TR0
MOV R7,#0H
TIM1: CJNE R7,#1H,TIM1
OUT:
RET
EINT0:
MOV R7,#1
RETI
NUM: ;顯示已轉(zhuǎn)動的步數(shù),每轉(zhuǎn)動一次顯示一個數(shù)
S0: MOV A,R3
CALL EXP
MOV A,R4
CALL EXP
MOV A,R5
CALL EXP
CJNE R3,#10,S1
MOV R3,#0
CJNE R4,#10,S2
MOV R4,#0
CJNE R5,#10,S3
MOV R5,#0
S1: INC R3
LJMP STOP
S2: INC R4
LJMP STOP
S3: INC R5
LJMP STOP
STOP:
RET
EXP:
MOV 21H,R0
MOVC A,@A+DPTR
MOV R0,#8
CLY: CLR CLK ;P4.4 ;時鐘線低電平
RLC A ;累加器A 的邏輯操作指令
MOV DAT,C
SETB CLK ;P4.4 ;時鐘線高電平
DJNZ R0,CLY
MOV R0,21H
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
評論