2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《機電系統課程設計》說明書</p><p>  題目 單片機控制步進電機正反轉 </p><p>  年 級 10 專 業 </p><p>  班 級 學 號 </p><p>  學生姓名

2、 </p><p>  設計時間 2011.11.07~2011.11.25 </p><p>  指導教師 </p><p>  機械工程學院機電工程系</p><p><b>  課程設計成績評定</b></p>

3、;<p>  課程名稱: 《機電系統課程設計》 </p><p>  學生姓名: 班級 YZ02101 學號: 45 </p><p><b>  答辯記錄表</b></p><p><b>  成績評定表</b></p><p&

4、gt;  《機電系統》課程設計任務書</p><p>  姓名 班級 學號 </p><p>  設計題目 單片機控制步進電機(軟件設計) </p><p><b>  設計任務:

5、</b></p><p> ?。?)開始通電時,步進電機停止轉動。</p><p> ?。?) 單片機分別接有按鈕開關K1、K2和K3用來控制步進電機的轉向,要求如下:</p><p> ?、?當按下K1時,步進電機正轉;</p><p> ?、?當按下K2時,步進電機反轉;</p><p> ?、?當按下

6、K3時,步進電機停止轉動。</p><p> ?。?)正轉采用1相激磁方式,反轉采用1~2相激磁方式。</p><p><b>  設計工作量:</b></p><p><b> ?。?)算法的確定</b></p><p> ?。?)畫程序工作流程度</p><p><

7、b> ?。?)時序表的繪制</b></p><p> ?。?)匯編程序的編寫</p><p><b>  指導教師 </b></p><p>  設計時2011年11月7日~2011年11月25日</p><p><b>  目 錄</b></p><

8、p><b>  第1章</b></p><p>  緒論………………………………………………………………5</p><p>  1.1 單片機的發展及應用</p><p>  1.2 電動機的基礎知識</p><p>  1.3 匯編語言的介紹及應用</p><p>  第2章 硬件電路描述

9、…………………………………………12</p><p>  2.1 確定元器件的型號</p><p>  2.1.1 AT89C51單片機</p><p>  2.1.2 ULN2003芯片</p><p><b>  2.2 步進電機</b></p><p>  2.2.1 永磁式步進電機<

10、/p><p>  2.2.2 步進電機原理以及原理圖</p><p>  第3章 程序設計………………………………………………16</p><p><b>  3.1 編程</b></p><p><b>  3.2 流程圖</b></p><p><b>  3.3

11、詳細程序</b></p><p><b>  3.3.1代碼注解</b></p><p><b>  3.3.2程序分析</b></p><p>  致謝……………………………………………………………..22</p><p>  參考文獻………………………………………………………..23

12、</p><p>  附錄……………………………………………………………..24</p><p><b>  第1章 緒論</b></p><p>  1.1單片機的發展及應用</p><p>  1.1.1單片機的簡介</p><p>  單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Mic

13、rocontroller Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業控制領域。單片機由芯片內僅有CPU的專用處理器發展而來。最早的設計理念是通過將大量外圍設備和CPU集成在一個芯片中,使計算機系統更小,更容易集成進復雜的而對體積要求嚴格的控制設備當中。INTEL的Z80是最早按照這種思想設計出的處理器,從此以后,單片機和專用處理器的發展便分道揚鑣。 </p><p>  早期的單片機都是8

14、位或4位的。其中最成功的是INTEL的8031,因為簡單可靠而性能不錯獲得了很大的好評。此后在8031上發展出了MCS51系列單片機系統?;谶@一系統的單片機系統直到現在還在廣泛使用。隨著工業控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產品大發展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位

15、,并且進入主流市場。而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。目前,高端的32位單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系

16、統。 </p><p>  單片機比專用處理器更適合應用于嵌入式系統,因此它得到了最多的應用。事實上單片機是世界上數量最多的計算機?,F代人類生活中所用的幾乎每件電子和機械產品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電腦配件中都配有1-2部單片機。而個人電腦中也會有為數不少的單片機在工作。汽車上一般配備40多部單片機,復雜的工業控制系統上甚至可能有數百臺單片機在同時工作!單片機

17、的數量不僅遠超過PC機和其他計算的總和,甚至比人類的數量還要多。 </p><p>  單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。 </p&

