找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機(jī)的直流電機(jī)控制系統(tǒng)的設(shè)計論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:274396 發(fā)表于 2018-1-10 16:41 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

論文題目   基于單片機(jī)的直流電機(jī)控制系統(tǒng)的設(shè)計                           
學(xué)位類別               工學(xué)學(xué)士                  
學(xué)科專業(yè)               自 動 化                  
作者姓名                                                      
導(dǎo)師姓名                                                                  
完成時間           2010年5月20日                             

中  文  摘  要
本文介紹了基于單片機(jī)的直流電機(jī)PWM調(diào)速的基本方法,直流電機(jī)調(diào)速的相關(guān)知識以及PWM調(diào)速的基本原理和實(shí)現(xiàn)方法。重點(diǎn)介紹了基于MCS一51單片機(jī)的用軟件產(chǎn)生PWM信號以及信號占空比調(diào)節(jié)的方法。對于直流電機(jī)速度控制系統(tǒng)的實(shí)現(xiàn)提供了一種有效的途徑。
直流電動機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑,方便,調(diào)速范圍廣,過載能力大,能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無級快速起動、制動和反轉(zhuǎn);能滿足生產(chǎn)過程中自動化系統(tǒng)各種不同的特殊運(yùn)行要求。電動機(jī)調(diào)速系統(tǒng)采用微機(jī)實(shí)現(xiàn)自動控制,是電氣傳動發(fā)展的主要方向之一。采用微機(jī)控制后,整個調(diào)速系統(tǒng)體積小、結(jié)構(gòu)簡單、可靠性高、操作維護(hù)方便,電動機(jī)穩(wěn)態(tài)運(yùn)轉(zhuǎn)時轉(zhuǎn)速精度可達(dá)到較高水平,靜動態(tài)各項(xiàng)指標(biāo)均能較好地滿足工業(yè)生產(chǎn)中高性能電氣傳動的要求。
The Design of DC Motor Speed Control System Based on The SCM
ABSTRACT
This paper introduces a kind of method of DC —motor speed modification based on PWM theory by the SCM.Showing some relative knowledge upon the DC—motor timing,the basic theory and the way to implement.And it emphasizes on the way for carrying out PW M signals based on MCS一51.This paper still provides a method for modifying the speed of DC—motor by way of taking count of data and time delay by software.It offers a sort of efficient method for the DC motor speed—controlling system.
DC Motor Speed Control has excellent characteristics, speed smooth and easy, and speed a wide range of Shock, able to withstand the impact of frequent load can be achieved without frequent fast-starting, braking and reverse; meet the production process automation systems various special operating requirements. Drives using micro-computer control, the development of electric drive is one of the major directions. Using computer control, the speed control system as a whole size, simple structure, high reliability, ease of maintenance and operation. Stable operation at the motor speed precision can be achieved at higher levels, static and dynamic indicators can better meet the industrial production of high-performance electric transmission requirements.
KEY WORD:SCM; PWM; DC —motor speed modification
目    錄
第一章 直流電機(jī)調(diào)速分析及研究意義        1
1.1 直流電機(jī)調(diào)速原理        1
1.2 PWM基本原理及其實(shí)現(xiàn)方法        2
1.2.1 PWM基本原理        2
1.3 實(shí)現(xiàn)方法        3
1.4 控制程序設(shè)計        3
1.5 研究背景        4
1.6 論文研究的目的與意義        4
1.6.1 目的        4
1.6.2 意義        4
第二章 系統(tǒng)硬件設(shè)計        6
2.1系統(tǒng)方案        6
2.2設(shè)計要求        6
2.3功能簡介        6
2.4主要內(nèi)容        6
2.5電機(jī)調(diào)速控制模塊        7
2.5.1方案選擇        7
2.5.2 PWM調(diào)速工作方式        8
2.5.3 PWM調(diào)脈寬方式        8
2.5.4 PWM軟件實(shí)現(xiàn)方式        8
2.6系統(tǒng)分析與硬件設(shè)計        9
2.6.1單片機(jī)最小系統(tǒng)的設(shè)計        9
2.6.2電源電路設(shè)計        11
2.6.3直流電機(jī)驅(qū)動電路設(shè)計        14
2.6.4顯示模塊設(shè)計        15
2.6.5鍵盤電路設(shè)計        16
2.6.6元件選擇與參數(shù)計算        17
2.7設(shè)計所需部分器件        20
2.8技術(shù)路線        20
2.9 應(yīng)用軟件的編制、調(diào)試        22
第三章 系統(tǒng)軟件的設(shè)計        23
3.1程序的總體設(shè)計        23
第四章 調(diào)試與仿真        24
4.1仿真圖形        24
第五章 結(jié)論和總結(jié)        26
參 考 文 獻(xiàn)        27
致        謝        28
附程序清單        28

第一章 直流電機(jī)調(diào)速分析及研究意義1.1 直流電機(jī)調(diào)速原理
根據(jù)勵磁方式不同,直流電機(jī)分為自勵和他勵兩種類型。不同勵磁方式的直流電機(jī)機(jī)械特性曲線有所不同。對于直流電機(jī)來說,人為機(jī)械特性方程式為:
      (公式        1-1)
式中,—— 額定電樞電壓、額定磁通量;
,--與電機(jī)有關(guān)的常數(shù);
,——電樞外加電阻、電樞內(nèi)電阻;
,——理想空載轉(zhuǎn)速、轉(zhuǎn)速降。
分析(1)式可得.當(dāng)分別改變、 和時,可以得到不同的轉(zhuǎn)速,從而實(shí)現(xiàn)對速度的調(diào)節(jié)。由于=,當(dāng)改變勵磁電流時,可以改變磁通量的大小,從而達(dá)到變磁通調(diào)速的目的。但由于勵磁線圈發(fā)熱和電動機(jī)磁飽和的限制,電動機(jī)的勵磁電流,和磁通量只能在低于其額定值的范圍內(nèi)調(diào)節(jié),故只能弱磁調(diào)速。而對于調(diào)節(jié)電樞外加電阻時,會使機(jī)械特性變軟,導(dǎo)致電機(jī)帶負(fù)載能力減弱。對于他勵直流電機(jī)來說,當(dāng)改變電樞電壓時,分析人為機(jī)械特性方程式,得到人為特性曲線[1-2]。
如圖1-1所示。理想空載轉(zhuǎn)速隨電樞電壓升降而發(fā)生相應(yīng)的升降變化。不同電樞電壓的機(jī)械特性曲線相互平行,說明硬度不隨電樞電壓的變化而改變,電機(jī)帶負(fù)載能力恒定。當(dāng)我們平滑調(diào)節(jié)他勵直流電機(jī)電樞兩端電壓時,可實(shí)現(xiàn)電機(jī)的無級調(diào)速。基于以上特性,改變電樞電壓,實(shí)現(xiàn)對直流電機(jī)速度調(diào)節(jié)的方法被廣泛采用。改變電樞電壓可通過多種途徑實(shí)現(xiàn),如晶閘管供電速度控制系統(tǒng)、大功率晶體管速度控制系統(tǒng)、直流發(fā)電機(jī)供電速度控制系統(tǒng)及晶體管直流脈寬調(diào)速系統(tǒng)等。
               
