畢業(yè)論文---單片機控制直流電機速度的實時控制設計_第1頁
已閱讀1頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  畢 業(yè) 設 計 任 務 書</p><p>  設計題目:單片機控制直流電機速度的實時控制設計</p><p><b> ?。ㄜ浖?</b></p><p><b>  設計目的</b></p><p>  通過設計單片機對直流電機速度的實時控制使學生掌握單片機及外圍電路的設

2、計方法和單片機軟件的設計、編輯、仿真、調試;培養(yǎng)獨立查閱資料,學會電子元器件的選型,并用硬件電路驗證自己結論的能力;培養(yǎng)團隊合作意識,結合已學理論知識,從設計過程中不斷提高應用系統(tǒng)的設計能力和獨立解決問題的能力,達到既能綜合鞏固運用所學理論知識又能真正提高實際動手能力的目的。 </p><p><b>  二. 設計內容</b></p><p>  用555定時器產生

3、實時控制信號,用軟件實現(xiàn)不同頻率信號到不同脈寬信號的對應轉換,并通過正反轉按鍵和PWM信號脈寬控制直流電機的轉動方向和速度。</p><p><b>  任務與要求</b></p><p>  1.查閱并熟悉各種常用單片機芯片的功能及指令系統(tǒng),并掌握其實際應用的方法,主要是MCS—51系列。</p><p>  2.了解單片機指令集和單片機匯編

4、語言。</p><p>  3.用單片機的端口輸出PWM控制信號。</p><p>  3.找到現(xiàn)實PWM控制應用的結合點,讓自己的設計具有實用性。</p><p>  4.畫出程序流程圖。</p><p>  5. 熟悉Proteus等仿真軟件和硬件結合應用之前先進性系統(tǒng)仿真看能否達到所要求的控制目的。</p><p&g

5、t;  6.進一步修改程序使其成為一套功能完善的單片機軟件。</p><p>  7.和做硬件部分的同學協(xié)作進行軟硬件的調試</p><p>  8. 閱讀參考資料、文獻及論文,編寫本設計的開題報告。</p><p>  9.撰寫規(guī)范論文并請指導老師審閱。</p><p>  10.按要求閱讀2000字以上的外文資料。</p>

6、<p><b>  時間安排</b></p><p><b>  應用系統(tǒng)</b></p><p>  單片機實現(xiàn)直流電機速度的實時控制在實際中的應用</p><p><b>  參考資料</b></p><p>  1,房小翠 王金鳳編著,單片機實用系統(tǒng)設計技術,國

7、防工業(yè)出版社。</p><p>  2 大學生畢業(yè)設計指導系列資料。</p><p>  3.Protel軟件可以從http://www.ncwu.edu.cn/的資料下載中下載。</p><p>  4.Proteus 仿真軟件可從www.proteus.com.cn中下載。</p><p>  3.期刊:《電力電子技術》、《計算機應用》

8、、《小型微型計算機系統(tǒng)》、《計算機測量與控制》等。</p><p>  4.李華主編,MCS-51系列單片機實用接口技術,北京航空航天大學出版社。</p><p>  5.其它單片機技術教材及資料。</p><p>  2008年 3 月 21 日</p><p>  單片機控制直流電機速度的實時控制設計(軟件)</p>

9、<p><b>  摘 要</b></p><p>  由于計算機技術的快速發(fā)展及其在控制系統(tǒng)中的廣泛應用,以及設備向小型化、智能化方向的發(fā)展,作為高新技術之一的單片機以其體積小、功能強、價格低廉、使用靈活等優(yōu)勢,顯示出了很強的生命力。從航空航天,地質石油,冶金采礦,機械電子等行業(yè)的分布體系與智能控制以及機電一體化設備和產品到郵電通信,日用設備和機械,單片機都發(fā)揮了巨大作用

10、。本文主要介紹了單片機在控制直流電機速度方面的應用。</p><p>  隨著人們生活水平的不斷提高,各種智能化的產品日益走入尋常百姓家。為了實現(xiàn)產品的便攜性、低成本以及對電源的限制,小型直流電機的應用越來越受到大家的歡迎。本文介紹了用555定時器產生不同頻率的輸入信號,用不同頻段的信號控制PWM信號脈寬,再用PWM信號的不同脈寬控制電機轉速,以此達到用單片機控制直流電機轉動的目的,為直流電機速度控制系統(tǒng)的實現(xiàn)提

11、供了一種有效的方法。</p><p>  本文主要論述了課題開發(fā)背景、目的和意義,仿真工具Proteus和編程所用的語言、系統(tǒng)實現(xiàn)原理、系統(tǒng)軟件設計,以及軟硬件的調試。本系統(tǒng)是以單片機的基本語言C語言來進行軟件設計的,生成的目標代碼質量高,程序執(zhí)行效率高,可移植性好。為了便于編寫,調用和修改,軟件的設計采用模塊化結構,使程序設計的邏輯關系更加簡潔明了,使硬件在軟件的控制下按要求運作。系統(tǒng)調試主要介紹了基本的軟件和

12、軟硬件系統(tǒng)調試的方法和步驟。最后對做設計過程中碰到問題和心得進行了總結。完成該系統(tǒng)的設計和制作需要綜合大學幾乎所有的專業(yè)知識,特別是單片機知識要融會貫通,還要不斷的學習,不斷的查閱資料,不斷的跟老師同學請教,這次畢業(yè)設計讓我學會了很多東西,也是對大學學習的一次系統(tǒng)總結,具有很深遠的意義。</p><p>  關鍵字:單片機系統(tǒng);PWM脈寬調制;直流電機調速</p><p><b>

13、;  Abstract </b></p><p>  Because computer technology's fast development and in control system's widespread application, as well as the equipment to the miniaturization, the intellectualized di