18、gt;<p>  單片機內部也用和電腦功能類似的模塊,比如CPU,內存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機、排煙罩、VCD等等的家電里面都可以看到它的身影!......它主要是作為控制部分的核心部件。 </p><p>

19、;  它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區別。 </p><p>  單片機是靠程序運行的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發的74系列,或者60年代的CD4000系列

20、這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性! </p><p>  由于單片機對成本是敏感的,所以目前占統治地位的軟件還是最低級匯編語言,它是除了二進制機器碼以上最低級的語言了,既然這么低級為什么還要用呢?很多高級的語言已經達到了可視化編程的水平為什么不用呢?原因很簡單,

21、就是單片機沒有家用計算機那樣的CPU,也沒有像硬盤那樣的海量存儲設備。一個可視化高級語言編寫的小程序里面即使只有一個按鈕,也會達到幾十K的尺寸!對于家用PC的硬盤來講沒什么,可是對于單片機來講是不能接受的。 單片機在硬件資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟件拿到家用PC上來運行,家用PC的也是承受不了的。 </p><p>  可以說,二

22、十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F在

23、,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。各種產品一旦用上了單片機,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——“智能型”,如智能型洗衣機等?,F在有些工廠的技術人員或其它業余電子開發者搞出來的某些產品,不是電路太復雜,就是功能太簡單且極易被仿制。究其原因,可能就卡在產品未使用單片機或其它可編程邏輯器件上。</p><p>  1.1.2單片機的應用<

24、;/p><p>  目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械以及各種智能機械了。因此,單片機的學習

25、、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。 </p><p>  單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域</p><p>  1.1.3單片機的程序語言和軟件</p><p>  1機器語言(Machine Language)</p><p>  2匯編語言 (Ass

26、emble)</p><p>  3高級語言 (High Level Language)</p><p><b>  機器語言:</b></p><p>  單片機應用系統只使用機器語言(指令的二進制代碼,又稱指令代碼)。機器語言指令組成的程序稱目標程序。</p><p>  MCS-51兩個寄存器相加的機器語言指令:

27、00101000</p><p>  匯編語言: </p><p>  與機器語言指令一一對應的英文單詞縮寫,稱為指令助記符。匯編語言編寫的程序稱為匯編語言程序。</p><p>  MCS-51兩個寄存器相加匯編語言指令:ADD A,R0</p><p><b>  高級語言:</b>

28、;</p><p>  高級語言源程序C-51、C、PL/M51等。</p><p>  簡單——控制程序不太長。</p><p>  復雜——多種多樣的控制對象,少有現成程序借鑒。</p><p>  簡單系統——不含管理和開發功能。</p><p>  復雜系統——實時系統,需要監控系統</p>&l

29、t;p> ?。ㄉ踔翆崟r多任務操作系統)。</p><p>  1.2 電動機的基礎知識</p><p>  1.2.1 電動機的簡介</p><p>  電動機(Motors)是把電能轉換成機械能的一種設備。它是利用通電線圈(也就是定子繞組)產生旋轉磁場并作用于轉子鼠籠式式閉合鋁框形成磁電動力旋轉扭矩。電動機按使用電源不同分為直流電動機和交流電動機,電力系統中

30、的電動機大部分是交流電機,可以是同步電機或者是異步電機(電機定子磁場轉速與轉子旋轉轉速不保持同步速)。電動機主要由定子與轉子組成,通電導線在磁場中受力運動的方向跟電流方向和磁感線(磁場方向)方向有關。電動機工作原理是磁場對電流受力的作用,使電動機轉動。</p><p>  1.2.2 電動機的分類</p><p>  1.按工作電源分類 根據電動機工作電源的不同,可分為直流電動機和

31、交流電動機。其中交流電動機還分為單相電動機和三相電動機。</p><p>  2.按結構及工作原理分類 電動機按結構及工作原理可分為直流電動機,異步電動機和同步電動機。同步電動機還可分為永磁同步電動機、磁阻同步電動機和磁滯同布電動機。異步電動機可分為感應電動機和交流換向器電動機。感應電動機又分為三相異步電動機、單相異步電動機和罩極異步電動機等。交流換向器電動機又分為單相串勵電動機、交直流兩用電動機和推斥電