圖1-1        直流電動機(jī)機(jī)械特性曲線               圖1-2  電樞電壓“占空比”與平均電壓關(guān)系
1.2 PWM基本原理及其實(shí)現(xiàn)方法1.2.1 PWM基本原理
PWM是通過控制固定電壓的直流電源開關(guān)頻率,從而改變負(fù)載兩端的電壓,進(jìn)而達(dá)到控制要求的一種電壓調(diào)整方法。PWM可以應(yīng)用在許多方面,如電機(jī)調(diào)速、溫度控制、壓力控制等。在PWM驅(qū)動控制的調(diào)整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并根據(jù)需要改變一個周期內(nèi)“接通”和“斷開”時間的長短。通過改變直流電機(jī)電樞上電壓的“占空比”來改變平均電壓的大小,從而控制電動機(jī)的轉(zhuǎn)速。因此,PWM又被稱為“開關(guān)驅(qū)動裝置”。在脈沖作用下,當(dāng)電機(jī)通電時,速度增加;電機(jī)斷電時,速度逐漸減少。只要按一定規(guī)律,改變通、斷電的時間,即可讓電機(jī)轉(zhuǎn)速得到控制。設(shè)電機(jī)始終接通電源時,電機(jī)轉(zhuǎn)速最大為,設(shè)占空比為=/,則電機(jī)的平均速度為:
                             =*          (公式         1-2)
式中, —— 電機(jī)的平均速度;
--電機(jī)全通電時的速度(最大);
=/--占空比。
由公式1-2可見,當(dāng)我們改變占空比時=/,就可以得到不同的電機(jī)平均速度 ,從而達(dá)到調(diào)速的目的。嚴(yán)格地講,平均速度與占空比=/并不是嚴(yán)格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似地看成線性關(guān)系[3]。
1.3 實(shí)現(xiàn)方法
PWM信號的產(chǎn)生通常有兩種方法:一種是軟件的方法;另一種是硬件的方法。硬件方法的實(shí)現(xiàn)已有很多文章介紹,這里不做贅述。本文主要介紹利用單片機(jī)對PWM信號的軟件實(shí)現(xiàn)方法。MCS一51系列典型產(chǎn)品AT89S52具有兩個定時器 和 。通過控制定時器初值和 ,從而可以實(shí)現(xiàn)從S52的任意輸出口輸出不同占空比的脈沖波形。由于PWM信號軟件實(shí)現(xiàn)的核心是單片機(jī)內(nèi)部的定時器,而不同單片機(jī)的定時器具有不同的特點(diǎn),即使是同一臺單片機(jī)由于選用的晶振不同,選擇的定時器工作方式不同,其定時器的定時初值與定時時間的關(guān)系也不同。因此,首先必須明確定時器的定時初值與定時時間的關(guān)系。如果單片機(jī)的時鐘頻率為,定時器/計數(shù)器為位,則定時器初值與定時時間的關(guān)系為:
                                      (公式   1-3)
式中,—— 定時器定時初值;
—— 一個機(jī)器周期的時鐘數(shù)。隨著機(jī)型的不同而不同。在應(yīng)用中,應(yīng)根據(jù)具體的機(jī)型給出相應(yīng)的值。這樣,我們可以通過設(shè)定不同的定時初值 ,從而改變占空比=/,進(jìn)而達(dá)到控制電機(jī)轉(zhuǎn)速的目的[4]。
1.4 控制程序設(shè)計
控制程序的設(shè)計有兩種方法:軟件延時法和計數(shù)法。軟件延時法的基本思想是:首先求出占空比=/,再根據(jù)周期分別給電機(jī)通電個單位時間,所以=/。然后,再斷電個單位時間,所以= 。改變和的值,從而也就改變了占空比。計數(shù)法的基本思想是:當(dāng)單位延時個數(shù)求出之后,將其作為給定值存放在某存儲單元中。在通電過程中,對通電單位時間的次數(shù)進(jìn)行計數(shù),并與存儲器的內(nèi)容進(jìn)行比較。若不相等,則繼續(xù)輸出控制脈沖,直到計數(shù)值與給定值相等,使電機(jī)斷電。
軟件采用定時中斷進(jìn)行設(shè)計。如圖2-12所示,單片機(jī)上電后,系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài)。當(dāng)按動按鈕后,執(zhí)行相應(yīng)的程序,根據(jù)P3.0或P3.1輸出的高電平?jīng)Q定直流電機(jī)的正反轉(zhuǎn)。根據(jù)不同的加、減速按鈕,調(diào)整P3.0或P3.1輸出高低電平時的占空比,從而可以控制P3.0或P3.1輸出高低電平時的延時時間,進(jìn)而控制電壓的大小來決定直流電機(jī)轉(zhuǎn)速。
1.5 研究背景
隨著社會的發(fā)展,各種智能化的產(chǎn)品日益走入尋常百姓家。為了實(shí)現(xiàn)產(chǎn)品的便攜性、低成品以及對電源的限制,小型直流電機(jī)應(yīng)用相當(dāng)廣泛。對直流電機(jī)的速度調(diào)節(jié),我們可以采用多種辦法,本文在給出直流電機(jī)調(diào)整和PWM實(shí)現(xiàn)方法的基礎(chǔ)上,提供一種用單片機(jī)軟件實(shí)現(xiàn)PWM 調(diào)速的方法。
1.6 論文研究的目的與意義1.6.1 目的
對基于MCS-51系列單片機(jī)實(shí)現(xiàn)直流電機(jī)調(diào)速系統(tǒng)進(jìn)行研究和設(shè)計,能夠在不同的按鈕作用下分別實(shí)現(xiàn)直流電機(jī)的停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)控制;能夠?qū)崿F(xiàn)基于MCS-51系列單片機(jī)的直流電機(jī)PWM的調(diào)速設(shè)計。
1.6.2 意義
 (1) 直流電動機(jī)有良好的起動、制動性能, 宜于在廣范圍內(nèi)平滑調(diào)速, 至今在金屬切削機(jī)床、造紙機(jī)等需要高性能可控電力拖動的領(lǐng)域中仍有廣泛的應(yīng)用。直流調(diào)速系統(tǒng)在不斷發(fā)展, 尤其是近年來, 國內(nèi)外各廠家競相推出全數(shù)字直流調(diào)速裝置, 使得直流調(diào)速系統(tǒng)在理論和實(shí)踐方面都邁上了一個新的臺階。以往的直流調(diào)速裝置是全模擬式設(shè)備。變電壓調(diào)速是直流調(diào)速的主要方法, 常用晶閘管可控整流器做可控直流電源。這些舊設(shè)備急待更新改造。另外, 目前高等院校的電力拖動自動控制系統(tǒng)的實(shí)驗(yàn)教學(xué), 還采用全模擬式的實(shí)驗(yàn)設(shè)備, 尚無適合于教學(xué)的全數(shù)字式直流調(diào)速實(shí)驗(yàn)裝置, 有待于開發(fā)。
