久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

單片機(jī)控制步進(jìn)電機(jī)

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

步進(jìn)電機(jī)是機(jī)電控制中一種常用的執(zhí)行機(jī)構(gòu),它的用途是將電脈沖轉(zhuǎn)化為角位移,通俗地說(shuō):當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(及步進(jìn)角)。通過(guò)控制脈沖個(gè)數(shù)即可以控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。


T89C2051單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼

程序

stepper.c
stepper.hex

/*
* STEPPER.C
* sweeping stepper''s rotor cw and cww 400 steps
* Copyright (c) 1999 by W.Sirichote
*/

#include c:\mc51\8051io.h /* include i/o header file */
#include c:\mc51\8051reg.h

register unsigned char j,flag1,temp;
register unsigned int cw_n,ccw_n;

unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}
#define n 400

/* flag1 mask byte
0x01 run cw()
0x02 run ccw()
*/

main()

{
flag1=0;
serinit(9600);
dISAble(); /* no need timer interrupt */
cw_n = n; /* initial step number for cw */
flag1 |=0x01; /* initial enable cw() */

while(1){
{
tick_wait(); /* wait for 10ms elapsed */

energize(); /* round-robin execution the following tasks every 10ms */
cw();
ccw();
}
}

}

cw(){
if((flag1&0x01)!=0)
{
cw_n--; /* decrement cw step number */
if (cw_n !=0)
j++; /* if not zero increment index j */
else
{flag1&=~0x01; /* dISAble cw() execution */
ccw_n = n; /* reload step number to ccw counter */
flag1 |=0x02; /* enable cww() execution */
}
}

}

ccw(){
if((flag1&0x02)!=0)
{
ccw_n--; /* decremnent ccw step number */
if (ccw_n !=0)
j--; /* if not zero decrement index j */
else
{flag1&=~0x02; /* dISAble ccw() execution */
cw_n = n; /* reload step number to cw counter */
flag1 |=0x01; /* enable cw() execution */
}
}

}

tick_wait(){ /* cputick was replaced by simpler ASM code 10ms wait */

asm" JNB TCON.5,*"; /* wait for TF0 set */
asm" CLR TCON.5"; /* clear TF0 for further set */
asm" ORL TH0,#$DC"; /* reload TH0 with $DC, TL0 = 0 */
}

energize(){

P1 = step[(j&0x07)]; /* only step 0-7 needed */
}

一、步進(jìn)電機(jī)常識(shí)
     常見的步進(jìn)電機(jī)分三種:永磁式(PM),反應(yīng)式(VR)和混合式(HB),永磁式步進(jìn)一般為兩相,轉(zhuǎn)矩和體積較小,步進(jìn)角一般為7.5度 或15度;反應(yīng)式步進(jìn)一般為三相,可實(shí)現(xiàn)大轉(zhuǎn)矩輸出,步進(jìn)角一般為1.5度,但噪聲和振動(dòng)都很大。在歐美等發(fā)達(dá)國(guó)家80年代已被淘汰;混合式步進(jìn)是指混合了永磁式和反應(yīng)式的優(yōu)點(diǎn)。它又分為兩相和五相:兩相步進(jìn)角一般為1.8度而五相步進(jìn)角一般為   0.72度。這種步進(jìn)電機(jī)的應(yīng)用最為廣泛。

二、永磁式步進(jìn)電機(jī)的控制
     下面以電子愛好者業(yè)余制作中常用的永磁式步進(jìn)電機(jī)為例,來(lái)介紹如何用單片機(jī)控制步進(jìn)電機(jī)。
      圖1是35BY型永磁步進(jìn)電機(jī)的外形圖,圖2是該電機(jī)的接線圖,從圖中可以看出,電機(jī)共有四組線圈,四組線圈的一個(gè)端點(diǎn)連在一起引出,這樣一共有5根引出線。要使用步進(jìn)電機(jī)轉(zhuǎn)動(dòng),只要輪流給各引出端通電即可。將COM端標(biāo)識(shí)為C,只要AC、 C、BC、 C,輪流加電就能驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)轉(zhuǎn),加電的方式可以有多種,如果將COM端接正電源,那么只要用開關(guān)元件(如三極管),將A、 、B、 輪流接地。
     下表列出了該電機(jī)的一些典型參數(shù):
