第5章-單片機匯編指令應(yīng)用實例_第1頁
第5章-單片機匯編指令應(yīng)用實例_第2頁
第5章-單片機匯編指令應(yīng)用實例_第3頁
第5章-單片機匯編指令應(yīng)用實例_第4頁
第5章-單片機匯編指令應(yīng)用實例_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、23本書所使用的單片機硬件開發(fā)平臺的主要電路模塊包括單片機最小系統(tǒng)電路、USB電源電路、串口通信電路、DS18B20數(shù)字溫度傳感器電路、4位7段數(shù)碼管電路、88紅綠雙色點陣電路、無源蜂鳴器電路、2相5線制步進電機驅(qū)動電路、繼電器控制電路、8個獨立鍵盤電路、8個LED流水燈電路、語音與報時(北京時間)電路等。4開發(fā)平臺的實物如圖5-1所示。圖5-1 單片機開發(fā)平臺565.2.1發(fā)光二極管5.2.27段LED數(shù)碼管5.2.3LED點陣應(yīng)用編程 LED最早是指發(fā)光二極管,后來逐漸出現(xiàn)了LED數(shù)碼管、LED點陣、LED顯示屏等,它具有體積小、電壓低、壽命長、環(huán)保等優(yōu)點,在實際生活中應(yīng)用廣泛。7 發(fā)光二

2、極管具有普通二極管的特點,正向偏壓(外加電壓的正極加在P區(qū),負極加在N區(qū))時LED發(fā)光,逆向偏壓(外加電壓的正極加在N區(qū),負極加在P區(qū))時LED不發(fā)光。常見發(fā)光二極管的導(dǎo)通電壓如表5-1所示。發(fā)光二極管導(dǎo)通電壓紅色發(fā)光二極管1.72.5V綠色發(fā)光二極管2.02.4V黃色發(fā)光二極管1.92.4V藍/白色發(fā)光二極管3.03.8V表5-1 發(fā)光二極管導(dǎo)通電壓 正向偏壓時,發(fā)光二極管的特性曲線與其發(fā)光顏色有關(guān)。紅色發(fā)光二極管導(dǎo)通電壓約為1.7V,導(dǎo)通電流約10mA,如圖5-2所示。8圖5-2 LED特性曲線 用單片機的I/O口驅(qū)動發(fā)光二極管時,流經(jīng)發(fā)光二極管的電流需要達到10mA左右,若達不到此電流,

3、則發(fā)光二極管不能正常發(fā)光。如圖5-3所示,圖(a)的連接方式不正確,因為發(fā)光二極管不能導(dǎo)通,自然也無電流通過;圖(b)為正確的連接方式。9圖5-3 LED驅(qū)動電路(a)不適當(dāng)?shù)倪B接 (b)適當(dāng)?shù)倪B接 如圖5-3(b)所示,限流電阻R的計算方法為R=(51.7)V/10mA=330歐姆。若LED工作在非連續(xù)電流狀態(tài)下(如掃描顯示電路),則流過LED的電流可以更大一些。10【例5-1】編寫程序,使LED流水燈完成亮滅閃爍功能,閃爍的時間間隔為1S 。 8個并列的發(fā)光二極管構(gòu)成了LED流水燈。本例通過P2口控制LED流水燈的亮滅,當(dāng)P2口輸出00H時,LED燈全亮,然后延時1秒(延時的作用是為了讓人

4、能夠看清楚效果);當(dāng)P2輸出FFH時,LED燈全滅,再延時1秒。如此循環(huán)執(zhí)行,即可看到流水燈的閃爍效果。 【參考代碼】;*; 程序功能:編寫程序使LED流水燈閃爍,間隔1S; 硬件接線:P2口接LED流水燈;*11【例5-1】編寫程序,使LED流水燈完成亮滅閃爍功能,閃爍的時間間隔為1S 。 ORG 0000H SJMP MAINMAIN: MOV A, #00H MOV P2, A; 讓燈全亮 LCALL DELAY1S; 延時1S MOV A, #0FFH MOV P2, A; 讓燈全滅 LCALL DELAY1S; 延時1S SJMP MAIN12【例5-1】編寫程序,使LED流水燈完成