14、rection develops, monolithic integrated circuit as one of the high technology and new technologies is small by its volume, the function is strong, low in price, use nimble and so on superiority, demonstrated the very str

15、ong vitality. From the aerospace, the geological petroleum, metallurgy mining, profession and so on mechanical el</p><p>  Along with the people living standard's unceasing enhancement, each kind of inte

16、llectualization's product walks into the common family day by day. In order to realize the product portability, the low cost as well as to the limitation of power source, the small direct current machine application

17、receives everybody's welcome more and more. This article introduced produces the different frequency input signal with 555 timers, with the different frequency band's signal control PWM signal pulse width</p&g

18、t;<p>  This article mainly elaborated the topic development background, the goal and the significance, the programming uses language, the system simulation tool Proteus and the programming use realizes the princi

19、ple, the system software design, as well as software and hardware's debugging. This system is carries on the software design by monolithic integrated circuit's elementary language C language, the production targe

20、t code quality is high, the program execution efficiency is high, the probability i</p><p>  Key word: Monolithic integrated circuit system; PWM pulse-duration modulation; direct current machine modulates ve

21、locity </p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p>  第1章 緒 論1</p><p><b>  1.1 背景1</b

22、></p><p>  1.2 目的和意義2</p><p>  1.3 開發(fā)工具和語言3</p><p>  1.3.1開發(fā)工具3</p><p>  1.3.2 語言選擇4</p><p>  第2章 方案論證與系統(tǒng)原理6</p><p>  2.1 方案論證6</

23、p><p>  2.2 系統(tǒng)實現(xiàn)原理6</p><p>  2.2.1 定時器計數(shù)器原理介紹7</p><p>  2.2.2 中斷部分基本原理9</p><p>  2.2.3 單片機應用系統(tǒng)的開發(fā)過程10</p><p>  第3章 程序設計基本步驟12</p><p>  3.1

24、程序的編寫12</p><p>  3.2 程序的編輯、編譯和運行13</p><p>  第4章 軟件設計16</p><p>  4.1程序總體流程圖16</p><p>  4.2 軟件各子模塊設計18</p><p>  4.2.1 主程序模塊18</p><p>  4.2

25、.2 正反轉PWM加速輸出流程圖及代碼22</p><p>  4.2.3 變量定義函數(shù)26</p><p>  4.2.4 鍵盤掃描函數(shù)27</p><p>  4.2.5毫秒延時函數(shù)28</p><p>  4.2.6 LED顯示函數(shù)28</p><p>  第5章 軟硬件調試29</p>

26、<p>  5.1 軟件調試方法29</p><p>  5.2 軟硬件系統(tǒng)調試方法29</p><p>  5.3 本次設計過程中遇到的問題30</p><p><b>  結 束 語31</b></p><p><b>  致 謝32</b></p>&

27、lt;p>  參 考 文 獻33</p><p><b>  附錄一34</b></p><p><b>  英文原文34</b></p><p><b>  譯文39</b></p><p><b>  附錄二44</b></p&g

28、t;<p><b>  源程序44</b></p><p>  第1章 緒 論</p><p><b>  1.1 背景</b></p><p>  單片機有非常廣泛的應用領域。由于其體積小,價格低,具有邏輯判斷、定時計數(shù)、程序控制等多種功能,在各個領域、各個行業(yè)都得到了廣泛應用,不僅有常用的8位機,

29、而且4位單片機和16單片機也得到了普及,年銷售量逐年增加,至1995年世界范圍內銷售量就達近億塊,掩膜產品就超過了2000萬塊。</p><p>  (1) 機電一體化產品的核心控制</p><p>  機電一體化產品是機械設備發(fā)展的方向。用單片機代替常規(guī)的邏輯順序控制,差補控制,簡化了機械設計,提高了控制性能,當前所生產的許多產品,如數(shù)控機床,鉆床,線切割機,甚至加工中心等機械設備,都是

30、采用這樣一種方式??删幊添樞蚩刂破饕彩且粋€典型的機械控制器,其核心往往就是有一個單片機構成。最典型的機電產品機器人,每個關節(jié)或動作部位都是一個單片機控制系統(tǒng)。</p><p>  (2) 數(shù)據(jù)采集系統(tǒng)的現(xiàn)場采集單元</p><p>  大的數(shù)據(jù)采集系統(tǒng),要求數(shù)據(jù)采集的同步性和實時性要好,使用快速計算機順序采集,也存在不能快速采集,實時性不好的缺點,以致會造成計算處理上的誤差以及分析系統(tǒng)中的

31、困難。使用單片機作為系統(tǒng)的前端采集單元,由主控計算機同時發(fā)出采集命令,當采集完后,將采集到的數(shù)據(jù)逐一送到主計算機進行處理,如有些氣象部門,油田采集部門以及電廠等均可采用這種系統(tǒng)。 </p><p>  (3) 分布控制系統(tǒng)的前端控制器</p><p>  隨著單片機技術的飛速發(fā)展及其性能的不斷提高,其作為直接控制級在計算機分布控制中越來越發(fā)揮出重要作用,在過程控制中往往要控制一個生產過程。

32、根據(jù)物料流程,有多個加工工序,每一個工序都要根據(jù)總的流程精加工或者操作,單片機就可作為這個分步操作或控制的控制器,進行數(shù)據(jù)采集,反饋計算,數(shù)據(jù)輸出,并在上級計算機命令指揮下進行相應協(xié)調工作。</p><p>  (4) 智能化儀表的機芯</p><p>  自動化儀表的智能化程度越來越高,單片機的應用使這種功能如虎添翼,如自動計費電度表,燃氣表中已有這方面的應用,許多工業(yè)儀表中的智能流量計