表1 35BY48S03型步機(jī)電機(jī)參數(shù)
型號(hào) 步距角 相數(shù) 電壓 電流 電阻 最大靜轉(zhuǎn)距 定位轉(zhuǎn)距 轉(zhuǎn)動(dòng)慣量
35BY48S03 7.5 4 12 0.26 47 180 65 2.5
      有了這些參數(shù),不難設(shè)計(jì)出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達(dá)林頓驅(qū)動(dòng)器(ULN2003)來(lái)作為驅(qū)動(dòng),通過(guò) P1.4~P1.7來(lái)控制各線圈的接通與切斷,電路如圖3所示。開機(jī)時(shí),P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)行,注意在切換之前將前一個(gè)輸出引腳變?yōu)楦唠娖健H绻淖冸姍C(jī)的轉(zhuǎn)動(dòng)速度只要改變兩次接通之間的時(shí)間,而要改變電機(jī)的轉(zhuǎn)動(dòng)方向,只要改變各線圈接通的順序。


圖1 35BY48S03型步進(jìn)電機(jī)外形圖


圖2 35BY48S03型步進(jìn)電機(jī)的接線圖


圖3 單片機(jī)控制35BY48S03型步進(jìn)電機(jī)的電路原理圖

三、步進(jìn)電機(jī)的驅(qū)動(dòng)實(shí)例
     要求:控制電路如圖3所示,開機(jī)后,電機(jī)不轉(zhuǎn),按下啟動(dòng)鍵,電機(jī)旋轉(zhuǎn),速度為25轉(zhuǎn)/分,按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉(zhuǎn)/分,最低轉(zhuǎn)帶為25轉(zhuǎn)/分,按下停止鍵,電機(jī)停轉(zhuǎn)。速度值要求在數(shù)碼管上顯示出來(lái)。

1.要求分析
     按上面的分析,改變轉(zhuǎn)速,只要改變P1.0~P1.3輪流變低電平的時(shí)間即可達(dá)到要求,這個(gè)時(shí)間不應(yīng)采用延時(shí)來(lái)實(shí)現(xiàn),因?yàn)闀?huì)影響到其他功能的實(shí)現(xiàn)。這里以定時(shí)的方式來(lái)實(shí)現(xiàn)。下面首先計(jì)算一下定時(shí)時(shí)間。
按要求,最低轉(zhuǎn)速為25轉(zhuǎn)/分,而上述步進(jìn)電機(jī)的步距角為7.5,即每48個(gè)脈沖為1周,即在最低轉(zhuǎn)速時(shí),要求為1200脈沖/分,相當(dāng)于50ms/脈沖。而在最高轉(zhuǎn)速時(shí),要求為100轉(zhuǎn)/分,即48000脈沖/分,相當(dāng)于12.5ms/脈沖。可以列出下表
表1 步進(jìn)電機(jī)轉(zhuǎn)速與定時(shí)器定時(shí)常數(shù)關(guān)系
速度 單步時(shí)間(us) TH1 TL1 實(shí)際定時(shí)(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
     表中不僅計(jì)算出了TH1和TL1,而且還計(jì)算出了在這個(gè)定時(shí)常數(shù)下,真實(shí)的定時(shí)時(shí)間,可以根據(jù)這個(gè)計(jì)算值來(lái)估算真實(shí)速度與理論速度的誤差值。
表中TH1和TL1是根據(jù)定時(shí)時(shí)間算出來(lái)的定時(shí)初值,這里用到的晶振是11.0592M。有了上述表格,程序就不難實(shí)現(xiàn)了,使用定時(shí)/計(jì)數(shù)器T1為定時(shí)器,定時(shí)時(shí)間到后切換輸出腳即可。

2.程序?qū)崿F(xiàn)
     定義DSB-1A實(shí)驗(yàn)板的S1為啟動(dòng)鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:

StartEnd bit   01H ;起動(dòng)及停止標(biāo)志
MinSpd   EQU 25   ;起始轉(zhuǎn)動(dòng)速度
MaxSpd    EQU 100 ;最高轉(zhuǎn)動(dòng)速度
Speed   DATA 23H ;流動(dòng)速度計(jì)數(shù)
DjCount   DATA 24H ;控制電機(jī)輸出的一個(gè)值,初始為11110 111
Hidden EQU 10H ;消隱碼
Counter DATA 57H ;顯示計(jì)數(shù)器
DISPBUF DATA 58H ;顯示緩沖區(qū)

     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 ;起始轉(zhuǎn)動(dòng)速度送入計(jì)數(shù)器
     CLR     StartEnd ;停轉(zhuǎn)狀態(tài)
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 ;無(wú)鍵繼續(xù)
     ACALL    KEYPROC   ;否則調(diào)用鍵盤處理程序
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 ;關(guān)閉電機(jī)
JMP LOOP
ORL P1,#11110000B
m_Next2:
SETB TR1 ;啟動(dòng)電機(jī)
     AJMP    LOOP   ;主程序結(jié)束
