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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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><b> ?。?0 屆)</b></p><p>  直流電動(dòng)機(jī)控制系統(tǒng)的設(shè)計(jì)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級(jí) 電子信息工程

2、 </p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p

3、><p>  本設(shè)計(jì)是采用SPGT62C19B芯片對(duì)電機(jī)進(jìn)行驅(qū)動(dòng)并通過C8051F005單片機(jī)以及電機(jī)控制電路實(shí)現(xiàn)對(duì)直流電機(jī)速度測(cè)量和調(diào)節(jié),并利用4個(gè)按鍵對(duì)電機(jī)進(jìn)行轉(zhuǎn)速和正反轉(zhuǎn)的控制。并且可以實(shí)時(shí)測(cè)量電機(jī)的實(shí)際轉(zhuǎn)速,并在LCD液晶顯示器上顯示出來;對(duì)電機(jī)進(jìn)行PID轉(zhuǎn)速調(diào)節(jié),使其轉(zhuǎn)速趨近于設(shè)定值。以及利用PID算法實(shí)現(xiàn)直流電機(jī)脈沖脈寬調(diào)制(PWM)調(diào)速的方法。并在Silicon Labs單片機(jī)開發(fā)軟件上進(jìn)行調(diào)試。<

4、;/p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī);直流電機(jī);PID算法;脈寬調(diào)制</p><p><b>  Abstract</b></p><p>  This design is adopted to motor driven SPGT62C19B chip, And through the MCU (Microcontroller) C8051F005

5、and motor control circuit to realization of the DC(Direct Current) motor speed measurement and adjustment, and the use of four buttons on the motor speed and positive &negative control. And can real-time measuring mo

6、tor speed, and in the actual displayed on LCD (Liquid Crystal Display); On the motor PID speed adjustment, make its speed is approaching to value. The use of PID algorithm to real</p><p>  Key Words: MCU; D

7、C motor; PID algorithm ; PWM</p><p><b>  目 錄</b></p><p>  1 引言- 1 -</p><p>  1.1 研究直流電機(jī)控制系統(tǒng)的意義- 1 -</p><p>  1.2 直流電機(jī)控制系統(tǒng)的發(fā)展趨勢(shì)及現(xiàn)狀- 1 -</p><

8、p>  2 方案設(shè)計(jì)- 2 -</p><p>  2.1設(shè)計(jì)任務(wù)- 2 -</p><p>  2.2方案分析- 2 -</p><p>  3 硬件設(shè)計(jì)- 4 -</p><p>  3.1 直流電機(jī)- 4 -</p><p>  3.2 電機(jī)驅(qū)動(dòng)芯片- 4 -</p><

9、p>  3.3 速度檢測(cè)模塊- 7 -</p><p>  3.4 顯示模塊- 8 -</p><p>  3.5 按鍵- 9 -</p><p>  3.6主控制模塊- 10 -</p><p>  4 軟件設(shè)計(jì)- 12 -</p><p>  4.1 Silicon Labs C8051F 單片機(jī)

10、開發(fā)工具概述- 12 -</p><p>  4.2 PID算法- 13 -</p><p>  4.3 PWM基本原理- 14 -</p><p>  4.4 PWM的產(chǎn)生- 15 -</p><p>  4.5交叉開關(guān)- 17 -</p><p>  4.6轉(zhuǎn)速測(cè)量- 17 -</p>&

11、lt;p>  4.7主程序流程圖- 19 -</p><p>  5 調(diào)試- 21 -</p><p>  6 結(jié)論- 23 -</p><p>  致 謝錯(cuò)誤!未定義書簽。</p><p>  參考文獻(xiàn)- 24 -</p><p>  附錄1 直流電機(jī)控制系統(tǒng)實(shí)物圖- 25 -</p&g

12、t;<p>  附錄2 程序代碼- 26 -</p><p><b>  1 引言</b></p><p>  1.1 研究直流電機(jī)控制系統(tǒng)的意義</p><p>  在電氣時(shí)代的今天,電動(dòng)機(jī)一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。無論是在工農(nóng)業(yè)生產(chǎn)、交通運(yùn)輸、國(guó)防、航空航天、醫(yī)療衛(wèi)生、商務(wù)與辦公設(shè)備中,還是在日常生活

13、中的家用電器中,都大量地使用著各種各樣的電動(dòng)機(jī)[1]。</p><p>  長(zhǎng)期以來,直流電機(jī)以其良好的線性特性、優(yōu)異的控制性能等特點(diǎn)成為大多數(shù)變速運(yùn)動(dòng)控制和閉環(huán)位置伺服控制系統(tǒng)的最佳選擇。伴隨著人們對(duì)控制系統(tǒng)的要求越來越高,電機(jī)調(diào)速成了人們研究的熱門課題。</p><p>  1.2 直流電機(jī)控制系統(tǒng)的發(fā)展趨勢(shì)及現(xiàn)狀</p><p>  現(xiàn)在對(duì)于普通直流電機(jī)的調(diào)速

14、已經(jīng)有了一些比較成熟的方法。直流電動(dòng)機(jī)轉(zhuǎn)速的控制方法可分為兩類勵(lì)磁控制法與電樞電壓控制法。勵(lì)磁控制法控制磁通,其控制功率雖然小,但低速時(shí)受到磁飽和的限制,高速時(shí)受到換向火花和換向器結(jié)構(gòu)強(qiáng)度的限制,而且由于勵(lì)磁線圈電感較大,動(dòng)態(tài)響應(yīng)較差,所以使用較少。電樞電壓控制法總體上可以分為兩種,一種是調(diào)節(jié)電壓,一種是調(diào)節(jié)電流。傳統(tǒng)的調(diào)速系統(tǒng)是用模擬電子電路來實(shí)現(xiàn)的,這種電路雖然響應(yīng)快,但是靈活性較差,維修復(fù)雜。單片機(jī)作為一種可編程控制器技術(shù)上已經(jīng)比

15、較成熟。通過單片機(jī)對(duì)普通直流電機(jī)進(jìn)行調(diào)速的系統(tǒng)已經(jīng)存在。單片機(jī)具有性能高、速度快、體積小、價(jià)格低、穩(wěn)定可靠應(yīng)用廣泛、通用性強(qiáng)等突出優(yōu)點(diǎn)[2]。</p><p>  電動(dòng)機(jī)的控制技術(shù)的發(fā)展得力于微電子技術(shù)、電力電子技術(shù)、傳感器技術(shù)、永磁材料技術(shù)、電動(dòng)控制技術(shù)、微機(jī)應(yīng)用技術(shù)的最新發(fā)展成果。正是這些技術(shù)的進(jìn)步使電機(jī)控制技術(shù)在近20多年內(nèi)發(fā)生了翻天覆地的變化,其中電動(dòng)機(jī)的控制部分已由模擬控制逐漸讓位于以單片機(jī)為主的微處理

