基于arm的直流電機(jī)調(diào)速系統(tǒng)的研究_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  指導(dǎo)教師評定成績: </p><p>  審定成績: </p><p>  汽車電子與嵌入式方向?qū)嵺`課報(bào)告</p><p>  設(shè)計(jì)題目:基于ARM的直流電機(jī)調(diào)速系統(tǒng)的研究</p><p>  單位(二級學(xué)院): <

2、/p><p>  小 組 成 員: </p><p>  專 業(yè): </p><p>  班 級: </p><p>  學(xué) 號:

3、 </p><p>  指 導(dǎo) 教 師: </p><p>  設(shè)計(jì)時間: 2015 年 1 月</p><p><b>  摘 要</b></p><p>  本論文主要研究了采用基于ARM嵌入式的直流電機(jī)調(diào)速的問題。首先對本論

4、文的主要器件和原理進(jìn)行了介紹,包括ARM微處理器,直流電機(jī)和PWM脈沖寬度調(diào)制。通過不同方案的對比,選擇了本論文的主要技術(shù)方案為PWM脈沖寬度調(diào)制并對該方案進(jìn)行了逐步驗(yàn)證。通過proteus軟件進(jìn)行了硬件電路的設(shè)計(jì)和軟件程序的編寫,實(shí)現(xiàn)了對直流電機(jī)速度控制,正傳,反轉(zhuǎn)的目的,并進(jìn)行了電路仿真,最終得到了理想的效果。論文的最后對這次的研究進(jìn)行了深刻的總結(jié)和反思,總結(jié)了本次研究得到的經(jīng)驗(yàn),并對研究方案的不足之處進(jìn)行了反思和改進(jìn),使得該方案更

5、加完美。</p><p><b>  概 述</b></p><p>  隨著我國國民經(jīng)濟(jì)的快速增長,產(chǎn)業(yè)結(jié)構(gòu)也隨之不斷調(diào)整。先進(jìn)的科學(xué)技術(shù)的出現(xiàn)為我國工業(yè)的快速發(fā)展提供了基礎(chǔ)。近些年來,以計(jì)算機(jī)技術(shù),通訊技術(shù)、消費(fèi)電子技術(shù)為主的電子信息技術(shù)的高速發(fā)展和國際互聯(lián)網(wǎng)絡(luò)(Internet)的廣泛應(yīng)用已經(jīng)改變了人們的生活方式,世界各國都在為發(fā)展以計(jì)算機(jī)技術(shù),通訊技術(shù)、

6、消費(fèi)電子技術(shù)為主要內(nèi)容的信息產(chǎn)業(yè)制定宏偉的發(fā)展規(guī)劃,以期望在21世紀(jì)的政治、經(jīng)濟(jì)和技術(shù)競爭中處于主動有利的地位。信息技術(shù)對其他各產(chǎn)業(yè)的貢獻(xiàn)越來越大,信息產(chǎn)業(yè)正逐漸成為其他產(chǎn)業(yè)的支柱。信息產(chǎn)業(yè)的發(fā)展程度、信息流通、暢通與否已成為評價(jià)各個國家的經(jīng)濟(jì)發(fā)展水平的一個重要標(biāo)準(zhǔn)。在人類步入全球信息化社會的進(jìn)程中,全球性電子信息技術(shù)正在發(fā)揮著巨大的作用。</p><p>  嵌入式系統(tǒng)是近年來發(fā)展最快的技術(shù)之一。嵌入式系統(tǒng)與傳

7、統(tǒng)的單片機(jī)系統(tǒng)和 PC 平臺相比,融合了兩者的優(yōu)點(diǎn),既有單片機(jī)系統(tǒng)成本低、體積小、功耗低的特點(diǎn),又具 有PC平臺的開發(fā)環(huán)境好、資源豐富、具備操作系統(tǒng)、用戶界面友好的特點(diǎn),因而在應(yīng)用技術(shù)領(lǐng)域就有良好的發(fā)展前景。以32位的ARM 芯片和高速大容量FPGA為核心的嵌入式系統(tǒng)不但充分發(fā)揮了以上特點(diǎn),而且大大簡化了系統(tǒng)設(shè)計(jì),提高了集成度和可靠性。</p><p>  國家的發(fā)展,使得大到工廠企業(yè),小到電子產(chǎn)品都需要電機(jī)來進(jìn)

8、行各種運(yùn)動的控制,對電機(jī)速度的控制也稱為了現(xiàn)代數(shù)字控制的一大課題??萍及l(fā)展至今,主要采用對輸入電壓的控制來進(jìn)行電機(jī)的控制,而輸入電壓的控制又廣泛采用PWM脈沖寬度調(diào)制來實(shí)現(xiàn)對電壓大小的控制。ARM嵌入式可直接輸出PWM波,通過編程對該波進(jìn)行占空比和頻率的調(diào)節(jié),相比電路和單片機(jī)實(shí)現(xiàn)的PWM波而言,ARM嵌入式具有更好的靈活性,高效率性,精度高,快速響應(yīng)好,成本低,功耗小等特點(diǎn),具有很好的應(yīng)用前景。</p><p>

9、  嵌入式和電機(jī)調(diào)速原理簡介</p><p>  1.1嵌入式系統(tǒng)簡介</p><p>  1.1.1嵌入式系統(tǒng)定義</p><p>  國際電氣和電子工程師協(xié)會(IEEE)對嵌入式系統(tǒng)的定義為:“用于控制、監(jiān)視或者輔助操作機(jī)器、設(shè)備和工廠的裝置?!保╠evices used to control, monitor or assist the operation o

10、f equipment, machinery or plants)。這里主要是從應(yīng)用上進(jìn)行定義的。</p><p>  國內(nèi)的一些學(xué)者和專家講嵌入式系統(tǒng)定義為:“嵌入到對象體系中的專用計(jì)算機(jī)系統(tǒng)”。“嵌入性”、“專用型”與“計(jì)算機(jī)系統(tǒng)”是嵌入式系統(tǒng)的3個基本要素,對象系統(tǒng)則是嵌入式系統(tǒng)所嵌入的宿主系統(tǒng)。</p><p>  目前國內(nèi)一個普遍被認(rèn)同的定義是:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)

11、技術(shù)為基礎(chǔ),軟、硬件可裁減,滿足應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。</p><p>  由于嵌入式系統(tǒng)本身是一個相對模糊的定義,一個手持的MP3和一個PC104的微型工業(yè)控制計(jì)算機(jī)都可以認(rèn)為是嵌入式系統(tǒng),因此只要是和具體產(chǎn)品結(jié)合在一起并具有嵌入式特點(diǎn)的控制系統(tǒng)都可以成為嵌入式系統(tǒng)。目前通常把嵌入式系統(tǒng)概念的重心放在“系統(tǒng)”上,及指能夠運(yùn)行穩(wěn)定系統(tǒng)的軟硬件綜合體。</p>

12、;<p>  總體上嵌入式系統(tǒng)可以分成硬件和軟件2部分:硬件一般由嵌入式微處理器、存儲器和外圍接口電路組成;軟件一般由引導(dǎo)裝載程序、操作系統(tǒng)和上層應(yīng)用程序組成。軟件和硬件之間有中間層。</p><p>  1.1.2國內(nèi)外嵌入式系統(tǒng)的發(fā)展現(xiàn)狀</p><p>  隨著信息化、智能化、網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)技術(shù)也將獲得廣闊的發(fā)展 空間。以8位單片機(jī)(或微控制器,MCU)為核心

13、的嵌入式系統(tǒng)早以廣泛應(yīng)用與各個領(lǐng)域,這些應(yīng)用大多數(shù)還處于單機(jī)使用的嵌入式底層次階段。其特點(diǎn)是以MCU為核心,與一些簡單的傳感器及監(jiān)測、伺服控制、指示和顯示等設(shè)備配合,實(shí)現(xiàn)一定的測量、顯示、信息處理及控制等功能。雖然在一些工業(yè)控制、汽車電子和智能家居等多機(jī)應(yīng)用中,為了實(shí)現(xiàn)多個MCU構(gòu)成的系統(tǒng)間的信息交流,通常是利用CAN、RS-232和RS-485等總線將MCU組網(wǎng)。但這種應(yīng)用空間有限,相關(guān)的通信協(xié)議也比較單一,并且孤立于Internet

14、之外。Internet已成為社會重要的基礎(chǔ)信息設(shè)施,嵌入式系統(tǒng)必將要與Internet完美結(jié)合。</p><p>  隨著嵌入式設(shè)備與Internet的結(jié)合,手機(jī)、PDA、路由器和調(diào)制解調(diào)器等復(fù)雜的高端應(yīng)用對嵌入式處理器的性能提出了更高的要求。雖然以8位單片機(jī)為核心的嵌入式技術(shù)的不斷發(fā)展,性能也不斷提高,但由于其性能的局限性,已無法滿足未來高性能嵌入式技術(shù)的發(fā)展需求。目前在8位單片機(jī)上運(yùn)行嵌入式操作系統(tǒng)尚有一定困

15、難,因此,以32位處理器作為高性能嵌入式系統(tǒng)開發(fā)的核心已是嵌入式技術(shù)發(fā)展的必然趨勢。</p><p>  嵌入式微處理器具有體積小、重量輕、成本低和可靠性高的優(yōu)點(diǎn),是嵌入式系統(tǒng)的核心。目前比較有影響的32位嵌入式處理器有ARM公司的ARM,Compaq公司的Alpha、HP公司的PA-RISC、IBM公司的PowerPC、MIPS公司的MIPS和Sun公司的Sparc等。而ARM處理器具有高性能、低功耗和低成本等

16、顯著優(yōu)點(diǎn),已成為高性能、低功耗嵌入式微處理器的代名詞,是目前32位、64位嵌入式處理器中應(yīng)用最為廣泛的一個系列。</p><p>  ARM微處理器得到了眾多半導(dǎo)體廠家和整機(jī)廠家的大力支持,全球有100多家IT公司在采用ARM技術(shù),20家最大的半導(dǎo)體廠家有19家是ARM的用戶,包括TI、PHILIPS和Intel等公司。優(yōu)良的性能和準(zhǔn)確的市場定位極大地豐富了ARM資源,加速了基于ARM核的面向各種應(yīng)用系統(tǒng)芯片的開

17、發(fā)應(yīng)用。如今,ARM公司已經(jīng)成為業(yè)界的龍頭老大,幾乎所有的手機(jī)、移動設(shè)備、PDA都是用基于ARM核的系統(tǒng)芯片開發(fā)的。為了順應(yīng)當(dāng)今世界技術(shù)革新的潮流,了解、學(xué)習(xí)和掌握高性能嵌入式技術(shù)已經(jīng)非常重要。</p><p>  1.1.3嵌入式系統(tǒng)的特點(diǎn)</p><p>  嵌入式系統(tǒng)是面向應(yīng)用的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)最典型的特點(diǎn)是與人們的日常生活緊密相關(guān),現(xiàn)在每一個人都擁有形形色色運(yùn)用了嵌入式技

18、術(shù)的電子產(chǎn)品,小到MP3、PDA等衛(wèi)星數(shù)字化設(shè)備,達(dá)到信息家電、智能電器、車載GIS等,各種新型嵌入式設(shè)備在數(shù)量上已經(jīng)遠(yuǎn)遠(yuǎn)超過了通用計(jì)算機(jī)。</p><p>  1.嵌入式系統(tǒng)通常是面向特定應(yīng)用的軟硬件結(jié)合體。</p><p>  嵌入式系統(tǒng)一般用于特定的場合,其硬件和軟件都務(wù)須高效,量體裁衣,去除冗余;而計(jì)算機(jī)則是一個通用的計(jì)算機(jī)平臺。</p><p>  2.系

19、統(tǒng)精簡,關(guān)注成本。</p><p>  嵌入式系統(tǒng)一般沒有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能設(shè)計(jì)及實(shí)現(xiàn)上過于復(fù)雜,這樣一方面有利于控制系統(tǒng)成本,同時也有利于實(shí)現(xiàn)系統(tǒng)安全。</p><p>  3.嵌入式系統(tǒng)有實(shí)時性和可靠性的要求。</p><p>  高實(shí)時性的操作系統(tǒng)軟件是嵌入式區(qū)按鍵的基本要求,而且軟件要求固態(tài)存儲,以提高速度。軟件代碼要求高可靠性和實(shí)時

20、性。在多任務(wù)嵌入式系統(tǒng)中,對重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個任務(wù)及時執(zhí)行的關(guān)鍵,單純通過提高處理器速度是無法完成和沒有效率的,因此系統(tǒng)漸漸地高實(shí)時性是基本要求。</p><p>  4.產(chǎn)品升級換代和具體產(chǎn)品同步,具有較長的生命周期。</p><p>  嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,他的升級換代也和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一點(diǎn)進(jìn)入市場,便具有較長的

21、生命周期。</p><p>  5.嵌入式軟件開發(fā)走向標(biāo)準(zhǔn)化,必須使用多任務(wù)的操作系統(tǒng)。</p><p>  嵌入式系統(tǒng)的應(yīng)用程序可以在沒有操作系統(tǒng)的情況下,直接在芯片上運(yùn)行。單位了合理的調(diào)度多任務(wù),利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,必須使用RTOS(Real-Time Operating System)系統(tǒng)平臺,這樣才能保證程序執(zhí)行的實(shí)時性、可靠性,并減少開發(fā)時間,保障軟件質(zhì)量

22、。</p><p>  1.2 PWM脈沖寬度調(diào)制簡介</p><p>  PWM就是指脈沖寬度調(diào)制(pulse width modulation),簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中。其方法是通過改變電機(jī)電樞電壓接通時間與通電周期的比值(即占空比)來控制電機(jī)轉(zhuǎn)速。</p>&l

23、t;p>  脈沖寬度調(diào)制是一種模擬控制方式,其根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實(shí)現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數(shù)字信號對模擬電路進(jìn)行控制的一種非常有效的技術(shù)。 </p><p>  PWM控制技術(shù)以其控制簡單,靈活和動態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點(diǎn)。由于當(dāng)今科學(xué)技

24、術(shù)的發(fā)展已經(jīng)沒有了學(xué)科之間的界限,結(jié)合現(xiàn)代控制理論思想或?qū)崿F(xiàn)無諧振軟開關(guān)技術(shù)將會成為PWM控制技術(shù)發(fā)展的主要方向之一。</p><p>  PWM技術(shù)的發(fā)展經(jīng)過了幾個階段。第一個階段:電子發(fā)展早期由電路設(shè)計(jì)產(chǎn)生PWM波,例如由555定時器或者運(yùn)算放大器產(chǎn)生PWM波。第二個階段:單片機(jī)產(chǎn)生后,人們開始采用軟件設(shè)計(jì)產(chǎn)生PWM波,這樣的波可以進(jìn)行數(shù)字控制,可以直接使用計(jì)算機(jī)來設(shè)定實(shí)現(xiàn)自動控制。第三個階段:使用ARM嵌入

25、式系統(tǒng)的定時器直接輸出PWM波,只需簡單地編程便可以產(chǎn)生PWM波,不會一直占用處理器,只是在定時器到的時候才用到處理器,所以相對于單片機(jī)利用效率非常高。</p><p>  2.系統(tǒng)總體方案設(shè)計(jì)</p><p><b>  2.1方案論證</b></p><p><b>  2.1.1系統(tǒng)方案</b></p>

26、<p>  方案一:使用S3C2410的I/O口,定義I/O口為輸出引腳端,通過編程使其中一個引腳輸出低電平,另一引腳輸出高、低交替變化的電平(即PWM波),采用程序改變其中輸出頻率和占空比。通過輸出的PWM波輸入驅(qū)動芯片L9110,進(jìn)而來控制直流電機(jī)的旋轉(zhuǎn)。通過鍵盤中斷來控制PWM占空比的大小。由LED數(shù)碼管來顯示電機(jī)頻率和占空比的大小。</p><p>  方案二:從電路圖上來說方案二和方案一差別

27、不大,僅僅是驅(qū)動部分連接引腳功能有變化,但是產(chǎn)生的PWM波的原理差別卻很大。S3C2410有5個16位定時器,其中0、1、2、3具有脈沖寬度調(diào)制(PWM)功能。通過使用S3C2410的GPB0引腳的第二功能TOUT0輸出該P(yáng)WM波。通過改變定時器技術(shù)緩沖寄存器(TCNTBn)和定時器比較緩沖寄存器(TCMPBn)的數(shù)值來改變輸出頻率和占空比。將輸出的PWM波輸入到驅(qū)動,經(jīng)由驅(qū)動來控制直流電機(jī)的旋轉(zhuǎn)。通過鍵盤中斷來控制PWM占空比的大小。

28、由LED數(shù)碼管來顯示電機(jī)頻率和占空比的大小。</p><p><b>  2.1.2方案比較</b></p><p>  方案一和方案二均可以輸出PWM波,但是使用的方法并不一樣。方案一簡單易懂,幾乎沒有用到ARM的知識。該方案和單品阿基輸出PWM波進(jìn)行電機(jī)調(diào)速的思路完全一樣,僅僅是使用輸出口時要先進(jìn)行功能定義。相比較方案二就復(fù)雜了,不僅用到I/O口的寄存器使用方法,

29、而且還用到ARM的中斷控制,定時器的設(shè)置,定時器配置/控制寄存器的使用等等,只有深入了解ARM才可能完成PWM波的輸出。雖然PWM為定時器自帶功能,但想要輸出PWM波來對直流電機(jī)進(jìn)行控制也要一定的基礎(chǔ),對比而言,方案一在輸出PWM波時一直占用CPU,而采用方案二,則在中斷產(chǎn)生時才用到CPU,大大節(jié)省了資源的使用,使用方案一就顯得有些大材小用了,采用方案二則充分運(yùn)用了ARM的性能,綜上所述,本次設(shè)計(jì)采用方案二。</p>&l

30、t;p><b>  2.2系統(tǒng)基本原理</b></p><p>  2.2.1 S3C2410的PWM定時器概述</p><p>  S3C2410有5個16位定時器,其中定時器0、1、2、3具有脈沖寬度調(diào)制(PWM)功能,定時器4具有內(nèi)部定時作用,但是沒有輸出引腳。定時器0具有死區(qū)生成器,圖3 定時器內(nèi)部電路圖</p><p>  

31、可以控制大電流設(shè)備。</p><p>  定時器T0和T1公用一個8位預(yù)分頻器,定時器T2、T3和T4公用另一個8位預(yù)分頻器,每個定時器都有一個時鐘分頻器,信號分頻輸出有5中模式(1/2、1/4、1/8、1/16和外部時鐘TCLK)。</p><p>  每個定時器模塊都從時鐘分頻器接收它自己的時鐘信號,時鐘分頻器接收的時鐘信號來自于8位預(yù)分頻器。</p><p>

32、  當(dāng)時鐘被允許的時候,定時器計(jì)數(shù)緩沖寄存器(TCNTBn)把計(jì)數(shù)初值下載到減法計(jì)數(shù)器中,定時器比較緩沖寄存器(TCMPBn)把初始值下載到比較寄存器中,來和減法計(jì)數(shù)器的值比較。</p><p>  這種TCNTBn和TCMPBn雙緩沖寄存器特性能使定時器產(chǎn)生穩(wěn)定的輸出,且占空比可變。TCMPBn的值用于脈沖寬度調(diào)制(PWM)。當(dāng)定時器的減法計(jì)數(shù)器的值和TCMPBn的值相匹配時,定時器輸出改變輸出電平。因此,比較

33、寄存器決定了PWM輸出的開關(guān)時間。</p><p>  定時器輸入時鐘頻率: fTCLK=[fPCLK/(Prescaler+1)]/分配器分頻值</p><p>  其中,Prescaler為預(yù)分頻值(0~255);分配器的分頻值為2、4、8和16。 </p><p>  PWM輸出時鐘頻率=定時器輸入時鐘頻率(fTCLK)/定時器計(jì)數(shù)緩沖寄存器值(TCN

34、TBn)</p><p>  2.2.2 S3C2410的寄存器介紹</p><p>  S3C2410里有很多寄存器,在使用之前都需要對相關(guān)的寄存器進(jìn)行配置,這里將使用到的寄存器配置及功能列舉出來。</p><p> ?。?)S3C2410的I/O口配置:S3C2410中共有117個多功能復(fù)用輸入/輸出端口(即I/O口),可分為端口A~端口H,共8組。其中,8組I

35、/O口按照其位數(shù)的不同有可分為:端口A(GPA)是1個23位輸出口;端口B(GPB)和端口H(GPH)是2個11位I/O口;端口C(GPC)、端口D(GPD)、端口E(GPE)、和端口G(GPG)是4個16位的I/O口;端口F(GPF)是一個8位I/O口。</p><p>  為了滿足不同系統(tǒng)設(shè)計(jì)的需要,每個I/O口可以很容易的通過軟件對其進(jìn)行配置。每個引腳的功能必須在啟動前進(jìn)行定義。這里主要介紹端口B的I/O口

36、配置情況:</p><p>  表1 S3C2410端口B的I/O口配置情況</p><p> ?。?)S3C2410的I/O口寄存器:在S3C2410中,大多數(shù)的引腳端都是復(fù)用的,所以對于每一個引腳端都需要定義其功能。為了使用I/O口,首先需要定義引腳的功能。每個引腳端的功能通過端口控制寄存器(PnCON)來定義(配置)。與配置I/O口相關(guān)的寄存器包括:端口控制寄存器(GPACON~

37、GPHCON)、端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、雜項(xiàng)控制寄存器以及外部中斷控制寄存器(EXTINTN)等。這里主要介紹端口B的I/O口寄存器。</p><p>  表2 S3C2410端口B的I/O口寄存器</p><p>  (3)S3C2410的中斷控制器:S3C2410采用ARM920T CPU內(nèi)核,ARM920T CPU的中

38、斷包含IRQ和FIQ。IRQ是普通中斷,F(xiàn)IQ是快速中斷,F(xiàn)IQ的優(yōu)先級高于IRQ。FIQ中斷通常在進(jìn)行大批量的復(fù)制、數(shù)據(jù)傳輸?shù)裙ぷ鲿r使用。這里主要介紹S3C2410的中斷控制器的特殊寄存器。</p><p>  表3 S3C2410的中斷控制器的特殊寄存器</p><p> ?。?)定時器控制寄存器(TCON) 地址:0x1000008,如下表所示。</p><p&

39、gt;  表4 定時器控制寄存器(TCON)定義</p><p>  (5)定時器配置寄存器0(TCFG0),地址:0x51000000,如下表所示。</p><p>  表5 定時器配置寄存器0</p><p> ?。?)定時器減法緩沖寄存器(TCNTBn)和比較緩沖寄存器(TCMPBn)定義如下表所示。</p><p>  表6 T

40、CNTBn和TCMPBn</p><p>  基本上通過這些寄存器的設(shè)置和控制就可以實(shí)現(xiàn)S3C2410定時器輸出PWM波,然后經(jīng)過驅(qū)動芯片對電機(jī)進(jìn)行控制了。</p><p>  2.2.3 直流電機(jī)驅(qū)動芯片介紹</p><p>  本次設(shè)計(jì)采用的直流電機(jī)驅(qū)動芯片為L9110。L9110 是為控制和驅(qū)動電機(jī)設(shè)計(jì)的兩通道推挽式功率放大專用集成電路器件,將分立電路集成在單

41、片IC 之中,使外圍器件成本降低,整機(jī)可靠性提高。該芯片有兩個TTL/CMOS兼容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅(qū)動電機(jī)的正反向運(yùn)動,它具有較大的電流驅(qū)動能力,每通道能通過750~800mA 的持續(xù)電流,峰值電流能力可達(dá)1.5~2.0A;同時它具有較低的輸出飽和壓降;內(nèi)置的鉗位二極管能釋放感性負(fù)載的反向沖擊電流,使它在驅(qū)動繼電器、直流電機(jī)、步進(jìn)電機(jī)或開關(guān)功率管的使用上安全可靠。L9110 被廣泛應(yīng)用于玩具汽車電機(jī)驅(qū)動、

42、步進(jìn)電機(jī)驅(qū)動和開關(guān)功率管等電路上。</p><p> ?。?)L9110的特點(diǎn):</p><p>  1.低靜態(tài)工作電流;</p><p>  2.寬電源電壓范圍:2.5V-12V;</p><p>  3.每通道具有 800mA 連續(xù)電流輸出能力;</p><p>  4.較低的飽和壓降;</p>&l

43、t;p>  5.TTL/CMOS 輸出電平兼容,可直接連CPU;</p><p>  6.輸出內(nèi)置鉗位二極管,適用于感性負(fù)載;</p><p>  7.控制和驅(qū)動集成于單片 IC 之中;</p><p>  8.具備管腳高壓保護(hù)功能;</p><p>  9.工作溫度:0℃-80℃。</p><p><b&

44、gt; ?。?)管腳定義:</b></p><p>  表7 L9110的管腳定義</p><p><b> ?。?)邏輯關(guān)系:</b></p><p>  表8 L9110的邏輯關(guān)系</p><p> ?。?)L9110的應(yīng)用電路圖:</p><p>  圖5 L9110的應(yīng)

45、用電路圖</p><p><b>  2.3系統(tǒng)方案實(shí)現(xiàn)</b></p><p>  本次設(shè)計(jì)采用S3C2410來進(jìn)行直流電機(jī)的控制,主要實(shí)現(xiàn)的功能有:直流電機(jī)的開啟、關(guān)閉、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速以及頻率和占空比的顯示等功能。</p><p>  圖6 ARM直流電機(jī)調(diào)速系統(tǒng)框圖</p><p> ?。?)PWM波的

46、產(chǎn)生:采用S3C2410自帶的定時器產(chǎn)生PWM波,設(shè)定GPB0輸出引腳的第2功能TOUT0,自動產(chǎn)生PWM波。</p><p> ?。?)按鍵處理:采用中斷形式來處理開啟、關(guān)閉、正轉(zhuǎn)、反轉(zhuǎn)等功能,沒有采用鍵盤掃描方式,大大節(jié)省了CPU的使用資源,提高了CPU的利用率。通過按鍵修改PWM波的占空比和頻率(即TCNTBn和TCMPBn的值),正反轉(zhuǎn)則修改TCON寄存器中TOUT0的倒相功能即可。</p>

47、<p>  (3)顯示模塊:對數(shù)碼管進(jìn)行反復(fù)掃描顯示,并通過S3C2410的I/O口進(jìn)行片選。沒有使用CD4511顯示譯碼器,采用了直接輸出8位碼進(jìn)行顯示。這樣節(jié)省了硬件成本,并且充分的運(yùn)用了S3C2410的資源。</p><p> ?。?)直流電機(jī)控制模塊:輸出的PWM波經(jīng)過驅(qū)動芯片L9110后輸出給電機(jī),從而對電機(jī)進(jìn)行控制。</p><p>  3. 系統(tǒng)軟硬件實(shí)現(xiàn)<

48、/p><p>  3.1系統(tǒng)硬件電路設(shè)計(jì)</p><p><b> ?。?)復(fù)位電路:</b></p><p>  在系統(tǒng)中,復(fù)位電路主要完成系統(tǒng)的上電復(fù)位和系統(tǒng)在運(yùn)行時用戶的按鍵復(fù)位功能。復(fù)位電路可由簡單的RC電路構(gòu)成,也可以使用其他的相對較復(fù)雜但功能更完善的電路。經(jīng)使用證明RC復(fù)位電路復(fù)位邏輯是可靠的。工作原理如下:在系統(tǒng)上電時,通過電阻R1向

49、電容C1充電,當(dāng)C1兩端的電壓未達(dá)到高電平的門限電壓時,RESET端輸出為高電平,系統(tǒng)處于復(fù)位狀態(tài);當(dāng)C1兩端的電壓未達(dá)到高電平的門限電壓時,RESET端輸出為低電平,系統(tǒng)進(jìn)入正常工作狀態(tài)。如圖7所示。</p><p><b> ?。?)時鐘電路:</b></p><p>  在S3C2410中的時鐘控制邏輯能夠產(chǎn)生CPU所需的FCLK時鐘信號、AHB總線外圍設(shè)備所需

50、的HCLK時鐘信號,以及APB總線外圍設(shè)備所需的PCLK時鐘信號。</p><p>  S3C2410有兩個鎖相環(huán)(Phase Locked Loops, PLL),一個用于FCLK、HCLK和PCLK,另一個專門用于USB模塊(48MHz)。時鐘控制邏輯可以再不需要PLL的情</p><p>  圖7 系統(tǒng)的復(fù)位電路</p><p>  況下產(chǎn)生慢速時鐘,并且可

51、以通過軟件來控制時鐘與每個外圍模塊是連接還是斷開,從而降低功耗。</p><p>  圖8 (a)RTC外部時鐘電路 (b)RLL外部時鐘電路</p><p> ?。?)鍵盤中斷電路:</p><p>  實(shí)驗(yàn)選擇的外部中斷是EINT8~EINT11.中斷產(chǎn)生分別來自按鈕SB1201、SB1202、SB1203、SB1204。當(dāng)按鈕按下

52、時,EINT8~EINT11與地連接,輸入低電平,從而向CPU發(fā)出中斷請求。當(dāng)CPU受理中斷后,進(jìn)入相應(yīng)的中斷服務(wù)程序。SB1201控制電機(jī)開啟和關(guān)閉,SB1202控制電機(jī)的加速,SB1203控制電機(jī)的減速,SB1204控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)。電路圖如圖9所示。</p><p>  圖9 鍵盤中斷電路</p><p> ?。?)LED顯示電路:</p><p> 

53、 LED數(shù)碼管有四個,分別為兩位顯示電機(jī)的頻率(單位:KHz),兩位顯示電機(jī)的占空比(單位:%)。使用共陽極LED數(shù)碼管,低電平驅(qū)動顯示,循環(huán)掃描顯示。使用S3C2410的I/O口進(jìn)行驅(qū)動。電路圖如下圖所示:</p><p>  圖10 LED數(shù)碼顯示電路</p><p> ?。?)電機(jī)驅(qū)動電路:</p><p>  電機(jī)驅(qū)動電路采用L9110來對電機(jī)進(jìn)行驅(qū)動,只

54、要在L9110的端口6、7(IA、IB)輸入PWM信號,則在L9110的端口1、4(OA、OB)輸出較大的驅(qū)動電流對電機(jī)進(jìn)行驅(qū)動。本次設(shè)計(jì)中采用TOUT0輸入PWM波,GPB1輸入低電平,兩個輸出引腳構(gòu)成PWM波,如果需要進(jìn)行電機(jī)的反轉(zhuǎn),則使TOUT0反相,然后是GPB1輸出高電平即可實(shí)現(xiàn)。電機(jī)驅(qū)動電路如下圖所示。</p><p>  圖11 電機(jī)驅(qū)動電路</p><p><b&

55、gt;  3.2系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  程序流程圖:</b></p><p>  首先定義全局變量,在任何函數(shù)中都可以調(diào)用。全局變量用來控制電機(jī)的頻率和占空比。</p><p>  INT8T cTCNTB0,cTCMPB0; //定義兩個變量控制電機(jī)頻率和轉(zhuǎn)速</p>&

56、lt;p>  INT8T cEnChange0; //中斷允許變量</p><p>  INT8T cTemp; //暫存數(shù)據(jù)cTCMPB0</p><p><b> ?。?)主函數(shù):</b></p><p>  主函數(shù)中主要包括兩部分內(nèi)容,一是對ARM的輸入輸

57、出口進(jìn)行系統(tǒng)初始化,另一個是運(yùn)行pwm_text函數(shù)。程序如下:</p><p>  //------------------------------------------------------------------------------------------------------------</p><p>  // 主程序</p><p>

58、  //------------------------------------------------------------------------------------------------------------</p><p>  void Main(void)</p><p><b>  {</b></p><p>  sys

59、_init(); //系統(tǒng)初始化</p><p>  pwm_text(); //輸出PWM波</p><p>  for(;;); //其他程序</p><p><b>  }</b></p><p> ?。?)系統(tǒng)初始化函數(shù):</p>

60、<p>  系統(tǒng)初始化函數(shù)中將程序中使用到的I/O口進(jìn)行功能設(shè)定。設(shè)定GPB0為第2功能端口TOUT0輸出,GPB1為輸出端口,GPF為數(shù)碼管低電平驅(qū)動端口,GPA為片選信號端口,GPG為第2功能端口外部中斷功能。其主要程序如下:</p><p>  //---------------------------------------------------------------------------

61、--------------------------------</p><p>  // 系統(tǒng)初始化函數(shù)</p><p>  //-----------------------------------------------------------------------------------------------------------</p><p&g

62、t;  void sys_init()</p><p><b>  {</b></p><p>  rGPBCON=rGPBCON&0xFFFFF0|(1<<2)|(1<<1);</p><p>  //定義GPB0為第2功能端口TOUT0輸出,GPB1為輸出端口</p><p>  rG

63、PBUP=0x0; //對端口B的上拉電阻進(jìn)行復(fù)位</p><p>  rGPFCON=0x5555; //定義GPF為輸出端口,進(jìn)而對LED進(jìn)行低電平驅(qū)動</p><p>  rGPFUP=0x0; //對端口F的上拉電阻進(jìn)行復(fù)位</p><p>  rGPACON=0xFFFF0; //定義GPA0~GPA3為輸出

64、端口,其余為默認(rèn)第2功能口、</p><p>  rGPAUP=0x0; //對端口A的上拉電阻進(jìn)行復(fù)位</p><p>  rGPGCON=rGPGCON&0xFFFFFF00|(1<<7)|(1<<5)|(1<<3)|(1<<1);</p><p>  //定義GPG0~GPG3為第2功能

65、端口,功能為外部中斷功能</p><p>  rGPGUP=0x0; //對端口G的上拉電阻進(jìn)行復(fù)位</p><p>  /*----------------------------------------其余設(shè)置,在此不在贅述----------------------------------*/</p><p><b>  }<

66、/b></p><p> ?。?)定時器初始化函數(shù):</p><p>  對定時器0進(jìn)行初始化,聲明定時器中斷入口,預(yù)分頻值及中斷和定時器控制寄存器的設(shè)置等等。主要程序如下:</p><p>  //---------------------------------------------------------------------------------

67、--------------------------</p><p>  // 定時器初始化函數(shù)</p><p>  //------------------------------------------------------------------------------------------------------------</p><p> 

68、 void timer_init(void)</p><p><b>  {</b></p><p>  pISR_TIMER0=(unsigned)timer0_int; //定時器0的中斷入口</p><p>  rICFG0=(39<<8)|(39); //預(yù)分

69、頻器0/1=39,39</p><p>  rICFG1=(3<<4)|3; //中斷;分頻器因子值=16</p><p>  // timer0 clock=PCLK/(prescaler+1)/16</p><p>  rTCON=0;

70、 //禁止死區(qū),自動運(yùn)轉(zhuǎn)停,不啟動</p><p><b>  }</b></p><p>  (4)外部中斷初始化函數(shù):</p><p>  //--------------------------------------------------------------------------------------------------

71、---------</p><p>  // 外部中斷初始化函數(shù)</p><p>  //------------------------------------------------------------------------------------------------------------</p><p>  void eint_init(

72、void)</p><p><b>  {</b></p><p>  rEXTINT1=0x0; //復(fù)位外部中斷控制寄存器,設(shè)置為低電平觸發(fā)</p><p>  VICVectAddr[8]=(uint32) IRQ_Eint8; //中斷8向量地址設(shè)置</p><p>  VI

73、CVectAddr[9]=(uint32) IRQ_Eint9; //中斷9向量地址設(shè)置</p><p>  VICVectAddr[10]=(uint32) IRQ_Eint10; //中斷10向量地址設(shè)置</p><p>  VICVectAddr[11]=(uint32) IRQ_Eint11; //中斷11向量地址設(shè)置</p><p>  rPR

74、IORITY=0x0; //使用默認(rèn)的中斷優(yōu)先級</p><p>  rINTMOD=0x0; //所有中斷均為IRQ中斷</p><p>  rINTMSK=~(BIT_TIMER0);</p><p><b>  }</b></p><

75、;p> ?。?)定時器中斷處理程序:</p><p>  定時器0的中斷處理子程序,主要將修改后的cTCNTB0和cTCMPB0賦值給定時器計(jì)數(shù)寄存器(rTCNTB0)和定時器緩沖寄存器(rTCMPB0),從而改變輸出PWM波的頻率或者占空比。主要程序如下:</p><p>  //---------------------------------------------------

76、--------------------------------------------------------</p><p>  // 定時器中斷0處理函數(shù)</p><p>  //--------------------------------------------------------------------------------------------------

77、----------</p><p>  void time0_int(void)</p><p><b>  {</b></p><p>  ClearPending(BIT_TIMER0); //先清Timer0中斷掛起</p><p>  if(cEnChange0)</p><

78、;p><b>  {</b></p><p>  rTCNTB0=cTCNTB0; //將變量cTCNTB0的值賦給定時器寄存器</p><p>  rTCMPB0=cTCMPB0; //將變量cTCMPB0的值賦給定時器寄存器</p><p>  cEnChange0=0;

79、 //不允許改變轉(zhuǎn)速</p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)外部中斷處理程序:</p><p>  外部中斷程序主要處理按鍵,通過按鍵控制電機(jī)速度的增加、減少、正轉(zhuǎn)、反轉(zhuǎn)等等。具體程序如下:</p><p>

80、;  //-----------------------------------------------------------------------------------------------------------</p><p>  // 外部中斷8處理函數(shù)</p><p>  //-------------------------------------------

81、-----------------------------------------------------------------</p><p>  void IRQ_Eint8(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p&g

82、t;<b>  //按鍵 去抖動</b></p><p>  rGPGCON=rGPGCON&0xFFFFFFFC; //設(shè)置GPG0為輸入端口</p><p>  for(i=0;i<100;i++);</p><p>  if(rGPGDAT&(1<<0)) //若是假按

83、鍵,直接退出</p><p><b>  {</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFFE //設(shè)置回中斷</p><p>  if(rTCON&0x000004==0)</p><p><b>  {</b></p><p> 

84、 rGPBCON=rGPBCON&0xFFFFF0|(1<<2)|(1<<0);</p><p>  //定義GPB0為輸出端口,GPB1為輸出端口</p><p>  rGPBDAT&=(0<<1|0<<0); //GPB1輸出0,GPB0輸出0,停止電機(jī)</p><p>  for(i=

85、0;i<10000;i++); //延時處理</p><p>  rTCON|=(1<<2); //TOUT0倒相</p><p>  rGPBDAT|=(1<<1); //GPB1輸出1</p><p>  rGPBCON=rGPBCON&0xFFFFF0|(1<

86、;<2)|(1<<1);</p><p>  //定義GPB0為第2功能端口TOUT0輸出,GPB1為輸出端口</p><p>  cEnChange0=1;</p><p><b>  }</b></p><p>  if(rTCON&0x000004==0x000004)</p>

87、<p><b>  {</b></p><p>  rGPBCON=rGPBCON&0xFFFFF0|(1<<2)|(1<<0);</p><p>  //定義GPB0為輸出端口,GPB1為輸出端口</p><p>  rGPBDAT&=(0<<1|0<<0);

88、 //GPB1輸出0,GPB0輸出0,停止電機(jī)</p><p>  for(i=0;i<10000;i++); //延時處理</p><p>  rTCON&=(0<<2); //TOUT0倒相</p><p>  rGPBDAT&=7FD; //GPB0輸出0<

89、;/p><p>  rGPBCON=rGPBCON&0xFFFFF0|(1<<2)|(1<<1);</p><p>  //定義GPB0為第2功能端口TOUT0輸出,GPB1為輸出端口</p><p>  cEnChange0=1;</p><p><b>  }</b></p>

90、<p>  return; </p><p><b>  }</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFFE //設(shè)置回中斷</p><p><b>  }</b></p><p>  //----------------

91、-------------------------------------------------------------------------------------------</p><p>  // 外部中斷9處理函數(shù)</p><p>  //----------------------------------------------------------------

92、--------------------------------------------</p><p>  void IRQ_Eint9(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  //按鍵 去抖動

93、</b></p><p>  rGPGCON=rGPGCON&0xFFFFFFF3; //設(shè)置GPG1為輸入端口</p><p>  for(i=0;i<100;i++);</p><p>  if(rGPGDAT&(1<<1)) //若是假按鍵,直接退出</p><

94、;p><b>  {</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFFB //設(shè)置回中斷</p><p>  cTCMPB0--; //cTCMPB0自減</p><p>  if(cTCMPB0<2)</p><p>  cTCMP

95、B0=1;</p><p>  cEnChange0=1;</p><p>  return; </p><p><b>  }</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFFB //設(shè)置回中斷</p><p><b>  

96、}</b></p><p>  //-----------------------------------------------------------------------------------------------------------</p><p>  // 外部中斷10處理函數(shù)</p><p>  //-----------

97、-------------------------------------------------------------------------------------------------</p><p>  void IRQ_Eint10(void)</p><p><b>  {</b></p><p><b>  int

98、 i;</b></p><p><b>  //按鍵 去抖動</b></p><p>  rGPGCON=rGPGCON&0xFFFFFFCF; //設(shè)置GPG2為輸入端口</p><p>  for(i=0;i<100;i++);</p><p>  if(rGPGDAT&(1

99、<<1)) //若是假按鍵,直接退出</p><p><b>  {</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFEF; //設(shè)置回中斷</p><p>  cTCMPB0++; //cTCMPB0自加</p>

100、<p>  if(cTCMPB0>791)</p><p>  cTCMPB0=792;</p><p>  cEnChange0=1;</p><p>  return; </p><p><b>  }</b></p><p>  rGPGCON=

101、rGPGCON|0xFFFFFFEF //設(shè)置回中斷</p><p><b>  }</b></p><p>  //-----------------------------------------------------------------------------------------------------------</p><p&

102、gt;  // 外部中斷11處理函數(shù)</p><p>  //------------------------------------------------------------------------------------------------------------</p><p>  void IRQ_Eint11(void)</p><p&g

103、t;<b>  {</b></p><p><b>  int i;</b></p><p><b>  //按鍵 去抖動</b></p><p>  rGPGCON=rGPGCON&0xFFFFFF3F; //設(shè)置GPG2為輸入端口</p><p>  for

104、(i=0;i<100;i++);</p><p>  if(rGPGDAT&(1<<1)) //若是假按鍵,直接退出</p><p><b>  {</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFBF //設(shè)置回中斷</p><p>

105、  if(cTCMPB0==0) //如果電機(jī)停止</p><p><b>  {</b></p><p>  cTCMPB0=cTemp; //啟動電機(jī)</p><p>  cEnChange0=1;</p><p><b>  }</b>

106、;</p><p>  if(cTCMPB0!=0) //如果電機(jī)運(yùn)轉(zhuǎn)</p><p><b>  {</b></p><p>  cTemp =cTCMPB0; </p><p>  cTCMPB0=0; //關(guān)閉電機(jī)<

107、;/p><p>  cEnChange0=1;</p><p><b>  }</b></p><p>  return; </p><p><b>  }</b></p><p>  rGPGCON=rGPGCON|0xFFFFFFBF //設(shè)置

108、回中斷</p><p><b>  }</b></p><p> ?。?)LED顯示程序:</p><p>  用GPA0~GPA3四個I/O口進(jìn)行片選,用GPF端口輸出顯示數(shù)據(jù),該程序比較簡單,但是判斷數(shù)據(jù)較多。主要代碼如下:</p><p>  //----------------------------------

109、-------------------------------------------------------------------------</p><p>  // LED顯示函數(shù)</p><p>  //------------------------------------------------------------------------------------

110、------------------------</p><p>  void LED_int(void)</p><p><b>  {</b></p><p>  int i,a,b; //a為占空比十位,b為占空比個位</p><p>  a= cTCMPB0/cTCNTB0*10;

111、//求出a的值</p><p>  b= cTCMPB0/cTCNTB0*100%10; //求出b的值</p><p><b>  //開始掃描</b></p><p>  rGPADAT= rGPADAT&0x7FFFF0|(1<<3); //片選第一個數(shù)碼管</p><p>  

112、rGPFDAT=0x90; //輸出數(shù)據(jù),頻率為固定值99KHz</p><p>  for(i=0;i<100;i++); //延遲</p><p>  rGPADAT= rGPADAT&0x7FFFF0|(1<<2); //片選第二個數(shù)碼管</p><p>

113、;  rGPFDAT=0x90; //輸出數(shù)據(jù),頻率為固定值99KHz</p><p>  for(i=0;i<100;i++); //延遲</p><p>  rGPADAT= rGPADAT&0x7FFFF0|(1<<1); //片選第三個數(shù)碼管</p><p

114、>  LED_number(a);</p><p>  rGPADAT= rGPADAT&0x7FFFF0|(1<<0); //片選第四個數(shù)碼管</p><p>  LED_number(b);</p><p><b>  }</b></p><p> ?。?)數(shù)據(jù)輸出選擇函數(shù):&l

115、t;/p><p>  從相應(yīng)的數(shù)選擇對應(yīng)的數(shù)碼管驅(qū)動數(shù)據(jù)輸出,具體代碼如下:</p><p>  void LED_number(int t)</p><p><b>  { </b></p><p><b>  int i;</b></p><p><b>  if

116、(t==0)</b></p><p><b>  {</b></p><p>  rGPFDAT=0xC0; //輸出數(shù)據(jù)</p><p>  for(i=0;i<100;i++); //延遲</p><p><b>  }

117、</b></p><p><b>  if(t==1)</b></p><p><b>  {</b></p><p>  rGPFDAT=0xF9; //輸出數(shù)據(jù)</p><p>  for(i=0;i<100;i++);

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論