33、,智能分析儀,成分分析儀等也采用了這項技術。</p><p>  (5) 消費類電子產品控制</p><p>  該應用主要反映在家電領域,如洗衣機,空調器,汽車電子,保安系統(tǒng),電視機,錄像機,VCD視盤機,音響設備,電子稱,IC卡,手機,BP機等。在這些系統(tǒng)中使用了單片機機芯之后,使其控制功能和性能大大提高,并實現(xiàn)了智能化,最優(yōu)化控制。 </p><p>  隨著

34、家用電器產品變頻技術的發(fā)展,電機的變頻調速已經(jīng)成為一種可行性的方法,在這種調速系統(tǒng)中,脈寬調制(PWM)技術仍然是提高調速性能的主要手段。雖然PWM技術的實現(xiàn)方法很多,然而,為了降低產品的制造成本,采用微機控制軟件實現(xiàn)PWM控制具有成本低、調制方式靈活等特點,比較適合于家用電器產品的要求。本次設計將提出在51系列單片機基礎上改進后的80C52采用PWM軟件控制的方法來實現(xiàn)電機轉動控制。其PWM算法簡單,易于實現(xiàn),是一種較為實用的方法。8

35、0C52與80C51相比還增加了一個定時/ 計數(shù)器、中斷源從5個增加到 6個,將程序存儲空間增加到 8KB,數(shù)據(jù)存儲器增加到256 字節(jié)地址,更強大的地址空間,和更多的定時中斷資源為設計提供了很大的方便,也為提高系統(tǒng)的控制性能提供了基礎</p><p>  1.2 目的和意義 </p><p>  隨著科技的高速發(fā)展,單片機技術也不斷發(fā)展,單片機能實現(xiàn)更加靈活的邏輯控制功能,具有很強的數(shù)據(jù)

36、處理能力。通過本次設計讓我對許多知識有了更深的了解:</p><p> ?。?)80C51為內核的單片機系列目前在世界上生產量最大、派生產品最多,可以滿足大多數(shù)用戶的需要,并且有些16位機,如80C251和80C51XA等系列也是以80C51向上兼容的。 80C52是INTEL公司MCS-51系列單片機中基本的產品,它采用INTEL公司可靠的CHMOS工藝技術制造的高性能8位單片機,屬于標準的MCS-5

37、1的HCMOS產品。它結合了HMOS的高速和高密度技術及CHMOS的低功耗特征,它基于標準的MCS-51單片機體系結構和指令系統(tǒng),屬于80C51增強型單片機版本,集成了時鐘輸出和向上或向下計數(shù)器等更多的功能,適合于類似馬達控制等應用場合。</p><p> ?。?)隨著硬件的發(fā)展,80C51軟件工具也取得很大的發(fā)展,80C51系列已形成從低到高的不同檔次、價格合理的開發(fā)裝置。通過參閱資料不斷學習,加深了對51系列

38、單片機的硬件結構、工作原理、指令系統(tǒng)、C語言程序設計、接口技術等知識的了解。</p><p> ?。?)在編寫調試程序的過程中又對單片機基礎知識進行了一次系統(tǒng)的學習,對C語言和匯編語言編程的優(yōu)缺點有了更進一步的了解,用C語言編程原來從不敢嘗試,通過這段時間的反復學習終于掌握了一定的編程方法和技巧,通過本次畢業(yè)設計,綜合運用所學專業(yè)知識分析、解決實際問題,掌握文獻檢索、資料查詢的基本方法以及獲取新知識的能力,書面和

39、口頭表達的能力,以及團結協(xié)作的能力也得到了訓練和提高。</p><p>  1.3 開發(fā)工具和語言</p><p><b>  1.3.1開發(fā)工具</b></p><p>  本次設計的硬件部分電路是由我的搭檔完成的,軟件仿真是用單片機程序設計的專業(yè)仿真軟件Proteus ,原因就是其功能強大,操作方便,人性化設計,</p>&l

40、t;p>  (1) 全新的用戶界面:</p><p>  鼠標移動到對象上方時,會有可視化提示。不同的鼠標指針類型顯示該對象將進行的不同操作,高效率非模態(tài)選擇、布線。 便利的鼠標運用——左鍵選取、放置,右鍵提示菜單。更加便捷的塊操作方式,可調整選取區(qū)域及可定義的拾取點。改進的鼠標滾輪的搖擺及縮放工具,使得設計導航操作更加便捷。</p><p>  (2) 全新的設計瀏覽器:</

41、p><p>  設計瀏覽器是Proteus 特有的一種工具,它提供Windows 風格的用戶界面,用戶可以利用它就設計的不同層次進行導航和檢查。它不僅可以查詢一個原理圖現(xiàn)有狀態(tài),以此來判斷元件連接、封裝的正誤。同樣可以導航原理圖及PCB 間任何感興趣的條目(通過對PCB 封裝的交叉探測或者一個封裝網(wǎng)絡信息進行)。</p><p>  (3)全新的仿真顧問: 結構化的仿真信息顯示,根據(jù)問

42、題嚴重性的彩色信息提示,信息包含源信息和時間信息,用戶可根據(jù)需要采用交叉探測返回源器件或網(wǎng)絡,帶文本幫助的錯誤信息有助于解決仿真故障。 (4)全新的仿真診斷系統(tǒng): 提供對仿真運行跟蹤模式的完全控制,關于系統(tǒng)信息、CPU及外設的詳盡診斷信息,可以在警告、每個分組的跟蹤或調試時使能診斷,強大的調試幫助包括仿真行為的完整文本報告。</p><p>  1.3.2 語言選擇</p><