5、亮滅閃爍功能,閃爍的時間間隔為1S 。 ;*延時1S子函數(shù)*DELAY1S:;誤差0us MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5, #10H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 NOP RET END13【例5-2】編寫程序,使LED流水燈從右向左移動點亮,然后再從左到右移動點亮。 單片機通過P2口控制LED流水燈,當(dāng)P2輸出FEH時,點亮最右側(cè)LED。通過RL指令使點亮的流水燈左移8次,再通過RR指令使點亮的流水燈右移8次,如此循環(huán)執(zhí)行。 【參考代碼】;*; 程序功能:編寫程序讓LED流水燈從右向左移動點亮,

6、然后從左到右依次點亮; 硬件接線:P2口接LED流水燈,低電平點亮;* ORG 0000H SJMP MAIN14【例5-2】編寫程序,使LED流水燈從右向左移動點亮,然后再從左到右移動點亮。MAIN: MOV R0, #8; R0,R1為移動次數(shù) MOV R1, #8 MOV A, #0FEH; 移動初始值;*向左移動函數(shù)*Left: MOV P2, A LCALLDELAY100ms RL A DJNZ R0, Left15【例5-2】編寫程序,使LED流水燈從右向左移動點亮,然后再從左到右移動點亮。 ;*向右移動函數(shù)*Right: RR A MOV P2, A LCALLDELAY100

7、ms DJNZR1, Right SJMPMAIN;*延時100ms子函數(shù)*DELAY100ms:; 誤差0us MOV R7, #13H16【例5-2】編寫程序,使LED流水燈從右向左移動點亮,然后再從左到右移動點亮。 DL1: MOV R6, #14HDL0: MOV R5, #82H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END 7段LED數(shù)碼管是利用7個LED組合而成的顯示裝置,可以顯示數(shù)字09和英文字母AF。LED數(shù)碼管實物圖與LED共陰極、共陽極結(jié)構(gòu)如圖5-4所示。17(a)LED數(shù)碼管實物 (b)LED共陰共陽結(jié)構(gòu)圖5-4 LED數(shù)碼管

8、實物與LED共陰共陽結(jié)構(gòu)18 共陰極、共陽極數(shù)碼管的驅(qū)動信號如表5-2所示。以共陰極的7段數(shù)碼管為例,如果要在數(shù)碼管上顯示數(shù)字0,那么應(yīng)該給數(shù)碼管的驅(qū)動信號為0 x3f。十進制數(shù)(dp)gfedcba16進制數(shù)共陽極共陰極共陽極共陰極01100 00000011 11110 xc00 x3f11111 10010000 01100 xf90 x0621010 01000101 10110 xa40 x5b31011 00000100 11110 xb00 x4f41001 10010110 01100 x990 x6651001 00100110 11010 x920 x6d61000 001

9、10011 11000 x830 x3c71111 10000000 01110 xf80 x0781000 00000111 11110 x800 x7f91001 10000110 01110 x980 x67表5-2 共陰極共陽極數(shù)碼管驅(qū)動信號對照表19【例5-3】編寫程序,使數(shù)碼管循環(huán)顯示數(shù)字09。 本例需要開辟10個字節(jié)的空間用以存放09這10個數(shù)的數(shù)碼管驅(qū)動信號。在循環(huán)體中,從表頭開始,逐個訪問表格中的內(nèi)容,并通過P2口連接的數(shù)碼管將數(shù)據(jù)顯示出來。如此循環(huán)執(zhí)行即可在數(shù)碼管上顯示出數(shù)字09。【參考代碼】;*; 程序功能:數(shù)碼管循環(huán)顯示數(shù)字09; 硬件接線:P0口控制位選,P2口控制段