16、器控制,形成數(shù)字和模擬的混合控制系統(tǒng)和純數(shù)字控制的應(yīng)用,并曾向全數(shù)字化控制方向快速發(fā)展。而國(guó)外交直流系統(tǒng)數(shù)字化已經(jīng)達(dá)到使用階段[3]。</p><p><b>  2 方案設(shè)計(jì)</b></p><p><b>  2.1設(shè)計(jì)任務(wù)</b></p><p>  本設(shè)計(jì)的任務(wù)是設(shè)計(jì)一個(gè)直流電機(jī)轉(zhuǎn)速的控制系統(tǒng),并在LCD顯示器上

17、顯示當(dāng)前電機(jī)的轉(zhuǎn)速,并能通過按鍵調(diào)整電機(jī)的轉(zhuǎn)速。</p><p><b>  2.2方案分析</b></p><p>  直流電動(dòng)機(jī)轉(zhuǎn)速的控制方法可分為兩類:勵(lì)磁控制法和電樞電壓控制法。常用的控制方法是改變電樞端電壓調(diào)速的電樞電壓控制法,調(diào)節(jié)電阻R即可改變端電壓,達(dá)到調(diào)速目的,但這種傳統(tǒng)的調(diào)壓調(diào)速方法效率低。隨著電力電子技術(shù)的發(fā)展,創(chuàng)新了許多新的電樞電壓控制方法。尤其

18、是脈寬調(diào)制(PWM)直流調(diào)速技術(shù)的應(yīng)用,使得直流電機(jī)得到廣泛應(yīng)用[4]。</p><p>  2.2.1 基于FPGA的直流電機(jī)PWM控制系統(tǒng)</p><p>  圖2-1 基于FPGA的直流電機(jī)PWM控制系統(tǒng)框架</p><p>  基于FPGA的直流電機(jī)PWM控制系統(tǒng)是以FPGA芯片為控制核心,通過按鍵設(shè)定電機(jī)速度和PWM占空比,由FPGA的I/O口控制直流電

19、機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)直流電機(jī)的轉(zhuǎn)動(dòng)。轉(zhuǎn)速的測(cè)量由碼盤完成,速度顯示由數(shù)碼管來實(shí)現(xiàn)。如圖2-1所示。由于FPGA具有靈活的編程功能,能實(shí)時(shí)方便地實(shí)現(xiàn)復(fù)雜的控制算法,從而提高了控制性能;還可將大量的裸機(jī)控制功能和外圍接口電路集成在芯片中,進(jìn)而提高了運(yùn)動(dòng)控制器的可靠性和穩(wěn)定性;同時(shí),因?yàn)镕PGA具有在現(xiàn)場(chǎng)可重構(gòu)的特性,保證了所設(shè)計(jì)的電機(jī)控制模塊具有良好的開放性,也大大方便了系統(tǒng)的設(shè)計(jì)和調(diào)試。所設(shè)計(jì)的控制模塊兼具體積小、使用靈活、實(shí)時(shí)性強(qiáng)、調(diào)速范圍寬

20、、可靠性高等優(yōu)點(diǎn)[5]。</p><p>  2.2.2 基于單片機(jī)的直流電機(jī)PWM控制系統(tǒng)</p><p>  如圖2-2所示,就是一個(gè)基本的基于單片機(jī)PWM的直流電機(jī)控制系統(tǒng)框圖。由單片機(jī)產(chǎn)生一個(gè)PWM脈沖來驅(qū)動(dòng)SPGT62C19B芯片,進(jìn)而控制直流電機(jī)的轉(zhuǎn)速,并由轉(zhuǎn)速測(cè)量裝置把電機(jī)的轉(zhuǎn)速反饋到單片機(jī)并在顯示器上顯示出來,通過按鍵控制單機(jī)輸出的PWM脈沖,從而一步一步向預(yù)期轉(zhuǎn)速靠近[6

21、]。</p><p>  圖2-1 PMW直流電機(jī)控制系統(tǒng)</p><p>  脈寬調(diào)制調(diào)速法突破傳統(tǒng)的串電阻調(diào)速,節(jié)省了電能。單片機(jī)來實(shí)現(xiàn)電機(jī)調(diào)速為電機(jī)調(diào)速提供了新的方法。它雖然沒有傳統(tǒng)的模擬數(shù)字電路調(diào)速來得反應(yīng)快,但是由單片機(jī)搭建的電機(jī)調(diào)速電路要比使用模擬數(shù)字電路簡(jiǎn)單得多。不僅節(jié)約了成本而且單片機(jī)靈活性高,可以重復(fù)編程。當(dāng)實(shí)際的環(huán)境條件改變以后,可以通過改變程序來實(shí)現(xiàn)不同的功能。所以

22、本文所采用的是基于單片機(jī)來設(shè)計(jì)PWM直流電機(jī)的控制系統(tǒng)。</p><p><b>  3 硬件設(shè)計(jì)</b></p><p>  本系統(tǒng)硬件主要由直流電機(jī)、電機(jī)驅(qū)動(dòng)芯片、速度檢測(cè)模塊、顯示模塊、按鍵、主控制模塊。</p><p><b>  3.1 直流電機(jī)</b></p><p>  直流電機(jī)采用

23、的型號(hào)為310CA,工作電壓3V~12V,在5V電壓下空載轉(zhuǎn)速約4000轉(zhuǎn)/分,空載電流約20mA,堵轉(zhuǎn)電流約300mA (如圖3-1所示310CA直流電機(jī)圖)。</p><p>  圖3-1 310CA直流電機(jī)</p><p>  3.2 電機(jī)驅(qū)動(dòng)芯片</p><p>  本系統(tǒng)采用SPGT62C19B作為電機(jī)驅(qū)動(dòng)芯片。SPGT62C19B是低電壓?jiǎn)纹讲竭M(jìn)電機(jī)

24、驅(qū)動(dòng)器集成電路芯片,可驅(qū)動(dòng)一臺(tái)兩相步進(jìn)電機(jī),或者兩臺(tái)直流電機(jī)。它帶有雙路H橋,可分別驅(qū)動(dòng)兩個(gè)獨(dú)立的PNP功率管。每一個(gè)H橋都有各自獨(dú)立的使用引腳,因此非常適合于需要獨(dú)立控制的步進(jìn)電機(jī)驅(qū)動(dòng)系統(tǒng)。SPGT62C19B輸出電壓可以達(dá)40v,輸出電流可達(dá)750mA,由輸入的邏輯電平來決定輸出脈沖的寬度及頻率,所以由這款芯片組成的電機(jī)驅(qū)動(dòng)系統(tǒng)將脈沖發(fā)生器、脈沖分配器、脈沖放大器合為一體,省去了很多外圍器件[7]。</p><p

25、>  SPGT62C19B的內(nèi)部由兩組完全相同的控制電路組成了兩路輸出通道。其中一路通道的控制電路原理如圖3-2所示。輸入控制信號(hào)經(jīng)前級(jí)緩沖后送入片內(nèi)控制器,然后由控制部分進(jìn)行處理并驅(qū)動(dòng)晶體管,最后由OUT端口輸出驅(qū)動(dòng)信號(hào)以控制電機(jī)的運(yùn)行[8]。</p><p>  圖3-2 SPGT62C19B控制電路原理圖</p><p>  SPGT62C19B的6個(gè)控制腳有如表3-1:<