;---------------------------------------
D10ms:  
……
;---------延時(shí)程序,鍵盤處理中調(diào)用
KEYPROC:
     MOV      A,B   ;獲取鍵值
     JB       ACC.2,StartStop   ;分析鍵的代碼,某位被按下,則該位為1
     JB       ACC.3,KeySty
     JB       ACC.4,UpSpd
     JB       ACC.5,DowSpd
     AJMP     KEY_RET
StartStop:
     SETB StartEnd     ;啟動(dòng)
     AJMP     KEY_RET
KeySty:  
CLR StartEnd; ;停止
     AJMP     KEY_RET
UpSpd:
     INC      SPEED;
     MOV     A,SPEED
     CJNE     A,#MaxSpd,K1 ;到了最多的次數(shù)?
     DEC      SPEED ;是則減去1,保證下次仍為該值
K1:
     AJMP     KEY_RET
DowSpd:
     DEC      SPEED
     MOV      A,SPEED
     CJNE     A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
MOV SPEED,#MinSpd;
KEY_RET:
     RET

KEY:    
……獲取鍵值的程序
     RET

DjZd: ;定時(shí)器T1用于電機(jī)轉(zhuǎn)速控制
PUSH ACC
PUSH PSW
MOV A,Speed
SUBB A,#MinSpd ;減基準(zhǔn)數(shù)
MOV DPTR,#DjH
MOVC A,@A+DPTR
MOV TH1,A
MOV A,Speed
SUBB A,#MinSpd
MOV DPTR,#DjL
MOVC A,@A+DPTR
MOV TL1,A
MOV A,DjCount
CPL A
ORL P1,A
MOV A,DjCount
JNB ACC.7,d_Next1
JMP d_Next2
d_Next1:
MOV DjCount,#11110111B
d_Next2:
MOV A,DjCount
RL A
MOV DjCount,A ;回存
ANL P1,A
POP PSW
POP ACC
RETI

DjH: DB 76,82,89,95,100,106,110,115,119,123,12……
DjL: DB 0,236,86,73,212,0,214,96,163,165
……

DISP: ;顯示程序
POP PSW
POP ACC
……
RETI
BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
END

3.程序分析
      本程序主要由鍵盤程序、顯示器程序、步進(jìn)電機(jī)驅(qū)動(dòng)程序三部份組成,主程序首先初始化各變量,將顯示器的高3位消隱,步進(jìn)電機(jī)驅(qū)動(dòng)的各引腳均輸出高電平,然后調(diào)用鍵盤程序,并作判斷,如果有鍵按下,則調(diào)用鍵盤處理程序,否則直接轉(zhuǎn)下一步。下一步是將當(dāng)前的轉(zhuǎn)速值轉(zhuǎn)換為BCD碼,送入顯示緩沖區(qū);接著判斷 StartEnd這個(gè)位變量,是“1”還是“0”,如果是“1”,則開啟定時(shí)器T1,否則關(guān)閉定時(shí)器T1,為防止關(guān)閉時(shí)某一相線圈長(zhǎng)期通電,因此,在關(guān)閉定時(shí)器T1時(shí),將P1.0~P1.3均置高。至此,主程序的工作即結(jié)束。這里為簡(jiǎn)便起見,這里沒有做高位“0”消隱的工作,即如果速度為10轉(zhuǎn)/分,則顯示值“010”,讀者可以自行加入相關(guān)的代碼來(lái)處理這一工作。
     步進(jìn)電機(jī)的驅(qū)動(dòng)工作是在定時(shí)器T1的中斷服務(wù)程序中實(shí)現(xiàn)的,由前述分析,每次的定時(shí)時(shí)間到達(dá)以后,需要將P1.0~P1.3依次接通,程度中用了一個(gè)變量DjCntr來(lái)實(shí)現(xiàn)這一功能,在主程序初始化時(shí),該變量被賦予初值 11110111B,進(jìn)入到定時(shí)中斷以后,將該變量取出送ACC累加器,并在累加器中進(jìn)行左移,這樣,該數(shù)值就變?yōu)?110 1111,然后將該數(shù)與P1 相“與”,此時(shí),P1.4即輸出低電平,第二次進(jìn)入中斷時(shí),先將該數(shù)取反,成為 0001 0000,然后將該數(shù)與P1相“或”,這樣,P1.4即輸出高電平,關(guān)斷了相應(yīng)的線圈,然后將該數(shù)重新取出,并作左移,即 1110,1111右移成為1101 1111,將該數(shù)與P1相“與”,這樣P1.5即輸出低電平,依次類推,P1.7~P1.4即循環(huán)輸出低電平。當(dāng)這一數(shù)據(jù)變?yōu)?111 1111后,需要作適當(dāng)?shù)母膭?dòng),將數(shù)據(jù)重新變回 1111 0111,進(jìn)行第二次循環(huán),相關(guān)代碼,請(qǐng)讀者自行分析。
     定時(shí)時(shí)間又是如何確定的呢?這里用的是查表的方法,首先用Excel計(jì)算得出在每一種轉(zhuǎn)速下的TH值和TL值,然后,分別放入DjH和DjL表中,在進(jìn)入T1中斷程序之后,將速度值變量Speed送入累加器ACC,然后減去基數(shù)25,使其基數(shù)從 0開始計(jì)數(shù),然后分別查表,送入TH1和TL1,實(shí)現(xiàn)重置定時(shí)初值的目的。