32、動機。</p><p>  3.按啟動與運行方式分類 電動機按起動與運行方式可分為電容起動式單相異步電動機、電容運轉式單相異步電動機、電容起動運轉式單相異步電動機和分相式單相異步電動機?! ?lt;/p><p>  1.2 步進電機的分類及應用</p><p>  1.2.1 步進電機的分類</p><p>  步進電機是一種感應電機,它

33、的工作原理是利用電子電路,將直流電變成分時供電的,多相時序控制電流,用這種電流為步進電機供電,步進電機才能正常工作,驅動器就是為步進電機分時供電的,多相時序控制器 </p><p>  雖然步進電機已被廣泛地應用,但步進電機并不能象普通的直流電機,交流電機在常規下使用。它必須由雙環形脈沖信號、功率驅動電路等組成控制系統方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業知識。 </

34、p><p>  步進電機作為執行元件,是機電一體化的關鍵產品之一, 廣泛應用在各種自動化控制系統中。隨著微電子和計算機技術的發展,步進電機的需求量與日俱增,在各個國民經濟領域都有應用。 </p><p>  步進電機是一種將電脈沖轉化為角位移的執行機構。通俗一點講:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(即步進角)。您可以通過控制脈沖個數來控制角位移量,

35、從而達到準確定位的目的;同時您可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。 </p><p>  步進電機分三種:永磁式(PM) ,反應式(VR)和混合式(HB)永磁式步進一般為兩相,轉矩和體積較小,步進角一般為7.5度 或15度;反應式步進一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但噪聲和振動都很大。在歐美等發達國家80年代已被淘汰;混合式步進是指混合了永磁式和反應式的優點。

36、它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為 0.72度。這種步進電機的應用最為廣泛。 </p><p>  現在比較常用的步進電機包括反應式步進電機(VR)、永磁式步進電機(PM)、混合式步進電機(HB)和單相式步進電機等。 </p><p>  永磁式步進電機一般為兩相,轉矩和體積較小,步進角一般為7.5度 或15度; </p><p>  永

37、磁式步進電動機輸出力矩大,動態性能好,但步距角大。 </p><p>  反應式步進電機一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但噪聲和振動都很大。反應式步進電機的轉子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導的變化產生轉矩。 </p><p>  反應式步進電動機結構簡單,生產成本低,步距角小,但動態性能差。 </p><p>  混合式步進電

38、動機綜合了反應式、永磁式步進電動機兩者的優點,它的步距角小,出力大,動態性能好,是目前性能最高的步進電動機。它有時也稱作永磁感應子式步進電動機。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為 0.72度。這種步進電機的應用最為廣泛。</p><p>  1.2.2 步進電動機的應用</p><p>  步進電動機多用于數控車床和機器人系統中。在現代工業,特別是航空、航天、電

39、子等領域中,要求完成的工作量大,任務復雜,精度高,利用人工操作不僅勞動強度大,生產效率低,且難以達到所要求的精度,還有一些工作環境是對人體健康有害的或人類無法到達的,這就需要數控機床和機器人來完成這些工作。另外,在計算機外設和辦公室自動化設備中也大量運用步進電機,如磁盤驅動、打印機、繪圖儀和復印機等</p><p>  1.3匯編語言簡介及應用</p><p>  1.3.1匯編語言簡介&

40、lt;/p><p>  匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語 </p><p><b>  匯編語言</b></p><p>  言,對應于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很

41、多類似于高級語言的特征,比如結構化、抽象等。在這樣的環境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經類同于高級語言?,F在的匯編環境已經如此高級,即使全部用匯編語言來編寫windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。</p><p><b>  循環組織方式</b></p><p>  

42、1.3.2匯編語言應用</p><p>  匯編語言作為最基本的編程語言之一,匯編語言雖然應用的范圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它 </p><p>  語言所無法完成的功能。就拿Linux內核來講,雖然絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關鍵地方使用了匯編代碼,其中主要是在Linux的啟動部分。由于這部分代碼與硬件的關系非常密切,即使是C語言也會有些

43、力不從心,而匯編語言則能夠很好揚長避短,最大限度地發揮硬件的性能。 </p><p>  1.70%以上的系統軟件是用匯編語言編寫的。 </p><p>  2.某些快速處理、位處理、訪問硬件設備等高效程序是用匯編語言編寫的。 </p><p>  3.某些高級繪圖程序、視頻游戲程序是用匯編語言編寫的。 </p><p>  匯編語言是理解整