26、;/p><p>  表3-1 SPGT62C19B的6個(gè)控制腳</p><p>  以通道1為例,控制口I01與I11的不同邏輯組合可使通道1輸出端產(chǎn)生不同大小的電流輸出:</p><p>  表3-2 通道1的電流輸出</p><p>  如上表3-2中,Imax是輸出電流的上限值,它與圖3-1中Vref和Rs的值有關(guān)。其關(guān)系式為:</

27、p><p>  Imax = Vref / 10 * Rs ;</p><p>  PHASE1的邏輯電平值決定了該通道的電流輸出方向。PHASE1與電流方向的對(duì)應(yīng)關(guān)系如表3-3所示:</p><p>  表3-3 PHASE1與電流方向的對(duì)應(yīng)關(guān)系</p><p>  直流電機(jī)的控制方法比較簡(jiǎn)單,只需給電機(jī)的兩根控制線加上適當(dāng)?shù)碾妷杭纯墒闺姍C(jī)轉(zhuǎn)

28、動(dòng)起來,電壓越高則電機(jī)轉(zhuǎn)速越快。對(duì)于直流電機(jī)的速度調(diào)節(jié),可以采用改變電壓的方法,也可以采用PWM調(diào)節(jié)方法。PWM調(diào)速就是使加在直流電機(jī)兩端的電壓為方波形式,通過改變方波的占空比實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的調(diào)節(jié)[9]。</p><p>  本設(shè)計(jì)選用的電機(jī)驅(qū)動(dòng)芯片SPGT62C19B有兩個(gè)輸出通道可以分別控制一臺(tái)直流電機(jī)。這里選擇通道1。設(shè)定PHASE1的邏輯電平,即可實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)控制。而電機(jī)調(diào)速可以通過不斷改變I01和I1

29、1的高低電平狀態(tài),使輸出通道產(chǎn)生PWM波形信號(hào),從而利用PWM的占空比來調(diào)節(jié)電機(jī)轉(zhuǎn)速。</p><p>  圖3-3 輸出PWM控制直流電機(jī)時(shí)序</p><p>  如圖3-4電機(jī)驅(qū)動(dòng)芯片SPGT62C19B通道1和單片機(jī)的接口</p><p>  圖3-4 電機(jī)驅(qū)動(dòng)芯片SPGT62C19B通道1和單片機(jī)的接口</p><p>  3.3

30、速度檢測(cè)模塊</p><p>  在直流電機(jī)轉(zhuǎn)軸上加載一個(gè)光柵轉(zhuǎn)盤,用來測(cè)量電機(jī)的轉(zhuǎn)速及觀察電機(jī)的轉(zhuǎn)動(dòng)情況。光柵轉(zhuǎn)盤遮擋在紅外發(fā)射管和紅外接收管之間。如圖3-5所示,光柵轉(zhuǎn)盤的園面上開了4個(gè)通光槽,電機(jī)每轉(zhuǎn)動(dòng)一周,紅外接收管將接收到4次紅外光,從而可以實(shí)現(xiàn)電機(jī)測(cè)速功能[10]。</p><p>  圖3-5 直流電機(jī)的光柵轉(zhuǎn)盤</p><p>  轉(zhuǎn)速測(cè)量采用一組鼠

31、標(biāo)上用的紅外對(duì)管實(shí)現(xiàn)。其電路原理如圖3-6所示。</p><p>  當(dāng)紅外發(fā)射管與紅外接收管之間被直流電機(jī)光柵轉(zhuǎn)盤的不透明部分遮擋時(shí),紅外接收管處于截至狀態(tài),此時(shí)圖中的SPEED輸出高電平。反之當(dāng)光柵轉(zhuǎn)盤的通光槽轉(zhuǎn)至紅外對(duì)管之間時(shí),紅外接收管處于導(dǎo)通狀態(tài),此時(shí)SPEED輸出低電平。將SPEED連接到單片機(jī)的I/O口,即可通過定時(shí)器計(jì)數(shù)的方法計(jì)算出電機(jī)轉(zhuǎn)動(dòng)速度。</p><p>  圖3-

32、6 轉(zhuǎn)速測(cè)量電路原理</p><p><b>  3.4 顯示模塊</b></p><p>  為了便于直觀的檢測(cè)直流電機(jī)的轉(zhuǎn)速,本設(shè)計(jì)精心設(shè)計(jì)了顯示模塊,主要通過液晶顯示,方便、直觀。液晶顯示器(LCD),如圖3-7所示,具有顯示信息豐富、功率低、體積小、重量輕、超薄等許多其他顯示器無法比擬的優(yōu)點(diǎn),近幾年來被廣泛用于單片機(jī)控制的儀表、智能儀器和低功率電子廠品中[1

33、1]。</p><p>  圖3-7 HS12232-9液晶實(shí)物</p><p>  液晶顯示模塊主要是應(yīng)用實(shí)驗(yàn)室的HS12232-9型液晶模塊。HS12232-9內(nèi)置ST7920A驅(qū)動(dòng)控制器,點(diǎn)陣為122*32,每行7個(gè)半漢字,共2行。內(nèi)部字型ROM包括8192個(gè)16*16點(diǎn)陣的中文字型和126個(gè)16*8的字母符號(hào)字型,另外還提供一個(gè)64*256點(diǎn)繪圖區(qū)域(GDRAM)及240點(diǎn)的IC0

34、N RAM,可以和文字畫面混合顯示。內(nèi)含的CGRAM有4組可編程的1616點(diǎn)陣的造字功能。與單片機(jī)的接口有8位并行、4位并行、2/3線串行。它采用低功率電源耗損,電壓范圍2.7~5.5V,功能齊全,漢字、點(diǎn)陣圖形、ASCII碼同屏顯示;上下左右移動(dòng)當(dāng)前顯示屏幕、清屏、光標(biāo)顯示、閃爍、睡眠、喚醒、關(guān)閉顯示功能齊全。</p><p>  HS12232-9與C805F005硬件連接如圖3-8所示。</p>

35、<p>  圖3-8 HS12232-9與C8051F005的連接圖</p><p>  當(dāng)寫入顯示資料RAM時(shí),可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型 ,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型。一旦單片機(jī)接收相應(yīng)的中斷,就會(huì)調(diào)用子程序,就要顯示當(dāng)前的時(shí)間,站名和溫度。例如要顯示“浙江萬里學(xué)院”,就要根據(jù)“ST7920 GB

36、中文字形碼表”,輸入對(duì)應(yīng)的代碼是“D5E3,BDAD,CDF2,C0EF,D1A7,D4BA”存到數(shù)組中,然后單片機(jī)讀取數(shù)組中的數(shù)據(jù)。</p><p><b>  3.5 按鍵</b></p><p>  為了更好的控制電機(jī)的轉(zhuǎn)動(dòng),該設(shè)計(jì)設(shè)置了幾個(gè)控制按鍵:Key1,Key2,Key3,Key4并分別作用于轉(zhuǎn)數(shù)個(gè)位+1,轉(zhuǎn)數(shù)十位+1,啟動(dòng),正反轉(zhuǎn)。</p>