(2) 本文研究的基于MCS-51系列單片機(jī)的直流電機(jī)PWM調(diào)速系統(tǒng)屬于微機(jī)控制領(lǐng)域,通過對單片機(jī)的學(xué)習(xí)和研究對自己以后從事硬件產(chǎn)品的開發(fā)有一定的實(shí)際指導(dǎo)意義。      
(3) 將所學(xué)的知識理論和實(shí)踐想結(jié)合,為以后再此基礎(chǔ)上結(jié)合相關(guān)領(lǐng)域設(shè)計智能化產(chǎn)品和改進(jìn)某些產(chǎn)品性能具有很好的實(shí)踐意義。
第二章 系統(tǒng)硬件設(shè)計2.1系統(tǒng)方案
本設(shè)計以AT89S52單片機(jī)為核心,以5個彈跳按鈕作為輸入達(dá)到控制直流電機(jī)的停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)。在設(shè)計中,采用PWM技術(shù)對電機(jī)進(jìn)行控制,通過對占空比的計算達(dá)到精確調(diào)速的目的。
2.2設(shè)計要求
(1)能實(shí)現(xiàn)通過調(diào)節(jié)給定的電壓對直流電機(jī)的速度及轉(zhuǎn)向控制;
(2)通過按鈕能實(shí)現(xiàn)直流電機(jī)的加速、減速、等變速及轉(zhuǎn)向控制;
2.3功能簡介
直流電動機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便,調(diào)速范圍廣;過載能力大,能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無級快速起動、停止和反轉(zhuǎn);能滿足生產(chǎn)過程自動化系統(tǒng)各種不同的特殊運(yùn)行要求。電動機(jī)調(diào)速系統(tǒng)采用微機(jī)實(shí)現(xiàn)自動控制,是電氣傳動發(fā)展的主要方向之一。采用微機(jī)控制后,整個調(diào)速系統(tǒng)實(shí)現(xiàn)自動化,結(jié)構(gòu)簡單,可靠性高,操作維護(hù)方便,電動機(jī)穩(wěn)態(tài)運(yùn)轉(zhuǎn)時轉(zhuǎn)速精度可達(dá)到較高水平,靜動態(tài)各項(xiàng)指標(biāo)均能較好地滿足工業(yè)生產(chǎn)中高性能電氣傳動的要求。由于單片機(jī)性能優(yōu)越,具有較佳的性能價格比,所以單片機(jī)在工業(yè)過程及設(shè)備控制中得到日益廣泛的應(yīng)用。PWM 調(diào)速系統(tǒng)與可控整流式調(diào)速系統(tǒng)相比有下列優(yōu)點(diǎn):由于PWM 調(diào)速系統(tǒng)的開關(guān)頻率較高,僅靠電樞電感的濾波作用就可獲得平穩(wěn)的直流電流,低速特性好:同樣,由于開關(guān)頻率高,快速響應(yīng)特性好,動態(tài)抗干擾能力強(qiáng),可以獲得很寬的頻帶;開關(guān)器件只工作在開關(guān)狀態(tài),主電路損耗小,裝置效率高。本文所介紹的系統(tǒng)就是一個采用典型的開環(huán)調(diào)速原理組成的單片機(jī)PWM 調(diào)速系統(tǒng)[4-5]。
2.4主要內(nèi)容                 
采用單片機(jī)構(gòu)成的直流電動機(jī)數(shù)字PWM 調(diào)速系統(tǒng),其控制核心主要由最小系統(tǒng)、電源模塊(12v  5v)、電機(jī)驅(qū)動電路、按鍵(加速、減速、急停、正轉(zhuǎn)、反轉(zhuǎn))、顯示模塊(四位數(shù)碼管)、直流電機(jī)組成。系統(tǒng)采用L298N芯片作為PWM 驅(qū)動直流電動機(jī)的供電主回路。單片機(jī)通過軟件處理輸出PWM信號, 實(shí)現(xiàn)了直流電動機(jī)的速度控制,在運(yùn)行中獲得了良好的動靜態(tài)性能。由于系統(tǒng)性價比高,結(jié)構(gòu)簡單,具有實(shí)用價值和推廣價值。在介紹了基于單片機(jī)用PWM實(shí)現(xiàn)直流電機(jī)調(diào)整的基本方法,直流電機(jī)調(diào)速的相關(guān)知識,及PWM調(diào)整的基本原理和實(shí)現(xiàn)方法。重點(diǎn)介紹了基于AT89S52單片機(jī)的用軟件產(chǎn)生PWM信號的途徑,并介紹了一種獨(dú)特的通過軟件定時中斷實(shí)現(xiàn)PWM信號占空比調(diào)節(jié)的方法。對于直流電機(jī)速度控制系統(tǒng)的實(shí)現(xiàn)提供了一種有效的途徑。
(1)鍵盤識別:通過P1口的低電平輸入識別不同的按鍵。
(2)通過對單片機(jī)程序燒錄實(shí)現(xiàn)對直流電機(jī)的停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)控制。
(3)由于單片機(jī)的驅(qū)動能力不強(qiáng),驅(qū)動直流電機(jī)需要很強(qiáng)的電流所以必須有外圍的驅(qū)動電路,因此本設(shè)計采用L298芯片放大單片機(jī)微弱的電流。
控制原理:89S52單片機(jī)為核心的直流電機(jī)控制系統(tǒng)控制簡圖如圖2-1所示,由軟件轉(zhuǎn)換成PWM 信號,并由P3.0、P3.1輸出,經(jīng)驅(qū)動電路輸出給電機(jī),從而控制電機(jī)得電與失電。軟件采用定時中斷進(jìn)行設(shè)計。單片機(jī)上電后,系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài)。當(dāng)按動啟動按鈕后,根據(jù)P3.0為高電平實(shí)現(xiàn)電機(jī)正轉(zhuǎn),P3.1為高電平時實(shí)現(xiàn)電機(jī)反轉(zhuǎn)。根據(jù)不同的加減速按鈕,調(diào)整P3.0/ P3.1輸出高低電平時的預(yù)定值,從而可以控制P3.0/ P3.1輸出高低電平時的占空比,進(jìn)而控制電壓的大小?刂瞥绦驊(yīng)用于電機(jī)的加減速。
在電動機(jī)驅(qū)動信號方面,我們采用了占空比可調(diào)的周期矩形信號控制。脈沖頻率對電動機(jī)轉(zhuǎn)速有影響,脈沖頻率高連續(xù)性好,但帶帶負(fù)載能力差脈沖頻率低則反之。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),脈沖頻率在40Hz以上,電動機(jī)轉(zhuǎn)動平穩(wěn),但加負(fù)載后,速度下降明顯,低速時甚至?xí)^D(zhuǎn);脈沖頻率在10Hz以下,電動機(jī)轉(zhuǎn)動有明顯跳動現(xiàn)象。實(shí)驗(yàn)證明,脈沖頻率在15Hz-30Hz時效果最佳。而具體采用的頻率可根據(jù)個別電動機(jī)性能在此范圍內(nèi)調(diào)節(jié)。通過 P3.0輸入高電平信號P3.1輸入低電平與P3.0輸入低電平P3.1輸入信號分別實(shí)現(xiàn)電動機(jī)的正轉(zhuǎn)與反轉(zhuǎn)功能。通過對信號占空比的調(diào)整來對直流電機(jī)進(jìn)行調(diào)節(jié)。
2.5電機(jī)調(diào)速控制模塊2.5.1方案選擇
方案一:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)整電動機(jī)的分壓,從而達(dá)到調(diào)速的目的。但是電阻網(wǎng)絡(luò)只能實(shí)現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格比較昂貴。更主要的問題在于一般電動機(jī)的電阻很小,但電流很大;分壓不僅會降低效率,而且實(shí)現(xiàn)很困難。
方案二:采用繼電器對電動機(jī)的開或關(guān)進(jìn)行控制,通過開關(guān)的切換對小車的速度進(jìn)行調(diào)整。這個方案的優(yōu)點(diǎn)是電路較為簡單,缺點(diǎn)是繼電器的響應(yīng)時間慢、機(jī)械結(jié)構(gòu)易損壞、壽命較短、可靠性不高。
方案三:采用驅(qū)動芯片L298N驅(qū)動直流電機(jī),L298N具有驅(qū)動能力強(qiáng),外圍電路簡單等優(yōu)點(diǎn),因此我們采用方案三。
2.5.2 PWM調(diào)速工作方式
方案一:雙極性工作制。雙極性工作制是在一個脈沖周期內(nèi),單片機(jī)兩控制口各輸出一個控制信號,兩信號高低電平相反,兩信號的高電平時差決定電動機(jī)的轉(zhuǎn)向和轉(zhuǎn)速。
方案二:單極性工作制。單極性工作制是單片機(jī)控制口一端置低電平,另一端輸出PWM信號,兩口的輸出切換和對PWM的占空比調(diào)節(jié)決定電動機(jī)的轉(zhuǎn)向和轉(zhuǎn)速。
由于單極性工作制電壓波開中的交流成分比雙極性工作制的小,其電流的最大波動也比雙極性工作制的小,所以我們采用了單極性工作制。
2.5.3 PWM調(diào)脈寬方式
調(diào)脈寬的方式有三種:定頻調(diào)寬、定寬調(diào)頻和調(diào)寬調(diào)頻。我們采用了定頻調(diào)寬方式,因?yàn)椴捎眠@種方式,電動機(jī)在運(yùn)轉(zhuǎn)時比較穩(wěn)定;并且在采用單片機(jī)產(chǎn)生PWM脈沖的軟件實(shí)現(xiàn)上比較方便。
2.5.4 PWM軟件實(shí)現(xiàn)方式
方案一:采用軟件延時方式,在引入中斷之后,將有一定的誤差。
方案二:采用定時器作為脈寬控制的定時方式,這一方式產(chǎn)生的脈沖寬度極其精確,誤差只在幾個us,綜合考慮我們采用方案二[6-7]。
2.6系統(tǒng)分析與硬件設(shè)計
鍵盤向單片機(jī)輸入相應(yīng)控制指令,由單片機(jī)通過P3.0與P3.1其中一口輸出與轉(zhuǎn)速相應(yīng)的PWM脈沖,另一口輸出低電平,經(jīng)過信號放大、驅(qū)動電動機(jī)控制電路,實(shí)現(xiàn)電動機(jī)轉(zhuǎn)向與轉(zhuǎn)速的控制,電動機(jī)正轉(zhuǎn),反轉(zhuǎn),加速,減速、急停。
總體設(shè)計方案的硬件部分詳細(xì)框圖如圖2-1所示:
圖2-1 系統(tǒng)硬件框圖
2.6.1單片機(jī)最小系統(tǒng)的設(shè)計
單片機(jī)最小系統(tǒng):所謂最小系統(tǒng)就是指由單片機(jī)和一些基本的外圍電路所組成的一個可以工作的單片機(jī)系統(tǒng)。一般來說,它包括單片機(jī),晶振電路和復(fù)位電路。
設(shè)計部分分析:
1、單片機(jī)AT89S52
AT89S52  8位單片機(jī)是MSC-51®系列產(chǎn)品的升級版,有世界著名半導(dǎo)體公司ATMEL在購買MSC-51®設(shè)計結(jié)構(gòu)后,利用自身優(yōu)勢技術(shù)——(掉電不丟數(shù)據(jù))閃存生產(chǎn)技術(shù)對舊技術(shù)進(jìn)行改進(jìn)和擴(kuò)展,同時使用新的半導(dǎo)體生產(chǎn)工藝,最終得到成型產(chǎn)品。與此同時,世界上其他的著名公司也通過基本的51內(nèi)核,結(jié)合公司自身技術(shù)進(jìn)行改進(jìn)生產(chǎn),推廣一批如51F020等高性能單片機(jī)。
AT89S52片內(nèi)集成256字節(jié)程序運(yùn)行空間、8K字節(jié)Flash存儲空間,支持最大64K外部存儲擴(kuò)展。根據(jù)不同的運(yùn)行速度和功耗的要求,時鐘頻率可以設(shè)置在0-33M之間。片內(nèi)資源有4組I/O控制端口、3個定時器、8個中斷、軟件設(shè)置低能耗模式、看門狗和斷電保護(hù)?梢栽4V到5.5V寬電壓范圍內(nèi)正常工作。不斷發(fā)展的半導(dǎo)體工藝也讓該單片機(jī)的功耗不斷降低。同時,該單片機(jī)支持計算機(jī)并口下載,簡單的數(shù)字芯片就可以制成下載線,僅僅幾塊錢的價格讓該型號單片機(jī)暢銷10年不衰。根據(jù)不同場合的要求,這款單片機(jī)提供了多種封裝,本次設(shè)計根據(jù)最小系統(tǒng)有時需要更換單片機(jī)的具體情況,使用雙列直插DIP-40的封裝。
圖2-2  DIP-40封裝89S52引腳圖
2、 復(fù)位電路及時鐘電路
復(fù)位電路和時鐘電路是維持單片機(jī)最小系統(tǒng)運(yùn)行的基本模塊。復(fù)位電路通常分為兩種:上電復(fù)位和手動復(fù)位。
        
           上電復(fù)位                             手動復(fù)位
