久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 39747|回復(fù): 22
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)直流電機(jī)PWM(調(diào)速)控制系統(tǒng)仿真+程序設(shè)計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

目錄

1 引言
2 系統(tǒng)論述
2.1 設(shè)計背景
2.2 設(shè)計思路
2.3 系統(tǒng)框架設(shè)計
3 PWM脈寬調(diào)制定理
3.1 PWM調(diào)速原理
3.2 PWM調(diào)速方法
3.3 PWM實(shí)現(xiàn)方法
4 系統(tǒng)硬件設(shè)計
4.1 系統(tǒng)基本組成
4.1.1 硬件模塊組成
4.1.1 單片機(jī)整個控制模塊
4.2 AT89S52單片機(jī)簡介
4.2.1 AT89S52主要性能
4.2.2 AT89S52主要功能例舉
4.2.3 AT89S52各引腳功能介紹
4.2.4 AT89S52的內(nèi)部資源
4.3 L298電機(jī)驅(qū)動模塊
4.3.1 L298電機(jī)驅(qū)動簡介
4.3.2 L298內(nèi)部原理圖
4.3.3 L298引腳符號及功能
4.3.4 L298邏輯功能
4.4 LED數(shù)碼管顯示
4.4.1 LED簡介
4.4.2 LED七段數(shù)碼管的結(jié)構(gòu)
4.4.3 常見數(shù)字和字符的字段碼
4.4.4 LED數(shù)碼管與單片機(jī)的連接
4.4.5 簡單的程序流程
4.4.6 本系統(tǒng)中單片機(jī)與LED的連接
4.5 獨(dú)立式鍵盤控制模塊
4.5.1 鍵盤的功能及分類
4.5.2 獨(dú)立式鍵盤
4.5.3 獨(dú)立式鍵盤與單片機(jī)的連接
5 系統(tǒng)軟件設(shè)計
結(jié)論
致謝
參考文獻(xiàn)
附錄
附錄1
附錄2


1 引言

早期直流傳動的控制系統(tǒng)采用模擬分離器件構(gòu)成,由于模擬器件有其固有的缺點(diǎn),如存在溫漂、零漂電壓,構(gòu)成系統(tǒng)的器件較多,使得模擬直流傳動系統(tǒng)的控制精度及可靠性較低。隨著計算機(jī)控制技術(shù)的發(fā)展,微處理器已經(jīng)廣泛使用于直流傳動系統(tǒng),實(shí)現(xiàn)了全數(shù)字化控制。由于微處理器以數(shù)字信號工作,控制手段靈活方便,抗干擾能力強(qiáng)。所以,全數(shù)字直流調(diào)速控制精度、可靠性和穩(wěn)定性比模擬直流調(diào)速系統(tǒng)大大提高。所以,直流傳動控制采用微處理器實(shí)現(xiàn)全數(shù)字化,使直流調(diào)速系統(tǒng)進(jìn)入一個嶄新的階段。

微處理器誕生于上個世紀(jì)七十年代,隨著集成電路大規(guī)模及超大規(guī)模集成電路制造工藝的迅速發(fā)展,微處理器的性價比越來越高。此外,由于電力電子技術(shù)的發(fā)展,制作工藝的提升,使得大功率電子器件的性能迅速提高。為微處理器普遍用于控制電機(jī)提供了可能,利用微處理器控制電機(jī)完成各種新穎的、高性能的控制策略,使電機(jī)的各種潛在能力得到充分的發(fā)揮,使電機(jī)的性能更符合工業(yè)生產(chǎn)使用要求,還促進(jìn)了電機(jī)生產(chǎn)商研發(fā)出各種如步進(jìn)電機(jī)、無刷直流電機(jī)、開關(guān)磁阻電動機(jī)等便于控制且實(shí)用的新型電機(jī),使電機(jī)的發(fā)展出現(xiàn)了新的變化。