10、選;*20【例5-3】編寫程序,使數(shù)碼管循環(huán)顯示數(shù)字09。 ORG 0000H SJMP MAINMAIN: MOV A, #08H MOV P0, A ; 讓4位數(shù)碼管的最低位(最右邊位)工作 MOV A, #00H MOV R0, #10 ; 顯示10個數(shù)據(jù) MOV R1, #0 MOV DPTR, #DIGIT ; 指向表頭21【例5-3】編寫程序,使數(shù)碼管循環(huán)顯示數(shù)字09。 LOOP: MOV A, R1 MOVC A, A+DPTR; 查找數(shù)據(jù)表中的數(shù)據(jù) MOV P2, A INC R1 ; 更改數(shù)據(jù)表中下一個數(shù)據(jù) LCALL DELAY500MS DJNZ R0, LOOP; 顯示

11、完數(shù)據(jù)表中的10個數(shù)據(jù)后從頭開始顯示 SJMP MAIN DIGIT: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H; 共陽 0 1 2 3 4 5 6 7 8 922【例5-3】編寫程序,使數(shù)碼管循環(huán)顯示數(shù)字09。;*延時500ms函數(shù)*DELAY500MS:;誤差0us MOV R7, #17HDL1: MOV R6, #98HDL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END LED點陣廣泛應(yīng)用于汽車報站器、廣告屏等場合。88 LED點陣有單色點陣(16引

12、腳)與雙色點陣(24引腳)之分,單色點陣如圖5-5所示。23圖5-5 單色點陣實物與引腳排列241單色LED點陣單色點陣屏有兩種類型,一種為共陰極點陣屏,另一類為共陽極點陣屏。兩種類型點陣屏的內(nèi)部電路如圖5-6所示。(a)共陰極點陣屏 (b)共陽極點陣屏圖5-6 單色點陣內(nèi)部電路結(jié)構(gòu)25 共陰極點陣屏中,每一行發(fā)光二極管的陰極連接在一起的,每一列發(fā)光二極管的陽極連接在一起。如果需要點亮某個二極管,只需要設(shè)置該二極管的列引腳為高電平、行引腳為低電平即可。共陽極點陣屏的使用方法與共陰極類似,這里不再贅述。2雙色LED點陣如圖5-7所示,雙色點陣屏有24個引腳,帶圓圈的數(shù)字表示引腳在點陣底部的排列順

13、序。圖中的黑色三角形代表紅色二極管,白色三角形代表綠色二極管。如果想要點亮點陣上的某個點,需要設(shè)置該點的行引腳為高電平,列引腳為低電平。圖5-7 雙色點陣內(nèi)部結(jié)構(gòu)26 點陣的底部引腳排列如圖5-8(a)所示,引腳共分為兩列,每列均包括綠色插針(GR*)、紅色插針(RE*)和行驅(qū)動插針(DP*),且3種插針交替出現(xiàn)。這種引腳排列不利于單片機進行控制,設(shè)計時可將他們分類引出,如圖5-8(b)和(c)所示。(a)LED點陣底部引腳(b)驅(qū)動電路圖5-8 LED雙色點陣驅(qū)動電路與LED點陣底部引腳接線(a)(b)27 圖5-8(b)中,單片機通過驅(qū)動芯片74HC573控制點陣的驅(qū)動插針,單片機的I/O

14、口可通過JP1直接與驅(qū)動芯片的數(shù)據(jù)輸入引腳D0D7相連接;驅(qū)動芯片的數(shù)據(jù)輸出引腳Q0Q7通過限流電阻與點陣的驅(qū)動插針相連接。由于單片機的IO口不足以驅(qū)動點陣屏,因而需要通過74HC573先將信號進行鎖存,再完成對驅(qū)動插針的控制。 圖5-8(c)為分開引出的兩排引腳,一排為綠色顯示控制引腳,另一排為紅色顯示控制引腳。(c)紅綠引腳分開后的LED引腳圖5-8 LED雙色點陣驅(qū)動電路與LED點陣底部引腳接線(c)283雙色LED點陣應(yīng)用編程雙色LED點陣在系統(tǒng)中的引腳如圖5-9所示,左邊兩列為紅綠接線引腳,右邊一列引腳為行驅(qū)動接線引腳。圖5-9 LED點陣電路紅綠兩列引腳行驅(qū)動接線引腳29【例5-4