有時系統(tǒng)在運(yùn)行過程中出現(xiàn)程序跑飛的情況,在程序開發(fā)過程中,經(jīng)常需要手動復(fù)位。所以本次設(shè)計選用手動復(fù)位。
高頻率的時鐘有利于程序更快的運(yùn)行,也有可以實(shí)現(xiàn)更高的信號采樣率,從而實(shí)現(xiàn)更多的功能。但是告訴對系統(tǒng)要求較高,而且功耗大,運(yùn)行環(huán)境苛刻。考慮到單片機(jī)本身用在控制,并非高速信號采樣處理,所以選取合適的頻率即可。合適頻率的晶振對于選頻信號強(qiáng)度準(zhǔn)確度都有好處,本次設(shè)計選取12.000M無源晶振接入XTAL1和XTAL2引腳。并聯(lián)2個30pF陶瓷電容幫助起振。
最小系統(tǒng)如圖:
圖2-3 最小系統(tǒng)
2.6.2電源電路設(shè)計
直流穩(wěn)壓電源的基本原理:直流穩(wěn)壓電源一般有電源變壓器T、整流濾波電路及穩(wěn)壓電路所組成,基本框圖如下。
圖2-4 直流電源原理
各部分作用:
(1)電源變壓器T的作用是將220V的交流電壓變換成整流濾波電路所需要的交流電壓Ui。變壓器副邊與原邊的功率比為P2/P1=n,式中n是變壓器的效率。
(2)整流電路:整流電路將交流電壓Ui變換成脈動的直流電壓。再經(jīng)濾波電路濾除較大的波紋成分,輸出波紋較小的直流電壓U1。常用的整流濾波電路有全波整流濾波、橋式整流濾波等。
圖2-5 整流電路
(3)濾波電路:各濾波電路C滿足        RL-C=(3~5)T/2,式中T為輸入交流信號周期,RL為整流濾波電路的等效負(fù)載電阻。
圖2-6 濾波電路
(4)穩(wěn)壓電路:常用的穩(wěn)壓電路有兩種形式:一是穩(wěn)壓管穩(wěn)壓電路,二是串聯(lián)型穩(wěn)壓電路。二者的工作原理有所不同。穩(wěn)壓管穩(wěn)壓電路其工作原理是利用穩(wěn)壓管兩端的電壓稍有變化,會引起其電流有較大變化這一特點(diǎn),通過調(diào)節(jié)與穩(wěn)壓管串聯(lián)的限流電阻上的壓降來達(dá)到穩(wěn)定輸出電壓的目的。它一般適用于負(fù)載電流變化較小的場合。串聯(lián)型穩(wěn)壓電路是利用電壓串聯(lián)負(fù)反饋的原理來調(diào)節(jié)輸出電壓的。集成穩(wěn)壓電源事實(shí)上是串聯(lián)穩(wěn)壓電源的集成化。常用穩(wěn)壓電路歸納如下表:
電路名稱
   