43、p>  目前通用的編程語言一般有兩種:匯編語言和C語言 :</p><p>  匯編語言優(yōu)點:1.快 2.效率高 3.與硬件接近效率高 4.程序簡單執(zhí)行速度快;缺點:1.匯編語言依賴于具體的機型,不能通用,也不能在不同機型之間移植,而且程序員要寫大量的代碼。2.編寫程序速度慢,難度大。 </p><p>  C語言應用和發(fā)展非常迅速,而且有強大的生命力。一種語言之所以能存在和發(fā)展,并

44、具有生命力,總是有其不同于(或優(yōu)于)其他語言的特點。C語言的主要特點如下:</p><p>  (1) 語言簡潔、緊湊,使用方便、靈活。</p><p>  C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。因此C程序比較簡練,源程序短,輸入程序時工作量少。</p><p>  (2) 運算符豐富。 </p

45、><p>  C的運算符包含的范圍很廣泛,共有34種運算符,C把括號、賦值、強制類型轉換等都作為運算符處理,從而使c的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運算。</p><p>  (3) 數(shù)據(jù)結構豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結構。</p><p>  C的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結構體類型

46、、共用體類型等。能用來實現(xiàn)各種復雜的數(shù)據(jù)結構(如鏈表、樹、棧等)的運算,尤其是指針類型數(shù)據(jù),使用起來比PASCAL更為靈活、多樣。 </p><p>  (4) 具有結構化的控制語句</p><p>  如if…else語句、while語句、do…while語句、switch語句、for語句等,用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。C是理想的結構化語言,符合現(xiàn)代編

47、程風格的要求。</p><p>  (5) 語法限制不太嚴格,程序設計自由度大。</p><p>  例如對數(shù)組下標越界不做檢查,由程序編寫者自己保證程序的正確。對變量的類型使用比較靈活,例如整型量與字符型數(shù)據(jù)以及邏輯型數(shù)據(jù)可以通用。</p><p>  (6) C語言允許直接訪問物理地址。</p><p>  能進行位(bit)操作,能實現(xiàn)

48、匯編語言的大部分功能,可以直接對硬件進行操作。因此,C既具有高級語言的功能,又具有低級語言的許多功能,可用來寫系統(tǒng)軟件。C語言的這種雙重性,使它既是成功的系統(tǒng)描述語言,又是通用的程序設計語言。有人把C稱為“高級語言中的低級語言”或“中級語言”,意為兼有高級和低級語言的特點。</p><p>  (7) 生成的目標代碼質量高,程序執(zhí)行效率高。</p><p>  一般只比匯編程序生成的目標代

49、碼效率低10%—20%。 </p><p>  (8)用C語言寫的程序可移植性好(與匯編語言相比)。</p><p>  基本上不做修改就能用于各種型號的計算機和各種操作系統(tǒng)。</p><p>  鑒于以上C語言和匯編語言的比較,本次設計采用C語言</p><p>  第2章 方案論證與系統(tǒng)原理</p><p><

50、;b>  2.1 方案論證</b></p><p>  我們在確定開發(fā)題目后,要先進行方案論證,這個過程非常重要,制定出一個好的方案會使我們后面的開發(fā)工作較為順利。在調研論證中我們主要解決以下幾個問題:</p><p> ?。?)了解本設計的需求,確定設計規(guī)模和總體框架。</p><p> ?。?)摸清軟硬件的技術難度,明確技術主攻問題。<

51、/p><p> ?。?)針對主攻問題開展調研工作,查找有關資料,確定初步方案。</p><p> ?。?)單片機應用開發(fā)技術是軟硬件結合的技術,方案設計要權衡任務的軟硬件分工。有時硬件設計會影響到軟件程序結構。如果系統(tǒng)中增加某個硬件接口芯片,而給系統(tǒng)程序的模塊化帶來了可能和方便,那么這個硬件開銷是值得的。但在無礙大局的情況下,以軟件代替硬件才是我們設計的最佳選擇。</p><

52、;p> ?。?)我們在設計中應該盡量采用可借鑒的成熟技術,以減少重復性勞動。</p><p>  在直流電機驅動的軟件設計中,主要考慮以下幾點:</p><p>  功能:如何用軟件控制電機轉向?如何用軟件實現(xiàn)電機的加速減速?輸入信號由555定時器產生,控制電機速度的是PWM信號,如何進行轉換?555定時器信號的頻率和PWM信號的脈寬如何進行對應?綜合考慮了一下整個程序要求決定用C語

53、言分塊編程,定義一個函數(shù)實現(xiàn)555定時器產生的信號頻率到PWM信號脈寬的對應轉換,子程序有啟動,正轉,反轉,加速,減速,等各個模塊,本設計的軟件系統(tǒng)采用模塊化的設計思想來實現(xiàn)測頻。模塊化設計是將一個大的程序按功能分割成一些小的模塊,各個模塊相對獨立、功能單一、結構清晰、接口簡單。利用這種模塊化設計有許多優(yōu)點;降低了程序設計的復雜性;提高了元件的可靠性;縮短了開發(fā)周期;避免程序開發(fā)的重復勞動;易于維護和功能擴展。</p>&

54、lt;p>  2.2 系統(tǒng)實現(xiàn)原理</p><p>  單片機應用系統(tǒng)有軟件和硬件兩部分組成。硬件是指單片機CPU、擴展存儲器、輸入/輸出接口電路及設備等組成的電路系統(tǒng)。軟件是在硬件的基礎上來滿足用戶需求的系統(tǒng)功能控制邏輯,對于單片機如果沒有軟件系統(tǒng),系統(tǒng)功能無法實現(xiàn),軟件包括監(jiān)控程序和各種應用程序。硬件和軟件只有密切配合、協(xié)調一致,才能構成一個功能完善、工作可靠的單片機應用系統(tǒng),所有帶單片機的電子設備,