15、】編寫程序,從上到下依次點亮LED點陣每一行上的點。 利用P2口接行線,P0口接列線,點亮某一行上的點,只需要設(shè)置行電平為高電平,列電平為低電平即可。 【參考代碼】;*; 程序功能:從第一行開始,依次點亮LED點陣中的每一行;*ORG 0000HAJMP MAINMAIN:MOV A, #00H MOV P0, A; 讓8列均得到0電平MOV A, #01H 30【例5-4】編寫程序,從上到下依次點亮LED點陣每一行上的點。LOOP:MOV P2, A; 點亮第一行LCALL DELAY; 延時0.1SRL A; 從第1行依次移動到第8行 SJMP LOOP;*延時0.1S子函數(shù)*DELAY:

16、 MOV R7, #13HDL1: MOV R6, #14H31【例5-4】編寫程序,從上到下依次點亮LED點陣每一行上的點。DL0: MOV R5, #82H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END32【例5-5】編寫程序,使雙色LED點陣上顯示漢字“十”(采用移動掃描法) 。 本例使用P2口接行線18,P0口接列線18。首先設(shè)置列的移動次數(shù)為8,點亮第1列中間兩行上的兩個點,然后使點亮的兩個點從第1列移動至第8列,利用視覺暫留可使人感覺到這些點是一直被點亮的。按照同樣的方法,點亮第一行中間的兩個點,然后使其移動至最后一行。采用循環(huán)的方式不斷

17、點亮每行、每列中間的兩個點,即可達到顯示“十”字的效果。 【參考代碼】;*; 程序功能:在LED點陣上顯示漢字“十”;*ORG 0000HAJMP MAIN33【例5-5】編寫程序,使雙色LED點陣上顯示漢字“十”(采用移動掃描法) 。MAIN: ;*顯示2行效果* MOV R0, #8 ; 設(shè)置8列的移動次數(shù)MOV A, #18H MOV P2, A ; 點亮第1列中間兩行的2個點 MOV A, #0FEHLOOP1:MOV P0, A ; 讓這兩個點從左往右移動RL ALCALL DELAY; 延時1ms,這個時間間隔人眼看不出燈在移動 ; 給人造成中間兩行常亮的視覺暫留DJNZ R0,

18、LOOP134【例5-5】編寫程序,使雙色LED點陣上顯示漢字“十”(采用移動掃描法) 。;*顯示2列效果*MOV R1, #8; 設(shè)置8行當(dāng)移動次數(shù)MOV A, #0E7HMOV P0, A; 點亮第1行中間兩列的2個點MOV A, #01H LOOP2:MOV P2, ARL A; 讓中間兩列的兩個點從上往下移動LCALL DELAY; 延時1ms,效果類似上段程序 DJNZ R1, LOOP2SJMP MAIN35【例5-5】編寫程序,使雙色LED點陣上顯示漢字“十”(采用移動掃描法) 。;*延時0.1S函數(shù)*DELAY: ; 誤差0us MOV R7, #01HDL1: MOV R6,

19、 #8EHDL0: MOV R5, #02H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END36【例5-6】編寫程序,使LED點陣上顯示數(shù)字0和1(采用查表掃描法) 。 本例采用P2口接行線18,P0口接列線18。首先查詢TAB表格選中點陣的第一行,再查詢DIGIT表選中第一列,顯示出數(shù)字0在第一行上的相應(yīng)位。接下來利用循環(huán)結(jié)構(gòu),依次顯示數(shù)字0在第2行、第3行第8行上需要點亮的點。 數(shù)字0顯示完畢后,繼續(xù)查詢TAB表并選中第1行,再查詢DIGIT表中的第9個數(shù)據(jù)(此時R2=8),此時可以顯示出數(shù)字1在第一行上的相應(yīng)位,接下來仍然利用循環(huán)結(jié)構(gòu),依次顯示數(shù)