典型電路
   
輸出電壓及有關(guān)參數(shù)
   
特點(diǎn)與用途
穩(wěn)壓管穩(wěn)定電壓
   
   
   
電路簡單,適用于輸出電壓恒定,負(fù)載電流變化小的場合,常用作基準(zhǔn)電源
可調(diào)穩(wěn)壓電源
   
   
   
電路引入電壓串聯(lián)負(fù)反饋,使輸出電壓更穩(wěn)定且可調(diào), 可獲得負(fù)電源
串聯(lián)型穩(wěn)
壓電路
   
   
   
電路較復(fù)雜,輸出電壓可調(diào),輸出電流較大,應(yīng)用范圍廣
  
集成穩(wěn)壓
電源
   
   
系列為正電源
系列為負(fù)電源
輸出電壓固定,為5V,9V,12V,15V,18V等,可根據(jù)需要選用
   
電路簡單,輸出電壓固定
2.6.3直流電機(jī)驅(qū)動電路設(shè)計
由于單片機(jī)P3口輸出的電壓最高才有5V,難以直接驅(qū)動直流電機(jī)。所以我們需要使用恒壓恒流橋式2A驅(qū)動芯片L298N來驅(qū)動電機(jī)。L298N可接受標(biāo)準(zhǔn)TTL邏輯電平信號VSS,VSS可接4.5~7V電壓。4腳VS接電源電壓,VS電壓范圍VIH為+2.5~46V。輸出電流可達(dá)2.5A,可驅(qū)動電感性負(fù)載。1腳和15腳下管的發(fā)射極分別單獨(dú)引出以便接入電流采樣電阻,形成電流傳感信號。L298可驅(qū)動2個電動機(jī),OUT1,OUT2和OUT3,OUT4之間可分別接電動機(jī),本實(shí)驗(yàn)裝置我們選用驅(qū)動一臺電動機(jī)。5,7,10,12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn)。EnA,EnB接控制使能端,控制電機(jī)的停轉(zhuǎn)。同時需要加四個二極管在電機(jī)的兩端,防止電機(jī)反轉(zhuǎn)的時候產(chǎn)生強(qiáng)大的沖擊電流燒壞電機(jī)[8-9]。具體驅(qū)動電路如下圖2-7:
                      圖2-7 驅(qū)動電路