37、<p>  圖3-9為按鍵及LED顯示的實(shí)驗(yàn)電原理圖。從圖中可以看出,按鍵平時(shí)接高電平,按下為低電平。LED則為輸入低電平時(shí)點(diǎn)亮。</p><p>  圖3-9 按鍵及LED顯示的實(shí)驗(yàn)電原理圖</p><p><b>  3.6主控制模塊</b></p><p>  主控制模塊的核心器件采用C8051F005單片機(jī)和EPM1270

38、T144C5可編程器件,如圖3-10為實(shí)物圖,圖3-11為主板結(jié)構(gòu)框圖。其中C8051單片機(jī)可以完成軟件設(shè)計(jì)等任務(wù),EPM1270可編程器件可以完成硬件邏輯設(shè)計(jì)等任務(wù)。兩者均留有豐富的外部接口。同時(shí),EPM1270接口了數(shù)碼顯示、LED顯示、蜂鳴器、按鍵等電路??梢酝ㄟ^EPM1270直接進(jìn)行控制。如果要通過C8051單片機(jī)來訪問,則需要通過EPM1270和C8051之間的總線接口。</p><p>  圖3-10

39、 主控制主板的實(shí)物圖</p><p>  圖3-11 主板的結(jié)構(gòu)框圖</p><p>  C8051F005是完全集成的混合信號(hào)系統(tǒng)級(jí)MCU芯片(如圖3-10 C8051F005原理圖)。它有一個(gè)可編程增益放大器、兩個(gè)12位DAC、兩個(gè)電壓比較器、一個(gè)電壓基準(zhǔn)、一個(gè)具有32K字節(jié)FLASH存儲(chǔ)器并與8051兼容的微控制器內(nèi)核。還有硬件實(shí)現(xiàn)的12C/SMBus、UART、SPI串行接口及一

40、個(gè)具有5個(gè)捕捉/比較模塊的可編程計(jì)數(shù)器/定時(shí)器陣列(PCA)。還有4個(gè)通用的16位定時(shí)器和4字節(jié)寬的通用數(shù)字I/O端口。</p><p><b>  4 軟件設(shè)計(jì)</b></p><p>  4.1 Silicon Labs C8051F 單片機(jī)開發(fā)工具概述</p><p>  Silicon Labs 的開發(fā)工具實(shí)質(zhì)上就是計(jì)算機(jī)IDE 調(diào)試

41、環(huán)境軟件及計(jì)算機(jī)USB 到C8051F單片機(jī)JTAG 口的協(xié)議轉(zhuǎn)換器(UEC5)的組合(此部分電路已經(jīng)集成到系統(tǒng)實(shí)驗(yàn)板上)。Silicon Labs C8051F 系列所有的單片機(jī)片內(nèi)均設(shè)計(jì)有調(diào)試電路,該調(diào)試電路通過邊界掃描方式獲取單片機(jī)片內(nèi)信息,通過4 線的JTAG接口與開發(fā)工具連接以便于進(jìn)行對(duì)單片機(jī)在片編程調(diào)試。NCD-CIP51F020 系統(tǒng)實(shí)驗(yàn)設(shè)備中的C8051F020 CPU 板上的單片機(jī)為C8051F 系列中的F020。適配

42、器一端與計(jì)算機(jī)相連,另一端與C8051F 單片機(jī)JTAG 口相連,應(yīng)用Silicon Labs 提供的IDE 調(diào)試環(huán)境或Kei的uVision2 調(diào)試環(huán)境就可以進(jìn)行非侵入式、全速的在系統(tǒng)編程(ISP)和調(diào)試。</p><p>  Silicon Labs 開發(fā)工具支持觀察和修改存儲(chǔ)器和寄存器支持?jǐn)帱c(diǎn)、觀察點(diǎn)、堆棧指示器、單步、運(yùn)行和停止命令。調(diào)試時(shí)不需要額外的目標(biāo)RAM、程序存儲(chǔ)器、定時(shí)器或通信通道,并且所有的模

43、擬和數(shù)字外設(shè)都正常工作。</p><p>  Silicon Labs IDE 的主界面圖4-1所示。</p><p>  圖4-1 Silicon Labs IDE 的主界面</p><p><b>  4.2 PID算法</b></p><p>  所謂PID指的是Proportion-Integral-Differ

44、ential,翻譯成中文是比例-積分-微分。模擬PID控制器的原理框圖如圖4-2。其中r(t)為系統(tǒng)給定值,c(t)為實(shí)際輸出,u(t)為控制量。PID控制解決了自動(dòng)控制理論所要解決的最為基本的問題,即系統(tǒng)的穩(wěn)定性、快速性和準(zhǔn)確性[9]。</p><p>  圖4-2 模擬PID控制器的原理框圖</p><p>  PID調(diào)節(jié)為了獲得穩(wěn)態(tài)轉(zhuǎn)速, 電機(jī)采用閉環(huán)控制,同時(shí)加入了PID 調(diào)節(jié)環(huán)

45、節(jié)。PID 調(diào)節(jié)結(jié)構(gòu)簡(jiǎn)單、靈活性大,但其易受干擾和采樣周期的影響。所以須對(duì)PID 算法加以改進(jìn)以進(jìn)一步穩(wěn)定轉(zhuǎn)速。</p><p>  傳統(tǒng)數(shù)字PID 算法的公式為</p><p><b> ?。?-1)</b></p><p>  式中,Kp、KI、KD分別為調(diào)節(jié)器的比例、積分和微分系數(shù);e(k),e(k-1)分別為第k 次和k- 1次時(shí)的期望

46、偏差值;u(k)為第k 次時(shí)調(diào)節(jié)器的輸出。比例環(huán)節(jié)的作用是對(duì)偏差瞬間做出反應(yīng);積分環(huán)節(jié)的作用是消除穩(wěn)態(tài)誤差,提高無差度;微分環(huán)節(jié)的作用是阻止偏差的變化,改善系統(tǒng)的動(dòng)態(tài)性能。</p><p>  在自動(dòng)控制系統(tǒng)中,PID 控制器是得到廣泛應(yīng)用的一種控制方法。由于電機(jī)轉(zhuǎn)速與電樞外加電壓的大小基本上成正比,這就構(gòu)成了PID 調(diào)節(jié)的基礎(chǔ)。在采樣時(shí)刻t =i×T( T 為采樣周期,i為正整數(shù)) ,模擬PID 控制

47、器調(diào)節(jié)規(guī)律的數(shù)學(xué)模型可以用微分方程來表示:</p><p><b> ?。?-2)</b></p><p>  式中各參數(shù)和變量分別是:u(t) 是t 時(shí)刻的調(diào)節(jié)器的輸出;Kp 是比例系數(shù);e(t) 是調(diào)節(jié)器的輸入,一般為偏差量;Ti 是積分時(shí)間常數(shù);Td 是微分時(shí)間常。電機(jī)測(cè)控系統(tǒng)為一時(shí)間離散控制系統(tǒng),可以采用數(shù)字式的差分方程來代替連續(xù)系統(tǒng)的微分方程,從而將PID算