44、個計算機系統的最佳起點和最有效途徑,人們經常認為匯編語言的應用范圍很小,而忽視它的重要性。其實匯編語言對每一個希望學習計算機科學與技術的人來說都是非常重要的,是不能不學習的語言。所有可編程計算機都向人們提供機器指令,通過機器指令人們能夠使用機器的邏輯功能。所有程序,不論用何種語言編制,都必須轉成機器指令,運用機器的邏輯功能,其功能才能得以實現。機器的邏輯功能,軟件系統功能構筑其上,硬件系統功能運行于下。匯編語言直接描述機器指令,比機器指

45、令容易記憶和理解。通過學習和使用匯編語言,能夠感知、體會、理解機器的邏輯功能,向上為理解各種軟件系統的原理,打下技術理論基礎;向下為掌握硬件系統的原理,打下實踐應用基礎。學習匯編語言,向上可以理解軟件,向下能夠感知硬件,是我們理解整個計算機系統的最佳起點。</p><p>  第2章 硬件電路描述</p><p>  2.1確定元器件的型號</p><p>  2.

46、1.1 AT89C51 單片機</p><p>  AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯

47、片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統提供了一種靈活性高且廉價的方案。</p><p>  圖2.1 AT89C51單片機</p><p>  2.1.2 ULN2003芯片</p><p>  單片機的輸出電流太小,不能直接連接步進電機,需要加驅動電路。對于電流小于0.5

48、A的步進電機,可以采用ULN2003類的驅動IC.</p><p>  如圖2.2所示為ULN2003系列驅動器引腳圖,圖左邊1-7引腳為輸入端,接單片機輸入端,引腳8接地;右側10-16引腳為輸入端,接步進電機,引腳9接電源+5V,該驅動器可提供最高0.5A的電流。</p><p>  圖2.2 ULN2003</p><p><b>  2.2 步進電

49、機</b></p><p>  2.2.1 永磁式步進電機</p><p>  選取35BY48S03型步進電機,內部接線圖如下:</p><p>  從圖2.4中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進電機轉動,只要輪流給各引出端通電即可。將COM端標識為C,只要AC、C、BC、

50、 C,輪流加電就能驅動步進電機運轉,加電的方式可以有多種,如果將COM端接正電源,那么只要用開關元件(如三極管),將A、 、B、 輪流接地。</p><p>  圖2.4 永磁型步進電機結構原理圖</p>

51、;<p>  2.2.2 步進電機原理以及原理圖 </p><p>  圖2.2所示。K1、K2和K3按鈕開關分別接在單片機的P3.2~P3.4</p><p>  引腳上,作為控制信號的輸入端,輸入端直接采用ULN2003驅動電路控制步進電機的轉向。</p><p>  圖2.2 ULN2003</p><p><b&g

52、t;  第3章 程序設計</b></p><p><b>  設計目的</b></p><p>  本程序通過K1、K2和K3三個按鈕開關控制步進電機轉動和改變轉向,電動機使用1-2相激磁,我將通過匯編語言,編寫程序以實現步進電機的實驗目的,編程時采用制表的方法。正轉和反轉的脈沖信號頻率是相通的故,正轉使用1相激磁法,但由于使用激磁方式不一樣,反轉使用了

53、1-2相激磁法,故反轉速度為正轉的一半。從而來控制步進電機接受一定的脈沖信號,實現連續的正轉或反轉運動。</p><p><b>  編程的步驟</b></p><p><b> ?。ㄒ唬┓治鰡栴} </b></p><p><b> ?。ǘ┐_定算法</b></p><p> 

54、?。ㄈ┊嫵绦蛄鞒虉D </p><p><b> ?。ㄋ模┚帉懗绦?</b></p><p><b> ?。ㄎ澹┥蠙C調試 </b></p><p><b>  3.1 編程</b></p><p>  編程采用制表的方法,步進電機正轉采用1相激磁方式,時序如表所示</p&

55、gt;<p>  表3-1 1相激磁方式正轉時序</p><p>  步進電機反轉采用1-2相激磁方式,時序如表</p><p>  表3-2 1-2相激磁反轉時序</p><p><b>  3.2 流程圖</b></p><p>  匯編語言程序具有4種結構形式,即順序結構、分支結構、循環結構和子程序結