對于簡單的微處理器控制電機(jī),只需利用用微處理器控制繼電器、電子開關(guān)元器件,使電路開通或關(guān)斷就可實(shí)現(xiàn)對電機(jī)的控制。現(xiàn)在帶微處理器的可編程控制器,已經(jīng)在各種的機(jī)床設(shè)備和各種的生產(chǎn)流水線中普遍得到應(yīng)用,通過對可編程控制器進(jìn)行編程就可以實(shí)現(xiàn)對電機(jī)的規(guī)律化控制。對于復(fù)雜的微處理器控制電機(jī),則要利用微處理器控制電機(jī)的電壓、電流、轉(zhuǎn)矩、轉(zhuǎn)速、轉(zhuǎn)角等,使電機(jī)按給定的指令準(zhǔn)確工作。通過微處理器控制,可使電機(jī)的性能有很大的提高。目前相比直流電機(jī)和交流電機(jī)他們各有所長,如直流電機(jī)調(diào)速性能好,但帶有機(jī)械換向器,有機(jī)械磨損及換向火花等問題;交流電機(jī),不論是異步電機(jī)還是同步電機(jī),結(jié)構(gòu)都比直流電機(jī)簡單,工作也比直流電機(jī)可靠,但在頻率恒定的電網(wǎng)上運(yùn)行時,它們的速度不能方便而經(jīng)濟(jì)地調(diào)節(jié)[2]。高性能的微處理器如DSP (DIGITAL SIGNAL PROCESSOR即數(shù)字信號處理器)的出現(xiàn),為采用新的控制理論和控制策略提供了良好的物質(zhì)基礎(chǔ),使電機(jī)傳動的自動化程度大為提高。在先進(jìn)的數(shù)控機(jī)床等數(shù)控位置伺服系統(tǒng),已經(jīng)采用了如DSP等的高速微處理器,其執(zhí)行速度可達(dá)數(shù)百萬兆以上每秒,且具有適合的矩陣運(yùn)算。

2系統(tǒng)論述
2.1設(shè)計背景

近年來,隨著科技的進(jìn)步,電力電子技術(shù)得到了迅速的發(fā)展,直流電機(jī)得到了越來越廣泛的應(yīng)用。直流它具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便,調(diào)速范圍廣;過載能力大,能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無級快速起動、制動和反轉(zhuǎn);需要能滿足生產(chǎn)過程自動化系統(tǒng)各種不同的特殊運(yùn)行要求,從而對直流電機(jī)的調(diào)速提出了較高的要求,改變電樞回路電阻調(diào)速,改變電樞電壓調(diào)速等技術(shù)已遠(yuǎn)遠(yuǎn)不能滿足要求,這時通過PWM方式控制直流電機(jī)調(diào)速的方法應(yīng)運(yùn)而生。


2.2 設(shè)計思路

直流電機(jī)PWM控制系統(tǒng)的主要功能包括:實(shí)現(xiàn)對直流電機(jī)的加速、減速以及電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和急停,并且可以調(diào)整電機(jī)的轉(zhuǎn)速,能夠很方便的實(shí)現(xiàn)電機(jī)的智能控制。

主體電路:即直流電機(jī)PWM控制模塊。這部分電路主要由AT89S52單片機(jī)的I/O端口、定時計數(shù)器、外部中斷擴(kuò)展等控制直流電機(jī)的加速、減速以及電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),并且可以調(diào)整電機(jī)的轉(zhuǎn)速,能夠很方便的實(shí)現(xiàn)電機(jī)的智能控制。其間是通過AT89S52單片機(jī)產(chǎn)生脈寬可調(diào)的脈沖信號并輸入到L298驅(qū)動芯片來控制直流電機(jī)工作的。該直流電機(jī)PWM控制系統(tǒng)由以下電路模塊組成:

設(shè)計輸入部分:這一模塊主要是利用帶中斷的獨(dú)立式鍵盤來實(shí)現(xiàn)對直流電機(jī)的加速、減速以及電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和急停控制。

設(shè)計控制部分:主要由AT89S52單片機(jī)的外部中斷擴(kuò)展電路組成。直流電機(jī)PWM控制實(shí)現(xiàn)部分主要由一些二極管、電機(jī)和L298直流電機(jī)驅(qū)動模塊組成。

設(shè)計顯示部分: LED數(shù)碼顯示部分,實(shí)現(xiàn)對PWM脈寬調(diào)制占空比的實(shí)時顯示。


2.3 系統(tǒng)框架設(shè)計

直流電機(jī)PWM調(diào)速方案

方案說明:直流電機(jī)PWM調(diào)速系統(tǒng)以AT89S52單片機(jī)為控制核心,由命令輸入模塊、LED顯示模塊及電機(jī)驅(qū)動模塊組成。采用帶中斷的獨(dú)立式鍵盤作為命令的輸入,單片機(jī)在程序控制下,定時不斷給L298直流電機(jī)驅(qū)動芯片發(fā)送PWM波形,H型驅(qū)動電路完成電機(jī)正,反轉(zhuǎn)和急停控制;同時單片機(jī)不停的將PWM脈寬調(diào)制占空比送到LED數(shù)碼管完成實(shí)時顯示。


3PWM脈寬調(diào)制原理
3.1PWM調(diào)速原理

