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