55、它的工作原理當然與具體設備有關。但它的最基本的原理是一樣的,即: </p><p>  (1) 從輸入接口接收來自外界的信息存入存儲器。 </p><p>  這些信息主要包括二部分:來自諸如溫度壓力等傳感器的信息;來自人工干預的一些手動信息,外部信息輸入等操作。</p><p>  (2) 單片機中的CPU根據(jù)程序對輸入的數(shù)據(jù)進行高速運算處理。 </p>

56、;<p>  (3) 將運算處理的結果通過輸出接口送去控制執(zhí)行機構。</p><p>  如繼電器,電機,LED顯示電路等。 </p><p>  當前這個過程不斷重復著,即系統(tǒng)中的微電腦不斷監(jiān)視著各種信息,并及時做出不同的處理使系統(tǒng)正常運行。</p><p>  因本次設計我負責的是軟件部分,而且很多地方用到中斷和定時,所以先說一下定時中斷部分的基本

57、原理,本次編程過程中所采用的定時中斷方式,以及單片機開發(fā)的一般流程做一個詳細介紹</p><p>  2.2.1 定時器計數(shù)器原理介紹</p><p>  通常采用以下三種方法來實現(xiàn)定時或計數(shù):硬件法,軟件法,可編程定時器/計數(shù)器,目前單片微機中往往已配備了定時器/計數(shù)器(timer/counter)。</p><p>  80C51芯片內包含有兩個16位的定時器/

58、計數(shù)器:T0和T1;而80C52包含有三個16位的定時器/計數(shù)器:T0、T1和T2;在80C51系列的部分產品(如Philips公司的80C552)中,還包含有一個用做看門狗的8位定時器(T3)。</p><p>  定時器/計數(shù)器的核心是一個加1計數(shù)器.其基本功能是計數(shù)加1。</p><p>  (1) 定時器/計數(shù)器T0、T1</p><p>  定時器/計數(shù)器

59、T0、T1由以下幾部分組成: </p><p>  計數(shù)器TH0、TL0和TH1、TL1;</p><p>  特殊功能寄存器TMOD、TCON;</p><p><b>  時鐘分頻器;</b></p><p>  輸入引腳T0、T1。</p><p> ?。?) 與定時器/計數(shù)器T0

60、、T1有關的特殊功能寄存器</p><p>  定時器/計數(shù)器T0、T1 的方式寄存器——TMOD,字節(jié)地址為89H。</p><p>  TMOD的格式如下:低4位用來定義T0,高4位用來定義T1</p><p>  D7 D6 D5 D4 D3 D2 D1 D0</p><

61、p><b>  各位的意義如下:</b></p><p>  GATE——門控位。</p><p>  GATE=1時,由外部中斷引腳、和TR0、TR1共同來啟動定時器。當引腳為高電平時,TR0置位啟動定時器T0; TR1置位,啟動定時器T1。 </p><p>  GATE=0時,僅由TR0和TR1置位來啟動定時器T0和T1。 &l

62、t;/p><p>  C/T——功能選擇位。</p><p>  C/T=1時,選擇計數(shù)功能;C/T=0時,選擇定時功能。</p><p>  T0、T1 的計數(shù)、定時功能是通過TMOD中的位來選擇的。</p><p>  ① 定時器,設置C/T=0</p><p>  計數(shù)輸入信號是內部時鐘脈沖,每個機器周期使寄存器的值

63、增1。每個機器周期等于12個振蕩周期,故計數(shù)速率為振蕩周期的1/12。當采用12MHz的晶體時,計數(shù)速率為1MHz。定時器的定時時間,與系統(tǒng)的振蕩頻率fosc、計數(shù)器的長度和初始值等有關。</p><p> ?、?計數(shù)器,設置C/T=1</p><p>  這時通過引腳T0(P3.4)和T1(P3.5)對外部信號進行計數(shù)。在每個機器周期的S5P2期間,CPU采樣引腳的輸入電平。若前一機器周

64、期采樣值為1,下一機器周期采樣值為0,則計數(shù)器增1,此后的機器周期S3P1期間,新的計數(shù)值裝入計數(shù)器。所以檢測一個1到0的跳變 需要兩個機器周期,故計數(shù)脈沖頻率不能高于振蕩脈沖頻率的1/24。</p><p>  M1、M0——工作方式選擇位。</p><p>  由于有M1和M0兩位,可以有四種工作方式</p><p>  方式0:13位定時計數(shù)器,TMOD中的M

65、1=0,M0=0</p><p>  方式1:16位定時器/計數(shù)器,TMOD中的M1=0、M0=l</p><p>  方式2:定時常數(shù)自動重裝載的8位定時器/計數(shù)器,TMOD中的M1=1、M0=0</p><p>  方式3 :T0分為一個8位定時器/計數(shù)器和一個 8位定時器,TL0用于 8位定時器/計數(shù)器,TH0用于8位定時器。TMOD中的M1=l、M0=1&l

66、t;/p><p>  (3) 定時器/計數(shù)器T2 </p><p>  80C52中的T2是一個16位的、具有自動重裝載和捕獲能力的定時器/計數(shù)器。在T2的內部,除了兩個8位計數(shù)器TL2、TH2和控制寄存器T2 TCON及T2 TMOD之外,還設置有捕獲寄存器RCAP2L(低字節(jié))和RCAP2H(高字節(jié))。T2的計數(shù)脈沖源可以有兩個:一個是內部機器周期,另一個是由T2(P1.0)端輸入的外部計

67、數(shù)脈沖。T2像T0、T1一樣,既可用做定時器,也可用做計數(shù)器,由T2 TCON中的C/T位的電平所決定。T2有3種工作方式∶自動重裝載、俘獲和波特率發(fā)生器方式,由T2 TCON中相關位決定。</p><p>  2.2.2 中斷部分基本原理</p><p>  中斷的概念:中斷是指程序執(zhí)行過程中,允許外部或內部事件通過硬件打斷程序的執(zhí)行,使其轉向為處理外部或內部事件的中斷服務程序中去;完成