2.6.4顯示模塊設(shè)計
本次設(shè)計顯示模塊采用的是SM410564 四位共陽數(shù)碼管顯示,因?yàn)閱纹瑱C(jī)的輸出端口輸出的電流小,點(diǎn)亮數(shù)碼管的能力不大,所以需要采用三極管放大輸出電流,此次三極管采用的是C9013,具體放大電路如圖示:
       圖2-8 放大電路
2.6.5鍵盤電路設(shè)計
正轉(zhuǎn)、反轉(zhuǎn)、急停、加速、減速五個開關(guān)分別與單片機(jī)的P1.0,P1.1,P1.2,P1.3,P1.4相連,然后再與地相連。急停實(shí)現(xiàn)直流電機(jī)的停轉(zhuǎn),正轉(zhuǎn)實(shí)現(xiàn)直流電機(jī)的正轉(zhuǎn),反轉(zhuǎn)實(shí)現(xiàn)直流電機(jī)的反轉(zhuǎn),加速實(shí)現(xiàn)直流電機(jī)的加速,減速實(shí)現(xiàn)直流電機(jī)的減速,其電路如圖:
                               圖2-9 按鍵電路
2.6.6元件選擇與參數(shù)計算
(1)整流電路參數(shù)
輸出電壓平均值:Uo(AV)=2
輸出電流平均值:IO(AV)=
平均整流電流:ID(AV)=
最大反向電壓:URM=
整流二極管的選擇(考慮電網(wǎng)):
(2)濾波電路參數(shù)
濾波電容選擇:RLC=(3~5)
一般選幾十至幾千微法的電解電容,耐壓>
(3)實(shí)際計算過程
1.要使7812正常工作,必須保證輸入與輸出之間維持大于2V的壓降,因此7812輸入端直流電壓必須保證14V以上。7812輸入端的電流是對變壓器副邊輸出電壓U(t)整流、濾波后得到的。假設(shè)整流電路內(nèi)阻為0,負(fù)載電流為0,7812輸入端有最大電壓U=1.414Uef,Uef是U(t)有效值。由于濾波電容不可能無限大,所以U<1.414Uef,根據(jù)經(jīng)驗(yàn)可知U=1.2Uef,可知Uef=14.4V,考慮到整流橋經(jīng)過兩個二極管約有1.4V的壓降,得變壓器可取15V。
2.變壓器選擇:變壓器選擇雙15V變壓,考慮到電流不需要太大,最大電流為1A,實(shí)際選擇變壓器輸出功率為10W,可以很好的滿足要求。
3.整流橋:考慮到電路中會出現(xiàn)沖擊電流,整流橋的額定電流是工作電流的2~3倍。選取RS301(100V,3A)即可,實(shí)際購買過程中選擇了RS307(700V,3A)也符合設(shè)計要求。
4.濾波電容:考慮到對紋波電壓要求比較高,故選擇了2200μF耐壓值為25V以及100μF耐壓值50v的電解電容。
5.去耦電容:去耦電容的選擇是7812及7805芯片要求的,查手冊可知分別為0.01μF、,用來濾除高頻分量防止產(chǎn)生自激。
6.為了防止負(fù)載產(chǎn)生沖擊電流,故在輸出端加入2200μF、耐壓值為25V的電解電容。
7.7805支路的元件參數(shù)基本相同。
至此,所有元件的參數(shù)都已經(jīng)確定。
(4)12v、5v電源電路
      圖2-10  12v直流電源電路圖
          圖2-11  5v直流電源電路圖
系統(tǒng)整體硬件電路圖如圖2-12示:
           圖2-12 系統(tǒng)硬件電路圖
2.7設(shè)計所需部分器件
AT89S52、L298N、12MHZ晶振、四位共陽數(shù)碼管、電容、電阻、彈跳開關(guān)等。
2.8技術(shù)路線
P3.0/P3.1脈沖寬度調(diào)制器(PWM) 通道,它們產(chǎn)生可由編程決定寬度和間隔的脈沖。脈沖的間隔周期是由一個FOR循環(huán)控制,來產(chǎn)生不同的占空比。單片機(jī)產(chǎn)生的PWM信號不能直接驅(qū)動電機(jī),這就需要設(shè)計合適的驅(qū)動電路。我們可借助于恒壓恒流橋式2A驅(qū)動芯片L298N來完成對電動機(jī)的驅(qū)動。具體的設(shè)計方法是通過Keil C編程,Proteus聯(lián)合仿真來實(shí)現(xiàn)的。
Proteus是一種低投資的電子設(shè)計自動化軟件,提供Schematic Drawing,SPICE仿真與PCB設(shè)計功能,這一點(diǎn)proteus 與 multisim比較類似,只不過它可以仿真單片機(jī)和周邊設(shè)備,可以仿真51系列、AVR,PIC等常用的MCU,與keil和MPLAB不同的是它還提供了周邊設(shè)備的仿真,只要給出電路圖就可以仿真,例如373,led,示波器,Proteus提供了大量的元件庫有RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件,⋯編譯方面支持Keil和MPLAB,里面有大量的例子參考.
(1) Proteus可提供的仿真元件資源Proteus軟件提供了可仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件和多達(dá)30多個元件庫。
(2) Proteus可提供的仿真儀表資源虛擬儀器儀表的數(shù)量、類型和質(zhì)量,是衡量仿真軟件實(shí)驗(yàn)室是否合格的一個關(guān)鍵因素。在Proteus軟件中,理論上同一種儀器可以在一個電路中隨意的調(diào)用。除了現(xiàn)實(shí)存在的儀器外,Proteus還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實(shí)時地顯示出來,其作用與示波器相似但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標(biāo),例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結(jié)果的影響。Proteus可提供的調(diào)試手段
(3) Proteus提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數(shù)字信號。
Keil是德國開發(fā)的一個51單片機(jī)開發(fā)軟件平臺,最開始只是一個支持C語言和匯編語言的編譯器軟件。后來隨著開發(fā)人員的不斷努力以及版本的不斷升級,使它已經(jīng)成為了一個重要的單片機(jī)開發(fā)平臺,不過KEIL的界面并不是非常復(fù)雜,操作也不是非常困難,很多工程師的開發(fā)的優(yōu)秀程序都是在KEIL的平臺上編寫出來的。可以說它是一個比較重要的軟件,熟悉他的人很多很多,用戶群極為龐大,要遠(yuǎn)遠(yuǎn)超過偉福等廠家軟件用戶群,操作有不懂的地方只要找相關(guān)的書看看,到相關(guān)的單片機(jī)技術(shù)論壇問問,很快就可以掌握它的基本使用了。
(1)Keil的μVision2可以進(jìn)行純粹的軟件仿真(仿真軟件程序,不接硬件電路);也可以利用硬件仿真器,搭接上單片機(jī)硬件系統(tǒng),在仿真器中載入項(xiàng)目程序后進(jìn)行實(shí)時仿真;還可以使用μVision2的內(nèi)嵌模塊Keil Monitor-51,在不需要額外的硬件仿真器的條件下,搭接單片機(jī)硬件系統(tǒng)對項(xiàng)目程序進(jìn)行實(shí)時仿真。
(2)uVision2調(diào)試器具備所有常規(guī)源極調(diào)試,符號調(diào)試特性以及歷史跟蹤,代碼覆蓋,復(fù)雜斷點(diǎn)等功能。DDE界面和shift語言支持自動程序測試。
2.9 應(yīng)用軟件的編制、調(diào)試
使用Keil 軟件工具時,項(xiàng)目開發(fā)流程和其它軟件開發(fā)項(xiàng)目的流程極其相似。
(1) 創(chuàng)建一個項(xiàng)目,從器件庫中選擇目標(biāo)器件,配置工具設(shè)置。
(2) 用C語言或匯編語言創(chuàng)建源程序。
(3) 用項(xiàng)目管理器生成應(yīng)用。
(4) 修改源程序中的錯誤。
(5) 測試,連接應(yīng)用。
第三章 系統(tǒng)軟件的設(shè)計3.1程序的總體設(shè)計
利用P3口,編制程序輸出一串脈沖,經(jīng)放大后驅(qū)動直流電機(jī),改變輸出脈沖的電平的持續(xù)時間,達(dá)到使電機(jī)正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、停轉(zhuǎn)等目的[10-11]。由軟件編程從P3.0/P3.1管腳產(chǎn)生PWM 信號,經(jīng)驅(qū)動電路輸出給電機(jī),從而控制電機(jī)得電與失電。軟件采用延時法進(jìn)行設(shè)計。單片機(jī)上電后,系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài)。當(dāng)按動啟動按鈕后,根據(jù)P3.0為高電平時實(shí)現(xiàn)電機(jī)正轉(zhuǎn),P3.1為高電平時實(shí)現(xiàn)電機(jī)反轉(zhuǎn)。根據(jù)不同的加減速按鈕,調(diào)整P3.0/ P3.1輸出高低電平時的占空比,從而可以控制P3.0/ P3.1輸出高低電平時的有效值,進(jìn)而控制電機(jī)的加減速。
其總體流程圖如圖3-1示:
圖3-1 總體程序流程圖
第四章 調(diào)試與仿真4.1仿真圖形
初始狀態(tài),直流電機(jī)有如圖示4-1運(yùn)行效果
                  圖4-1 電機(jī)半速運(yùn)轉(zhuǎn)