載兩端的電壓,從而達(dá)到控制要求的一種電壓調(diào)整方法。PWM可以應(yīng)用在許多方面,比如:電機(jī)調(diào)PWM(脈沖寬度調(diào)制)是通過控制固定電壓的直流電源開關(guān)頻率,改變負(fù)速、溫度控制、壓力控制等等[7]。

在PWM驅(qū)動控制的調(diào)整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并且根據(jù)需要改變一個周期內(nèi)“接通”和“斷開”時間的長短。通過改變直流電機(jī)電樞上電壓的“占空比”來達(dá)到改變平均電壓大小的目的,從而來控制電動機(jī)的轉(zhuǎn)速。也正因?yàn)槿绱耍琍WM又被稱為“開關(guān)驅(qū)動裝置”。

如圖1所示:

圖1  PWM信號的占空比

設(shè)電機(jī)始終接通電源時,電機(jī)轉(zhuǎn)速最大為Vmax,設(shè)占空比為D= t1 / T,則電機(jī)的平均速度為Va = Vmax * D,其中Va指的是電機(jī)的平均速度;Vmax 是指電機(jī)在全通電時的最大速度;D = t1 / T是指占空比。

由上面的公式可見,當(dāng)我們改變占空比D=t1/T時,就可以得到不同的電機(jī)平均速度Vd,從而達(dá)到調(diào)速的目的。嚴(yán)格來說,平均速度Vd與占空比D并非嚴(yán)格的線性關(guān)系,但是在一般的應(yīng)用中,我們可以將其近似的看成是線性關(guān)系。

3. 2  PWM調(diào)速方法

基于單片機(jī)類由軟件來實(shí)現(xiàn)PWM:在PWM調(diào)速系統(tǒng)中占空比D是一個重要參數(shù)在電源電壓不變的情況下,電樞端電壓的平均值取決于占空比D的大小,改變D的值可以改變電樞端電壓的平均值從而達(dá)到調(diào)速的目的。改變占空比D的值有三種方法:

A、定寬調(diào)頻法:保持不變,只改變t,這樣使周期(或頻率)也隨之改變[。

B、調(diào)寬調(diào)頻法:保持t不變,只改變,這樣使周期(或頻率)也隨之改變[。

C、定頻調(diào)寬法:保持周期T(或頻率)不變,同時改變和t。

前兩種方法在調(diào)速時改變了控制脈沖的周期(或頻率),當(dāng)控制脈沖的頻率與系統(tǒng)的固有頻率接近時,將會引起振蕩,因此常采用定頻調(diào)寬法來改變占空比從而改變直流電動機(jī)電樞兩端電壓。利用單片機(jī)的定時計數(shù)器外加軟件延時等方式來實(shí)現(xiàn)脈寬的自由調(diào)整,此種方式可簡化硬件電路,操作性強(qiáng)等優(yōu)點(diǎn)。

3.3 PWM實(shí)現(xiàn)方式

方案一:采用定時器做為脈寬控制的定時方式,這一方式產(chǎn)生的脈沖寬度極其精確,誤差只在幾個us。

方案二:采用軟件延時方式,這一方式在精度上不及方案一,特別是在引入中斷后,將有一定的誤差。故采用方案一。


     4系統(tǒng)硬件設(shè)計
4.1系統(tǒng)基本組成
4.1.1 硬件模塊組成

(1)單片機(jī)控制模塊

(2)L298電機(jī)驅(qū)動模塊

(3)LED顯示模塊

(4)獨(dú)立鍵盤控制模塊3.3系統(tǒng)硬件各模塊電路
4.1.2 單片機(jī)整個控制模塊
單片機(jī)整個控制模塊

    這里利用定時計數(shù)器讓單片機(jī)P2口的P2.6、P2.7引腳輸出占空比不同的方波,然后經(jīng)驅(qū)動芯片L298放大后控制直流電機(jī)。驅(qū)動芯片的輸入電壓是兩引腳的電壓差,在調(diào)速時一根引腳線為低電平,另一個引腳產(chǎn)生調(diào)速方波,這樣兩個引腳的電壓差就可通過控制其中一個引腳來控制。當(dāng)需要改變電機(jī)轉(zhuǎn)動方向時,兩個引腳的輸出相反。

    定時計數(shù)器若干時間(1us)中斷一次,就使P2.6或P2.7產(chǎn)生一個高電平或低電平。直流電機(jī)的速度分成100個等級,因此一個周期就有100個脈沖,周期為一百個脈沖的時間,速度等級對應(yīng)一個周期的高電平脈沖的個數(shù)。占空比為高電平脈沖個數(shù)占一個周期總脈沖個數(shù)的百分?jǐn)?shù)。一個周期加在電機(jī)兩端的電壓為脈沖高電壓乘以占空比。占空比越大,加在電機(jī)兩端的電壓越大,電機(jī)轉(zhuǎn)動越快。電機(jī)的平均速度等于在一定的占空比下電機(jī)的最大速度乘以占空比。當(dāng)我們改變占空比時,就可以得到不同的電機(jī)平均速度,從而達(dá)到調(diào)速的目的。精確的講,平均速度與占空比并不是嚴(yán)格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似看成線性關(guān)系。