68、中斷服務程序后,CPU繼續(xù)原來被打斷的程序,這樣的過程稱為中斷響應過程</p><p> ?。?)中斷的主要功能</p><p> ?、?實現(xiàn)CPU與外部設備的速度配合</p><p>  由于應用系統(tǒng)的許多外部設備速度較慢,可以通過中斷的方法來協(xié)調快速CPU與慢速外部設備之間的工作。</p><p><b> ?、?實現(xiàn)實時控制&

69、lt;/b></p><p>  在單片微機中,依靠中斷技術能實現(xiàn)實時控制。實時控制要求計算機能及時完成被控對象隨機提出的分析和計算任務。在自動控制系統(tǒng)中,要求各控制參量隨機地在任何時刻可向計算機發(fā)出請求,CPU必須做出快速響應、及時處理。</p><p> ?、?實現(xiàn)故障的及時發(fā)現(xiàn)及處理</p><p>  單片微機應用中由于外界的干擾、硬件或軟件設計中存在

70、問題等因素,在實際運行中會出現(xiàn)硬件故障、運算錯誤、程序運行故障等,有了中斷技術,計算機就能及時發(fā)現(xiàn)故障并自動處理。</p><p><b>  ⒋ 實現(xiàn)人機聯(lián)系</b></p><p>  比如通過鍵盤向單片微機發(fā)出中斷請求,可以實時干預計算機的工作。</p><p><b>  (2)中斷源</b></p>

71、<p>  80C51中有五個中斷源;80C52中增加了一個中斷源——定時器/計數(shù)器T2,即有六個中斷源。每一個中斷源都能被程控為高優(yōu)先級或低優(yōu)先級。80C51的五個中斷源中包括二個外部中斷源和三個內部中斷源。</p><p>  二個外部中斷源INT0和INT1,外部設備的中斷請求信號、掉電等故障信號都可以從INT0或INT1引腳輸入。</p><p>  三個內部中斷源為定

72、時器/計數(shù)器T0和T1的定時/計數(shù)溢出中斷源和串行口發(fā)送或接收中斷源。</p><p>  2.2.3 單片機應用系統(tǒng)的開發(fā)過程</p><p>  (1) 單片機軟硬件開發(fā)流程如圖(2—1)所示:</p><p>  圖2—1單片機軟硬件開發(fā)流程 </p><p><b> ?。?)控制系統(tǒng)組成</b></p

73、><p>  PWM控制電機轉速系統(tǒng)由單片機80C52,單片機控制電路,電機驅動電路和系統(tǒng)軟件所組成(如圖2--2)</p><p>  圖2—2控制系統(tǒng)組成</p><p><b>  (3) 總體設計</b></p><p>  我們通過555定時器給單片機產生輸入信號,用兩個按鍵控制電機的轉動停止和正反轉,用PWM信號

74、占空比控制電機轉速??傮w設計結構圖(如圖2--3)</p><p>  圖2—3總體設計結構圖</p><p>  第3章 程序設計基本步驟</p><p><b>  3.1 程序的編寫</b></p><p><b>  第一步: 分析問題</b></p><p>  在

75、這一步, 必須: (1) 作為解決問題的一種方法, 確定要產生的數(shù)據(jù)(輸出)——PWM信號的占空比。 作為這一子步的一部分, 應定義表示輸出的變量。 (2) 確定需產生輸出的數(shù)據(jù)(稱為輸入)555定時器產生不同頻率信號, 作為這一子步的一部分, 還應定義表示輸入的變量。 (3) 研制一種算法, 從有限步的輸入中獲取輸出。 這種算法定義為結構化的順序操作, 以便在有限步內解決問題。就數(shù)字問題而言, 這種算法包括獲取

76、輸出數(shù)據(jù)的計算, 但對非數(shù)字問題來說, 這種算法包括許多文本和圖象處理的操作。</p><p>  第二步: 畫出程序的基本輪廓</p><p>  在這一步,要用一些句子(偽代碼)來畫出程序的基本輪廓。每個句子對應一個簡單的程序操作。對一個簡單的程序來說, 通過列出程序順序執(zhí)行的動作,便可直接產生偽代碼。然而, 對復雜一些的程序來說, 則需要將大致過程有條理地進行組織。對此, 應使用自上

77、而下的設計方法。當使用自上而下的設計方法時, 你要把程序分割成幾段來完成。列出每段要實現(xiàn)的任務, 程序的輪廓也就有了, 這稱之為主模塊。當一項任務列在主模塊時,僅用其名加以標識, 并未指出該任務將如何完成。這方面的內容留給程序設計的下一階段來討論。將程序分為幾項任務只是對程序的初步設計。整個程序流程圖如圖4—1所示(軟件設計部分要寫,這里先不畫)</p><p>  如果把主模塊的每項任務擴展成一個模塊, 并根據(jù)

78、子任務進行定義的話, 那么, 程序設計就更為詳細了。這些模塊稱為主模塊的子模塊,將各個模塊求精, 達到第三級設計。繼續(xù)這一過程, 直至說明程序的全部細節(jié)。這一級一級的設計過程稱為逐步求精法。在編寫程序之前, 對程序進行逐步求精, 對我來說, 是個很好的程序設計實踐機會, 會使我養(yǎng)成良好的設計習慣。實際上就是說, 我設計程序是從程序的"頂部"開始一直考慮到程序的"底部"。 第三步: 實現(xiàn)該程