56、構。 根據本次設計課題,選用分支結構: 程序分支是通過條件轉移指令實現的,即根據條件對程序的執行進行判斷,滿足條件則進行程序轉移,不滿足條件就順序執行程序。程序設計流程如圖所示:</p><p><b>  3.3 詳細程序</b></p><p>  01 K1 EQU P3.2 ;設定P3.2以K1表示&

57、lt;/p><p>  02 K2 EQU P3.3 ;設定P3.3以K2表示</p><p>  03 K3 EQU P3.4 ;設定P3.4以K3表示</p><p><b>  04 </b></p><p>  05

58、 STOP: MOV P0,#OFFH ;步進電機停止</p><p>  06 LOOP: JNB K1,Z_M2 ;是否按K1,是則正傳</p><p>  07 JNB K2,F_M2 ;是否按K2,是則反轉</p><p>  08

59、 JNB K3,STOP1 ;是否按K3,是則停止</p><p>  09 JMP LOOP ;跳轉至LOOP處</p><p><b>  10</b></p><p>  11 STOP1: ACALL DELAY

60、 ;按K3的消除抖動</p><p>  12 JNB K3,$ ;K3放開否</p><p>  13 ACALL DELAY ;放開消除抖動</p><p>  14 JMP STOP ;電機

61、停止</p><p><b>  15</b></p><p>  16 Z_M2: ACALL DELAY ;按K1的消除抖動</p><p>  17 JNB K1,$ ;K1放開否</p><p>  18

62、 ACALL DELAY ;放開消除抖動</p><p>  19 JMP Z_M ;轉至Z_M處</p><p><b>  20</b></p><p>  21 F_M2: ACALL DELAY ;按K2的消

63、除抖動 </p><p>  22 JNB K2,$ ;K2放開否</p><p>  23 ACALL DELAY ;放開消除抖動</p><p>  24 JMP F_M ;轉至F_M處,循環<

64、/p><p>  25 ;正轉子程序 </p><p>  26 Z_M: MOV R0,#00H ;正轉到TABLE取碼指針初值</p><p>  27 Z_M1: MOV A,R0 ;到TABLE取碼</p><p>  28 MOV

65、 DPTR,#TABLE ;存表</p><p>  29 MOVC A,@A+DPTR ;取表代碼</p><p>  30 JZ Z_M ;是否取到結束碼?</p><p>  31 MOV P0,A

66、 ;輸出至P0,正轉</p><p>  32 JNB K3,STOP1 ;是否按K3,是則停止運轉 </p><p>  33 JNB K2,F_M2 ;是否按K2,是則反轉</p><p>  34 ACALL DE

67、LAY ;步進電機轉速</p><p>  35 INC R0 ;取下一個碼</p><p>  36 JMP Z_M1 ;轉至Z_M處,循環</p><p>  37 RET</p><

68、;p>  38 ;反轉子程序</p><p>  39 F_M: MOV R0,#05 ;反轉到TABLE取碼指針初值</p><p>  40 F_M1: MOV A,R0 ;到TABLE取碼</p><p>  41 MOV DPTR,#T

69、ABLE ;存表</p><p>  42 MOVC A,@A+DPTR ;取表代碼</p><p>  43 JZ F_M ;是否取到結束碼?</p><p>  44 MOV P0,A ;

70、輸出至P0,反轉</p><p>  45 JNB K3,STOP1 ;是否按K3,是則停止運轉</p><p>  46 JNB K1,Z_M2 ;是否按K1,是則正轉</p><p>  47 ACALL DELAY

71、 ;步進電機轉速</p><p>  48 INC R0 ;取下一個碼</p><p>  49 JMP F_M1 ;轉至F_M1處,循環</p><p>  50 RET</p><p><b> 

72、 51</b></p><p>  52 DELAY: MOV R6,#40 ;延時時間20ms</p><p>  53 D1: MOV R7,#248</p><p>  54 DJNZ R7,$</p><p>  55

73、 DJNZ R6,D1</p><p>  56 RET</p><p>  57 ;控制碼表</p><p><b>  58 TABLE</b></p><p>  59 DB 0FCH, OF9H, 0F3H, 0F6H ;正轉</p&