4.2  AT89S52的簡介
4.2.1 AT89S52主要性能

AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51   產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。

與MCS-51單片機(jī)產(chǎn)品兼容;8K字節(jié)在系統(tǒng)可編程Flash存儲器;1000次擦寫周期;全靜態(tài)操作:0Hz~33Hz;三級加密程序存儲器;32個可編程I/O口線;三個16位定時器/計數(shù)器;八個中斷源;全雙工UART串行通道;低功耗空閑和掉電模式;掉電后中斷可喚醒;看門狗定時器;雙數(shù)據(jù)指針;掉電標(biāo)識符。


4.2.2 AT89S52主要功能列舉

1、擁有靈巧的8位CPU和在系統(tǒng)可編程Flash

2、晶片內(nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz)

3、內(nèi)部程序存儲器(ROM)為 8KB

4、內(nèi)部數(shù)據(jù)存儲器(RAM)為 256字節(jié)

5、32 個可編程I/O 口線

6、8 個中斷向量源

7、三個 16 位定時器/計數(shù)器

8、三級加密程序存儲器

9、全雙工UART串行通道

4.2.3 AT89S52各引腳功能介紹

            

4. 3 L298電機(jī)驅(qū)動模塊
4. 3.1 L298電機(jī)驅(qū)動簡介
   L298是SGS公司的產(chǎn)品,L298N為15個管角的單塊集成電路,高電壓,高電流,四通道驅(qū)動,設(shè)計用L298N來接收DTL或者TTL邏輯電平,驅(qū)動感性負(fù)載(比如繼電器,直流和步進(jìn)馬達(dá))和開關(guān)電源晶體管。內(nèi)部包含4通道邏輯驅(qū)動電路,其額定工作電流為 1 A,最大可達(dá) 1.5 A,Vss 電壓最小 4.5 V,最大可達(dá) 36 V;Vs 電壓最大值也是 36 V。L298N可直接對電機(jī)進(jìn)行控制,無須隔離電路,可以驅(qū)動雙電機(jī)。
4. 3.2 L298內(nèi)部的原理圖