20、字1在第2行、第3行第8行上需要點亮的點。 如此循環(huán)執(zhí)行上述過程,即可在點陣上不斷顯示出數(shù)字0和1。 【參考代碼】37【例5-6】編寫程序,使LED點陣上顯示數(shù)字0和1(采用查表掃描法) 。;*; 程序功能:編寫程序讓LED點陣上顯示數(shù)字“0”和數(shù)字“1”(查表法);*ORG 0000HSJMP MAINMAIN:MOV R0, #8 ; 一行8個數(shù)據(jù)MOV R1, #0; 行計數(shù)MOV R2, #0; 計數(shù)數(shù)據(jù)查詢的位置MOV R4, #52MOV 30H, #00MOV 31H, #0038【例5-6】編寫程序,使LED點陣上顯示數(shù)字0和1(采用查表掃描法) 。;*行驅(qū)動線*LOOP1:M

21、OV A, R1 MOV DPTR, #TAB;指向行驅(qū)動線表頭MOVC A, A+DPTRMOV P2, AMOV 30H, P2INC R1;*數(shù)據(jù)查詢函數(shù)*MOV DPTR, #DIGITMOV A, R2MOVC A, A+DPTR39【例5-6】編寫程序,使LED點陣上顯示數(shù)字0和1(采用查表掃描法) 。MOV P0, AMOV 31H, P0INC R2LCALL DELAY312DJNZ R0, LOOP1;*AAA:MOV R0, #8; 查完了一行的8個數(shù)據(jù),查下一行的8個數(shù)據(jù)MOV R1, #0; 賦初始值以準備下一個數(shù)據(jù)的顯示DJNZ R4, LOOP1 ; R4控制第一

22、個數(shù)據(jù)顯示與第二個數(shù)據(jù)顯示時間間隔SJMP MAIN;*數(shù)據(jù)表*40【例5-6】編寫程序,使LED點陣上顯示數(shù)字0和1(采用查表掃描法) 。TAB:DB 01H,02H,04H,08H,10H,20H,40H,80HDIGIT:DB 0E7H,0DBH,0DBH,0DBH,0DBH,0E7H,0FFH,0FFH; 0DB 0E7H,0C7H,0E7H,0E7H,0E7H,0E7H,0C3H,0C3H; 1;*2mS延時子函數(shù)*DELAY312: MOVR6, #03HDL0: MOVR5, #32H DJNZR5, $ DJNZR6, DL0 RET41【例5-6】編寫程序,使LED點陣上顯示

23、數(shù)字0和1(采用查表掃描法) 。;*延時10ms子函數(shù)*DELAY10: MOVR7, #0A7HDL1: MOVR6, #0ABHDL2: MOVR5, #10H DJNZ R5, $ DJNZ R6, DL2 DJNZ R7, DL1 NOP RET END42 電磁繼電器是用一個回路(一般是小電流回路)去控制另外一個回路(一般是大電流回路)的通斷,小電流回路一般是由微控制器來控制,大電流回路通常是用電設(shè)備電路。在控制過程中,兩個回路一般是隔離的。 當(dāng)?shù)蛪壕€圈中有電流經(jīng)過時,電磁鐵產(chǎn)生磁性并將銜鐵吸引下來,這樣使得大電流回路中的其中一路高壓電路接通;當(dāng)?shù)蛪壕€圈中沒有電流時,電磁鐵不產(chǎn)生磁性

24、,此時,繼電器左端的彈簧將銜鐵拉下,使繼電器銜鐵吸合到大電流回路的另一端,接通另一路高壓電路。1繼電器工作原理簡介43 繼電器是利用電磁鐵控制電路通斷的開關(guān),它在電路中起到自動調(diào)節(jié)、安全保護、轉(zhuǎn)換電路等作用。44 繼電器的實物如圖5-10所示。繼電器原理如圖5-11所示。銜鐵線圈彈簧高壓側(cè)電路圖5-10 繼電器實物圖5-11 電磁繼電器原理圖45 單路控制的繼電器內(nèi)部結(jié)構(gòu)如圖5-12所示,在引腳1和3之間加上電流時,繼電器銜鐵將會從引腳4斷開,并移至引腳5。兩路控制的繼電器如圖5-13所示,當(dāng)在引腳7和引腳8之間加上電流時,內(nèi)部兩路開關(guān)將同時從引腳2和引腳6斷開,并合至引腳3和引腳5上。銜鐵圖