48、式離散化,其差分方程如下:</p><p><b> ?。?-3)</b></p><p><b>  進(jìn)一步簡(jiǎn)化為:</b></p><p><b>  (4-4)</b></p><p>  式中P、I 、D 分別稱之為比例增益、積分系數(shù)、微分系數(shù)。</p>

49、<p>  PID 運(yùn)算過程中所有參數(shù)和計(jì)算值均以多字節(jié)浮點(diǎn)數(shù)表示,在控制過程中不斷改變控制參數(shù)。系統(tǒng)運(yùn)行中,通過定時(shí)器每間隔T秒中斷一次,完成一次PID控制計(jì)算,從而不斷調(diào)整被控參數(shù),主程序中的PWM驅(qū)動(dòng)模塊根據(jù)控制參數(shù)而改變P0口輸出值,調(diào)整PWM 輸出波形,完成實(shí)時(shí)控制任務(wù)[9]。</p><p>  PID初始化代碼如下:</p><p>  int DCMotor_Sp

50、eed_PID(int SetSpeed, int CurSpeed)</p><p><b>  {</b></p><p>  int e0, u0;</p><p>  static int u1 = 0;// 前一次輸出值(為避免浮點(diǎn)運(yùn)算將該值擴(kuò)大16倍)</p><p>  static in

51、t e1 = 0, e2 = 0;</p><p>  e0 = SetSpeed - CurSpeed;// 當(dāng)前速度偏差</p><p>  u0 = u1 </p><p>  + CP * (e0 - e1)// 比例項(xiàng)</p><p>  + CI * e0//

52、 積分項(xiàng)</p><p>  + CD * (e0 - e1 - e1 + e2);// 微分項(xiàng)</p><p>  if(u0 > 4096) u0 = 4095;// 輸出值應(yīng)小于256(擴(kuò)大16倍)</p><p>  if(u0 < 16) u0 = 16;// 輸出值應(yīng)不小于1(擴(kuò)大16倍)</p&

53、gt;<p>  u1 = u0;// 更新u1、e1和e2</p><p><b>  e2 = e1;</b></p><p><b>  e1 = e0;</b></p><p>  return u0>>4;// 返回u0/16,占空比</p

54、><p><b>  }</b></p><p>  4.3 PWM基本原理</p><p>  對(duì)電機(jī)的調(diào)速方法有很多,其中PWM(Pulse Width Modulation)控制是常用的一種調(diào)速方法控制。脈寬調(diào)制(PWM)是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,它不僅容易由軟件來實(shí)現(xiàn),而且從處理器到被控制信號(hào)都是數(shù)字形式無需數(shù)模轉(zhuǎn)化,加上PW

55、M對(duì)噪聲的抵抗能力強(qiáng)。使得PWM成為目前電機(jī)調(diào)速的主要方法。在PWM驅(qū)動(dòng)控制的調(diào)整系統(tǒng)中,按一個(gè)固定的頻率來接通和斷開電源,并根據(jù)需要改變一個(gè)周期內(nèi)“接通”和“斷開”時(shí)間的長(zhǎng)短。通過改變直流電機(jī)電驅(qū)上電壓的“占空比”來改變平均電壓的大小。從而控制電動(dòng)機(jī)的轉(zhuǎn)速。因此,PWM又被成為“開關(guān)驅(qū)動(dòng)裝置[10]”。</p><p>  如圖4-3所示,在脈沖作用下,當(dāng)電機(jī)通電時(shí),速度增加;電機(jī)斷電時(shí),速度逐漸減少。只要按一

56、定規(guī)律,改變通、斷電的時(shí)間,即可讓電機(jī)轉(zhuǎn)速得到控制。</p><p>  圖4-3 PWM控制原理圖</p><p>  設(shè)電機(jī)始終接通電源時(shí)電機(jī)轉(zhuǎn)速最大為Vmax,設(shè)占空比為D= t?/T ,則電機(jī)的平均速度為 (4-5)</p><p>  式中,Vd——電機(jī)的平均速度;</p><p>  Vm

57、ax——電機(jī)全通電時(shí)的速度(最大);</p><p>  D= t?/T——占空比。</p><p>  由公式(4-5)可見,當(dāng)我們改變占空比D = t ?/T時(shí),就可以得到不同的電機(jī)平均速度Vd,從而達(dá)到調(diào)速的目的。嚴(yán)格地講,平均速度Vd與占空比D并不是嚴(yán)格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似地看成線性關(guān)系。</p><p>  4.4 PWM的產(chǎn)生&l

58、t;/p><p>  本設(shè)計(jì)的PWM是利用C8051單片機(jī)的PCA(可編程計(jì)數(shù)器陣列Programmable Counter Array)模塊產(chǎn)生的。</p><p>  如圖4-4所示PCA的PWM方式原理框圖。PWM輸出的頻率取決于PCA計(jì)數(shù)</p><p>  圖4-4 PCA的PWM方式原理圖</p><p>  器/定時(shí)器的時(shí)基。使用

59、模塊的捕捉/比較寄存器PCA0PLn改變PWM輸出信號(hào)的占空比[11]。當(dāng)PCA計(jì)數(shù)器/定時(shí)器的低字節(jié)(PCA0L)與PCA0CPLn中的值相等時(shí),CEXn引腳上的輸出被置‘1’。當(dāng)PCA0L中的計(jì)數(shù)值溢出時(shí),CEXn輸出被復(fù)位。當(dāng)計(jì)數(shù)器/定時(shí)器的低字節(jié)PCA0L溢出時(shí)(從0xFF到0x00),保存在PCA0CPHn中的值被自動(dòng)裝入PCA0CPLn,不需軟件干預(yù)。利用PCA產(chǎn)生PWM的流程圖(4-5)及其代碼如下:</p>