按下急停鍵,直流電機(jī)有圖4-2的停止運(yùn)行結(jié)果。
         
圖4-2 電機(jī)停轉(zhuǎn)
按下加速鍵,直流電機(jī)有圖4-3的正向加速運(yùn)行結(jié)果。
圖4-3 電機(jī)正轉(zhuǎn)加速
按下減速鍵,直流電機(jī)有圖4-4正向減速運(yùn)行結(jié)果。
            
圖4-4 電機(jī)正轉(zhuǎn)減速
按下反轉(zhuǎn)鍵,直流電機(jī)有圖4-5反向加速運(yùn)行結(jié)果。
圖4-5 電機(jī)反轉(zhuǎn)加速
第五章 結(jié)論和總結(jié)
經(jīng)過將近幾個月的努力,終于完成了畢業(yè)設(shè)計。在 Protuse和Keil c中仿真了出來,同時也做出了實(shí)物,基本上實(shí)現(xiàn)了直流電機(jī)的停止、加速、減速以及轉(zhuǎn)向控制。
畢業(yè)設(shè)計是每個大學(xué)生必須面臨的一項(xiàng)綜合素質(zhì)的考驗(yàn),如果說在過去三年里,我們的學(xué)習(xí)是一個知識的積累過程,那么現(xiàn)在的畢業(yè)設(shè)計就是對過去所學(xué)的知識的綜合應(yīng)用,是對理論進(jìn)行深化和重新認(rèn)識的實(shí)踐活動。在這近兩個月的畢業(yè)設(shè)計中,我們有艱辛的付出,也有了收獲。知識固然得到了鞏固和提高,但我相信在實(shí)踐中的切身體會將會使我在以后的工作和學(xué)習(xí)中終身受用。
首先,學(xué)習(xí)能力和解決問題的信心都得到了提高。在畢業(yè)設(shè)計的過程中,遇到了很多困難,但是在查閱了很多有關(guān)書籍和向同學(xué)請教后終于解決了。通過這次畢業(yè)設(shè)計,我不僅對理論有了更深一步的認(rèn)識,還培養(yǎng)了自學(xué)能力和解決問題的能力,更重要的是,培養(yǎng)了克服困難的勇氣和信心。
其次,我們的畢業(yè)設(shè)計之所以能基本完成,要深深地感謝我們的指導(dǎo)老師的悉心指導(dǎo)和幫助。
                                            

參 考 文 獻(xiàn)
[1] 顧繩谷.電機(jī)及拖動基礎(chǔ)[M],北京:機(jī)械工業(yè)出版社,2007.
[2] 楊斌文,梅英,徐宇明.并勵直流電動機(jī)的機(jī)械特性分析(英文)[J],湖南文理學(xué)院學(xué)報(自然科學(xué)版),2006,Vol.18,NO.2:60-61,68.
[3] 王鑒光.電動機(jī)控制系統(tǒng)[M],北京:北京機(jī)械工業(yè)出版社,1994.
[4] 王小明.電動機(jī)的單片機(jī)控制[M],北京:北京航空航天大學(xué)出版社,2002.
[5] 張琛.直流無刷電動機(jī)原理及應(yīng)用[M],北京:北京機(jī)械工業(yè)出版社,1996.
[6] 袁淑芬.實(shí)現(xiàn)直流無刷電動機(jī)調(diào)速控制的一種新型方法[J],長春理工大學(xué)學(xué)報,2009,Vol.25,NO.1:113-115.
[7] 吳寶啟,張元偉,劉陽.基于單片機(jī)的無刷直流電機(jī)控制方案設(shè)計[J],煤礦現(xiàn)代化,2009,Vol.16,NO.6:74.
[8] 劉小春,首珩.無刷直流電動機(jī)的單片機(jī)控制[J],自動化技術(shù)與應(yīng)用,2009,Vol.21,NO.3:129-131.
[9] 周興華.用單片機(jī)控制直流電機(jī)變速[J],電子制作,2006,Vol.34,NO.6:34-35.
[10] 岳東海,顏鵬.直流電機(jī)PWM無級調(diào)速控制系統(tǒng)設(shè)計[J],價值工程,2010,Vol.14,NO.2:135-136.
[11]郭浩.3A驅(qū)動能力PWM直流電機(jī)控制電路的制作[J],電子制作,2007,Vol.9,NO.10:42-43.
致                謝
經(jīng)過半年的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個本科生的畢業(yè)設(shè)計,由于經(jīng)驗(yàn)的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),想要完成這個設(shè)計還是比較困難的。  
     在這里首先要感謝我的導(dǎo)師老師。老師平日里工作繁多,但在我做畢業(yè)設(shè)計的時期,一直關(guān)心我的論文進(jìn)展,從設(shè)計草案的確定和修改,中期檢查,后期詳細(xì)設(shè)計等整個過程中都給予了我很大的關(guān)心。然后還要感謝大學(xué)四年來所有的老師,為我們打下電氣專業(yè)知識的基礎(chǔ);同時還要感謝所有的同學(xué)們,正是因?yàn)橛辛四銈兊闹С趾凸膭睢4舜萎厴I(yè)設(shè)計才會順利完成。  
     最后感謝我的母校——四年來對我的大力栽培。
                                                   
                                          