看完這一部份內(nèi)容以后,請(qǐng)讀者自行完成以下工作:

1. 更改程序,將S1定義為“啟動(dòng)/停止”,而S2定義為“方向”,按下S2,切換電機(jī)旋轉(zhuǎn)方向。

2. 更改程序,要求轉(zhuǎn)速?gòu)?到100。

3. 更改程序,實(shí)現(xiàn)首位無(wú)效零消隱

-----------------------------------------------3--------------------------------------------

步進(jìn)電機(jī)的單片機(jī)控制

作者:李通 劉志垠

摘要:本設(shè)計(jì)采用凌陽(yáng)16 位單片機(jī)SPCE061A對(duì)步進(jìn)電機(jī)進(jìn)行控制,通過(guò)IO口輸出的具有時(shí)序的方波作為步進(jìn)電機(jī)的控制信號(hào),信號(hào)經(jīng)過(guò)芯片L298N驅(qū)動(dòng)步進(jìn)電機(jī);同時(shí),用 4X4的鍵盤來(lái)對(duì)電機(jī)的狀態(tài)進(jìn)行控制,并用數(shù)碼管顯示電機(jī)的轉(zhuǎn)速,采用74LS164作為4位單個(gè)數(shù)碼管的顯示驅(qū)動(dòng),從單片機(jī)輸入信號(hào);利用凌陽(yáng)單片機(jī)的語(yǔ)音功能播報(bào)電機(jī)的轉(zhuǎn)速。

關(guān)鍵詞: 步進(jìn)電機(jī) 單片機(jī) 數(shù)碼管

一、 方案論證與比較

1、 本設(shè)計(jì)的重點(diǎn)在于對(duì)步進(jìn)電機(jī)的控制和驅(qū)動(dòng),設(shè)計(jì)中受控電機(jī)為四相六線制的步進(jìn)電機(jī)(內(nèi)阻33歐,步進(jìn)1.8度,額定電壓12V)

方案一:使用多個(gè)功率放大器件驅(qū)動(dòng)電機(jī)

通過(guò)使用不同的放大電路和不同參數(shù)的器件,可以達(dá)到不同的放大的要求,放大后能夠得到較大的功率。但是由于使用的是四相的步進(jìn)電機(jī),就需要對(duì)四路信號(hào)分別進(jìn)行放大,由于放大電路很難做到完全一致,當(dāng)電機(jī)的功率較大時(shí)運(yùn)行起來(lái)會(huì)不穩(wěn)定,而且電路的制作也比較復(fù)雜。

方案二:使用L298N芯片驅(qū)動(dòng)電機(jī)

L298N芯片可以驅(qū)動(dòng)兩個(gè)二相電機(jī)(如圖1-1),也可以驅(qū)動(dòng)一個(gè)四相電機(jī),輸出電壓最高可達(dá)50V,可以直接通過(guò)電源來(lái)調(diào)節(jié)輸出電壓;可以直接用單片機(jī)的IO口提供信號(hào);而且電路簡(jiǎn)單,使用比較方便。