60、<p>  圖4-5 PCA產(chǎn)生PWM流程圖</p><p>  void PCA_Init(void)</p><p><b>  {</b></p><p>  PCA0MD = 0x00; // 禁止CF中斷 // PCA時(shí)基= SYSCLK / 4</p><p>  PCA0CPL0 = 12

61、8; // 初始化PCA的PWM值</p><p>  PCA0CPH0 = 128;</p><p>  PCA0CPL1 = 128; // 初始化PCA的PWM值</p><p>  PCA0CPH1 = 128;</p><p>  PCA0CPM0 = 0x42; // CCM0為8位PWM方式</p><p&g

62、t;  PCA0CPM1 = 0x42; // CCM1為8位PWM方式</p><p>  PCA0CN = 0x40; // 允許PCA計(jì)數(shù)器</p><p><b>  }</b></p><p>  上面代碼產(chǎn)生占空比為1.:1的PWM波形,因此通過改變PCA模塊捕捉/比較模塊的初始值就可以改變PWM輸出信號(hào)的占空比,從而達(dá)到調(diào)速的目的

63、。</p><p><b>  4.5交叉開關(guān)</b></p><p>  單片機(jī)C8051F005中有大量的數(shù)字資源需要通過數(shù)字I/O端口P0、P1、P2和P3才能使用。端口0、1和2中的每個(gè)引腳即可定義為對(duì)應(yīng)的端口I/O,又可以分配給一個(gè)內(nèi)部數(shù)字資源。設(shè)計(jì)者對(duì)功能分配有完全的控制,只受所選封裝的可用引腳數(shù)的限制。這種資源分配的靈活性是通過使用優(yōu)先權(quán)交叉開關(guān)譯碼器實(shí)

64、現(xiàn)的[12]。交叉開關(guān)初始化代碼如下:</p><p>  void PORT_Init (void)</p><p><b>  {</b></p><p>  PRT1CF |= 0xff; </p><p>  PRT2CF |= 0xff;

65、 </p><p>  PRT0CF |= 0xff; </p><p>  PRT3CF |= 0xff; </p><p>  P1 |= 0xa0; </p><p>  XBR0 =

66、0x20; //CEX0,CEX1連到P0.0,P0.1</p><p>  XBR1 = 0x02; //T0計(jì)數(shù)器連到P0.2端口</p><p>  XBR2 = 0x40; // 使能交叉開關(guān)}</p><p><b>

67、;  4.6轉(zhuǎn)速測(cè)量</b></p><p>  為了測(cè)量轉(zhuǎn)速,必須要通過定時(shí)器T0來檢測(cè)轉(zhuǎn)速測(cè)量電路在1秒內(nèi)發(fā)送給單片機(jī)多少個(gè)脈沖,最后把所計(jì)數(shù)的脈沖值除以4,就可以得到直流電機(jī)1秒內(nèi)轉(zhuǎn)的圈數(shù)。</p><p>  圖4-6 轉(zhuǎn)速測(cè)量流程圖</p><p>  以上是轉(zhuǎn)速測(cè)量的流程圖(4-6),T0作為計(jì)數(shù)功能,T2定時(shí)功能。為了測(cè)出1秒內(nèi)電機(jī)的轉(zhuǎn)速,

68、必須在定時(shí)1秒。本設(shè)計(jì)采用了定時(shí)器T2,先定時(shí)10ms,在中斷服務(wù)程序里,計(jì)數(shù)中斷的次數(shù),當(dāng)中斷次數(shù)達(dá)到100的時(shí),也就是1秒鐘,提取出定時(shí)器0內(nèi)部計(jì)數(shù)值,在把此時(shí)的計(jì)數(shù)值除以4就可以計(jì)算出電機(jī)的轉(zhuǎn)速。</p><p>  轉(zhuǎn)速測(cè)量初始化代碼:</p><p>  void Timer0_Init(void)</p><p><b>  {</b&g

69、t;</p><p>  TMOD=0X25; //定時(shí)器0計(jì)數(shù)方式16位</p><p><b>  TH0=0X00;</b></p><p><b>  TL0=0X00;</b></p><p>  TR0=1;//開定時(shí)器0</p><p>  

70、ET0=0;//不允許定時(shí)器0中斷</p><p><b>  }</b></p><p>  void Timer2_Init(void)</p><p><b>  {</b></p><p>  CKCON=0x10;//定時(shí)器2采用12分頻</p><p>  RCA

71、P2L=0X00;//定時(shí)時(shí)間為10ms</p><p>  RCAP2H=0XDC;</p><p><b>  TL2=0X00;</b></p><p><b>  TH2=0XDC;</b></p><p>  T2CON=0X04;//采用16位自動(dòng)重載方式</p><

72、p>  ET2=1;//允許中斷</p><p><b>  }</b></p><p>  void Timer2_ISR(void) interrupt 5</p><p><b>  {</b></p><p>  percent++;//次數(shù)加1</p><p>

73、;  if(percent==100) //100次到,也就是1秒鐘到了</p><p>  { percent=0; </p><p>  zhushu=TH0*256+TL0;//讀計(jì)數(shù)器0的值</p><p>  zhushu=zhushu/4;//因?yàn)槊哭D(zhuǎn)動(dòng)一周4個(gè)脈沖</p><p><b>  TH0=0X00;<

74、/b></p><p>  TL0=0X00;//定時(shí)器0清零</p><p>  pwm= DCMotor_Speed_PID(zhushu1, zhushu);//PID調(diào)速度,zhushu1為設(shè)置的速度,zhushu目前速度</p><p>  PCA0CPL0 = pwm; // 調(diào)整后的占空比</p><p>  PCA0CP

75、H0 = pwm;</p><p>  PCA0CPL1 = pwm; // </p><p>  PCA0CPH1 = pwm;</p><p><b>  }</b></p><p><b>  TF2=0;</b></p><p><b>  }</b&

76、gt;</p><p><b>  4.7主程序流程圖</b></p><p>  如圖4-7所示主程序流程圖,假定初始電機(jī)轉(zhuǎn)速為40轉(zhuǎn)/秒,那么當(dāng)按下按鍵KEY2時(shí),即電機(jī)轉(zhuǎn)速值的十位+1。再按下KEY3時(shí),液晶顯示當(dāng)前的轉(zhuǎn)速和設(shè)定的轉(zhuǎn)速應(yīng)同一值,即為50轉(zhuǎn)/秒。假定初始電機(jī)的轉(zhuǎn)動(dòng)方向是正方向,那么當(dāng)按一次KEY4時(shí),再按下KEY3時(shí)電機(jī)的轉(zhuǎn)動(dòng)方向即為反方向。而當(dāng)?shù)?/p>

77、二次按下KEY4時(shí),跟上按下KEY3后,電機(jī)轉(zhuǎn)動(dòng)的方向則為正方向。</p><p>  圖4-7 主程序流程圖</p><p><b>  5 調(diào)試</b></p><p>  本設(shè)計(jì)按照設(shè)計(jì)任務(wù)要求設(shè)計(jì)。期間對(duì)整個(gè)直流電機(jī)控制系統(tǒng)的各個(gè)模塊進(jìn)行了細(xì)致的分析。在查閱大量資料學(xué)習(xí)各模塊的工作原理,熟悉本設(shè)計(jì)各模塊功能的基礎(chǔ)上,對(duì)整個(gè)程序分模塊

78、畫流程圖,并進(jìn)行編程調(diào)試,通過不斷的調(diào)試修改,基本完成任務(wù)要求。</p><p>  圖5-1 直流電機(jī)控制系統(tǒng)實(shí)物圖</p><p><b>  調(diào)試過程:</b></p><p>  1.首先給單片機(jī)接通電源,并聯(lián)接上仿真器,再把仿真器通過USB線連上PC機(jī)。并把電機(jī)和驅(qū)動(dòng)模塊相連(如圖5-1)。</p><p>

79、<b>  2.軟件調(diào)試</b></p><p> ?。?)調(diào)試PCA定時(shí)計(jì)數(shù)。</p><p>  先把PCA捕捉模塊0,1設(shè)置為PWM方式,通過數(shù)字示波器觀察在CEX0,CEX1端是否出現(xiàn)PWM波形。剛開始調(diào)試時(shí),就是不能出來PWM波形,后來經(jīng)過檢查發(fā)現(xiàn),PCA計(jì)數(shù)器沒有打開。設(shè)置PCA使能后,就出來波形了。</p><p> ?。?)調(diào)試