附程序清單
  1. //畢業(yè)論文設(shè)計:基于單片機(jī)的直流電機(jī)控制系統(tǒng)的設(shè)計//
  2. #include<at89x51.h>
  3. #define unchar unsigned char
  4. #define unint unsigned int
  5. unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,
  6. 0x99,0x92,0x82,0xf8,
  7. 0x80,0x90,0x88,0x83,
  8. 0xc6,0xa1,0x86,0x84,0xff,0xbf}; //顯示代碼
  9. unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7};        //位選口
  10. unsigned char dispbuf[4]={0,0,0,0};
  11. unsigned char dispbitcnt;
  12. unint mstcnt;
  13. unint i;
  14. unint count=0;
  15. unchar tp=0;
  16. void ledshow();
  17. void keyscan();
  18. void delay();
  19. void just();
  20. void turn();
  21. void motorstop();
  22. void speedup();
  23. void speeddown();
  24. void main(void)
  25. {
  26. P3_0=1;
  27. P3_1=0;
  28. dispbuf[0]=16;
  29. TMOD=0x02;
  30. TH0=0x06;
  31. TL0=0x06;
  32. TR0=1;
  33. ET0=1;
  34. EA=1;
  35. while(1)
  36.         {
  37.                 ledshow();//數(shù)碼管顯示
  38.                 keyscan();//鍵盤掃描      
  39.         }
  40. }
  41. //延時10ms程序
  42. void delay()
  43. {
  44. unsigned char i,j;
  45. for(i=20;i>0;i--)
  46. for(j=248;j>0;j--);
  47. }
  48. //鍵盤掃描程序
  49. void keyscan()
  50. {
  51.         unchar temp=0;
  52.         P1=0xff;
  53.         if((P1&0x1f)!=0x1f)
  54.         {
  55.                 delay();
  56.                 if((P1&0x1f)!=0x1f)
  57.                 {
  58.                         temp=P1&0x1f;
  59.                         switch(temp)
  60.                         {
  61.                         case 0x1e:
  62.                                 just();break;
  63.                         case 0x1d:
  64.                                 turn();break;
  65.                         case 0x1b:
  66.                                 motorstop();break;
  67.                         case 0x17:
  68.                                 speedup();break;
  69.                         case 0x0f:
  70.                                 speeddown();break;
  71.                         }
  72.                 }
  73.         }
  74.         while((P1&0x1f)!=0x1f);      
  75. }
  76. //數(shù)碼管顯示程序
  77. void ledshow()
  78. {
  79. /*
  80. P0=dispcode[dispbuf[dispbitcnt]];
  81. P2=dispbitcode[dispbitcnt];
  82. dispbitcnt++;
  83. if(dispbitcnt==4)
  84. {
  85. dispbitcnt=0;
  86. }      
  87. */
  88. P2=0x01;P0=dispcode[dispbuf[0]];
  89. for(i=0;i<700;i++);
  90. P2=0x02;P0=dispcode[dispbuf[1]];
  91. for(i=0;i<700;i++);
  92. P2=0x04;P0=dispcode[dispbuf[2]];
  93. for(i=0;i<700;i++);
  94. P2=0x08;P0=dispcode[dispbuf[3]];
  95. for(i=0;i<700;i++);

  96.         dispbuf[1]=tp/100;
  97.         dispbuf[2]=(tp%100)/10;
  98.         dispbuf[3]=tp%10;
  99. }
  100. //中斷服務(wù)程序
  101. void t0(void) interrupt 1 using 0
  102. {
  103. /*
  104. mstcnt++;
  105. if(mstcnt==8)
  106. {
  107. mstcnt=0;
  108. P0=dispcode[dispbuf[dispbitcnt]];
  109. P2=dispbitcode[dispbitcnt];
  110. dispbitcnt++;
  111. if(dispbitcnt==4)
  112. {
  113. dispbitcnt=0;
  114. }
  115. }
  116. */
  117.   if(count>100)
  118.     count=0;
  119.   if(count>tp)
  120.           P3_7=0;
  121.   else P3_7=1;
  122.    count++;
  123. }
  124. void just()
  125. {
  126.         P3_0=1;
  127.         P3_1=0;
  128.         dispbuf[0]=16;
  129. }
  130. void turn()
  131. {
  132.         P3_0=0;
  133.         P3_1=1;
  134.         dispbuf[0]=17;
  135. }
  136. void motorstop()
  137. {
  138.         tp=0;
  139. }
  140. void speedup()
  141. {
  142.         if(tp>99)
  143.          tp=100;
  144.         else tp++;
  145. }
  146. void speeddown()
  147. {
  148.         if(tp<1)
  149.          tp=0;
  150.          else tp--;
  151. }
復(fù)制代碼


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:210244 發(fā)表于 2018-1-13 21:51 | 只看該作者
能不能發(fā)份文檔,可以用黑幣下
回復(fù)

使用道具 舉報

板凳
ID:316862 發(fā)表于 2018-4-26 11:20 | 只看該作者
親,來份文檔
回復(fù)

使用道具 舉報

地板
ID:260982 發(fā)表于 2018-5-2 08:21 | 只看該作者
本帖最后由 上官云雀兒 于 2018-5-2 10:38 編輯

很不錯啊,學(xué)習(xí)一下,可以來份壓縮包嗎?

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表