79、序 程序設計的最后一步是編寫源碼程序。 在這一步, 把模塊的偽代碼翻譯成Turbo C語句。對于源程序, 應包含注釋方式的文件編制, 以描述程序各個部分做何種工作。此外, 源程序還應包含調試程序段, 以測試程序的運行情況, 允許查找編程錯誤。一旦程序運行情況良好, 可去掉調試程序段, 然而, 文件編制應作為源程序的固定部分保留下來, 便于自己或其他人維護和修改。</p><p>  3.2 程序的編輯、編

80、譯和運行</p><p>  C語言是一種中級語言, 用戶用C語言編寫的程序稱為源程序, 存放用C 語言所寫源程序文件名字最后的兩個字符一般必須為".c"。計算機硬件不能直接執(zhí)行源程序, 必須將源程序翻譯成二進制目標程序。翻譯工作是由一個程序完成的,這個程序稱為編譯程序, 翻譯的過程稱為編譯, 編譯的結果稱為目標程序, 存放目標程序文件名字緊后的字符一般為".OBJ"或&q

81、uot;.O"。程序翻譯成目標程序后, 便可進行連接。"連接"的目的是使程序變成在計算機上可以執(zhí)行的最終形式。在這一階段, 從系統(tǒng)程序庫來的程序要與目標程序連接, 連接的結果稱為執(zhí)行程序,存放執(zhí)行程序文件名字一般以".EXE"結尾。在Turbo C集成開發(fā)環(huán)境中建立一個新程序通常有以下幾個步驟: (1). 在編輯器中編寫源文件。 (2). 生成可執(zhí)行文件。 在D

82、OS提示符下鍵入TC, 即可進入Turbo C了。進入主TC屏后, 按F3鍵, 即可在隨之出現(xiàn)的框中輸入文件名, 文件名可以帶".C"也可以不帶( 此時系統(tǒng)會自動加上)。輸入文件名后, 按回車, 即可將文件調入, 如果文件不存在, 就建立一個新文件。系統(tǒng)隨之進入編輯狀態(tài)。就</p><p>  這也就是編程,編輯,編譯和運行的全過程。 &

83、lt;/p><p><b>  第4章 軟件設計</b></p><p>  本次設計軟件部分是由主程序模塊,轉速和方向調節(jié)模塊,按鍵掃描程序模塊,延時程序模塊組成。各個模塊相對獨立,結構清晰,降低了整體軟件設計復雜性,避免程序開發(fā)的重復勞動;易于維護和功能擴展。</p><p>  4.1程序總體流程圖</p><p> 

84、 程序整體流程圖如圖4-1所示,具體代碼參照附錄二。</p><p>  首先對系統(tǒng)進行初始化,檢測控制電機啟停的P1.6是否按下,如果按下則電機啟動,如果沒有按下則繼續(xù)等待按鍵動作;再檢測控制電機正反轉的P1.7是否按下,如果按下則電機正轉,如果沒有按下則電機反轉;無論是正轉還是反轉電機轉速都與555定時器輸入頻率有關,把頻率F<1K的信號轉化成占空比10%的脈沖,把1K<F<3K的信號轉化成

85、占空比30%的脈沖,把3K<F<5K的信號轉化成占空比50%的脈沖,把5K<F<7K的信號轉化成占空比70%的脈沖,7K<F<9K的信號轉化成占空比90%的脈沖,用不同占空比寬度的脈沖控制電機轉速,分別送到顯示部分進行輸出,如果是四位LED可以顯示頻率,如果只有一位LED可以顯示轉速的檔位。再檢測P1.6是否按下,如果按下則電機停轉,如果沒有按下則去檢測P1.7是否按下,即檢測是正轉還是反轉,如此不斷

86、循環(huán)。</p><p>  4.2 軟件各子模塊設計</p><p>  4.2.1 主程序模塊</p><p>  主程序模塊的功能是對系統(tǒng)用到的存儲單元,寄存器和堆棧指針初始化。設置定時/計數(shù)器T0、T1的工作方式,允許定時/計數(shù)器T0、T1計數(shù)滿中斷和外部中斷,執(zhí)行循環(huán)等待程序,等待功能選擇信號,并對各個子程序進行調用。</p><p>

87、;  主程序包括調用了PWM加速輸出函數(shù)和反轉PWM加速輸出函數(shù),屬于對電機方向和轉速的調節(jié)部分。是本程序的核心和主題,以此達到實現(xiàn)單片機控制直流電機轉動的目的</p><p>  //**********************************************************//下面為主函數(shù)</p><p>  void main(void) </p>

88、<p><b>  { </b></p><p>  TMOD=0x40; // T0定時,T1計數(shù) ,分別工作方式01</p><p>  TH0=(65536-50000)/256; //載入定時初值</p><p>  TL0=(65536-50000)%256;</p><p>  EA

89、=1; //開總中斷</p><p>  EX0=1; //開外部中斷0</p><p>  ET0=1; // 允許定時器0中斷</p><p>  IT1=1; // 設置下降沿觸發(fā)計數(shù)器中斷</p><p>  TR0=1; //開啟定時</p><p>  TR1=1; // 開啟計

90、數(shù)</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  key = scan_key(); //首先掃描鍵盤</p><p>  if((n>=0)&&(n<=999

91、)) //小于1KHz</p><p><b>  {</b></p><p>  save[0]=n/1000;a1=n%1000;save[1]=a1/100;a2=a1%100;save[2]=a2/10;save[3]=a2%10; //這里是轉換要顯示</p><p>  Display(save);//l

92、ed顯示此時頻率</p><p>  if (key==1) //判斷正反轉,選擇不同方向的PWM</p><p>  { Speed_A10(); }</p><p><b>  else</b></p><p>  { Speed_B10();}</p><p&

93、gt;<b>  }</b></p><p>  else if((n>=1000)&&(n<=2999)) //大于1KHz,小于3KHZ</p><p><b>  {</b></p><p>  save[0]=n/1000;a1=n%1000;save[1]=a1/