25、5-12 1P繼電器內(nèi)部結(jié)構(gòu)圖 圖5-13 2P繼電器內(nèi)部結(jié)構(gòu)圖2開發(fā)板繼電器接線圖46 開發(fā)板上的繼電器連線如圖5-14所示,將J8的1和2用短路帽連接起來,PY14接地,這樣就構(gòu)成了一個回路。通電后,繼電器的引腳從引腳4移至引腳5,將用電設(shè)備(如LED)連接到引腳5所在的回路中,就可以使其工作了。圖5-14 開發(fā)板繼電器原理圖47【例5-7】編寫程序,使用繼電器控制一個LED燈的閃爍(間隔1s) 。 將引腳P1.4接到開發(fā)板上PY14,當(dāng)P1.4輸出低電平時,繼電器吸合,LED燈被點亮;當(dāng)P1.4輸出高電平時,繼電器釋放,LED燈熄滅。 【參考代碼】;*; 程序功能:編寫程序,利用繼電器控

26、制一個LED流水燈的閃爍 繼電器接線端子的一個孔接到LED燈,另一個孔接到VCC;* ORG 0000H SJMP MAIN48【例5-7】編寫程序,使用繼電器控制一個LED燈的閃爍(間隔1s) 。MAIN: MOV A, #00H MOV P1, A; 讓P1.4引腳為低電平0,繼電器吸合 LCALL DELAY1S; 延時1s MOV A, #0FFH MOV P1, A; 讓P1.4引腳為高電平1,繼電器釋放 LCALL DELAY1S; 延時1s SJMP MAIN;*延時1s子函數(shù)*DELAY1S: MOV R7, #0A7H49【例5-7】編寫程序,使用繼電器控制一個LED燈的閃爍

27、(間隔1s) 。DL1: MOV R6, #0ABHDL0: MOV R5, #10H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 NOP RET END50 步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制電機,是現(xiàn)代數(shù)字程序控制系統(tǒng)中的主要執(zhí)行元件,其應(yīng)用極為廣泛。步進電機由定子和轉(zhuǎn)子兩部分組成,轉(zhuǎn)子為永磁體。電機工作時,當(dāng)電流流過定子繞組時,定子繞組產(chǎn)生一個矢量磁場,該磁場帶動轉(zhuǎn)子旋轉(zhuǎn)一定的角度,使得轉(zhuǎn)子的磁場方向與定子的磁場方向保持一致。這樣,每輸入一個電脈沖,定子的矢量磁場就會旋轉(zhuǎn)一個固定的角度(該角度稱為“步距角”),轉(zhuǎn)子也會隨之旋轉(zhuǎn)一個固定的角度

28、,電機就可以前進一步。515.4.1步進電機種類5.4.2步進電機的基本工作原理5.4.3步進電機的驅(qū)動方式52目前,較為常用的步進電機包括永磁式步進電機(PM)、反應(yīng)式步進電機(VR)和混合式步進電機(HB)等。(1)永磁式步進電機此種電機轉(zhuǎn)矩和體積較小,步距角一般為7.5度或15度。(3)混合式步進電機此種步進電機綜合了永磁式電機和反應(yīng)式電機的優(yōu)點,因而其應(yīng)用也最為廣泛。根據(jù)內(nèi)部線圈組數(shù)的不同,此種電機有2相(內(nèi)部有2組線圈)和5相(內(nèi)部有5組線圈)之分,兩相電機的步距角一般為1.8度,而5相電機的步距角一般為0.72度。(2)反應(yīng)式步進電機此種電機可實現(xiàn)大轉(zhuǎn)矩輸出,步距角一般為1.5度,