4. 3.3 L298 引腳符號及功能
引 腳
功 能
SENSA、SENSB
分別為兩個H橋的電流反饋腳,不用時可以直接接地
ENA 、ENB
使能端,輸入PWM信號
IN1、IN2、IN3、IN4
輸入端,TTL邏輯電平信號
OUT1、OUT2、OUT3、OUT4
輸出端,與對應(yīng)輸入端同邏輯
VCC
邏輯控制電源,4.5~7V
VSS
電機(jī)驅(qū)動電源,最小值需比輸入的低電平電壓高
GND
4. 3.4 L298的邏輯功能
IN1
IN2
ENA
電機(jī)狀態(tài)
X
X
0
停止
1
0
1
順時針
0
1
1
逆時針
0
0
0
停止
1
1
0
停止
當(dāng)使能端為高電平時,輸入端IN1為PWM信號,IN2為低電平信號時,電機(jī)正轉(zhuǎn);輸入端IN1為低電平信號,IN2為PWM信號時,電機(jī)反轉(zhuǎn);;IN1與IN2相 同時,電機(jī)快速停止。當(dāng)使能端為低電平時,電動機(jī)停止轉(zhuǎn)動。
在對直流電動機(jī)電壓的控制和驅(qū)動中,半導(dǎo)體功率器件(L298)在使用上可以分為兩種方式:線性放大驅(qū)動方式和開關(guān)驅(qū)動方式在線性放大驅(qū)動方式。
半導(dǎo)體功率器件工作在線性區(qū)優(yōu)點(diǎn)是控制原理簡單,輸出波動小,線性好,對鄰近電路干擾小,缺點(diǎn)為功率器件工作在線性區(qū),功率低和散熱問題嚴(yán)重。開關(guān)驅(qū)動方式是使半導(dǎo)體功率器件工作在開關(guān)狀態(tài),通過脈調(diào)制(PWM)來控制電動機(jī)的電壓,從而實(shí)現(xiàn)電動機(jī)轉(zhuǎn)速的控制。
4. 4 LED數(shù)碼管顯示
4. 4.1 LED簡介
LED(Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的心臟是一個半導(dǎo)體的晶片,晶片的一端附在一個支架上,一端是負(fù)極,另一端連接電源的正極,使整個晶片被環(huán)氧樹脂封裝起來。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來的時候,它們之間就形成一個“P-N結(jié)”。
  當(dāng)電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長也就是光的顏色,是由形成P-N結(jié)的材料決定的。除半導(dǎo)體激光器外,當(dāng)電流激勵時能發(fā)射光學(xué)輻射的半導(dǎo)體二極管。嚴(yán)格地講,術(shù)語LED應(yīng)該僅應(yīng)用于發(fā)射可見光的二極管;發(fā)射近紅外輻射的二極管叫紅外發(fā)光二極管(IRED,Infrared Emitting Diode);發(fā)射峰值波長在可見光短波限附近,由部份紫外輻射的二極管稱為紫外發(fā)光二極管;但是習(xí)慣上把上述三種半導(dǎo)體二極管統(tǒng)稱為發(fā)光二極管。
4. 4.2 LED七段數(shù)碼管的結(jié)構(gòu)

          共陰極                    共陽極                   管腳圖
其中:圖(a)為共陰極結(jié)構(gòu),8斷發(fā)光二極管的陰極端連接在一起,陽極端分開控制,使用時公共端接地,要使哪根發(fā)光二極管,則對應(yīng)的陽極端接高電平。圖(b)為共陽極結(jié)構(gòu),8端發(fā)光二極管的陽極端連接在一起,陰極端分開控制,使用時公共端接電源。要使哪根發(fā)光二極管,則對應(yīng)的陰極端接地。其中7段發(fā)光二極管構(gòu)成7筆的字形“8”,1根發(fā)光二極管構(gòu)成小數(shù)點(diǎn)。圖“c”為引腳圖,從a-g引腳輸入不同的8位二進(jìn)制編碼,可顯示不同的數(shù)字或字符。通常把控制發(fā)光二極管的7(或8)位二極管編制稱為字段碼。不同數(shù)字或字符其字段碼不一樣,對于同一個數(shù)字或字符,共陰極連接和共陽極連接的字段碼也不一樣,共陰極和共陽極的字段碼互為反碼。
4. 4.3常見數(shù)字和字符的字段碼
顯示字符
共陰極字段碼
共陽極字段碼
顯示字符
共陰極字段碼
共陽極字段碼
0
3FH
C0H
C
39H
C6H
1
06H
F9H
D
5EH
A1H
2
5BH
A4H
E
79H
86H
3
4FH
B0H
F
71H
8EH
4
66H
99H
P
73H
8CH
5
6DH
92H
U
3EH
C1H
6
7DH
82H
T
31H
CEH
7
07H
F8H
Y
6EH
91H
8
7FH
80H
L
38H
C7H
9
6FH
90H
8.
FFH
00H
A
77H
88H
“滅”
00
FFH
B
7CH
83H
……
……
……
4. 4.4 LED數(shù)碼管和單片機(jī)的連接
電路的接法決定了必須采用逐位掃描顯示方式。即從段選口送出某位LED的字型碼,然后選通該位LED, 并保持一段延時時間。然后選通下一位,直到所有位掃 描完。
4. 4.5簡單的程序流程
                     
4. 4.6本系統(tǒng)中單片機(jī)與LED的連接

4.5獨(dú)立式鍵盤控制模塊
4.5.1鍵盤的功能及分類
鍵盤是一種最常用的輸入設(shè)備,它是一組按鍵的集合,從功能上可分為數(shù)字鍵和功能鍵兩種,作用是輸入數(shù)據(jù)與命令,查詢和控制系統(tǒng)的工作狀態(tài),實(shí)現(xiàn)簡單的人機(jī)對話。
鍵盤的分類
(a)鍵盤按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類。這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方法。
    編碼鍵盤主要是用硬件來實(shí)現(xiàn)對鍵的識別;
    非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的定義與識別。
(b)鍵盤按照其結(jié)構(gòu)可分為獨(dú)立式鍵盤與矩陣式鍵盤兩類。
    獨(dú)立式鍵盤主要用于按鍵較少的場合,矩陣式鍵盤主要用于按鍵較多的場合,也稱行列式鍵盤
4.5.2獨(dú)立式鍵盤
獨(dú)立式鍵盤的按鍵相互獨(dú)立,每個按鍵接一根I/O口線,一根I/O口線上的按鍵工作狀態(tài)不會影響其它I/O口線的工作狀態(tài)。因此,通過檢測I/O口線的電平狀態(tài),即可判斷鍵盤上哪個鍵被按下

4.5.3獨(dú)立式鍵盤與單片機(jī)的鏈接



5系統(tǒng)軟件設(shè)計
    直接應(yīng)用AT89S52的軟件方法實(shí)現(xiàn)PWM信號輸出,這比硬件實(shí)現(xiàn)PWM信號成本低。限制少。實(shí)現(xiàn)便捷。其流程圖如下所示。

5.1流程圖
5.1.1主程序流程圖

圖5.1系統(tǒng)主單片機(jī)總程序框圖


結(jié)論
通過本次畢業(yè)設(shè)計,使我學(xué)到了許多書本上無法學(xué)到的知識,也使我深刻體會到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛。不僅讓我對學(xué)過的單片機(jī)知識有了很多的鞏固,同時也對單片機(jī)這一門課程產(chǎn)生了更大的興趣。在本次課程設(shè)計過程中,我學(xué)會了在網(wǎng)絡(luò)上查找有關(guān)本設(shè)計的各硬件的資源,其中包括:直流電機(jī)PWM調(diào)速、AT89S52單片機(jī)、L289引腳圖及其引腳功能等,LED數(shù)碼管顯示,為本次畢業(yè)設(shè)計提供了一定的資料。
在做畢業(yè)設(shè)計的初期階段,難度很大,沒有頭緒。通過求助于陳老師、理清了思路。同時,在圖書館里、網(wǎng)上查閱資料,攻克了畢業(yè)設(shè)計中的道道難題。通過本次科技創(chuàng)新實(shí)踐,我學(xué)到了許多東西,知道光靠書本上的東西是不夠的,需額外去查資料。無論是在硬件還是軟件設(shè)計上,我都遇到了不少的問題,在克服困難的過程中,我學(xué)到了許多,特別是在課堂上學(xué)不到的東西如(PWM)。也鍛煉了我的protel畫圖能力,以前學(xué)的時候元器件都是給定的只要到庫里面找出名字就可以,只要連線就可以,而這次是根據(jù)自己的設(shè)計需要去畫,感覺不同。本次設(shè)計我能獨(dú)立完成,算是有了很大的收獲。總的感受有以下幾方面:
1、通過本次畢業(yè)設(shè)計,我不但對單片機(jī)有了更為深入的了解,對一個課題如何畫流程圖,編程序等有了一定的認(rèn)識。
2、進(jìn)一步加強(qiáng)了我的動手能力和運(yùn)用專業(yè)知識的能力,從中學(xué)習(xí)到如何去思考和解決問題,以及如何靈活地改變方法去實(shí)現(xiàn)設(shè)計方案。特別是深刻體會到了軟件和硬件結(jié)合的重要性,以及兩者的聯(lián)系和配合作用。
3、讓我了解到單片機(jī)技術(shù)對當(dāng)今人們生活的重要性。同時這次做畢業(yè)設(shè)計的經(jīng)歷也使我受益匪淺,讓我知道做任何事情都應(yīng)腳踏實(shí)地,刻苦努力地去做,只有這樣,才能做好。

附錄2:原理圖

單片機(jī)源程序如下:
  1. *********************************************************************
  2.                                                                                                   直流電機(jī)PWM調(diào)速
  3. 功能描述:使用單片機(jī)T0定時器產(chǎn)生(xxxHz)脈寬調(diào)制信號,輸?shù)絃298N的EN_A
  4.                               實(shí)現(xiàn)雙直流電機(jī)的速度調(diào)控。
  5. 修訂日期:2011-5-7
  6. *********************************************************************/
  7. #include<reg52.h>   
  8. #include<intrins.h>                       
  9. #define uchar unsigned char            
  10. #define uint unsigned int
  11.                            
  12. /**********************************************************************
  13.                                                                                                   L298n接口定義
  14. **********************************************************************/
  15. sbit MOTOR_A_2=P3^6;
  16. sbit MOTOR_A_1=P3^7;
  17. sbit EN_MOTOR_A =P3^4;                                                                                                                                                                                                                                 
  18. sbit k1=P1^5;                            //定義k1為p1.5口
  19. sbit k2=P3^1;   //定義k2為p3.1口
  20. sbit k3=P3^2;   //定義k3為p3.2口
  21. sbit k4=P3^3;   //定義k4為p3.3口
  22. uchar T=0;                 //定時標(biāo)記
  23. uchar W=0;                 //脈寬值              0~100
  24. uchar A=0;                 //方向標(biāo)記 0,1
  25. uchar k=0;                 //按鍵標(biāo)記
  26. uchar i=0;                  //計數(shù)變量


  27. uchar code table1[]={
  28. 0x3f,0x06,0x5b,0x4f,
  29. 0x66,0x6d,0x7d,0x07,
  30. 0x7f,0x6f,0x77,0x7c,
  31. 0x39,0x5e,0x79,0x71};

  32. uchar code table2[]={0xef,0xbf,0xdf,0x7f};
  33.                            
  34. void delayms(uint t);                                                                                                               
  35. /**********************************************************************
  36.                                                                                     數(shù)碼管顯示
  37. **********************************************************************/
  38. void disp(void)
  39. {
  40.               P0=table2[3];                                                                     
  41.               P2=table1[W%10];                                          //顯示占空比個位
  42.               delayms(1);                                                                       //延時1ms
  43.               P0=0xff;                                                                                                  //P0清1

  44.               P0=table2[2];
  45.               P2=table1[W/100];                             //顯示占空比百位
  46.               delayms(1);                                                                       //延時1ms
  47.               P0=0xff;                                                                                                  //P0清1

  48.               P0=table2[1];
  49.               P2=table1[W/10%10];  //顯示占空比十位
  50.               delayms(1);                                                         //延時1ms
  51.               P0=0xff;                                                                         //P0清1

  52.               P0=table2[0];
  53.               P2=table1[A];                                            //顯示方向
  54.               delayms(1);                                                         //延時1ms
  55.               P0=0xff;                                                                                    //P0清1
  56. }

  57. /**********************************************************************
  58.                                                                                                   定時器變量定義
  59. **********************************************************************/


  60. void init(void)
  61. {
  62.               //啟動中斷
  63.               TMOD=0x01;            
  64.               EA=1;                                                                                   
  65.               ET0=1;
  66.               TR0=1;
  67.               //設(shè)置定時時間
  68.               TH0=0xfd;
  69.               TL0=0x17;
  70. }

  71. void timer0() interrupt 1
  72. {                                                            
  73.               //重置定時器時間
  74.               TL0=0x17;
  75.               TH0=0xff;
  76.               T++;                                          //定時標(biāo)記加1
  77.               disp();                            //數(shù)碼管顯示
  78.               if(T>W)
  79.                             EN_MOTOR_A =1;
  80.               else
  81.                             EN_MOTOR_A =0;
  82.               if(T==100)
  83.                             T=0;

  84. }                                         
  85. /**********************************************************************
  86.                                                                                                   延時1ms
  87. **********************************************************************/
  88. void delayms(uint t)
  89. {
  90.               uchar j;
  91.               while(t--)
  92.               {
  93.                             for(j=0;j<250;j++)                                          //循環(huán)250次
  94.                             {
  95.                                           _nop_();             //系統(tǒng)延時         
  96.        _nop_();                                                                                                  //系統(tǒng)延時
  97.        _nop_();                                                                                                  //系統(tǒng)延時
  98.        _nop_();                                                                                                  //系統(tǒng)延時
  99.                             }
  100.               }
  101. }
  102. /**********************************************************************
  103.                                                                                                   獨(dú)立按鍵檢測
  104. **********************************************************************/
  105. void key(void)           //按鍵判斷程序
  106. {
  107.               if(k1==0)                                                                                                  //按鍵1按下
  108.               {
  109.                             while(k1==0);                                                        //按鍵1抬起
  110.                             if(W==100)                                                                      //如果脈寬為100
  111.                                           W=0;                                                                                                  //脈寬置0
  112.                             else
  113.                                           W+=1;                                                                                                  //否則加1
  114.               }
  115.               else if(k2==0)                                                        //按鍵2按下
  116.               {                                                      
  117.                             while(k2==0);                                                        //按鍵2抬起
  118.                             if(W==0)                                                                                    //如果脈寬為0
  119.                                           W=100;                                                                                    //脈寬設(shè)置成100
  120.                             else
  121.                                           W-=1;                                                                                                  //否則減1
  122.               }
  123.               else if(k3==0)                                                        //按鍵3按下
  124.               {                                            
  125.                             while(k3==0);                                                        //按鍵3抬起
  126.                             A=!A;                                                                                                                //方向標(biāo)記取反
  127.                             k=0;                                                                                                                //按鍵標(biāo)記清0
  128. ……………………

  129. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
單片機(jī)直流電機(jī)PWM控制系統(tǒng).rar (498.4 KB, 下載次數(shù): 699)


評分

參與人數(shù) 1黑幣 +30 收起 理由
SD_FL + 30

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏20 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:518690 發(fā)表于 2019-4-25 01:08 | 只看該作者
感謝,分享。
回復(fù)

使用道具 舉報

板凳
ID:570914 發(fā)表于 2019-6-24 15:52 | 只看該作者
感謝分享,支持
回復(fù)

使用道具 舉報

地板
ID:615628 發(fā)表于 2019-9-24 13:43 | 只看該作者
xx謝謝分享
回復(fù)

使用道具 舉報

5#
ID:343168 發(fā)表于 2019-11-28 15:26 | 只看該作者
很好,學(xué)習(xí)了。非常棒。
回復(fù)

使用道具 舉報

6#
ID:258743 發(fā)表于 2019-11-28 19:30 | 只看該作者
感謝分享,支持
回復(fù)

使用道具 舉報

7#
ID:651848 發(fā)表于 2019-11-28 20:02 來自觸屏版 | 只看該作者
非常詳細(xì)。感謝
回復(fù)

使用道具 舉報

8#
ID:649298 發(fā)表于 2019-12-5 14:28 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

9#
ID:664533 發(fā)表于 2019-12-15 20:02 | 只看該作者
謝謝分享!!!!
回復(fù)

使用道具 舉報

10#
ID:664533 發(fā)表于 2019-12-15 20:05 | 只看該作者
謝謝分享!!
回復(fù)

使用道具 舉報

11#
ID:668494 發(fā)表于 2019-12-23 20:00 | 只看該作者
非常感謝
回復(fù)

使用道具 舉報

12#
ID:668494 發(fā)表于 2019-12-24 10:10 | 只看該作者
有很大的幫助 謝謝
回復(fù)

使用道具 舉報

13#
ID:298008 發(fā)表于 2020-2-17 18:38 | 只看該作者
謝謝樓主分享!!!
回復(fù)

使用道具 舉報

14#
ID:692272 發(fā)表于 2020-3-1 14:26 | 只看該作者
很喜歡這個!!
回復(fù)

使用道具 舉報

15#
ID:713488 發(fā)表于 2020-3-22 18:41 | 只看該作者
樓主,我想問一下,為什么仿真時按獨(dú)立按鍵時,數(shù)碼管沒有轉(zhuǎn)速顯示呢?
回復(fù)

使用道具 舉報

16#
ID:713488 發(fā)表于 2020-3-22 18:44 | 只看該作者
樓主您好 我有個問題想請教您
將hex文件導(dǎo)入之后 按獨(dú)立按鍵速度加1 在不連硬件的情況下 數(shù)碼管會有速度顯示嗎
回復(fù)

使用道具 舉報

17#
ID:582896 發(fā)表于 2020-4-29 14:51 | 只看該作者

感謝,分享。
回復(fù)

使用道具 舉報

18#
ID:582896 發(fā)表于 2020-4-29 14:53 | 只看該作者
樓主,我想問一下,為什么仿真時按獨(dú)立按鍵時,數(shù)碼管沒有轉(zhuǎn)速顯示呢?
回復(fù)

使用道具 舉報

19#
ID:582896 發(fā)表于 2020-4-29 14:54 | 只看該作者

很喜歡這個!!
回復(fù)

使用道具 舉報

20#
ID:742227 發(fā)表于 2020-5-1 18:33 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

21#
ID:754137 發(fā)表于 2020-5-17 17:15 來自觸屏版 | 只看該作者
感謝大佬,分享
回復(fù)

使用道具 舉報

22#
ID:769676 發(fā)表于 2020-6-4 18:52 | 只看該作者
樓主的過程十分詳細(xì),非常有幫助。謝謝!
回復(fù)

使用道具 舉報

23#
ID:771025 發(fā)表于 2020-6-6 11:58 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www.日韩系列| 91免费小视频 | 久久综合香蕉 | 91久久| 国产精品99久久久久久久久久久久 | 国产精品久久久久久久久 | 欧美精品在线视频 | 欧美国产视频一区二区 | 一二区视频 | 成年视频在线观看 | 成人午夜激情 | 中文字幕爱爱视频 | 一级aaaaaa毛片免费同男同女 | 欧美四虎| 亚洲成人福利视频 | 亚洲最新网址 | av一二三区 | 精品成人免费一区二区在线播放 | 91欧美激情一区二区三区成人 | 七七婷婷婷婷精品国产 | 别c我啊嗯国产av一毛片 | 亚洲精品视频免费看 | 欧美8一10sex性hd | 日韩1区2区 | 欧美黄色网络 | 啪啪综合网| 中文天堂在线观看 | 九九久久精品 | 久久精品aaa| 先锋资源网站 | 色欧美综合 | 中文字幕视频一区 | 久久久久久国产免费视网址 | 国产成人精品一区二三区在线观看 | 色综合久久天天综合网 | 黄色在线播放视频 | 亚洲精品成人免费 | 国产色99精品9i | 夜夜av| 亚洲一区二区视频 | 一区二区三区av |