![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/56625617-321c-43b5-8233-7f5fc5cbef8a/56625617-321c-43b5-8233-7f5fc5cbef8apic.jpg)
![畢業(yè)論文--利用單片機at89c51控制步進電機_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/56625617-321c-43b5-8233-7f5fc5cbef8a/56625617-321c-43b5-8233-7f5fc5cbef8a1.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計</b></p><p> 題目 利用單片機AT89C51控制步進電機</p><p> 所 在 系 機電與信息工程學院 </p><p> 專業(yè)班級 10應用電子技術班</p><p> 利用單片機AT89C51控制步進電機</p><p&
2、gt; 摘要 步進電動機是一種將電脈沖信號轉換成角位移或線位移的精密執(zhí)行元件,由于步進電機具有控制方便、體積小等特點,所以在數(shù)控系統(tǒng)、自動生產(chǎn)線、自動化儀表、繪圖機和計算機外圍設備中得到廣泛應用。微電子學的迅速發(fā)展和微型計算機的普及與應用,為步進電動機的應用開辟了廣闊前景,使得以往用硬件電路構成的龐大復雜的控制器得以用軟件實現(xiàn),既降低了硬件成本又提高了控制的靈活性,可靠性及多功能性。在當今社會的各個領域步進電機無處不在,應用領域涉及
3、機器人、工業(yè)電子自動化設備、醫(yī)療器件、廣告器材、舞臺燈光設備、印刷設備、計算機外部應用設備等等。因此,設計出高精確度、實時監(jiān)控、語音提示的步進電機具有重要的現(xiàn)實意義和實用價值。</p><p> 本文介紹了單片機控制步進電機的系統(tǒng)。步進電機是機電控制中一種常用的執(zhí)行機構,其原理是通過對它每相線圈中的電流和順序切換來使電機作步進式旋轉。本文先介紹了混合式步進電機的結構和工作原理,分析了細分驅動對于改善步進電機運行
4、性能的作用,設計主要采用控制電路主要由AT89C51單片機、晶振電路、地址鎖存器、譯碼器、數(shù)碼管顯示電路組成,單片機是控制系統(tǒng)的核心。文中對整個系統(tǒng)的架構及硬件電路和驅動軟件的實現(xiàn)都做了詳細的介紹。</p><p> 關鍵詞 AT89C51;步進電機;正反轉</p><p><b> 目 錄</b></p><p> 第1章 單片機控
5、制系統(tǒng)概述3</p><p> 1.1單片機系統(tǒng)概述3</p><p> 1.2 AT89C51單片機概述3</p><p> 第2章 步進電機概述6</p><p> 2.1 步進電機的基本介紹6</p><p> 2.2 步進電機的特點及種類7</p><p> 2.
6、3 步進電機的選擇8</p><p> 第3章 單片機編程軟件概述8</p><p> 3.1 Keil軟件簡介8</p><p> 3.2 Keil工程項目建立10</p><p> 3.3 C語言程序代碼10</p><p> 第4章 硬件電路設計17</p><p>
7、 4.1電路設計構思17</p><p> 4.2 硬件電路設計18</p><p><b> 結論19</b></p><p><b> 致謝20</b></p><p><b> 參考文獻20</b></p><p> 第1章
8、單片機控制系統(tǒng)概述</p><p> 1.1單片機系統(tǒng)概述</p><p> 隨著材料科學、工藝技術、計算機技術的發(fā)展與進步,電路系統(tǒng)向著集成度極高的方向發(fā)展。CPU的生產(chǎn)制造技術,也朝著綜合性、技術性、實用性發(fā)展。如CPU的運算位數(shù)從4位、8位 ……到32位機的發(fā)展,運算速度從8 MHz、32 MHz……到1.6 GHz??梢哉f是日新月異的發(fā)展著。其中單片機在控制系統(tǒng)中的應用是越來越
9、普遍了。單片機控制系統(tǒng)是以單片機(CPU)為核心部件,擴展一些外部接口和設備,組成單片機工業(yè)控制機,主要用于工業(yè)過程控制。要進行單片機系統(tǒng)設計首先必須具有一定的硬件基礎知識;其次,需要具有一定的軟件設計能力,能夠根據(jù)系統(tǒng)的要求,靈活地設計出所需要的程序;第三,具有綜合運用知識的能力。最后,還必須掌握生產(chǎn)過程的工藝性能及被測參數(shù)的測量方法,以及被控對象的動、靜態(tài)特性,有時甚至要求給出被控對象的數(shù)學模型。</p><p&
10、gt; 1.2 AT89C51單片機概述</p><p> AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機,片內含4K bytes的可反復擦寫的只讀程序存儲器PEROM和128bytes的隨機存取數(shù)據(jù)存儲器,器件采用公司的高密度,非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處器和FLASH存儲單元,功能強大。此單片機可為您提供許多高性價比的場合。</
11、p><p> AT89C51提供以下標準功能:4K字節(jié)FLASH閃速存儲器,128字節(jié)內部RAM,32個I/O口線,兩個16位定時/計數(shù)器,一個向量兩級中斷結構,一個全雙工串行通訊口,內置一個精密比較器,片內振蕩器及時鐘電路,同時AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的工作模式,空閑方式停止CPU的工作,但允許RAM,定時計數(shù)器,串行通信及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但振蕩器
12、停止工作,并禁止其它所有部件工作直到下一個硬件復位。 </p><p> MCS-51是標準的40腳雙列直插式集成電路芯片,引腳排列請參見圖1.1</p><p> 圖1 AT89C51引腳圖</p><p> VCC:電源電壓; GND:地; P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能吸收電流的方式驅
13、動8個TTL邏輯門電路,對端口寫1可作為高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內部上拉電阻。 在FLASH編程時,P0口接受指令字節(jié),而在程序效驗時,輸出指令字節(jié),效驗時,要求外接上拉電阻。 P1 口:P1口是一個帶有內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動 (吸收或輸出電流)4個TTL邏輯門電路。對端口寫1,通過內部的上拉電阻把端口拉到高電平,此
14、時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流。 FLASH編程和程序效驗期間,P1接收低8位地址。</p><p> P2口:P2口是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動 (吸收或輸出電流)4個TTL邏輯們電路。對端口寫1,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉底時會輸
15、出一個電流。 在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI)時,P2口線上的內容(也即特殊功能寄存器(SFR)區(qū)中R2寄存器的內容),在整個訪問期間不改變。 FLASH編程或效驗時,P2亦接收高位地址和其它控制信號。</p><p> P3口:P3口是一個帶有內部上拉電阻的8位雙向I/O口,P
16、3的輸出緩沖級可驅動 (吸收或輸出電流)4個TTL邏輯們電路。對端口寫1,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流。</p><p> P3口除了作為一般的I/O口線外,更重要的用途是他的第二個功能,如下表所示:</p><p> P3口還接收一些用于FLASH閃速存儲器編程和程序效驗的控制信號。
17、RST:復位輸入。其引腳一旦變成兩個機器周期以上的高電平,所有的I/O口都將復位到1狀態(tài),當振蕩器正在工作時,持續(xù)兩個機器周期以上高電平便可完成復位,每個機器周期為12個振蕩時鐘周期。</p><p><b> 圖2時鐘電路</b></p><p> 單片機的時鐘信號用來提供單片機片內各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內部振蕩和外部振蕩。MCS
18、-51單片機內部有一個用于構成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實際使用中常采用這種方式,如圖5-3所示在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構成了內部振蕩方式,片內高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構成一個自激振蕩器并產(chǎn)生振蕩時鐘脈沖。圖3-3中外接晶體以及電容C2和C1構成并聯(lián)諧振電路,它們起穩(wěn)
19、定振蕩頻率、快速起振的作用,其值均為30P左右,晶振頻率選12MHz。</p><p> 為了初始化單片機內部的某些特殊功能寄存器,必須采用復位的方式,復位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機的復位是靠外電路來實現(xiàn)的,在正常運行情況下,只要RST引腳上出現(xiàn)兩個機器周期時間以上的高電平,要保證單片機可靠地復位,接個電容就是為了這個時間,即可引起系統(tǒng)復位。但如果RST引腳上持
20、續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài)。復位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為FFH,堆棧指針SP置為07H, SBUF內置為不定值,其余的寄存器全部清0,內部RAM的狀態(tài)不受復位的影響,在系統(tǒng)上電時RAM的內容是不定的。復位操作有兩種情況,即上電復位和手動(開關)復位。本系統(tǒng)采用上電復位方式。</p><p><b> 圖3 復位電路</b></p><p>
21、; 第2章 步進電機概述</p><p> 2.1 步進電機的基本介紹</p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步
22、進電機來控制變的非常的簡單。</p><p><b> 圖4 步進電機</b></p><p> 雖然步進電機已被廣泛地應用,但步進電機并不能像普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅動電路等組成控制系統(tǒng)方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業(yè)知識。</p><p> 2.
23、2 步進電機的特點及種類</p><p> 步進電機有幾個顯著特點:</p><p> 1、步進電機可以直接接受數(shù)字信號,而無需模/數(shù)變換;</p><p> 2、步進電機具有快速啟/??刂颇芰Γ稍谒查g實現(xiàn)啟動和停止;</p><p> 3、步進電機具有高精度的特點,步距角在0.36~90度之間;</p><p&
24、gt;<b> 4、定位準確;</b></p><p> 步進電機在構造上有三種主要類型:</p><p> 1、反應式步進電機定子上有繞組、轉子由軟磁材料組成。結構簡單、成本低、步距角小,可達1.2°、但動態(tài)性能差、效率低、發(fā)熱大,可靠性難保證。</p><p> 2、永磁式步進電機永磁式步進電機的轉子用永磁材料制成,轉子的
25、極數(shù)與定子的極數(shù)相同。其特點是動態(tài)性能好、輸出力矩大,但這種電機精度差,步矩角大(一般為7.5°或15°)。</p><p> 3、混合式步進電機混合式步進電機綜合了反應式和永磁式的優(yōu)點,其定子上有多相繞組、轉子上采用永磁材料,轉子和定子上均有多個小齒以提高步矩精度。其特點是輸出力矩大、動態(tài)性能好,步距角小,但結構復雜、成本相對較高。</p><p> 選擇什么種類
26、的步進電機取決于我們設計電路的最終目的,如果是出于教學目的或者實驗器材,我們可以選擇成本較低的“永磁式步進電機”,但如果是產(chǎn)品開發(fā)這一類的用途,我們則可以選擇性能較高的“混合式步進電機”。</p><p> 2.3 步進電機的選擇</p><p> 由于本系統(tǒng)是基于單片機的步進電機系統(tǒng),實際上是設計步進電機的驅動電路,而設計步進電機的驅動電路有一個必須遵循的原則:先選擇步進電機后進行驅
27、動電路設計。所以在此先介紹步進電機的選擇,而這個問題的又分為步進電機在理論上的選用以及理論聯(lián)系實際對步進電機的選用。</p><p> 步進電機作為本系統(tǒng)的主要組成部件,它的參數(shù)選取以及電機的性能指標直接影響到系統(tǒng)控制精度及運行可靠性。步進電機和一般直流電機不同,它的性能指標與驅動電源及測試條件關系很大。同樣一個步進電機,當驅動電源或測試方法改變了,其性能會千差萬別。不同廠家制造的步進電機,只有在相同的控制電源
28、以及測試條件下進行比較才有意義。因此只有對步進電機的參數(shù)和特性有比較深刻的了解,才會更好地選用和使用步進電機。</p><p> 第3章 單片機編程軟件概述</p><p> 3.1 Keil軟件簡介</p><p> Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可
29、維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。</p><p> Keil C51單片機軟件開發(fā)系統(tǒng)的整體結構C51工具包的整體結構,如圖3.1所示,其中uVision與Ishell分別是C
30、51 for Windows和for DOS的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE 本身或其它編輯器編輯C 或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源
31、代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM 中。</p><p> 3.2 Keil工程項目建立</p><p> Keil是目前進行51單片機開發(fā)最常用的編譯軟件。關于Keil的使用,有很多的資料介紹,這里只介紹其整個編譯過程,在最短時間內開始使用Easy 51DP-2開發(fā)板。對于Keil更詳細的介紹,可以參考一些專門書籍資料。在Keil里
32、,每一個完整的程序,都是以一個工程的形式建立的。一個工程里可以有一個或多個*.c文件和*.h文件,但只可以有一個main()函數(shù)。一般的做法是將包含main()函數(shù)的C文件加入到工程中,其他文件以#include頭文件的形式加到這個C文件里。這樣,在編譯的時候,其他的文件會被自動的導入到工程里來。</p><p> 3.3 C語言程序代碼</p><p> 下面是此次設計電路所使用的C
33、語言程序。</p><p> //數(shù)碼管位 高位-----低位</p><p> //五個按鍵控制步進電機:啟動/停止,正轉,反轉,加1,減1</p><p> //上電時電機停止,數(shù)碼管上顯示速度最小檔1,加減檔位均能通過數(shù)碼管顯示出來,電機采用單雙八拍方式</p><p> //電機轉速一共10檔,通過按鍵調節(jié)轉速 </p&
34、gt;<p> //電機正轉時最高位數(shù)碼管顯示0,反轉時顯示1 </p><p> //藍,粉,黃,橙 (1234)P2.7----P24 分別對應a b c d </p><p> #include<reg51.h></p><p> #define uchar unsigned char</p><p&
35、gt; #define uint unsigned int</p><p> #define led P0//數(shù)碼管段選</p><p> #define haha P2</p><p> sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P1^2;sbit s4 = P1^3;sbit s5 = P1^4;//按鍵定義,s1啟
36、動/停止,s2正轉,s3反轉,s4加1,s5減1</p><p> sbit wei3 = P2^3;sbit wei2 = P2^2;sbit wei1 = P2^1;sbit wei0 = P2^0;//數(shù)碼管位選定義</p><p> sbit a = P2^7;sbit b = P2^6;sbit c = P2^5;sbit d = P2^4;//脈沖信號輸入端定義</p
37、><p> uchar code display[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共陽數(shù)碼管驅動信號0---9,不顯示</p><p> uchar code time_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},
38、{0xe9,0xbc}, //9.7 ----1ms</p><p> {0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};</p><p> uchar code qudong[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}; </p><p>
39、 uchar num1 = 0;//控制取勵磁信號變量 </p><p> uchar num2 = 8;</p><p> uchar k=1;//加減檔位控制,1為最小檔</p><p> bit flag1 = 0;//初始正轉,正反轉標志</p><p> uchar buf[4]={0,10,10,1};//
40、數(shù)碼管顯示緩存,正轉,不顯示,不顯示,顯示1檔位,高----低 </p><p> //================================定時器0/1初始化函數(shù)================================</p><p> void T0_T1_init()</p><p><b> {</b><
41、/p><p> TMOD = 0x11;//定時器0/1均工作于方式1,16位計時方式</p><p> TH0 = (65536 - 4000)/256;</p><p> TL0 = (65536 - 4000)%256;//定時器0,定時4ms用于數(shù)碼管掃描顯示</p><p> TH1 = time_counter[k-1][0]
42、;</p><p> TL1 = time_counter[k-1][1];//定時器1,定時10ms用于步進電機轉速控制</p><p><b> TR0 = 1;</b></p><p><b> TR1 = 0;</b></p><p><b> ET0 = 1;</b
43、></p><p> ET1= 1;//開定時器中斷</p><p> EA = 1;//開總中斷</p><p><b> }</b></p><p> //================================ms級延時函數(shù)===================================
44、====</p><p> void delay1m(uint x)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=0;i<x;i++) //連數(shù)x次,約 x ms</p><p&
45、gt; for(j=0;j<120;j++); //數(shù)120 次,約1 ms</p><p><b> } </b></p><p> //================================主函數(shù)=============================================</p><p> void
46、 main()</p><p><b> {</b></p><p> T0_T1_init();</p><p> buf[1] = 10;//不顯示</p><p><b> while(1)</b></p><p><b> {</b>&
47、lt;/p><p> if(s1 == 0)</p><p><b> {</b></p><p> delay1m(3);</p><p> if(s1 == 0)</p><p><b> {</b></p><p> TR1=~TR1;
48、</p><p><b> }</b></p><p> while(!s1);</p><p><b> }</b></p><p> if(s2 == 0)</p><p><b> {</b></p><p>
49、delay1m(3);</p><p> if(s2 == 0)</p><p><b> {</b></p><p> flag1 = 0;//正轉</p><p> buf[0] = 0;//最高位顯示0</p><p> haha = 0x00;//停止</p>&l
50、t;p><b> }</b></p><p> while(!s2);</p><p><b> }</b></p><p> if(s3 == 0 )</p><p><b> {</b></p><p> delay1m(3);&l
51、t;/p><p> if(s3 == 0)</p><p><b> {</b></p><p> flag1 = 1;//反轉</p><p> buf[0] = 1;//最高位顯示1</p><p> haha = 0x00;//停止</p><p><b&
52、gt; }</b></p><p> while(!s3);</p><p><b> }</b></p><p> if(s4 == 0) //速度加1檔</p><p><b> {</b></p><p> delay1m(3);<
53、/p><p> if(s4 == 0)</p><p><b> {</b></p><p><b> k++;</b></p><p> if(k > 10 )</p><p><b> {</b></p><p>
54、<b> k = 1;</b></p><p><b> }</b></p><p> buf[2]= k/10;</p><p> buf[3]= k%10;</p><p><b> } </b></p><p> while(!s4);
55、</p><p><b> }</b></p><p> if(s5 == 0) //速度減1檔</p><p><b> {</b></p><p> delay1m(3);</p><p> if(s5 == 0)</p><p>&l
56、t;b> {</b></p><p><b> k--;</b></p><p> if(k == 0)</p><p><b> {</b></p><p><b> k = 10;</b></p><p><b>
57、; }</b></p><p> buf[2]= k/10;</p><p> buf[3]= k%10;</p><p><b> }</b></p><p> while(!s5);</p><p><b> }</b></p>&l
58、t;p><b> } </b></p><p><b> }</b></p><p> //==================================定時器0中斷函數(shù),用于數(shù)碼管掃描顯示====================================</p><p> void time0_
59、interrupt()interrupt 1</p><p><b> {</b></p><p> static num = 0;</p><p> TH0 = (65536 - 4000)/256;</p><p> TL0 = (65536 - 4000)%256;//定時器0,定時4ms用于數(shù)碼管掃描顯示
60、</p><p> switch(num)</p><p><b> {</b></p><p> case 0:wei3=1;wei2=1;wei1=1;wei0=0;led = display[buf[3]];break;</p><p> case 1:wei3=1;wei2=1;wei1=0;wei0=1
61、;led = display[buf[2]];break;</p><p> case 2:wei3=1;wei2=0;wei1=1;wei0=1;led = display[buf[1]];break;</p><p> case 3:wei3=0;wei2=1;wei1=1;wei0=1;led = display[buf[0]];break;</p><p&g
62、t;<b> }</b></p><p><b> num++;</b></p><p> if(num == 4)num = 0;</p><p><b> }</b></p><p> //==================================定時器
63、1中斷函數(shù),用于脈沖頻率控制=====================================</p><p> void time1_interrupt()interrupt 3</p><p><b> {</b></p><p> static num1 = 0;</p><p> static
64、num2 = 0;</p><p> TH1 = time_counter[k-1][0];</p><p> TL1 = time_counter[k-1][1];//定時器1,定時1 用于步進電機轉速控制</p><p> if(flag1 == 0)//正轉</p><p><b> {</b></p
65、><p> switch(num1)</p><p><b> {</b></p><p> case 0:a = 1;b = 0;c = 0;d = 0;break;</p><p> case 1:a = 1;b = 1;c = 0;d = 0;break;</p><p> case
66、2:a = 0;b = 1;c = 0;d = 0;break;</p><p> case 3:a = 0;b = 1;c = 1;d = 0;break;</p><p> case 4:a = 0;b = 0;c = 1;d = 0;break;</p><p> case 5:a = 0;b = 0;c = 1;d = 1;break;</p&g
67、t;<p> case 6:a = 0;b = 0;c = 0;d = 1;break;</p><p> case 7:a = 1;b = 0;c = 0;d = 1;break;</p><p><b> }</b></p><p><b> num1++;</b></p><
68、p> if(num1 == 8)num1 = 0; </p><p><b> }</b></p><p> else //反轉</p><p><b> {</b></p><p> switch(num2)</p><p><b> {&
69、lt;/b></p><p> case 0:a = 1;b = 0;c = 0;d = 1;break;</p><p> case 1:a = 0;b = 0;c = 0;d = 1;break;</p><p> case 2:a = 0;b = 0;c = 1;d = 1;break;</p><p> case 3:a
70、 = 0;b = 0;c = 1;d = 0;break;</p><p> case 4:a = 0;b = 1;c = 1;d = 0;break;</p><p> case 5:a = 0;b = 1;c = 0;d = 0;break;</p><p> case 6:a = 1;b = 1;c = 0;d = 0;break;</p>
71、<p> case 7:a = 1;b = 0;c = 0;d = 0;break;</p><p><b> }</b></p><p><b> num2++;</b></p><p> if(num2 == 8)num2 = 0; </p><p><b>
72、}</b></p><p><b> }</b></p><p> 第4章 硬件電路設計</p><p><b> 4.1電路設計構思</b></p><p> 一個可以正常工作的電子電路一般由兩部分組成——硬件電路板電路以及軟件芯片驅動電路,通過這兩部分的結合來控制和顯示步進電
73、機的旋轉,系統(tǒng)設計中有一些部分要注意,首先要了解單片機的工作原理。在設計電路之前,我找到了很多關于AT89C51的資料,只有熟悉芯片各個管腳的作用才能順利設計出電路圖。</p><p> 在硬件電路的設計上,我堅持盡可能地“小”,在設計過程中,我不斷地修改,力求可以將電路最小化,當然“最小化”不是“最簡化”,這里說的最小化是盡可能減少電路所需要占去的地方,而不是簡單化電路,更不是偷工減料。</p>
74、<p> 驅動部分是要將輸入進來的控制信號轉化為步進電機工作時各線端電壓(工作電壓5V)。</p><p> 4.1.1使用分立元件驅動步進電機</p><p> 以往步進電機控制系統(tǒng)采用分立元件或者集成電路組成的控制回路,不僅調試安裝復雜,要消耗大量元器件,而且一旦定型之后,要改變控制方案就得重新設計電路。隨著微電子和計算機技術的發(fā)展,對步進電機的控制變得非常靈活方便,
75、可以通過軟件來控制步進電機。因此,用微電腦控制步進電機已經(jīng)成為了一種必然的趨勢,也符合數(shù)字化的時代趨勢。 </p><p> 4.1.2使用多個功率放大器件驅動電機</p><p> 通過使用不同的放大電路和不同參數(shù)的器件,可以達到不同的放大的要求,放大后能夠得到較大的功率。但是由于使用的是四相的步進電機,就需要對四路信號分別進行放大,由于放大電路很難做到完全一致,當電機的功率較大時
76、運行起來會不穩(wěn)定,而且電路的制作也比較復雜。</p><p> 4.1.3 驅動芯片的選擇</p><p> 本系統(tǒng)是用單片機來實現(xiàn)的,單片機種類繁多,不過又以MCS—51/52系列的單片機使用最廣泛,而且本系統(tǒng)的主要功能和51/52系列的單片機用途很合適,所以選用了ATMEL公司的51/52系列芯片。AT89S52是A典型代表,使用相當?shù)亩啵瑧觅Y料很多,價格便宜,是初學51/52的
77、首選芯片,該單片機還有一個優(yōu)點就是在板子上加上下載電路就可以在線下載了,使用調試起來很是方便。所以本系統(tǒng)的單片機采用AT89S52。</p><p> 4.2 硬件電路設計</p><p> 根據(jù)本人所找到的有關AT89C51的資料,經(jīng)過反復修改,最終設計出以下電路,如下圖所示。</p><p> 圖5 單片機控制系統(tǒng)</p><p>
78、 接通電源后,按下按鍵分配脈沖,從正反轉及點動控制模塊里選擇電機工作方式按鈕,比如選擇正轉控制按鈕, 單片機AT89S52接收到響應信號后產(chǎn)生脈沖信號,經(jīng)過接口的上拉電阻后稍微加大輸出引腳的驅動能力、提高輸出電平,使輸出電流變大。接著就是通過芯片驅動電機來給予電機啟動電流。</p><p> 4.2.2 LED顯示電路</p><p> 由于系統(tǒng)顯示的內容比較簡單,顯示量不多,所以顯
79、示選用數(shù)碼管既方便又經(jīng)濟。LED有共陰極和共陽極兩種。如下圖所示。</p><p> 共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應用時應將公共極COM接到+5V,當某一字段發(fā)光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應用時應將公共極C
80、OM接到地線GND上,當某一字段發(fā)光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。</p><p> 數(shù)碼管顯示器有兩種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。靜態(tài)顯示是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。靜態(tài)驅動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多。動態(tài)顯示是將所有數(shù)碼管的8個顯示
81、筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯
82、示,在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。為節(jié)省端口及降低功耗,本系</p><p> 綜上所述,此設計基本上實現(xiàn)了控制步進電機啟動、關閉、正轉、反轉、加速、減速等功能<
83、/p><p><b> 結論</b></p><p> 隨著社會的發(fā)展,電子產(chǎn)品的需求與日俱增,無論是從推動經(jīng)濟發(fā)展還是社會發(fā)展來說,電子科技都有著不可代替的重要作用。其中步進電機更是在工業(yè)領域有著十分廣泛的應用,幾乎每一種工業(yè)設備中都多多少少在使用著步進電機。</p><p> 本文構建了一個步進電機控制系統(tǒng),系統(tǒng)的硬件組成主要有:51系列
84、單片機、AT89C51驅動電路。該系統(tǒng)在分析目前步進電機特點基礎上,確定步進電機功能要求。針對步進電機的功能要求,提出了控制系統(tǒng)的詳細方案。在步進電機控制系統(tǒng)中,選用了51單片機作為控制工具,并對單片機控制系統(tǒng)的管腳進行了分配,并給出了原理圖。并對步進電機轉速控制進行了設計。達到了轉速的控制的要求,確定了鍵盤控制。論文設計符合步進電機控制系統(tǒng)的標準要求。經(jīng)系統(tǒng)調試,可以實現(xiàn)步進電機的以下功能:正反轉、加減速。 本系統(tǒng)控制靈活,簡單方便,
85、制作成本低。同時也有不足的地方:比如說轉速控制的精度還不算十分精確,另外還應該加入轉速的顯示。</p><p><b> 致謝</b></p><p> 在本次畢業(yè)設計的制作調試過程中,得到了老師和同學的極大的支持和幫助。首先,要特別感謝我的導師**老師,本次畢設是在**老師悉心指導和鼓勵下完成的。**老師以嚴謹?shù)闹螌W態(tài)度和一絲不茍的工作精神為我樹立了良好的榜樣,
86、以言傳身教培養(yǎng)了我開展科學研究的獨立工作能力。在此謹向**老師表示衷心的感謝崇高的敬禮。同時,我也要感謝在這次設計過程中給予過我很大幫助的張裕同學,在制作論文的過程中,遇到了不少的困難,通過張裕同學幫助我才能順利完成。正是有了老師和同學的支持,我的畢業(yè)設計才能如此順利進行!</p><p><b> 參考文獻</b></p><p> [1] 蔡美琴等, MSC-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機at89c51系統(tǒng)的步進電機控制畢業(yè)論文
- 基于at89c51單片機步進電機控制
- 課程設計--基于at89c51單片機控制步進電機
- 畢業(yè)設計(論文)-基于at89c51單片機的步進電機控制系統(tǒng)
- 畢業(yè)設計(論文)-基于at89c51單片機的步進電機控制系統(tǒng)
- 畢業(yè)設計(論文)-基于at89c51單片機的步進電機控制系統(tǒng)
- 畢業(yè)設計(論文)-基于at89c51單片機的步進電機控制系統(tǒng)
- 畢業(yè)設計----基于at89c51單片機的步進電機控制系統(tǒng)
- 單片機at89c51
- at89c51單片機控制溫度
- at89c51單片機控制溫度
- 單片機論文-采用89c51系列單片機對步進電機控制
- 基于at89c51單片機的電機控制綜合設計
- 畢業(yè)論文---基于at89c51單片機的智能電源控制系統(tǒng)
- at89c51單片機外文翻譯
- 單片機畢業(yè)設計外文翻譯單片機at89c51
- 單片機外文翻譯 ----at89c51單片機介紹
- 基于at89c51單片機的交通燈設計畢業(yè)論文
- 2017畢業(yè)論文-基于at89c51單片機數(shù)字時鐘的設計
- 畢業(yè)設計---基于at89c51的步進電機控制
評論
0/150
提交評論