29、但噪聲和振動都很大,可靠性難以保證。53步進電機的實物如圖5-15所示。54圖5-15 步進電機實物圖55 在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響。電機轉(zhuǎn)動的角度與輸入的脈沖數(shù)成正比,其轉(zhuǎn)速與輸入的脈沖頻率成正比。如果改變繞組通電的順序,電機就會反轉(zhuǎn)。因此可以通過控制脈沖數(shù)量、頻率及電機各相繞組的通電順序來控制步進電機的轉(zhuǎn)動。 步進電機的相數(shù)是指電機內(nèi)部的線圈組數(shù),如4相就是有ABCD 4組線圈。這里以4相步進電機為例說明電機的工作原理,4相電機內(nèi)部結(jié)構(gòu)如圖5-16所示。圖5-16 4相步進電機內(nèi)部結(jié)構(gòu)定子56 定子上有4組相對的磁極ABC

30、D,每對磁極上纏有同一繞組線圈,形成一個相。定子和轉(zhuǎn)子上分布著大小、間距相同的多個小齒。當(dāng)步進電機某一相通電形成磁場后,在電磁力的作用下,轉(zhuǎn)子被強行推動到最大磁導(dǎo)率(或最小磁阻)的位置。 若開關(guān)SB接通電源,SA,SC和SD斷開,B相磁極和轉(zhuǎn)子0、3號齒對齊。此時,轉(zhuǎn)子的1、4號齒就和C、D相繞組磁極產(chǎn)生錯齒,2、5號齒就和A、D相繞組磁極產(chǎn)生錯齒,我們把這個狀態(tài)作為初始狀態(tài)。 當(dāng)開關(guān)SC接通電源,SA,SB和SD斷開時,由于C相繞組和1、4號齒之間的磁力線相互作用,使得1、4號齒轉(zhuǎn)動一個角度并和C相繞組的磁極對齊。此時,0、3號齒和A、B相繞組產(chǎn)生錯齒,2、5號齒和A、D相繞組產(chǎn)生錯齒。 同

31、理,SD通電而SA,SB和SC不通電時,2、5號齒會轉(zhuǎn)動一個角度與D相磁極對齊。依此類推,ABCD 4相繞組輪流通電時,轉(zhuǎn)子會沿著A,B,C,D的方向連續(xù)轉(zhuǎn)動。57 步進電機是一種按步走動的電機,其轉(zhuǎn)子與定子的齒數(shù),決定了每步的間距。若轉(zhuǎn)子上有N個齒,則其齒間距可按如下方法求解。 轉(zhuǎn)子齒間距=360/N 步距角=轉(zhuǎn)子齒間距/(2相數(shù))=/2P 例如,60齒2相式步進電機的齒間距與步距角計算如下: =360/60=6 =6/(22)=1.5 步進電機還可以用步數(shù)來表示,如300步的步進電機,其步距角為1.2。 步進電機的旋轉(zhuǎn)是依靠定子線圈勵磁(通電并產(chǎn)生磁場)后將鄰近轉(zhuǎn)子上的相異磁極吸引過來實現(xiàn)

32、的,線圈排列的順序與勵磁信號決定了電機的轉(zhuǎn)動方式。 步進電機的勵磁方式有1相驅(qū)動(在每個瞬間只有一個線圈導(dǎo)通)、2相驅(qū)動(在每個瞬間有兩個線圈同時導(dǎo)通)和1-2相驅(qū)動(線圈交替導(dǎo)通),其驅(qū)動方式如圖5-17所示。圖5-17 步進電機的驅(qū)動方式5811相驅(qū)動 1相驅(qū)動是指在任一時間,只有一組線圈被勵磁。此種方式產(chǎn)生的力矩較小,其勵磁方式簡單,驅(qū)動信號如下: (1)電機的公共端com接GND時, 電機正轉(zhuǎn)的驅(qū)動信號序列為10000100001000011000, 反轉(zhuǎn)的驅(qū)動信號序列為10000001001001001000 (2)電機的公共端com接VCC時, 電機正轉(zhuǎn)的驅(qū)動信號序列為:11101