74、gt;<p>  60 DB 00H ;正轉結束碼</p><p>  61 DB 0F7H, 0F3H, 0FBH, 0F9H ;反轉</p><p>  62 DB 0FDH, 0FCH, 0FEH, 0F6H</p>

75、<p>  63 DB 00H ;反轉結束碼</p><p><b>  64</b></p><p>  65 END ;程序結束</p><p>  3.3.1 代碼注解<

76、;/p><p><b>  主要標號說明</b></p><p>  LOOP: 按鍵掃描</p><p>  STOP1: K3鍵消除抖動</p><p>  Z_M2: K1鍵消除抖動</p><p>  F_M2: K2鍵消除抖動</p><p>  Z_M:

77、 反轉子程序</p><p>  F_M: 正轉子程序</p><p>  DELAY: 延時子程序</p><p>  TABLE: 控制碼表</p><p>  3.3.2 程序分析</p><p>  01~03: 將P3.2、P3.3、P3.4引腳分別用K1、K2、K3表示。</p>

78、;<p>  05: 使步進電機停止轉動。</p><p>  06~09: 對按鍵掃描。當按鍵開關未按下時,相應引腳為高電平;當開關按下時,相應引腳為低電平。所以通過循環檢測按鍵開關所連接的引腳電平的高低,就可以判斷出開關狀態。</p><p>  11: 按K3時,調延時子程序,延時一小段時間來消除按鍵時的抖動。</p><p>  12: 按鍵未

79、開放時,程序將在此等待,只有按鍵開放后,程序才會向下運行。</p><p>  13:按鍵放開時,調延時子程序,延時一小段時間來消除按鍵放開時的抖動。</p><p>  14: 當確定K3按鍵被按下又被放開后,才認定是一次有效按鍵,程序將跳轉到STOP處,執行停機語句,使電機停止轉動。</p><p>  16~19: 與上述11-14行語句原理相同,是對K1鍵按

80、下和放開時消除抖動的處理,并跳轉到Z_M處,執行正傳子程序。</p><p>  21~24: 對按K2鍵時消除抖動的處理,并跳轉到Z_M處,執行反轉子程序。</p><p>  26: 正轉子程序開始,將R0賦值為0,使取表指針指向表TABLE的第一個碼位置。</p><p>  27: 將R0值送入累加器A。</p><p>  28:

81、將編制的電機控制碼表TABLE存入特殊寄存器DPTR。</p><p>  29: 從特殊寄存器DPTR中取出第一個控制碼。</p><p>  30: 檢查是否取到結束碼,結束碼為00H。如果取到結束碼00H,JZ指令會使程序跳轉到標號Z_M處,從第一個碼開始讀??;如果取到的不是結束碼00H,程序向下運行。</p><p>  31: 將取到的數據由P0端輸出。&

82、lt;/p><p>  32: 檢查是否按K3,是則停止運轉。</p><p>  33: 檢查是否按K2,是則反轉。</p><p>  34: 調用延時子程序。此處調用延時子程序與前邊調用的不同,前邊調用延時子程序是為了消除按鍵的抖動。</p><p>  此處調用延時子程序是電機運轉兩步之間的間隔時間,決定電機的轉速,延時時間長,送入電機的

83、脈沖信號頻率低,電機轉速慢;延時時間短,送入電機的脈沖信號頻率高,電機轉速快。所以在此處改變延時時間就可以改變電機轉速。</p><p>  35: 使R0的值為1,取下一個碼。</p><p>  36:跳轉到Z_M處,開始新的循環。</p><p>  37:正轉子程序返回。</p><p>  39~50:反轉子程序。其中,第39行語句

84、將R0賦值為5,是為了取碼時從反轉控制碼中第一個碼開始讀取。</p><p>  52~56:延時子程序,延時的時間為20ms。</p><p>  58~63:步進電機激磁信號編碼表。其中第59行為電機正轉一相激磁碼;第60行為正轉結束碼;第61、62行為反轉1-2激磁碼;第63行為反轉結束碼。</p><p><b>  65:程序結束。</b&

85、gt;</p><p><b>  參考文獻</b></p><p>  《單片機應用技術》 北京理工大學出版社 倪志蓮 </p><p>  《單片機實訓教程》 北京大學出版社 張營輝、貢雪梅</p><p>  《單片機原理與應用設計》 電子工業出版社 張毅剛、彭