圖1-1

通過(guò)比較,使用L298N芯片充分發(fā)揮了它的功能,能穩(wěn)定地驅(qū)動(dòng)步進(jìn)電機(jī),且價(jià)格不高,故選用L298N驅(qū)動(dòng)電機(jī)。而使用L298N時(shí),可以用L297來(lái)提供時(shí)序信號(hào),可以節(jié)省單片機(jī)IO口的使用;也可以直接用單片機(jī)模擬出時(shí)序信號(hào),由于控制并不復(fù)雜,故選用后者。

2、 數(shù)碼管顯示電路的設(shè)計(jì)

方案一:串行接法

設(shè)計(jì)中要顯示4位數(shù)字,用74LS164作為顯示驅(qū)動(dòng),其中帶鎖存,使用串行接法可以節(jié)約IO口資源,但要使用SIO,發(fā)送數(shù)據(jù)時(shí)容易控制。

方案二:并行接法

使用并行接法時(shí)要對(duì)每個(gè)數(shù)碼管用IO口單獨(dú)輸入數(shù)據(jù),占用資源較多。

由于設(shè)計(jì)中用一塊單片機(jī)進(jìn)行控制,資源有限,選擇了方案一。另外,使用鎖存也起到節(jié)約資源的作用。

二、步進(jìn)電機(jī)控制原理

步進(jìn)電機(jī)是數(shù)字控制電機(jī),它將脈沖信號(hào)轉(zhuǎn)變成角位移,即給一個(gè)脈沖信號(hào),步進(jìn)電機(jī)就轉(zhuǎn)動(dòng)一個(gè)角度,因此非常適合于單片機(jī)控制。步進(jìn)電機(jī)可分為反應(yīng)式步進(jìn)電機(jī)(簡(jiǎn)稱VR)、永磁式步進(jìn)電機(jī)(簡(jiǎn)稱PM)和混合式步進(jìn)電機(jī)(簡(jiǎn)稱HB)。

步進(jìn)電機(jī)區(qū)別于其他控制電機(jī)的最大特點(diǎn)是,它是通過(guò)輸入脈沖信號(hào)來(lái)進(jìn)行控制的,即電機(jī)的總轉(zhuǎn)動(dòng)角度由輸入脈沖數(shù)決定,而電機(jī)的轉(zhuǎn)速由脈沖信號(hào)頻率決定。

步進(jìn)電機(jī)的驅(qū)動(dòng)電路根據(jù)控制信號(hào)工作,控制信號(hào)由單片機(jī)產(chǎn)生。其基本原理作用如下:

(1)控制換相順序

通電換相這一過(guò)程稱為脈沖分配。例如:三相步進(jìn)電機(jī)的三拍工作方式,其各相通電順序?yàn)锳-B-C-D,通電控制脈沖必須嚴(yán)格按照這一順序分別控制A,B,C,D相的通斷。

(2)控制步進(jìn)電機(jī)的轉(zhuǎn)向

如果給定工作方式正序換相通電,步進(jìn)電機(jī)正轉(zhuǎn),如果按反序通電換相,則電機(jī)就反轉(zhuǎn)。

(3)控制步進(jìn)電機(jī)的速度

如果給步進(jìn)電機(jī)發(fā)一個(gè)控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個(gè)脈沖,它會(huì)再轉(zhuǎn)一步。兩個(gè)脈沖的間隔越短,步進(jìn)電機(jī)就轉(zhuǎn)得越快。調(diào)整單片機(jī)發(fā)出的脈沖頻率,就可以對(duì)步進(jìn)電機(jī)進(jìn)行調(diào)速。

三、理論設(shè)計(jì)

綜和以上選取的方案,總的流程如圖3-2所示。

圖3-1

1、步進(jìn)電機(jī)驅(qū)動(dòng)電路

通過(guò)L298N構(gòu)成步進(jìn)電機(jī)的驅(qū)動(dòng)電路,電路圖如圖3-2所示。

通過(guò)單片機(jī)SPCE061A的IOB8~I(xiàn)OB13對(duì)L298N的IN1~I(xiàn)N4口和ENA、ENB口發(fā)送方波脈沖信號(hào),起時(shí)序圖如圖3-3所示。

圖3-2

圖3-3

2、數(shù)碼管顯示電路的設(shè)計(jì)

