基于單片機(jī)控制的步進(jìn)電機(jī)的設(shè)計_第1頁
基于單片機(jī)控制的步進(jìn)電機(jī)的設(shè)計_第2頁
基于單片機(jī)控制的步進(jìn)電機(jī)的設(shè)計_第3頁
基于單片機(jī)控制的步進(jìn)電機(jī)的設(shè)計_第4頁
基于單片機(jī)控制的步進(jìn)電機(jī)的設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

電氣綜合設(shè)計題目 _ 二級學(xué)院 _ 專 業(yè) _ 班 級 _ _ 學(xué)生姓名 _ 學(xué)號 _ 學(xué)生姓名 _ 學(xué)號 _ _ _ 學(xué)生姓名 _ 學(xué)號 _ _ 指導(dǎo)教師 _ 時間: _ 考核項目平時成績20分設(shè)計50分答辯30分得分總分考核等級教師簽名摘要: 介紹了步進(jìn)電機(jī)和直流電機(jī)原理及其驅(qū)動程序控制控制模塊,通過AT89S52單片機(jī)及大電流驅(qū)動陣列ULN2003完成步進(jìn)電機(jī)和直流電機(jī)各種運(yùn)行方式的控制。實現(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)速度控制并且顯示數(shù)據(jù)。整個系統(tǒng)采用模塊化設(shè)計,結(jié)構(gòu)簡單、可靠,通過按鍵控制,操作方便,節(jié)省成本。 關(guān)鍵詞: 步進(jìn)電機(jī);ULN2003; AT89S51; 引言隨著數(shù)字化技術(shù)發(fā)展,數(shù)字控制技術(shù)得到了廣泛而深入的應(yīng)用。步進(jìn)電機(jī)是一種將數(shù)字信號直接轉(zhuǎn)換成角位移或線位移的控制驅(qū)動元件, 具有快速起動和停止的特點。因為步進(jìn)電動機(jī)組成的控制系統(tǒng)結(jié)構(gòu)簡單,價格低廉,性能上能滿足工業(yè)控制的基本要求,所以廣泛地應(yīng)用于手工業(yè)自動控制、數(shù)控機(jī)床、組合機(jī)床、機(jī)器人、計算機(jī)外圍設(shè)備、照相機(jī),投影儀、數(shù)碼攝像機(jī)、大型望遠(yuǎn)鏡、衛(wèi)星天線定位系統(tǒng)、醫(yī)療器件以及各種可控機(jī)械工具等等。直流電機(jī)廣泛應(yīng)用于計算機(jī)外圍設(shè)備( 如硬盤、軟盤和光盤存儲器) 、家電產(chǎn)品、醫(yī)療器械和電動車上, 無刷直流電機(jī)的轉(zhuǎn)子都普遍使用永磁材料組成的磁鋼, 并且在航空、航天、汽車、精密電子等行業(yè)也被廣泛應(yīng)用。在電工設(shè)備中的應(yīng)用,除了直流電磁鐵(直流繼電器、直流接觸器等)外,最重要的就是應(yīng)用在直流旋轉(zhuǎn)電機(jī)中。在發(fā)電廠里,同步發(fā)電機(jī)的勵磁機(jī)、蓄電池的充電機(jī)等,都是直流發(fā)電機(jī);鍋爐給粉機(jī)的原動機(jī)是直流電動機(jī)。此外,在許多工業(yè)部門,例如大型軋鋼設(shè)備、大型精密機(jī)床、礦井卷揚(yáng)機(jī)、市內(nèi)電車、電纜設(shè)備要求嚴(yán)格線速度一致的地方等,通常都采用直流電動機(jī)作為原動機(jī)來拖動工作機(jī)械的。直流發(fā)電機(jī)通常是作為直流電源,向負(fù)載輸出電能;直流電動機(jī)則是作為原動機(jī)帶動各種生產(chǎn)機(jī)械工作,向負(fù)載輸出機(jī)械能。在控制系統(tǒng)中,直流電機(jī)還有其它的用途,例如測速電機(jī)、伺服電機(jī)等。他們都是利用電和磁的相互作用來實現(xiàn)向機(jī)械能能的轉(zhuǎn)換。一、步進(jìn)電機(jī)的工作原理步進(jìn)電機(jī)本質(zhì)上是一個數(shù)字角度轉(zhuǎn)換器。以三相電機(jī)為例, 其結(jié)構(gòu)原理見圖1。各相夾角為120的定子磁極上均勻分布了5個矩形小齒, 沒有繞組的轉(zhuǎn)子圓周上也均勻的分布著40個小齒(相鄰齒夾角為9)。利用電磁學(xué)的性質(zhì), 在某相繞組通電時, 相應(yīng)的磁極產(chǎn)生磁場, 與轉(zhuǎn)子形成磁路如此時定子的小齒與轉(zhuǎn)子的小齒沒有對齊, 則在磁場作用下, 轉(zhuǎn)子就轉(zhuǎn)動一定角度, 達(dá)到齒的對齊。在單三拍控制方式下, 若A相通電, B、C相不通電, 在磁場作用下使轉(zhuǎn)子齒和A相定子齒相對假設(shè)此時為初態(tài)并且令與A相中心對齊的轉(zhuǎn)子齒為0號齒, 因為B相與A相相差120,可知120/9=13 39, 不為整數(shù), 即此時轉(zhuǎn)子齒與B相不對齊, 只是13號齒靠近相的中心, 且相差3。如果此時突然變?yōu)锽相通電, 而A、C相都不通電, 那么, 13號齒會在磁場的作用下轉(zhuǎn)到與相中心對齊的位置, 這就是常說的走一步, 此時,轉(zhuǎn)子轉(zhuǎn)了。這樣, 按照A-B-C-A順序通電次, 可以使轉(zhuǎn)子轉(zhuǎn)動9。那么步進(jìn)電機(jī)的步距角Q=(360/NZ)(式中N=MC為運(yùn)行拍數(shù);M為控制繞組相數(shù);C為狀態(tài)系數(shù), 單三拍或雙三拍時C=1, 單六拍或雙六拍時C=2為轉(zhuǎn)子齒數(shù))。二、硬件系統(tǒng)1、電路圖2、ULN2003ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個消線圈反電動勢的二極管,可用來驅(qū)動繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達(dá)林頓管組成驅(qū)動電路。ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個消線圈反電動勢的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可直接驅(qū)動繼電器或固體繼電器,也可直接驅(qū)動低壓燈泡。通常單片機(jī)驅(qū)動ULN2003時,上拉2K的電阻較為合適,同時,COM引腳應(yīng)該懸空或接電源。ULN2003是一個非門電路,包含7個單元,但獨每個單元驅(qū)動電流最大可達(dá)350mA.資料的最后有引用電路,9腳可以懸空。 比如1腳輸入,16腳輸出,你的負(fù)載接在VCC與16腳之間,不用9腳。ULN2003的作用:ULN2003是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個硅NPN達(dá)林頓管組成。ULN2003的每一對達(dá)林頓都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器。ULN2003是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點,適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。ULN2003A引腳圖及功能:ULN2003是高耐壓、大電流、內(nèi)部由七個硅NPN 達(dá)林頓管組成的驅(qū)動芯片。 經(jīng)常在以下電路中使用,作為顯示驅(qū)動、繼電器驅(qū)動、照明燈驅(qū)動、電磁閥驅(qū)動、伺服電機(jī)、步進(jìn)電機(jī)驅(qū)動等電路中。ULN2003 的每一對達(dá)林頓都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時承受50V的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。ULN2003的封裝采用DIP16或SOP16。ULN2003可以驅(qū)動7個繼電器,具有高電壓輸出特性,并帶有共陰極的續(xù)流二極管使器件可用于開關(guān)型感性負(fù)載。每對達(dá)林頓管的額定集電極電流是500mA,達(dá)林頓對管還可并聯(lián)使用以達(dá)到更高的輸出電流能力。 顯示電路主要包括大型LED數(shù)碼管BSI20-1(共陽極,數(shù)字凈高12 cm)和高電壓大電流驅(qū)動器ULN2003,大型LED數(shù)碼管的每段是由多個LED發(fā)光二極管串并聯(lián)而成的,因此導(dǎo)通電流大、導(dǎo)通壓降高。ULN2003是高壓大電流達(dá)林頓晶體管陣列電路,他具有7個獨立的反相驅(qū)動器,每個驅(qū)動器的輸出灌電流可達(dá)500mA,導(dǎo)通時輸出電壓約1 V,截止時輸出電壓可達(dá)50V。ULN2003的17腳為信號輸入腳,依次對應(yīng)的輸出端為1610腳,8腳為接地端。當(dāng)驅(qū)動電源電壓為+12V時,若要求數(shù)碼管每段導(dǎo)通電流為40mA,則每段的限流電阻為50。則一塊ULN2003恰好驅(qū)動一個LED數(shù)碼管的7段。大數(shù)碼管采用共陽極接法,低電平有效。鎖存器輸出的電平經(jīng)NPN三極管9014反相后,再由ULN2003放大后推動大數(shù)碼管顯示.3、AT89C51AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃速存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖所示。 主要特性與MCS-51 兼容4K字節(jié)可編程FLASH存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0Hz-24MHz三級程序存儲器鎖定1288位內(nèi)部RAM32可編程I/O線兩個16位定時器/計數(shù)器5個中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路特性概述AT89C51 提供以下標(biāo)準(zhǔn)功能:4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32 個I/O 口線,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(計時器0外部輸入)P3.5 T1(計時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。三、軟件系統(tǒng)該系統(tǒng)采用多個模塊的方式來實現(xiàn)對步進(jìn)電機(jī)的控制??刂颇K采用單片機(jī)AT89S51來控制ULN2003驅(qū)動電機(jī)轉(zhuǎn)動。1. main/*實例名稱:步進(jìn)電機(jī)*實例說明:實現(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)以及加減速控制,并在LCD屏上實時顯示步進(jìn)電機(jī)的狀態(tài)*作者:hzd*時間:14.01.10*/#include target.h#include key.h#define MOTER_SPEED_NORMAL 5 /電機(jī)正常運(yùn)行上限#define MOTER_SPEED_MIN 15 /電機(jī)低速運(yùn)行下限uchar timer0Count; /timer0中斷溢出計數(shù) uchar moterStep; /電機(jī)步數(shù) (0x000x07)uint moterSpeed; /速度值變化量 (0moterSpeedMax)uint moterSpeedMax; /速度最快值uchar moterState; /電機(jī)運(yùn)行狀態(tài)uchar moterDirect; /電機(jī)運(yùn)轉(zhuǎn)方向,靜止/0x00;正轉(zhuǎn)/0x01;反轉(zhuǎn)/0x02uchar moterAddReduce; /電機(jī)加速及減速量uchar speedDirect; /0x01,電機(jī)加速;0x02,電機(jī)減速bit display_is_ok; /顯示屏是否需要更新/*MOTER_STOP,停止;MOTER_FRONT_ADD,正轉(zhuǎn)加速MOTER_FRONT_REDUCE,正轉(zhuǎn)減速;MOTER_FRONT_NORMAL,正轉(zhuǎn)正常MOTER_FRONT_LOWER,正轉(zhuǎn)低速;MOTER_QUEEN_ADD,反轉(zhuǎn)加速MOTER_QUEEN_REDUCE,反轉(zhuǎn)減速,MOTER_QUEEN_NOMAL,反轉(zhuǎn)正常MOTER_QUEEN_LOWER,反轉(zhuǎn)低速*/void main() uchar keyValueRead; target_init(); moterState=MOTER_STOP; timer0Count=0x00; moterAddReduce=0x00; moterStep=0x00; moterSpeed=0x00; moterSpeedMax=0x00; /默認(rèn)停止 moterDirect=0x00; /默認(rèn)停止 moter_state_display(MOTER_STOP); display_is_ok=1; sei(); while(1) keyValueRead=get_key_value();switch(keyValueRead) case KEY_FRONT: /正轉(zhuǎn) moterState=MOTER_FRONT_LOWER;moterDirect=0x01;moterSpeedMax=MOTER_SPEED_MIN;display_is_ok=0;/moter_state_display(MOTER_FRONT_LOWER);break; case KEY_QUEEN: /反轉(zhuǎn) moterState=MOTER_QUEEN_LOWER;moterDirect=0x02;moterSpeedMax=MOTER_SPEED_MIN;display_is_ok=0;/moter_state_display(MOTER_QUEEN_LOWER);break; case KEY_ADD: /加速 speedDirect=0x01; moterAddReduce=100;display_is_ok=0;if(moterDirect=0x01) /正轉(zhuǎn) moter_state_display(MOTER_FRONT_ADD);else if(moterDirect=0x02) moter_state_display(MOTER_QUEEN_ADD);break; case KEY_REDUCE: /減速 speedDirect=0x02; moterAddReduce=100;display_is_ok=0;if(moterDirect=0x01) /正轉(zhuǎn) moter_state_display(MOTER_FRONT_REDUCE);else if(moterDirect=0x02) moter_state_display(MOTER_QUEEN_REDUCE);break; case KEY_STOP: /停止 moterState=MOTER_STOP; moterSpeedMax=0x00; /默認(rèn)停止 moterDirect=0x00; /默認(rèn)停止moter_state_display(MOTER_STOP);display_is_ok=1;break; default: break;if(display_is_ok=0) /判斷LCD內(nèi)容是否需要更新 switch(moterSpeedMax) case MOTER_SPEED_NORMAL: if(moterDirect=0x01) moter_state_display(MOTER_FRONT_NORMAL); else if(moterDirect=0x02) moter_state_display(MOTER_QUEEN_NOMAL); display_is_ok=1; break; case MOTER_SPEED_MIN: if(moterDirect=0x01) moter_state_display(MOTER_FRONT_LOWER); else if(moterDirect=0x02) moter_state_display(MOTER_QUEEN_LOWER); display_is_ok=1; break; default: break; void timer0_overflow(void) interrupt 1 /timer0定時10ms TH0=-500/256; /定時10ms TL0=-500%256; timer0Count=0x00; if(speedDirect=0x01) /如果為加速 if(moterSpeedMaxMOTER_SPEED_NORMAL) moterSpeedMax-;/最大加速到正常值 else moterAddReduce=0x00; speedDirect=0x00; /已經(jīng)加速到正常值,不再加速 else if(speedDirect=0x02) if(moterSpeedMaxMOTER_SPEED_MIN) moterSpeedMax+; else moterAddReduce=0x00; speedDirect=0x00; if(moterSpeed0x00) moterStep-; else moterStep=0x07; else if(moterDirect=0x02)/反轉(zhuǎn) if(moterStep0x07) moterStep+; else moterStep=0x00; ground(moterStep); 2. target#define TARGET_GLOBAL 1#include target.h#include dot.hvoid timer0_init(void) TMOD|=0x01; /MODEL1,timer TH0=0xDC; /定時10ms TL0=0x00; ET0=1; /中斷使能 TR0=1; /關(guān)閉定時器0void target_init(void) timer0_init(); Lcd_Initial();/*函數(shù)名稱:display_head(void)*函數(shù)功能:顯示“步進(jìn)電機(jī)運(yùn)行狀態(tài)”字樣*函數(shù)入口:無*函數(shù)出口:無*/void display_head(void) uchar i,temp; temp=0x00; for(i=0;i8;i+) Lcd_Character_16X16(1,10,temp,MOTER_HEADi);temp+=16; /*函數(shù)名稱:display_state(state)*函數(shù)功能:顯示電機(jī)狀態(tài)“停止”,“正轉(zhuǎn)”,“反轉(zhuǎn)”*函數(shù)入口:state,電機(jī)狀態(tài)*函數(shù)出口:無*說明:state:0x01,停止;0x02,正轉(zhuǎn);0x03,反轉(zhuǎn)*/void display_state(state) switch(state) case 0x01: /顯示“停止” Lcd_Character_16X16(1,60,0,MOTER_STATE0); /停 Lcd_Character_16X16(1,60,16,MOTER_STATE1);/止 break;case 0x02: /顯示“正轉(zhuǎn)” Lcd_Character_16X16(1,60,0,MOTER_STATE2); /正 break;case 0x03: /顯示“反轉(zhuǎn)” Lcd_Character_16X16(1,60,0,MOTER_STATE3); /反 break;default: break; if(state=0x02)|(state=0x03) Lcd_Character_16X16(1,60,16,MOTER_STATE4); /轉(zhuǎn)/*函數(shù)名稱:display_speed(speed)*函數(shù)功能:顯示電機(jī)速度狀態(tài)*函數(shù)入口:speed,電機(jī)速度狀態(tài)*函數(shù)出口:無*說明:speed:0x01,正常;0x02,低速;0x03,加速; 0x04,減速*/void display_speed(speed) switch(speed) case 0x01: Lcd_Character_16X16(1,60,32,SPEED_STATE4); /正 Lcd_Character_16X16(1,60,48,SPEED_STATE5); /常 break; case 0x02: Lcd_Character_16X16(1,60,32,SPEED_STATE2); /低 break; case 0x03: Lcd_Character_16X16(1,60,32,SPEED_STATE0); /加 break; case 0x04: Lcd_Character_16X16(1,60,32,SPEED_STATE1); /減 break; default: break; if(speed=0x02)|(speed=0x03)|(speed=0x04) Lcd_Character_16X16(1,60,48,SPEED_STATE3); /速 /*函數(shù)名稱:moter_state_display(uchar moterState)*函數(shù)功能:實現(xiàn)步進(jìn)電機(jī)狀態(tài)顯示*函數(shù)入口:moterState,電機(jī)運(yùn)行狀態(tài)*函數(shù)出口:無*說明:moterState:0x01,停止;0x02,正轉(zhuǎn)加速運(yùn)行;0x03,正轉(zhuǎn)減速運(yùn)行;0x04,正轉(zhuǎn)正常運(yùn)行;0x05,正轉(zhuǎn)低速運(yùn)行;0x06,反轉(zhuǎn)加速運(yùn)行;0x07,反轉(zhuǎn)減速運(yùn)行;0x08,反轉(zhuǎn)正常運(yùn)行;0x09,反轉(zhuǎn)低速運(yùn)行*/void moter_state_display(uchar moterState) Lcd_Clear(); display_head(); switch(moterState) case MOTER_STOP: /停止 display_state(0x01); break;case MOTER_FRONT_ADD:/正轉(zhuǎn)加速運(yùn)行 display_state(0x02); display_speed(0x03); break;case MOTER_FRONT_REDUCE: /正轉(zhuǎn)減速運(yùn)行 display_state(0x02); display_speed(0x04); break;case MOTER_FRONT_NORMAL:/正轉(zhuǎn)正常運(yùn)行 display_state(0x02); display_speed(0x01); break;case MOTER_FRONT_LOWER:/正轉(zhuǎn)低速運(yùn)行 display_state(0x02); display_speed(0x02); break;case MOTER_QUEEN_ADD:/反轉(zhuǎn)加速運(yùn)行 display_state(0x03); display_speed(0x03); break;case MOTER_QUEEN_REDUCE: /反轉(zhuǎn)減速運(yùn)行 display_state(0x03); display_speed(0x04); break;case MOTER_QUEEN_NOMAL: /反轉(zhuǎn)正常運(yùn)行 display_state(0x03); display_speed(0x01); break;case MOTER_QUEEN_LOWER: /反轉(zhuǎn)低速運(yùn)行 display_state(0x03); display_speed(0x02); break;default: break; if(moterState!=MOTER_STOP) Lcd_Character_16X16(1,60,64,SPEED_STATE6); /運(yùn)Lcd_Character_16X16(1,60,80,SPEED_STATE7); /行 /*函數(shù)名稱:ground(step)*函數(shù)功能:給電機(jī)的四個相極送信號*函數(shù)入口:step,電機(jī)相位的第幾步*函數(shù)出口:無*說明:步進(jìn)電機(jī)轉(zhuǎn)步數(shù),分八步*/void ground(step) switch(step) case 0x00: MOTER_M1= 1; MOTER_M2= 0; MOTER_M3= 0; MOTER_M4= 0; break;case 0x01: MOTER_M1= 1; MOTER_M2= 1; MOTER_M3= 0; MOTER_M4= 0; break; case 0x02: MOTER_M1= 0; MOTER_M2= 1; MOTER_M3= 0; MOTER_M4= 0; break;case 0x03: MOTER_M1= 0; MOTER_M2= 1; MOTER_M3= 1; MOTER_M4= 0; break;case 0x04: MOTER_M1= 0; MOTER_M2= 0; MOTER_M3= 1; MOTER_M4= 0; break; case 0x05: MOTER_M1= 0; MOTER_M2= 0; MOTER_M3= 1; MOTER_M4= 1; break;case 0x06: MOTER_M1= 0; MOTER_M2= 0; MOTER_M3= 0; MOTER_

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論