80、測(cè)量轉(zhuǎn)速模塊</p><p>  先設(shè)置T0為計(jì)數(shù)功能,T2為定時(shí)功能。開始調(diào)試,結(jié)果發(fā)現(xiàn)T0沒有自動(dòng)清0功能,修改代碼,使T0清0功能使能。T2運(yùn)行正常。</p><p><b> ?。?)調(diào)試液晶顯示</b></p><p>  把書上代碼調(diào)試后,在液晶上出現(xiàn)電子綜合設(shè)計(jì)四個(gè)字,說明液晶顯示程序可以</p><p>

81、  確定各個(gè)軟件模塊的功能和接口,根據(jù)流程圖用C語言編寫程序,實(shí)現(xiàn)PID算法,定時(shí)器/計(jì)數(shù)器功能及產(chǎn)生PWM,并能實(shí)現(xiàn)按鍵功能。通過在Silicon Labs集成開發(fā)環(huán)境軟件中,不斷的調(diào)試,修改,編譯并下載到單片機(jī)里。</p><p>  最后根據(jù)實(shí)際各個(gè)硬件模塊運(yùn)行的實(shí)際情況,是否符合設(shè)計(jì)要求,對(duì)相應(yīng)的軟件模塊進(jìn)行修改,最終實(shí)現(xiàn)單片機(jī)對(duì)直流電機(jī)轉(zhuǎn)速比較精確的控制。</p><p><

82、;b>  6 結(jié)論</b></p><p>  本設(shè)計(jì)按照任務(wù)書的要求在查閱大量資料和完成多項(xiàng)實(shí)驗(yàn)的基礎(chǔ)上,經(jīng)過幾個(gè)月的努力,基本上實(shí)現(xiàn)預(yù)期功能,但依然有部分功能存在缺陷。本設(shè)計(jì)由開題報(bào)告、文獻(xiàn)綜述、外文翻譯、實(shí)物設(shè)計(jì)及論文五部分組成。通過查閱各種文獻(xiàn)資料獲得直流電機(jī)、單片機(jī)、電機(jī)驅(qū)動(dòng)電路、液晶顯示及電機(jī)測(cè)速等方面的理論知識(shí)和實(shí)踐指導(dǎo),通過實(shí)物設(shè)計(jì),將理論與實(shí)際相結(jié)合,實(shí)際操作完成本設(shè)計(jì)。&l

83、t;/p><p>  本設(shè)計(jì)是以C8051F005單片機(jī)為核心,將電機(jī)驅(qū)動(dòng)、電機(jī)測(cè)速、液晶顯示及按鍵等功能相結(jié)合,組成一個(gè)簡(jiǎn)單的單片機(jī)直流電機(jī)控制系統(tǒng)。并通過在Silicon Labs集成開發(fā)環(huán)境軟件中,對(duì)整個(gè)系統(tǒng)代碼行進(jìn)調(diào)試,修改,下載進(jìn)單片機(jī)內(nèi)。最后根據(jù)實(shí)際各個(gè)硬件模塊運(yùn)行的實(shí)際情況,是否符合設(shè)計(jì)要求,對(duì)相應(yīng)的軟件模塊進(jìn)行修改,最終實(shí)現(xiàn)單片機(jī)對(duì)直流電機(jī)轉(zhuǎn)速比較精確的控制。</p><p>

84、  在設(shè)計(jì)制作過程,遇到了很多的問題,在指導(dǎo)老師的幫助下,從零開始,循序漸進(jìn),遇到問題逐個(gè)解決,從失敗中獲取經(jīng)驗(yàn),在實(shí)踐中發(fā)現(xiàn)了自身的不足,獲得了很多知識(shí),使自身的理論知識(shí)和實(shí)踐水平都得到了提高。</p><p>  由于本人的專業(yè)知識(shí)和單片機(jī)端口數(shù)量的不足有限以及時(shí)間等其他方面的不足,只能在此基礎(chǔ)上實(shí)現(xiàn)簡(jiǎn)單的功能。如果條件和時(shí)間允許,還可以對(duì)本設(shè)計(jì)進(jìn)行進(jìn)一步的開發(fā)。</p><p>&l

85、t;b>  參考文獻(xiàn)</b></p><p>  [1] 余景華,楊冠魯?shù)龋贔PGA的無刷直流電機(jī)控制系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息.2008,11-2:p220-221</p><p>  [2] 歷風(fēng)滿.數(shù)字PID控制算法的研究[J].遼寧大學(xué)學(xué)報(bào),2005,32(4):367~370.</p><p>  [3] 包松,鮑可進(jìn),余景華

86、.基于單片機(jī)PID算法的直流電機(jī)測(cè)控系統(tǒng)[J].微機(jī)發(fā)展,2003,13(8):72~74</p><p>  [4] 張培仁,孫力主編.基于C語言C8051F系列微控制器原理與應(yīng)用[M].清華大學(xué)出版社,2007年11月.</p><p>  [5] Boudreaux R R,Nelms R M,Hung John Y.Simulation and Modeling of a DC

87、 – DC converter controlled by an 8 – bit microcontroller. IEEE –APEC.2,1997 </p><p>  [6] 竇振中,單片機(jī)外圍器件使用手冊(cè)[M].北京航空航天大學(xué)出版社,2003.</p><p>  [7] 張立勛,沈錦華,路敦民,等.A R單片機(jī)實(shí)現(xiàn)的直流電機(jī)PWM 調(diào)速控制器[J] .機(jī)械與電子,2004(

88、4) :29- 32</p><p>  [8] 陳伯時(shí). 電力拖動(dòng)自動(dòng)控制系統(tǒng)[M] .第3版北京:機(jī)械工業(yè)出版社,2003</p><p>  [9] 鄧星鐘.機(jī)電傳動(dòng)控制[M]. 武漢:華中科技大學(xué)出版社,2001.</p><p>  [10] 郭海英.微機(jī)控制PWM直流調(diào)速系統(tǒng)設(shè)計(jì)[J].武漢:華中科技大學(xué)出版社,2006.</p>&l

89、t;p>  [11] 潘新民.微型計(jì)算機(jī)控制技術(shù)[M].北京:電子工業(yè)出版社,2003.</p><p>  [12]楊輝先,黃輝光.單片機(jī)原理及應(yīng)用[M].人民郵電出版社,2006年10月.</p><p>  附錄1 直流電機(jī)控制系統(tǒng)實(shí)物圖</p><p><b>  附錄2程序代碼</b></p><p&g