94、100;a2=a1%100;save[2]=a2/10;save[3]=a2%10; </p><p>  Display(save);//led顯示此時頻率</p><p>  if (key==1)</p><p>  { Speed_A30(); }</p><p><b>  else</b></p>

95、<p>  { Speed_B30();}</p><p><b>  }</b></p><p>  else if((n>=3000)&&(n<=4999)) //大于3KHz,小于5KHZ</p><p><b>  {</b></p>&

96、lt;p>  save[0]=n/1000;a1=n%1000;save[1]=a1/100;a2=a1%100;save[2]=a2/10;save[3]=a2%10; </p><p>  Display(save);//led顯示此時頻率</p><p>  if (key==1)</p><p>  { Speed_A50(); }</p>

97、<p><b>  else</b></p><p>  { Speed_B50();}</p><p><b>  }</b></p><p>  else if((n>=5000)&&(n<=6999)) //大于5KHz,小于7KHZ</p>

98、<p><b>  {</b></p><p>  save[0]=n/1000;a1=n%1000;save[1]=a1/100;a2=a1%100;save[2]=a2/10;save[3]=a2%10; </p><p>  Display(save);//led顯示此時頻率</p><p>  if (key==1)<

99、;/p><p>  { Speed_A70(); }</p><p><b>  else</b></p><p>  { Speed_B70();}</p><p><b>  }</b></p><p>  else if((n>=7000)&&(n&l

100、t;=9999)) //大于7KHz,小于10kHZ</p><p><b>  {</b></p><p>  save[0]=n/1000;a1=n%1000;save[1]=a1/100;a2=a1%100;save[2]=a2/10;save[3]=a2%10; </p><p>  Display(save);/

101、/led顯示此時頻率</p><p>  if (key==1)</p><p>  { Speed_A90(); }</p><p><b>  else</b></p><p>  { Speed_B90();}</p><p><b>  }</b></p>

102、<p><b>  } </b></p><p><b>  }</b></p><p>  void timer0(void) interrupt 1 using 1 //T0定時中斷服務程序 ,</p><p><b>  { </b></p><p

103、>  bittime++;</p><p>  if(bittime==20)//1秒時間到</p><p><b>  { </b></p><p>  TR0=0;//關閉定時</p><p>  n=m; //n中防1秒鐘計的脈沖個數(shù)</p><p><b> 

104、 m=0</b></p><p>  bittime=0;//清零</p><p>  TR0=1;//開啟定時</p><p><b>  }</b></p><p>  TH0=(65536-50000)/256;//定時50ms</p><p>  TL0=(65536-5000

105、0)%256;</p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void couter1(void) interrupt 2 using 2//T1計數(shù)中斷服務程序</p><p><b>  {</b></p

106、><p>  m++; //每檢測一個周期m自加1</p><p><b>  }</b></p><p>  4.2.2 正反轉PWM加速輸出流程圖及代碼</p><p>  其中圖4—2為PWM正轉加速流程圖,圖4—3為PWM反轉加速流程圖</p><p>  P1

107、.0為PWM正轉輸出端口,P1.1為PWM反轉輸出端口,首先判斷控制電機正反轉的按鍵P1.7是否按下,如果按下則P1.0置1即根據(jù)不同的延時從正轉PWM端口輸出,再送到P2口進行顯示,如果是四位LED可以顯示頻率,如果是一位LED可以顯示檔位;同理如果沒有按下則P1.1置1則從反轉PWM端口輸出。</p><p>  //**********************************************

108、************//正轉PWM輸出函數(shù)</p><p>  void Speed_A10() //設定正轉PWM10%速度前進</p><p>  { forward=1;</p><p>  delay(10);</p><p>  backward=0;</p><p>  delay(90);<

109、/p><p><b>  }</b></p><p>  void Speed_A30() //設定正轉PWM30%速度</p><p>  { forward=1;</p><p>  delay(30);</p><p>  backward=0;</p><p>  

110、delay(70);</p><p><b>  }</b></p><p>  void Speed_A50() //設定正轉PWM50%速度</p><p>  { forward=1 ;</p><p>  delay(50);</p><p>  backward=0;</p&g

111、t;<p>  delay(50);</p><p><b>  }</b></p><p>  void Speed_A70() //設定正轉PWM70%速度</p><p>  { forward=1;</p><p>  delay(70);</p><p>  backw

112、ard=0;</p><p>  delay(30);</p><p><b>  }</b></p><p>  void Speed_A90() //設定正轉PWM90%速度</p><p>  { forward=1;</p><p>  delay(90);</p>&l

113、t;p>  backward=0;</p><p>  delay(10);</p><p><b>  }</b></p><p>  //**********************************************************//設置反轉PWM輸出函數(shù)</p><p>  void

114、Speed_B10() //設定反轉PWM10%速度前進</p><p>  { forward=1;</p><p>  delay(10);</p><p>  backward=0;</p><p>  delay(90);</p><p><b>  }</b></p>

115、<p>  void Speed_B30() //設定反轉PWM30%速度</p><p>  { forward=1;</p><p>  delay(30);</p><p>  backward=0;</p><p>  delay(70);</p><p><b>  }</b&g

116、t;</p><p>  void Speed_B50() //設定反轉PWM50%速度</p><p>  { forward=1 ;</p><p>  delay(50);</p><p>  backward=0;</p><p>  delay(50);</p><p><b

117、>  }</b></p><p>  void Speed_B70() //設定反轉PWM70%速度</p><p>  { forward=1;</p><p>  delay(70);</p><p>  backward=0;</p><p>  delay(30);</p>

118、<p><b>  }</b></p><p>  void Speed_B90() //設定反轉PWM90%速度</p><p>  { forward=1;</p><p>  delay(90);</p><p>  backward=0;</p><p>  delay(10

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論