86、喜元</p><p>  《基于Proteus的單片機應用技術》 電子工業出版社 江世明</p><p>  《51單片機開發入門與典型實例》 人民郵電出版社 王守中、聶元銘</p><p>  《開發技術實例單片機》 機械工業出版社 張元良 王建軍 </p><p>  《單片機設計案例時間教程》

87、 北京郵電大學出版社 王慶利 袁建敏</p><p>  《匯編語言程序設計》 清華大學出版社 王爽</p><p><b>  致謝詞</b></p><p>  在本文完成之際,無論我的設計是否能夠真的投入使用,這里面每一個控件的繪制,每一行語句的調試,每一段文本的輸入之中都有我辛勤的汗水。半年的設計時間雖然短暫,我卻

88、從中學到了很多的東西。我由衷地感謝關懷、教誨、幫助、支持和鼓勵我完成學業的老師、朋友和親人.。在這次課程設計的撰寫過程中,我得到了許多人的幫助。</p><p>  課程設計是對我們知識運用能力的一次全面的考核,也是對我們進行科學研究基本功的訓練,培養我們綜合運用所學知識獨立地分析問題和解決問題的能力,為以后撰寫專業學術論文和工作打下良好的基礎。</p><p>  特別感謝我的導師xx老

89、師,三個星期以來他在學習、科研上一直對我悉心指導,嚴格要求、熱情鼓勵,為我創造了很多鍛煉提高的機會。X老師洞察全局、高屋建瓴,為我的課程設計的順利完成指出了很好的方向,老師們淵博的知識、寬廣無私的胸懷、夜以繼日的工作態度、對事業的執著追求、誨人不倦的教師風范和對問題的敏銳觀察力,都將使我畢生受益。</p><p>  在此我謹向我的導師以及在畢業設計過程中給予我很大幫助的老師、同學們致以最誠摯的謝意!</p

90、><p>  附錄(匯編語言常用指令)</p><p><b>  數據傳送指令集 </b></p><p><b>  MOV</b></p><p>  功能: 把源操作數送給目的操作數</p><p>  語法: MOV 目的操作數,源操作數</p><

91、p>  格式: MOV r1,r2</p><p><b>  MOV r,m</b></p><p><b>  MOV m,r</b></p><p>  MOV r,data</p><p><b>  位運算指令集 </b></p><p>

92、;  AND,OR,XOR,NOT,TEST</p><p>  功能: 執行BIT與BIT之間的邏輯運算</p><p>  語法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m</p><p>  影響標志: C,O,P,Z,S(其中C與O兩個標志會被設為0

93、) NOT指令不影響任何標志位</p><p><b>  JMP</b></p><p>  功能: 跳往指定地址執行</p><p>  語法: JMP 地址</p><p><b>  LOOP</b></p><p><b>  功能: 循環指令集</

94、b></p><p>  語法: LOOP 地址</p><p><b>  LOOPE(Z)</b></p><p>  地址 LOOPNE(Z) 地址</p><p><b>  標志位: 無</b></p><p><b>  CALL,RET</

95、b></p><p>  功能: 子程序調用,返回指令</p><p>  語法: CALL 地址 RET RET n</p><p><b>  標志位: 無</b></p><p>  REP,REPE,REPNE</p><p>  功能: 重復前綴指令集</p><

96、;p>  語法: REP 指令S REPE 指令S REPNE 指令S</p><p>  標志位: 依指令S而定</p><p>  5)控制轉移指令:用來控制程序的執行流程。 </p><p>  控制轉移指令類型 指 令 說 明</p><p>  無條件轉移指令 JMP(段間和段內轉移)</p><p&

97、gt;  條件轉移指令 JZ(結果為0(或相等)則轉移)、JS(結果為負則轉移)、JNS(結果為正則轉移)、JO(溢出則轉移)、JNO(不溢出則轉移)、JP(奇偶位為1則轉移)、JNP(奇偶位為0則轉移)</p><p>  循環指令 LOOP(循環指令)、LOOPPZ/LOOPE(當為0或相等時循環指令)、LOOPNZ/LOOPNE(當不為0或不相等時循環指令)</p><p>  子程

溫馨提示

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

評論

0/150

提交評論