數(shù)碼管的顯示驅(qū)動(dòng)使用74LS164,通過(guò)SPCE061A的IOB0和IOB1口對(duì)DATA和CLK發(fā)送數(shù)據(jù)。

圖3-4

3、4x4鍵盤電路

在設(shè)計(jì)中,使用了標(biāo)準(zhǔn)的4x4鍵盤,其電路圖如圖3-5所示。單片機(jī)的A口低8位為鍵盤的接口。盡管設(shè)計(jì)要求中只需要4個(gè)鍵對(duì)步進(jìn)電機(jī)的狀態(tài)進(jìn)行控制,但考慮到對(duì)控制功能的擴(kuò)展,我們使用了4x4的鍵盤。

圖3-5

四、程序設(shè)計(jì)

在進(jìn)行程序設(shè)計(jì)的過(guò)程中,主要分為五個(gè)部分:雙機(jī)通訊、語(yǔ)音報(bào)數(shù)、數(shù)字顯示、步進(jìn)電機(jī)驅(qū)動(dòng)、鍵盤;其中雙機(jī)通訊的實(shí)現(xiàn)和語(yǔ)音報(bào)時(shí)比較有特點(diǎn),將其流程簡(jiǎn)要介紹如下,其他部分見附的程序。

1、雙機(jī)通訊

圖4-1

我們?cè)趯?shí)現(xiàn)雙機(jī)通訊的過(guò)程中使用了“三次握手”的方式,這是Intle網(wǎng)中成用的數(shù)據(jù)通訊確認(rèn)協(xié)議,其流程圖如圖4-1所示。

2、語(yǔ)音報(bào)數(shù)

程序設(shè)計(jì)中語(yǔ)音報(bào)數(shù)使用的是SACM-A2000,考慮到程序比較簡(jiǎn)單,首先使用了自動(dòng)報(bào)數(shù)方式,但發(fā)現(xiàn)不能進(jìn)行連續(xù)報(bào)數(shù),于是使用了非自動(dòng)方式,流程圖如圖4-2所示。

圖4-2

五、結(jié)果分析與總結(jié)

應(yīng)該說(shuō)這次課程設(shè)計(jì)還是基本達(dá)到了設(shè)計(jì)的要求,但是也存在著未能解決的問(wèn)題,由于在執(zhí)行語(yǔ)音程序時(shí)對(duì)資源的消耗比較大,在語(yǔ)音報(bào)數(shù)的時(shí)候會(huì)中斷步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào)的輸出,導(dǎo)致電機(jī)停轉(zhuǎn)。為此,我們修改了方案,使用了兩塊單片機(jī),通過(guò)雙機(jī)通訊來(lái)傳遞信號(hào),遺憾的是問(wèn)題仍然沒有得到解決。

這次步進(jìn)電機(jī)的綜合實(shí)驗(yàn)我們學(xué)到了步進(jìn)電機(jī)、數(shù)碼管、4*4鍵盤、語(yǔ)音報(bào)數(shù)和雙機(jī)通訊的使用,更重要的是學(xué)會(huì)了程序出問(wèn)題時(shí)調(diào)試的方法,并養(yǎng)成了Debug的習(xí)慣,學(xué)到了程序出問(wèn)題后怎樣去解決的基本方法。

關(guān)閉窗口
主站蜘蛛池模板: 精品91久久 | 九九九国产 | 国产一级视频在线 | 日本理论片好看理论片 | 亚洲精品一区中文字幕 | 欧美日韩在线电影 | 精品国产一二三区 | 一区二区久久 | 亚洲一区二区三区视频免费观看 | 欧美精品网站 | 在线观看成人小视频 | 国产成人久久 | 日韩精品一区在线 | 色婷婷狠狠 | 日韩电影中文字幕在线观看 | 国产午夜精品久久久久免费视高清 | 精品天堂| 一区福利视频 | 久久99网| 男人天堂网址 | 国产精品久久久久久久久久久久久 | 亚洲www啪成人一区二区 | 精品一二区 | www亚洲精品 | av一区二区三区 | 日韩亚洲一区二区 | 亚洲三级av | 欧美日韩综合 | 久久爱一区| 国产精品午夜电影 | 久久久精品一区二区三区 | 丁香综合 | 91免费观看视频 | 黄免费观看视频 | 成年人黄色小视频 | 成人免费视频在线观看 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 成人国产在线视频 | 九九九久久国产免费 | 不卡一区二区三区四区 | 精品久久精品 |