33、101101101111110, 反轉(zhuǎn)的驅(qū)動信號序列為111001111011110111105960【例5-8】編寫一個1相驅(qū)動的程序。 1相驅(qū)動時,每次只有一路信號為高電平,其他3路信號為低電平。將驅(qū)動信號序列放置在數(shù)組QUDONG中,先從數(shù)組中取出第一個數(shù)據(jù)并輸出,這樣電機就開始轉(zhuǎn)動,接下來再依次取出數(shù)組中的各個驅(qū)動信號數(shù)據(jù)并輸出。這樣不斷地循環(huán)輸出4個驅(qū)動信號,電機就能夠不停地轉(zhuǎn)動了。 【參考代碼】;*; 程序功能:使步進電機1相驅(qū)動正轉(zhuǎn); 硬件接線:P1口接電機驅(qū)動插針P1_0P1_5;*61【例5-8】編寫一個1相驅(qū)動的程序。 ORG0000HSJMPMAINMAIN: MOVR0

34、, #4; 兩相驅(qū)動只有4個驅(qū)動數(shù)據(jù)MOVR1, #00HMOVDPTR, #QUDONG; 驅(qū)動數(shù)組LOOP:MOVA, R1MOVCA, A+DPTR62【例5-8】編寫一個1相驅(qū)動的程序。 MOVP1, A;取驅(qū)動數(shù)據(jù)讓電機轉(zhuǎn)動INCR1LCALLDELAY3MS;延時,主要是需要一點時間勵磁DJNZR0, LOOPSJMPMAINQUDONG:DB 0FEH, 0FDH, 0FBH, 0F7H;1相驅(qū)動正轉(zhuǎn),1相驅(qū)動力不足,需要將勵磁時間增長到3ms比較合適63【例5-8】編寫一個1相驅(qū)動的程序。;*延時3ms子函數(shù)*DELAY3MS: MOVR6, #6FHDL0: MOVR5, #

35、0CH DJNZR5, $ DJNZR6, DL0RETEND22相驅(qū)動 2相驅(qū)動是指任何時候都有兩組線圈被勵磁,其他線圈在休息(2相線圈以上電機)。驅(qū)動信號如下: (1)電機公共端com接GND時, 電機正轉(zhuǎn)的驅(qū)動信號序列為11000110001110011100, 反轉(zhuǎn)的驅(qū)動信號序列為11001001001101101100 (2)電機公共端com接VCC時, 電機正轉(zhuǎn)的驅(qū)動信號序列為11001001001101101100, 反轉(zhuǎn)的驅(qū)動信號序列為110001100011100111006465【例5-9】編寫一個2相驅(qū)動的程序。 電機的2相驅(qū)動是指每次勵磁時有兩路信號為高電平,另外兩路信

36、號為低電平。將2相正傳驅(qū)動信號放置在數(shù)組QUDONG中,依次取出每個數(shù)據(jù)并輸出,如此循環(huán)可使電機不停地轉(zhuǎn)動。 【參考代碼】;*; 程序功能:步進電機2相驅(qū)動正轉(zhuǎn); 硬件接線:P1口接電機驅(qū)動插針P1_0P1_5;*66【例5-9】編寫一個2相驅(qū)動的程序。 ORG0000HSJMPMAINMAIN: MOVR0, #4; 2相驅(qū)動只有4個驅(qū)動數(shù)據(jù)MOVR1, #00HMOVDPTR, #QUDONG; 驅(qū)動數(shù)組LOOP:MOVA, R1 MOVCA, A+DPTR67【例5-9】編寫一個2相驅(qū)動的程序。 MOVP1, A; 取驅(qū)動數(shù)據(jù)讓電機轉(zhuǎn)動INCR1LCALLDELAY2MS; 延時,主要是需要一點時間勵磁DJNZR0, L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論