90、t;  //該程序可通過按鍵盤和串口控制直流電動(dòng)機(jī)速度,誤差每秒+-2轉(zhuǎn),</p><p>  #include <c8051f000.h> // SFR declarations</p><p>  #define SYSCLK 11059200 // SYSCLK in Hz </p><p>

91、;  #define CP8// 比例常數(shù) Proportional Const</p><p>  #define CI3// 積分常數(shù) Integral Const</p><p>  #defineCD1</p><p>  // 波形為低電平的PCA周期數(shù),占空度 = (256 - PWM) / 256</p><

92、;p>  //-----------------------------------------------------------------------------</p><p>  // Function Prototypes</p><p>  //---------------------------------------------------------------

93、--------------</p><p>  sbit rd = P1^7;</p><p>  sbit re = P1^5;</p><p>  sbit wr= P1^6;</p><p>  sbit addr0= P1^0;</p><p>  sbit addr1= P1^1;&

94、lt;/p><p>  sbit addr2= P1^2;</p><p>  sbit addr3= P1^3;</p><p>  sbit addr4= P1^4;</p><p>  sbit data0= P2^0;</p><p>  sbit data1= P2^1;</p><

95、p>  sbit data2= P2^2;</p><p>  sbit data3= P2^3;</p><p>  sbit lcd_en = P3^0;</p><p>  sbit phase = P0^7;//控制方向管腳</p><p><b>  //自函數(shù)定義</b></p>&l

96、t;p>  void OSCILLATOR_Init (void); //晶振初始化 </p><p>  void PORT_Init (void);//端口初始化</p><p>  void PCA_Init(void);//PCA計(jì)數(shù)器初試化</p><p>  void write (int addr, int datain);&l

97、t;/p><p>  unsigned int read();</p><p>  void delay(int time_10ms);</p><p>  void Timer2_ISR(void);</p><p>  unsigned int pwm=0xa0;//占空比初始狀態(tài)為(256-0xa0)/256</p><

98、p>  void Timer2_Init(void);</p><p>  void Timer0_Init(void);</p><p>  int DCMotor_Speed_PID(int SetSpeed, int CurSpeed);//PID控制算法</p><p>  void UART0_Init (void);//串口初始化</p>

99、;<p><b>  //變量定義</b></p><p>  unsigned int zhushu,percent=0,zhushu1=50;</p><p>  int i1=0,i2=0,i3=0,i4=0;</p><p>  int n=0,m=0,l=0;</p><p><b> 

100、 //主函數(shù)</b></p><p>  void main (void)</p><p>  { unsigned int temp1,temp2,wei2,temp_wei;</p><p>  WDTCN = 0xde; // 靜止看門狗</p><p>  WDTCN =

101、 0xad;</p><p>  OSCILLATOR_Init (); // 晶振初始化</p><p>  PORT_Init(); // 端口初始化</p><p>  PCA0CPL0 = 0xa0; // 初始化PCA的PWM值</p><p>

102、;  PCA0CPH0 = 0xa0;</p><p>  PCA0CPL1 = 0xa0; // 初始化PCA的PWM值</p><p>  PCA0CPH1 = 0xa0;;</p><p>  Timer0_Init();//定時(shí)器0初始化</p><p>  Timer2_Init();//定時(shí)器2初始化</p><

103、;p><b>  lcd_en=0;</b></p><p>  PCA_Init();//PCA計(jì)數(shù)器初始化</p><p>  phase=1;//</p><p>  write(2,0);write(1,0);write(3,0);write(4,0);write(5,0);write(6,0);//所有數(shù)碼管顯示0</p&

104、gt;<p>  UART0_Init ();//串口初始化</p><p>  EA=1;//開中斷</p><p><b>  while (1)</b></p><p>  {temp1=read();//讀按鍵</p><p>  if (temp1!=temp2) </p><

105、p><b>  {</b></p><p>  delay(10);</p><p>  temp2=read();//再讀一次</p><p>  if (temp1==temp2) </p><p><b>  { </b></p><p>  temp_wei

106、=temp2;</p><p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //key1按鍵</p><p>  { i1++; if (i1==10) i1=0; write(6,i1); }//設(shè)置每秒轉(zhuǎn)速十位</p><p>  temp_wei>>=1;</p><

107、p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //key2按鍵盤設(shè)置轉(zhuǎn)速個(gè)位</p><p>  { i2++ ; if (i2==10) i2=0;write(5,i2); }</p><p>  temp_wei>>=1;</p><p>  wei2=temp_wei%2;&l

108、t;/p><p>  if(wei2==0) //key3按鍵用于調(diào)整轉(zhuǎn)動(dòng)方向</p><p>  { phase=~phase;}</p><p>  temp_wei>>=1;</p><p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //用于計(jì)算轉(zhuǎn)速的大小</

109、p><p>  { zhushu1=i1*10+i2; </p><p><b>  }</b></p><p>  } // end of while(1)</p><p><b>  } </b></p><p

110、>  write(4,zhushu1/10);</p><p>  write(3,zhushu1%10); </p><p><b>  } </b></p><p>  } // end of main()</p><p>  void OS

111、CILLATOR_Init (void)</p><p><b>  { </b></p><p><b>  int i;</b></p><p>  OSCXCN=0x67; //使能外部時(shí)鐘</p><p>  for(i=0;i<256;

112、i++); //等待外部時(shí)鐘穩(wěn)定</p><p>  while(!(OSCXCN & 0x80));</p><p>  OSCICN = 0x08; // 禁止內(nèi)部時(shí)鐘,采用外部晶振蕩器</p><p><b>  }</b></p><p&

113、gt;  void PCA_Init(void)</p><p><b>  {</b></p><p>  PCA0MD = 0x02; // 禁止CF中斷 // PCA時(shí)基= SYSCLK / 4</p><p>  PCA0CPM0 = 0x42; // CCM0為8位PWM方式</p><p>  PCA0C

114、PM1 = 0x42; // CCM0為8位PWM方式</p><p>  PCA0CN = 0x40; // 允許PCA計(jì)數(shù)器</p><p><b>  }</b></p><p>  void PORT_Init (void)</p><p><b>  {</b></p>&l

115、t;p>  PRT1CF |= 0xff; //全部采用推挽方式 </p><p>  PRT2CF |= 0xff; //</p><p>  PRT0CF |= 0xff; // </p><p>  P1 |= 0xa0;

116、 // </p><p>  XBR0 = 0x10; //CEX0 CEX1 連到P0.2 P0.3 //TX RX P0.4 P0.5</p><p>  XBR1 = 0x02; //T0 P0.6</p><p>  XBR2 = 0x40

117、; // 使能交叉開關(guān)</p><p><b>  }</b></p><p>  void Timer0_Init(void)</p><p><b>  {</b></p><p>  TMOD=0X25;//定時(shí)器0計(jì)數(shù)方式16位,定時(shí)器1定時(shí)16位</p&g

118、t;<p><b>  TH0=0X00;</b></p><p><b>  TL0=0X00;</b></p><p>  TR0=1;//開定時(shí)器0</p><p>  ET0=0;//不允許定時(shí)器0中斷</p><p><b>  }</b></p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論