單片機(jī)控制直流電機(jī)調(diào)速系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  襖蒄薇蟻芃蒃蠆羆腿蒃螂蝿肅蒂蒁羅羈肈薃螈袇肇蚆羃膅膇蒞螆肁膆蒈羈羇膅蝕螄羃膄螂蚇節(jié)膃蒂袂膈膂薄蚅肄膁蚇袁羀膁莆蚄袆芀葿衿膅艿薁螞肁羋螃袇肆芇蒃螀羂芆薅羆袈芅蚈螈膇芅莇羄肅莄葿螇罿莃薂羂裊莂蚄螅芄莁蒄薈膀莀薆袃肆荿蚈蚆羂荿莈袂袈莈蒀蚄膆蕆薃袀肂蒆蚅蚃羈蒅蒞袈襖蒄薇蟻芃蒃蠆羆腿蒃螂蝿肅蒂蒁羅羈肈薃螈袇肇蚆羃膅膇蒞螆肁膆蒈羈羇膅蝕螄羃膄螂蚇節(jié)膃蒂袂膈膂薄蚅肄膁蚇袁羀膁莆蚄袆芀葿衿膅艿薁螞肁羋螃袇肆芇蒃螀羂芆薅羆袈芅蚈螈膇

2、芅莇羄肅莄葿螇罿莃薂羂裊莂蚄螅芄莁蒄薈膀莀薆袃肆荿蚈蚆羂荿莈袂袈莈蒀蚄膆蕆薃袀肂蒆蚅蚃羈蒅蒞袈襖蒄薇蟻芃蒃蠆羆腿蒃螂蝿肅蒂蒁羅羈肈薃螈袇肇蚆羃膅膇蒞螆肁膆蒈羈羇膅蝕螄羃膄螂蚇節(jié)膃蒂袂膈膂薄蚅肄膁蚇袁羀膁莆蚄袆芀葿衿膅艿薁螞肁羋螃袇肆芇蒃螀羂芆薅羆袈芅蚈螈膇芅莇羄肅莄葿螇罿莃薂羂裊莂蚄螅芄莁蒄薈膀莀薆袃肆荿蚈蚆羂荿莈袂袈莈蒀蚄膆蕆薃袀肂蒆蚅蚃羈蒅蒞袈襖蒄薇蟻芃蒃蠆羆腿蒃螂蝿肅蒂蒁羅羈肈薃螈袇肇蚆羃膅膇蒞螆肁膆蒈羈羇膅蝕螄羃膄螂蚇節(jié)膃蒂袂膈

3、膂薄蚅肄膁蚇袁羀膁莆蚄袆芀葿衿膅艿薁螞肁羋螃袇肆芇蒃螀羂芆薅羆袈芅蚈螈膇芅莇羄肅莄葿螇罿莃薂羂裊莂蚄螅芄莁蒄薈膀莀薆袃肆荿蚈蚆羂荿莈袂袈莈蒀蚄</p><p><b>  目錄</b></p><p><b>  前 言1</b></p><p><b>  第一章 概述2</b></p&

4、gt;<p>  1.1 單片機(jī)控制直流調(diào)速系統(tǒng)的設(shè)計(jì)方案2</p><p>  1.2 單片機(jī)控制直流調(diào)速系統(tǒng)工作原理概述2</p><p>  第二章 單片機(jī)控制系統(tǒng)的硬件設(shè)計(jì)4</p><p>  2.1單片機(jī)系統(tǒng)的地址分配4 </p><p>  2.2數(shù)據(jù)存儲(chǔ)器6264的擴(kuò)展5</p>&l

5、t;p>  2.3 ADC0809與8051單片機(jī)的接口電路設(shè)計(jì)7</p><p>  2.3.1給定速度的設(shè)計(jì)7</p><p>  2.3.2 反饋速度采樣電路設(shè)計(jì)8</p><p>  2.4 DAC0832與8051單片機(jī)的接口電路設(shè)計(jì)9</p><p>  2.5 LED數(shù)碼顯示電路設(shè)計(jì)11</p>

6、<p>  2.6 單片機(jī)控制直流調(diào)速系統(tǒng)中的其它設(shè)計(jì)13</p><p>  第三章 單片機(jī)控制系統(tǒng)的軟件設(shè)計(jì)14</p><p>  3.1主程序的設(shè)計(jì)14</p><p>  3.2采樣子程序18</p><p>  3.2.1 ADC0809的采樣程序19</p><p>  3.2.2中

7、值濾波算法子程序20</p><p>  3.3數(shù)字PID控制算法子程序21</p><p>  3.4 DAC0832的轉(zhuǎn)換24</p><p>  3.5程序中的代碼的轉(zhuǎn)換25</p><p>  3.6給定速度顯示與實(shí)際速度顯示子程序28</p><p>  3.6.1 給定速度顯示程序設(shè)計(jì)29<

8、;/p><p>  3.6.2實(shí)際速度顯示子程序30</p><p>  3.7 程序的調(diào)試30</p><p>  第四章 總結(jié)31</p><p><b>  致 謝32</b></p><p>  參 考 文 獻(xiàn)32</p><p>  附錄 一 軟件程

9、序清單33</p><p><b>  前 言</b></p><p>  自電動(dòng)機(jī)成為第二次工業(yè)革命開(kāi)始的標(biāo)志以來(lái),其在工業(yè)生產(chǎn)制造、交通運(yùn)輸、家用電器等領(lǐng)域發(fā)揮重要作用,電動(dòng)機(jī)的應(yīng)用無(wú)處不在。電機(jī)的控制系統(tǒng)隨著計(jì)算機(jī)的發(fā)展而不斷的改進(jìn)。</p><p>  在很長(zhǎng)一段時(shí)間內(nèi),在較高控制性能的傳動(dòng)系統(tǒng)中,直流電機(jī)一直占據(jù)主導(dǎo)地位,主要原因

10、在于其控制簡(jiǎn)單、調(diào)速平滑、性能良好。隨著電力電子技術(shù)的發(fā)展,直流電機(jī)拖動(dòng)將有逐步被交流電機(jī)拖動(dòng)所取代的趨勢(shì)。但在中、小功率的場(chǎng)合,采用永磁直流電動(dòng)機(jī),對(duì)其轉(zhuǎn)速控制相對(duì)比較簡(jiǎn)單,只需對(duì)電樞回路進(jìn)行控制。直流調(diào)速系統(tǒng)中應(yīng)用最廣泛的一種調(diào)速方法是調(diào)節(jié)電動(dòng)機(jī)的電樞電壓。為了獲得可調(diào)的直流電壓,利用電力電子器件的完全可控性,采用脈寬調(diào)制(Pulse Width Modulation)技術(shù),將恒定的直流電壓調(diào)制成大小、極性可變的直流電壓作為電動(dòng)機(jī)的

11、電樞電壓,實(shí)現(xiàn)系統(tǒng)的平滑調(diào)速,這種調(diào)速系統(tǒng)就稱(chēng)為直流脈寬調(diào)速系統(tǒng)。它越來(lái)越廣泛地應(yīng)用于各種功率的調(diào)速系統(tǒng)中。</p><p>  微處理器使電機(jī)運(yùn)動(dòng)控制技術(shù)再次發(fā)生巨大變革,使用微處理器實(shí)現(xiàn)數(shù)字化控制不僅可以簡(jiǎn)化控制硬件,而且可以加入人工智能對(duì)運(yùn)動(dòng)系統(tǒng)進(jìn)行診斷,這對(duì)電機(jī)運(yùn)動(dòng)控制系統(tǒng)的發(fā)展影響重大。單片機(jī)用做微處理器的調(diào)速系統(tǒng)應(yīng)用尤為廣泛。單片機(jī)結(jié)構(gòu)相對(duì)比較簡(jiǎn)單,通過(guò)學(xué)習(xí)一些專(zhuān)業(yè)基礎(chǔ)知識(shí)以后依靠自己的技術(shù)力量,也能

12、夠開(kāi)發(fā)出自己所希望的單片機(jī)應(yīng)用系統(tǒng)。</p><p>  為了在比較簡(jiǎn)單的運(yùn)動(dòng)控制系統(tǒng)中實(shí)現(xiàn)智能控制,因此設(shè)計(jì)了單片機(jī)控制直流調(diào)速系統(tǒng)。單片機(jī)是應(yīng)用于直流調(diào)速系統(tǒng)的最基本處理器,就其組成和結(jié)構(gòu)而言,大大縮小控制器的體積,增加了功能,而且可以通過(guò)串行通信和計(jì)算機(jī)相連接,實(shí)現(xiàn)集中控制。</p><p><b>  第一章 概述</b></p><p&g

13、t;  1.1 單片機(jī)控制直流調(diào)速系統(tǒng)的設(shè)計(jì)方案</p><p>  本次設(shè)計(jì)的任務(wù)是單片機(jī)控制的直流調(diào)速系統(tǒng),該系統(tǒng)通過(guò)單片機(jī)對(duì)直流電動(dòng)機(jī)的速度進(jìn)行控制,同時(shí)對(duì)速度進(jìn)行檢測(cè)采樣,并顯示給定速度和實(shí)際速度??刂葡到y(tǒng)設(shè)計(jì)總體結(jié)構(gòu)框圖如下: </p><p>  圖1-1系統(tǒng)結(jié)構(gòu)框圖</p><p>  1.2 單片機(jī)控制直流調(diào)速系統(tǒng)工作原理概述</p>

14、<p>  整個(gè)系統(tǒng)的工作原理:首先是人為給定電動(dòng)機(jī)轉(zhuǎn)速的電壓信號(hào),然后將這個(gè)電壓信號(hào)通過(guò)A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào)后傳送給單片機(jī)(8051)。單片機(jī)通過(guò)中斷通信方式將接收到數(shù)據(jù)先保存起來(lái)。然后再對(duì)此數(shù)據(jù)進(jìn)行處理:要將此二進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換,先將(00H~FFH)轉(zhuǎn)換成對(duì)應(yīng)的實(shí)際數(shù)值,接著啟動(dòng)ADC0809開(kāi)始采樣直流電動(dòng)機(jī)的實(shí)際速度值,因?yàn)橛玫搅酥兄禐V波算法,所以需要連續(xù)采集三次數(shù)據(jù),作比較之后取中間值,這個(gè)值即為直流電動(dòng)機(jī)速度

15、的實(shí)際值。然后用給定值與這個(gè)實(shí)際值作比較,再通過(guò)PID控制算法,得到一個(gè)輸出信號(hào)值,再通過(guò)DAC0832轉(zhuǎn)換器將這個(gè)數(shù)字信號(hào)轉(zhuǎn)換成相應(yīng)的模擬電壓控制信號(hào),經(jīng)過(guò)PWM波形發(fā)生器來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī);接著繼續(xù)采樣,又通過(guò)PID控制算法,同樣又輸出一個(gè)電壓控制信號(hào)來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī),其實(shí)這是一個(gè)不斷地循環(huán)往復(fù)的過(guò)程,作比較直至差值為零,即實(shí)際速度等于給定速度。并在這個(gè)循環(huán)往復(fù)的過(guò)程中,將采集到的不斷變化的速度值,通過(guò)LED數(shù)碼管顯示出直流電動(dòng)機(jī)的給

16、定速度值和實(shí)際速度值。</p><p>  整個(gè)系統(tǒng)設(shè)計(jì)包括了四個(gè)大的部分: A/D轉(zhuǎn)換電路部分、D/A轉(zhuǎn)換電路部分、存儲(chǔ)器的擴(kuò)展部分、轉(zhuǎn)速數(shù)字顯示部分。</p><p>  (1)A/D轉(zhuǎn)換電路的設(shè)計(jì):從畢業(yè)設(shè)計(jì)任務(wù)書(shū)中給的原始數(shù)據(jù)知道,測(cè)速發(fā)電機(jī)的輸出電壓范圍為(0~12V),直流電動(dòng)機(jī)的額定轉(zhuǎn)速值是1500轉(zhuǎn)/分。選用了一塊ADC0809芯片,對(duì)測(cè)速發(fā)電機(jī)發(fā)出的電壓進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成相

17、應(yīng)的數(shù)字信號(hào)。但是ADC0809芯片只能接受(0~5V)的電壓范圍,需要外加一個(gè)轉(zhuǎn)換電路,將測(cè)速發(fā)電機(jī)發(fā)出的電壓進(jìn)行轉(zhuǎn)換,達(dá)到ADC0809芯片能接受要求范圍。</p><p> ?。?)D/A轉(zhuǎn)換電路的設(shè)計(jì):畢業(yè)設(shè)計(jì)任務(wù)要求單片機(jī)控制系統(tǒng)部分能夠輸出(0~5V)電壓控制信號(hào)。這里選用DAC0832芯片,因?yàn)樗哂袛?shù)據(jù)鎖存器、片選、讀、寫(xiě)控制信號(hào)線(xiàn),故可以與MCS-51擴(kuò)展總線(xiàn)直接相連。但是DAC0832的輸出是

18、電流,使用運(yùn)算放大器可以將DAC0832的電流輸出線(xiàn)性的轉(zhuǎn)換成電壓輸出。</p><p> ?。?)存儲(chǔ)器的擴(kuò)展電路設(shè)計(jì):MCS-51系列單片機(jī)內(nèi)具有128B或256B的數(shù)據(jù)存儲(chǔ)器RAM,但在大多數(shù)的實(shí)時(shí)控制系統(tǒng)中,肯定會(huì)要求采集大量的數(shù)據(jù)信息,而這些信息又比較珍貴,為此需要將這些大量寶貴的數(shù)據(jù)保存下來(lái),唯一可行的辦法就是擴(kuò)展控制系統(tǒng)的存儲(chǔ)容量,因此外接一塊6264芯片。</p><p>

19、 ?。?)速度顯示電路設(shè)計(jì):從畢業(yè)設(shè)計(jì)任務(wù)書(shū)中給的原始數(shù)據(jù)知道,直流電動(dòng)機(jī)的額定轉(zhuǎn)速為1500轉(zhuǎn)/分。LED顯示電路設(shè)計(jì)的目的就是為了顯示給定轉(zhuǎn)速和實(shí)際速度值,而轉(zhuǎn)速值又只能是整數(shù),也就是說(shuō)LED顯示的是一個(gè)4位的整數(shù)值。因此選用8個(gè)LED顯示器,可分別顯示出給定速度值和實(shí)際速度值。</p><p>  第二章 單片機(jī)控制系統(tǒng)的硬件設(shè)計(jì)</p><p>  單片機(jī)控制直流調(diào)速系統(tǒng)接口電

20、路集中了MCS-51系列單片機(jī)的功能芯片,包括數(shù)據(jù)存儲(chǔ)器擴(kuò)展芯片6264,I/O口擴(kuò)展芯片8255,AD轉(zhuǎn)換芯片ADC0809及DA轉(zhuǎn)換芯片DAC0832,另外還有3-8譯碼器74LS138,地址鎖存器74LS373等。下面將分別介紹各個(gè)芯片的功能和設(shè)計(jì)電路圖。</p><p>  2.1單片機(jī)系統(tǒng)的地址分配</p><p>  單片機(jī)與74LS138譯碼器的設(shè)計(jì)如圖所示:</p&g

21、t;<p>  圖2-1 8051與74LS138的連接圖</p><p>  單片機(jī)控制直流調(diào)速系統(tǒng)的接口電路屬于RAM和I/O容量較大的應(yīng)用系統(tǒng),單片機(jī)共有四個(gè)外圍及接口芯片,需要四個(gè)片選信號(hào),我們采用全地址譯碼方法。這種譯碼方法將低位地址作為片內(nèi)地址,而用譯碼器74LS138對(duì)高位地址線(xiàn)進(jìn)行譯碼,譯碼器輸出的地址選擇線(xiàn)用作片選線(xiàn)。</p><p>  本系統(tǒng)采用的3-

22、8譯碼器74LS138,輸入端占用3根最高位地址線(xiàn),取A (P2.5), A (P2.6), A (P2.7)作為74LS138譯碼器的輸入信號(hào)依次接至74LS138的A口、B口、C口,剩余的13根低位可作為片內(nèi)地址線(xiàn)。因此,譯碼器的8根輸出線(xiàn)分別對(duì)應(yīng)8個(gè)8K字節(jié)地址空間。74LS138的控制端,接地,G1接+5V,否則譯碼器的8個(gè)輸出端全為高阻狀態(tài)。邏輯功能表如下:</p><p>  表2-1 74LS13

23、8邏輯功能表</p><p>  根據(jù)上表中地址線(xiàn)的連接方法可知各個(gè)芯片全部地址譯碼如下表所示:</p><p>  表2-2 地址譯碼</p><p>  2.2數(shù)據(jù)存儲(chǔ)器6264的擴(kuò)展</p><p>  數(shù)據(jù)存儲(chǔ)器即隨機(jī)存取存儲(chǔ)器,簡(jiǎn)稱(chēng)RAM,用于存放可隨時(shí)修改的數(shù)據(jù)信息,對(duì)RAM可進(jìn)行讀、寫(xiě)操作。數(shù)據(jù)存儲(chǔ)器用于存儲(chǔ)現(xiàn)場(chǎng)采集的原始數(shù)據(jù)

24、、運(yùn)算結(jié)果等,所以外部數(shù)據(jù)存儲(chǔ)器應(yīng)能夠隨機(jī)讀/寫(xiě),通常采用半導(dǎo)體隨機(jī)存儲(chǔ)器RAM電路。RAM為易失性存儲(chǔ)器,斷電后所存儲(chǔ)的信息會(huì)立即丟失。因?yàn)樵O(shè)計(jì)的系統(tǒng)中需要采集大量的數(shù)據(jù)并要保存下來(lái),因此使用一片6264擴(kuò)展單片機(jī)的數(shù)據(jù)存儲(chǔ)器,6264與單片機(jī)的電路設(shè)計(jì)如下圖所示:</p><p>  圖2-2 8051與數(shù)據(jù)存儲(chǔ)器6264的接口電路圖</p><p>  因6264是8K字節(jié)的RA

25、M,故需要13根低位地址線(xiàn)(A0~A12)進(jìn)行片內(nèi)尋址,6264有兩個(gè)片選信號(hào)(CS2、),只有當(dāng)CS2=1,=0時(shí),芯片才被選中工作。否則就不工作,在實(shí)際應(yīng)用中,往往只用其中一個(gè),而另一個(gè)接成常有效。</p><p>  本系統(tǒng)將74LS138的片選信號(hào)CS0接至6264的,6264的CS2接+5V電源。6264數(shù)據(jù)線(xiàn)D0~D7依次接到8051單片機(jī)的P0口,地址線(xiàn)A0~A7依次接到74LS373的輸出端,高五

26、位地址線(xiàn)(A8~A12)依次接到8051單片機(jī)的(P2.0~P2.4口)。、的信號(hào)分別接到8051單片機(jī)的和端口。6264在此系統(tǒng)中的工作原理,當(dāng)6264的CS2=1,=0,=0,=1時(shí)從6264讀出數(shù)據(jù)到D7~D0;當(dāng)6264的CS2=1,=0,=1,=0時(shí)把D7~D0數(shù)據(jù)寫(xiě)入6264。具體工作方式見(jiàn)下表:</p><p>  表 2-3 6264的工作方式選擇表</p><p>  

27、由于8051單片機(jī)的P0口是分時(shí)復(fù)用的地址/數(shù)據(jù)總線(xiàn),因此在進(jìn)行數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí),必須利用地址鎖存器將地址信號(hào)從地址/數(shù)據(jù)總線(xiàn)中分離開(kāi)來(lái)。這里使用了帶三態(tài)緩沖輸出的8D鎖存器74LS373,當(dāng)74LS373用作地址鎖存器時(shí),三態(tài)門(mén)的使能信號(hào)應(yīng)該為低電平。當(dāng)C輸入端為高電平時(shí),鎖存器輸出(1Q~8Q)狀態(tài)和輸入端(1D~8D)狀態(tài)相同;當(dāng)C端從高電平返回到低電平(下降沿)時(shí),輸入端(1D~8D)的數(shù)據(jù)鎖入(1Q~8Q)的8位鎖存器中。&l

28、t;/p><p>  MCS-51單片機(jī)外部數(shù)據(jù)操作簡(jiǎn)單,只有累加器A和外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)傳送操,它可以通過(guò)下面兩類(lèi)指令實(shí)現(xiàn):</p><p>  MOVX @Ri, A ;累加器A中數(shù)據(jù)送片外數(shù)據(jù)存儲(chǔ)器</p><p>  MOVX A, @Ri ;片外數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)送累加器A中</p><p>  這類(lèi)指令中,片外數(shù)據(jù)

29、存儲(chǔ)器低8 位地址由Ri(i=0,1)間接尋址,而高8位地址則隱含為程序指令地址的高8位。</p><p>  MOVX DPTR ,A ;累加器A中數(shù)據(jù)送片外數(shù)據(jù)存儲(chǔ)器</p><p>  MOVX A, @DPTR ;片外數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)送累加器A</p><p>  這類(lèi)指令中,片外數(shù)據(jù)存儲(chǔ)器由16位數(shù)據(jù)指針DPTR間接尋址。</p>

30、<p>  2.3 ADC0809與8051單片機(jī)的接口電路設(shè)計(jì)</p><p>  2.3.1給定速度的設(shè)計(jì)</p><p>  給定轉(zhuǎn)速電路設(shè)計(jì)如下圖所示:</p><p>  圖2-3 給定模擬電壓與ADC0809的連接</p><p>  已知直流電動(dòng)機(jī)的額定轉(zhuǎn)速為1500轉(zhuǎn)/分,為簡(jiǎn)化設(shè)計(jì)電路,給定轉(zhuǎn)速由一個(gè)旋轉(zhuǎn)電位

31、器給定一個(gè)0~5V可變模擬電壓,通過(guò)ADC0809模數(shù)轉(zhuǎn)換器將這一給定0~5V電壓轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字信號(hào),將這個(gè)數(shù)字信號(hào)作為控制直流電動(dòng)機(jī)轉(zhuǎn)速的給定速度值。旋轉(zhuǎn)電位器R4的一端接+5V直流電壓,另一端接地,可變輸出端接ADC0809模擬量輸入通道IN0。當(dāng)電位器輸出電壓為0V時(shí)即給定轉(zhuǎn)速為0轉(zhuǎn)/分,當(dāng)電位器輸出電壓為+5V時(shí)即給定轉(zhuǎn)速為1500轉(zhuǎn)/分。這樣當(dāng)給定電壓在0~5V之間變化時(shí),其轉(zhuǎn)換后的數(shù)字信號(hào)相當(dāng)于0~1500轉(zhuǎn)/分。<

32、/p><p>  2.3.2 反饋速度采樣電路設(shè)計(jì)</p><p>  反饋速度采樣電路設(shè)計(jì)如下圖所示:</p><p>  圖2-4 ADC0809和8051的連接電路圖</p><p>  在設(shè)計(jì)中首先要將給定直流電動(dòng)機(jī)轉(zhuǎn)速的模擬電壓轉(zhuǎn)換成數(shù)字信號(hào),同時(shí)還要對(duì)測(cè)速發(fā)電機(jī)進(jìn)行采樣并轉(zhuǎn)化成數(shù)字信號(hào),因此需要一片A/D芯片。A/D的種類(lèi)很多,根據(jù)轉(zhuǎn)

33、換原理可以分為雙積分式(優(yōu)點(diǎn)是轉(zhuǎn)換精度高,抗干擾性好,價(jià)格便宜,但轉(zhuǎn)換速度慢)、逐次逼近式(轉(zhuǎn)換精度、速度、價(jià)格適中)、并行式(速度快,但價(jià)格昂貴)和計(jì)數(shù)器式。其中逐次逼近式A/D轉(zhuǎn)換器應(yīng)用比較普遍,也能滿(mǎn)足設(shè)計(jì)要求,因此選用了一片ADC0809芯片。ADC0809是8路8位逐次逼近式A/D,由多路模擬開(kāi)關(guān)、通道地址所存、譯碼器、8位A/D轉(zhuǎn)換器及三態(tài)輸出數(shù)據(jù)鎖存器組成。</p><p>  本次設(shè)計(jì)中,由于AD

34、C0809片內(nèi)無(wú)時(shí)鐘,因此利用8051單片機(jī) 的ALE提供,而8051單片機(jī)的晶振頻率為12MHz,則其ALE腳輸出的頻率為2MHz,再將8051單片機(jī)的 ALE經(jīng)過(guò)觸發(fā)器74LS74 四分頻后為500KHz。ADC0809的CLK典型值為640 KHz,超過(guò)640 KHz時(shí)會(huì)使轉(zhuǎn)換精度降低,因此經(jīng)過(guò)四分頻后8051單片機(jī)的ALE連接到ADC0809的CLK能夠滿(mǎn)足系統(tǒng)的設(shè)計(jì)要求。ADC0809具有輸出三態(tài)鎖存器,其8位數(shù)據(jù)輸出線(xiàn)D0~

35、D7可直接與8051單片機(jī)的P0口相連。ADC0809的ADDA、ADDB、ADDC分別與8051單片機(jī)的地址總線(xiàn)D0、D1、D2經(jīng)過(guò)74LS373相連后A0、A1、A2連接,以選中IN0~I(xiàn)N7的某一路,但是實(shí)際上只需要兩個(gè)轉(zhuǎn)換通道就行了(IN0給定轉(zhuǎn)速電壓通道;IN1測(cè)速發(fā)電機(jī)反饋電壓通道)。而將74LS138的CS3()作為片選信號(hào),由8051單片機(jī)的寫(xiě)信號(hào)控制ADC0809的地址鎖存和轉(zhuǎn)換啟動(dòng)。由于ADC0809的ALE和STA

36、RT連在一起,故在鎖存通道的同時(shí),啟動(dòng)并進(jìn)行轉(zhuǎn)換,輸出允許信號(hào)ENABLE由8051單片機(jī)的讀信號(hào)R</p><p>  A/D轉(zhuǎn)換是否完成的判斷。因?yàn)橹挥写_認(rèn)數(shù)據(jù)轉(zhuǎn)換完成后,才能把數(shù)據(jù)傳送給8051單片機(jī)做處理。通常有三種方式:定時(shí)傳送方式、查詢(xún)方式、中斷方式。從ADC0809和8051單片機(jī)的連接電路圖中可知 ADC0809 的EOC經(jīng)過(guò)74F04反向器后再和8051單片機(jī)的INT0相連接,所以采用的是中斷方

37、式進(jìn)行數(shù)據(jù)傳送。由于采用的是中值濾波算法,所以需要采集三次。當(dāng)檢測(cè)到EOC為高電平時(shí),即A/D轉(zhuǎn)換完成,單片機(jī)將數(shù)據(jù)讀入并做相應(yīng)的處理。ADC0809和8051單片機(jī)的連接電路圖中主要涉及到三個(gè)問(wèn)題:第一個(gè)是ADC0809的8路模擬信號(hào)的通道選擇(上文中已經(jīng)做出說(shuō)明),第二個(gè)就是A/D轉(zhuǎn)換完后轉(zhuǎn)換數(shù)據(jù)的傳送,第三個(gè)就是ADC0809的8路模擬信號(hào)的通道所能承受的電壓為0~5V,而測(cè)速發(fā)電機(jī)輸出電壓為0~12V,因此需要加一個(gè)轉(zhuǎn)換電路將測(cè)

38、速發(fā)電機(jī)的輸出電壓轉(zhuǎn)換成能夠滿(mǎn)足ADC0809的模擬量輸入通道的要求,通常將測(cè)速發(fā)電機(jī)的輸出電壓接到一個(gè)電位器上,調(diào)整電位器使輸出電壓變成0~5V的直流電壓。A/D轉(zhuǎn)換后得到的是數(shù)字量,傳送給單片機(jī)進(jìn)行處理。</p><p>  2.4 DAC0832與8051單片機(jī)的接口電路設(shè)計(jì)</p><p>  DAC0832與單片機(jī)連接電路如圖所示:</p><p>  圖

39、2-5 DAC0832和8051接口電路圖</p><p>  數(shù)/模轉(zhuǎn)換器是一種將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)的器件。 設(shè)計(jì)中需要將給定轉(zhuǎn)速與實(shí)際速度的差值經(jīng)過(guò)數(shù)字PID算法后再轉(zhuǎn)換成(0~5V)電壓輸出,故選擇一片DAC0832實(shí)現(xiàn)設(shè)計(jì)要求。DAC0832是8位D/A,片內(nèi)帶數(shù)據(jù)鎖存器,電流輸出,輸出電流穩(wěn)定時(shí)間為1µs,+5~+15V單電源供電,功耗為20mW。</p><p>

40、  從DAC0832和8051單片機(jī)的接口電路圖可以看到:DAC0832的DI0~DI7這八個(gè)引腳和8051單片機(jī)的P0口依次相連,用于輸入CPU送來(lái)的待轉(zhuǎn)換的數(shù)字量,DI7為最高位。DAC0832的CS和74LS138的CS2相連,當(dāng)DAC0832的CS為低電平時(shí),此芯片被選中工作;當(dāng)CS為高電平時(shí),此芯片不被選中工作。DAC0832的Iout1和Iout2是兩條模擬電流輸出線(xiàn)。Iout1+Iout2為一常數(shù);若輸入數(shù)字量為全“1”,

41、則Iout1為最大,Iout2為最小;若輸入數(shù)字量為全“0”,則Iout1最小,Iout2最大。為了保證額定負(fù)載下輸出電流的線(xiàn)性度,Iout1和Iout2引腳線(xiàn)上的電位必須盡量接近低電平。單片機(jī)控制直流調(diào)速系統(tǒng)中要求用0~5V 模擬電壓來(lái)控制PWM,因此DAC0832的電流輸出必須轉(zhuǎn)換成電壓輸出,方法就是在DAC0832的Iout1和Iout2的輸出端接運(yùn)算放大器,本設(shè)計(jì)中選用的是LM339作為運(yùn)算放大器。DAC0832的 WR1、WR

42、2為兩條寫(xiě)命令輸入線(xiàn)。WR1用于控制數(shù)字量輸入到輸入寄存器:若ILE為“1”,CS為“0”和WR1為“0”同時(shí)滿(mǎn)足,則與門(mén)M</p><p>  根據(jù)對(duì)DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同控制方法,DA0832有三種工作方式。單緩沖方式、雙緩沖方式、直通方式。本次設(shè)計(jì)采用的是單緩沖方式。此方式適用于只有一路模擬量輸出或幾路模擬量非同步輸出的場(chǎng)合,方法是控制數(shù)據(jù)鎖存器和DAC寄存器同時(shí)接收數(shù)據(jù),或者只用數(shù)

43、據(jù)鎖存器而把DAC寄存器接成直通方式。</p><p>  DAC0832的輸出是電流,有兩個(gè)電流輸出端(Iout1和Iout2),它們的和為常數(shù)。使用運(yùn)算放大器可以將DAC0832的Iout1和Iout2電流輸出線(xiàn)性的轉(zhuǎn)換成電壓輸出。根據(jù)運(yùn)算放大器和DAC0832的連接方法,運(yùn)算放大器的輸出可以分為單極性和雙極性?xún)煞N,這次設(shè)計(jì)使用的是單極性的連接方法。輸出電壓Vo與對(duì)應(yīng)輸入數(shù)字量的關(guān)系為:</p>

44、<p>  式子中: ; /256為一常數(shù)。</p><p>  顯然,Vo和B成正比關(guān)系。輸入數(shù)字量B為00H時(shí),Vo也為0,輸入數(shù)字量為FFH時(shí),由于=-5V,Vo為正的最大值5V,輸出電壓為正的單極性。</p><p>  2.5 LED數(shù)碼顯示電路設(shè)計(jì)</p><p>  數(shù)

45、碼顯示電路設(shè)計(jì)如圖所示:</p><p>  圖2-6 8255與8051的連接電路圖</p><p>  本次設(shè)計(jì)中要將給定的轉(zhuǎn)速電壓轉(zhuǎn)換成數(shù)字量的轉(zhuǎn)速,并用LED(Light Emitting Diode)數(shù)碼管顯示這一給定轉(zhuǎn)速,同時(shí)還要顯示直流電機(jī)實(shí)際轉(zhuǎn)速。已知給定電機(jī)的轉(zhuǎn)速為0~1500轉(zhuǎn)/分,因此需要兩個(gè)四位的LED數(shù)碼管才能滿(mǎn)足設(shè)計(jì)要求。</p><p&g

46、t;  LED顯示器是由發(fā)光二極管夠成的字段組成的顯示器,有8段和16段管兩大類(lèi),本次設(shè)計(jì)采用的是8段數(shù)碼管。顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方式。動(dòng)態(tài)顯示控制的基本原理是,單片機(jī)依次發(fā)出段選控制字和對(duì)應(yīng)哪一位LED顯示器的位選控制信號(hào),顯示器逐個(gè)循環(huán)點(diǎn)亮。適當(dāng)選擇掃描速度,利用人眼睛的“留光”效應(yīng),使得看上去好像幾位顯示器同時(shí)在顯示一樣,而在動(dòng)態(tài)掃描顯示控制中,同一時(shí)刻實(shí)際上只要一位LED顯示器被點(diǎn)亮。單片機(jī)控制系統(tǒng)的接口電路中的LED

47、數(shù)碼顯示器使用的是共陰極接法。共陰極接法的原理:將所有發(fā)光二極管的陰極互相連接后接地,每個(gè)發(fā)光二極管的陽(yáng)極通過(guò)電阻與輸入端相連,當(dāng)陽(yáng)極端輸入高電平時(shí),段發(fā)光二極管就導(dǎo)通點(diǎn)亮,當(dāng)陽(yáng)極端輸入低電平時(shí),段發(fā)光二極管就不點(diǎn)亮。設(shè)計(jì)中采用動(dòng)態(tài)顯示,單片機(jī)控制系統(tǒng)采用動(dòng)態(tài)掃描顯示。動(dòng)態(tài)顯示采用軟件法把將要顯示的十六進(jìn)制數(shù)(或BCD碼)轉(zhuǎn)化為相應(yīng)字型碼,所以需要在RAM區(qū)中建立一個(gè)顯示緩沖區(qū)。顯示緩沖區(qū)內(nèi)包含的存儲(chǔ)單元個(gè)數(shù)需和系統(tǒng)中的LED顯示器的個(gè)

48、數(shù)相等。而顯示緩沖區(qū)的起始地址很重要,它決定了顯示緩沖區(qū)在RAM中的位置。顯示緩沖區(qū)的每個(gè)存儲(chǔ)單元用于存放相應(yīng)LED顯示管將要顯</p><p>  為了顯示字符,要為L(zhǎng)ED顯示器提供顯示段選碼(或稱(chēng)字型碼)。采用共陰極接法的8段LED數(shù)碼顯示器字型碼表如下:</p><p>  表2-3 8段LED數(shù)碼顯示器字型碼表</p><p>  2.6 單片機(jī)控制直流調(diào)

49、速系統(tǒng)中的其它設(shè)計(jì)</p><p>  單片機(jī)控制直流調(diào)速系統(tǒng)中除上述電路設(shè)計(jì)之外,還有8051單片機(jī)的復(fù)位電路設(shè)計(jì),本次設(shè)計(jì)中采用手動(dòng)復(fù)位,當(dāng)用手按一下按鈕S1時(shí)就可以對(duì)8051單片機(jī)進(jìn)行復(fù)位。除此之外原理圖中還具備測(cè)速發(fā)電機(jī)接口卡J3,用來(lái)將測(cè)速發(fā)電機(jī)的電壓信號(hào)接入系統(tǒng)。基準(zhǔn)電源輸入和模擬電壓輸出接口卡J2,為單片機(jī)系統(tǒng)引入+5V的基準(zhǔn)電壓,還有將0~5V的模擬電壓輸出的接口卡J1。</p>&

50、lt;p>  前面已經(jīng)分別介紹了系統(tǒng)中各個(gè)部分的設(shè)計(jì),現(xiàn)在將系統(tǒng)整體的原理圖設(shè)計(jì)如下:</p><p>  圖2-7單片機(jī)控制系統(tǒng)原理圖</p><p>  第三章 單片機(jī)控制系統(tǒng)的軟件設(shè)計(jì)</p><p>  為實(shí)現(xiàn)單片機(jī)對(duì)直流電機(jī)的控制,滿(mǎn)足設(shè)計(jì)的要求,系統(tǒng)的工作過(guò)程是靠軟件來(lái)實(shí)現(xiàn)的。因此軟件的設(shè)計(jì)和編寫(xiě)很重要,程序的編寫(xiě)采用匯編語(yǔ)言。 </p&g

51、t;<p><b>  3.1主程序的設(shè)計(jì)</b></p><p>  主程序的內(nèi)容一般包括:主程序的起始地址、中斷服務(wù)程序的起始地址、設(shè)置堆棧指針、相關(guān)存儲(chǔ)單元和元器件的初始化以及一些子程序的調(diào)用等。</p><p> ?。?)主程序的起始地址:</p><p>  MCS-51系列單片機(jī)經(jīng)復(fù)位后,(PC)=0000H,而000

52、3H~0023H為各中斷源的入口地址,所以在編程的時(shí)候應(yīng)在0000H處寫(xiě)一跳轉(zhuǎn)指令(一般寫(xiě)長(zhǎng)跳轉(zhuǎn)指令),CPU在執(zhí)行指令時(shí),直接從0000H跳過(guò)各中斷服務(wù)程序的入口地址,直接到0300H執(zhí)行主程序(本程序設(shè)置的MAIN從0300H開(kāi)始)。在設(shè)計(jì)的系統(tǒng)中,使用了兩個(gè)中斷,即T0,INT0。其中在T0中斷程序中必須要對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行定時(shí)采樣,所以T0中斷必須允許嵌套外部中斷0的中斷申請(qǐng),所以在主程序初始化中置外部中斷0為高優(yōu)先級(jí)中斷,在T0

53、中斷服務(wù)程序中必須要開(kāi)外部中斷0中斷。</p><p>  T0定時(shí)器的工作參數(shù)確定后,在主程序初始化部分,對(duì)T0定時(shí)器進(jìn)行設(shè)定,并且啟動(dòng)T0定時(shí)器(SETB TR0),開(kāi)始工作,定時(shí)器T0和CPU并行工作。當(dāng)定時(shí)1ms到,T0定時(shí)器向CPU提出中斷請(qǐng)求,程序中設(shè)置軟計(jì)數(shù)器,當(dāng)一定的時(shí)間到,執(zhí)行相應(yīng)的中斷程序。</p><p>  T0定時(shí)器中斷服務(wù)程序的功能:</p>&l

54、t;p>  15ms執(zhí)行一次A/D轉(zhuǎn)換、數(shù)據(jù)采集、PID算法、D/A轉(zhuǎn)換,結(jié)束后進(jìn)行顯示,1ms顯示一位。</p><p>  INT0 中斷主要的功能是完成數(shù)據(jù)的采集,采集完一次數(shù)據(jù)后向CPU發(fā)送中斷請(qǐng)求。</p><p>  (2) 中斷服務(wù)程序的起始地址:</p><p>  當(dāng)CPU接收到中斷請(qǐng)求信號(hào)并給予響應(yīng)后,CPU把當(dāng)前接收到的內(nèi)容進(jìn)行堆棧保護(hù),

55、然后轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口地址處開(kāi)始執(zhí)行。INT0的中斷入口地址為0003H。</p><p>  (3) 設(shè)置堆棧指針:</p><p>  在CPU經(jīng)復(fù)位后,SP中的內(nèi)容為07H,和工作寄存器區(qū)中的內(nèi)容重復(fù)了,所以將SP中的內(nèi)容改為70H。</p><p>  (4) 主程序的初始化:</p><p>  所謂的初始化,就是對(duì)將要

56、用到的MCS-51系列單片機(jī)的內(nèi)部單元和擴(kuò)展的芯片進(jìn)行初始化工作狀態(tài)的設(shè)定。MCS-51系列單片機(jī)復(fù)位后,特殊功能寄存器IE、IP的內(nèi)容為00H,所以應(yīng)對(duì)IE、IP進(jìn)行初始化編程,以開(kāi)CPU總中斷,允許某些中斷源中斷,并設(shè)置中斷優(yōu)先級(jí)等。</p><p>  主程序流程圖和T0中斷流程圖設(shè)計(jì)如下:</p><p>  圖3-1 主程序流程圖

57、 圖3-2 T0中斷服務(wù)流程圖</p><p><b>  程序如下:</b></p><p>  ORG 0000H</p><p>  LJMP MAIN ;轉(zhuǎn)主程序</p><p>  ORG 0003H ;外部中斷INT0的入口地址</p>&

58、lt;p>  LJMP INTA ;轉(zhuǎn)外部中斷INT0服務(wù)程序</p><p>  ORG 000BH ;T0中斷的入口地址</p><p>  LJMP T0-SEV ;轉(zhuǎn)T0中斷服務(wù)程序</p><p>  ORG 0300H</p>&l

59、t;p>  DATABUF EQU 50H ;數(shù)據(jù)緩沖區(qū)的首地址</p><p>  DISBUF1 EQU 60H ;給定速度顯示緩沖區(qū)的首地址</p><p>  DISBUF2 EQU 64H ;實(shí)際速度顯示緩沖區(qū)的首地址</p><p>  SAMP-D1 E

60、QU 0000H ;保存給定速度采樣數(shù)據(jù)的首地址</p><p>  SAMP-D2 EQU 0500H ;保存實(shí)際速度采樣數(shù)據(jù)的首地址</p><p>  MAIN: MOV SP,#70H ;設(shè)置堆棧指針</p><p>  MOV R0,#7FH ;相關(guān)寄存器清零</p&g

61、t;<p>  MOV @R0, #0</p><p>  MOV TMOD,#01H ;定時(shí)器T0工作方式1</p><p>  MOV TL0,#18H ;定時(shí)器賦初值,定時(shí)1ms</p><p>  MOV TH0,#0FCH</p><p>  MOV IP,#01H

62、;設(shè)置外部中斷INT0優(yōu)先</p><p>  SETB TR0 ;啟動(dòng)T0工作</p><p>  SETB EX0 ;允許INT0中斷 </p><p>  SETB EA ;開(kāi)CPU中斷 </p><p>  SJMP $

63、 ;等待中斷</p><p><b>  T0中斷程序:</b></p><p>  T0-SEV: ; T0中斷服務(wù)子程序</p><p>  MOV TL0,#18H ;定時(shí)器重新賦值</p><p>  MOV TH0,#0FCH</

64、p><p>  SETB IT0 ;中斷觸發(fā)方式為邊沿觸發(fā)方式</p><p>  SETB EA ; CPU開(kāi)中斷</p><p>  SETB EX0 ;允許外部中斷0中斷</p><p>  INTA: PUSH ACC ;保護(hù)現(xiàn)場(chǎng)&

65、lt;/p><p>  PUSH DPH </p><p>  PUSH DPL</p><p>  ACALL AD1 ;調(diào)用AD1給定速度采樣子程序</p><p>  ACALL FILTER ;調(diào)用中值濾波子程序</p><p>  

66、ACALL FA1</p><p>  ACALL AD2 ;調(diào)用AD2實(shí)際速度采樣子程序 </p><p>  ACALL FILTER ;調(diào)用中值濾波子程序</p><p>  ACALL FA2</p><p>  POP DPH ;恢復(fù)現(xiàn)場(chǎng)</p

67、><p>  POP DPL</p><p>  POP ACC</p><p>  RETI </p><p>  ACALL PID ;調(diào)用數(shù)值PID控制算法子程序</p><p>  ACALL DAC ;調(diào)用DAC轉(zhuǎn)換程序</p>

68、;<p>  LCALL TRAST1</p><p>  LCALL DBCD1</p><p>  LCALL DIS1 ;調(diào)用速度顯示子程序</p><p>  MOV A,2AH ;實(shí)際速度值送A</p><p>  LCALL TRAST1

69、 ;調(diào)用代碼轉(zhuǎn)換子程序</p><p>  LCALL DBCD2 ;將實(shí)際轉(zhuǎn)速BCD碼轉(zhuǎn)換成單獨(dú)的BCD碼</p><p>  LCALL DIS2 ;調(diào)用實(shí)際速度顯示子程序 </p><p>  RETI ;中斷返回</p><p><b>

70、;  3.2采樣子程序</b></p><p>  3.2.1 ADC0809的采樣程序</p><p>  DAC0809 的地址可為7FF8H~7FFFH,具體該為哪一個(gè)地址涉及到轉(zhuǎn)換通道的選擇,在第二章中已經(jīng)設(shè)定給定轉(zhuǎn)速電壓模擬量地址為7FF8H(IN0),實(shí)際速度電壓通道地址為 7FF9H(IN1)。</p><p><b>  采樣

71、設(shè)計(jì)流程圖</b></p><p>  圖3-3 ADC0809采樣子程序流程圖</p><p><b>  程序如下:</b></p><p>  AD1: ;調(diào)用AD1給定速度采樣子程序</p><p>  MOV R0,#2CH

72、 ;采樣值起始地址送R0</p><p>  MOV R2,#03H ;采樣次數(shù)初值送R2</p><p>  MOV DPTR,#6FF8H</p><p>  JMP ADC1</p><p>  AD2: MOV R0,#2CH ;采樣值起始地址送R0</p>&

73、lt;p>  MOV R2,#03H ;采樣次數(shù)初值送R2</p><p>  MOV DPTR,#6FF9H</p><p>  ADC1: MOVX @DPTR,A ;啟動(dòng)ADC0809工作</p><p>  MOV R3,#20H</p><p>  DLY D

74、JNZ R3,DLY ;延時(shí)</p><p>  DENG: JB P3.3,DENG ;等待A/D完成</p><p>  MOVX A,@DPTR ;采樣值送A</p><p>  MOV @R0,A ;存放采樣值</p><p><b>

75、;  INC R0</b></p><p>  DJNZ R2,ADC1 ;若采樣未完,則ADC1</p><p>  RET ;若采樣完,則返回</p><p>  3.2.2中值濾波算法子程序</p><p>  因?yàn)橐獙?duì)速度進(jìn)行三次采樣,取其中間值作為轉(zhuǎn)速的實(shí)

76、際值來(lái)減小誤差,以達(dá)到設(shè)計(jì)要求。設(shè)三次采樣值分別放在2CH、2DH、2EH中,程序流程圖如下:</p><p>  圖3-4 中值濾波流程圖</p><p><b>  程序如下:</b></p><p>  FILTER: ;中值濾波算法子程序</p><p>  MO

77、V A,2CH ;(2CH)送A</p><p>  CJNE A,2DH,CMP1 ;(2CH)≠(2DH),則CMP1</p><p>  AJMP CMP2 ;否則轉(zhuǎn)CMP2</p><p>  CMP1: JNC CMP2 ;若(2CH)=(2DH),

78、則CMP2</p><p>  XCH A,2DH</p><p>  XCH A,2CH</p><p>  CMP2: MOV A,2DH ;(2DH)送A</p><p>  CJNE A,2EH,CMP3 ;若(2DH)≠(2EH),則CMP3</p><p

79、>  MOV 2AH,A ;否則(2DH)送2AH</p><p>  RET ;返回</p><p>  CMP3: JC CMP4 ;若(2DH)<(2EH),則CMP4</p><p>  MOV 2AH,A ;否

80、則(2DH)送2AH</p><p>  ERT ;返回</p><p>  CMP4: MOV A,2EH ;(2EH)送A</p><p>  CJNE A,2CH,CMP5 ;若(2EH)≠(2CH),則CMP5</p><p>  MOV 2

81、AH,A ;否則(2EN)送2AH</p><p>  RET ;返回</p><p>  CMP5: JC CMP6 ;若(2EH)<(2CH),則CMP6</p><p>  XCH A,2CH ;否則(2EH)(2CH)<

82、;/p><p>  CMP6: MOV 2AH,A ;A送2AH</p><p><b>  RET</b></p><p>  FA1: MOV DPTR,#SAMP-D1</p><p>  MOVX @DPTR,A ;將采樣值送到外部RAM中的0000

83、H單元</p><p>  MOV 1AH, A</p><p>  INC DPTR</p><p>  FA2: MOV DPTR,#SAMP-D2</p><p>  MOVX @DPTR,A ;將采樣值送到外部RAM中的0000H單元</p><p>  INC

84、DPTR</p><p><b>  RET</b></p><p>  3.3數(shù)字PID控制算法子程序</p><p>  PID控制的理想微分方程為:</p><p>  其中稱(chēng)為偏差值,可作為速度調(diào)節(jié)器的輸入信號(hào),為給定值,為被測(cè)變量值,為比例系數(shù),為積分時(shí)間常數(shù),為微分時(shí)間常數(shù),為調(diào)節(jié)器的輸出控制電壓信號(hào)。<

85、;/p><p>  但計(jì)算機(jī)只能處理數(shù)字信號(hào),故上述數(shù)學(xué)方程必須加以變換,若設(shè)速度的采樣周期為T(mén),第n次采樣得到的輸入偏差為,調(diào)節(jié)器輸出為,則有: </p><p>  則微分方程可改寫(xiě)為 </p><p><b>  寫(xiě)成遞推形式為</b></p><p><b>  PID計(jì)算程序:</b>&l

86、t;/p><p>  圖3-5 PID算法流程圖</p><p>  表3-1 內(nèi)部RAM的有關(guān)參數(shù)分配圖</p><p>  3.4 DAC0832的轉(zhuǎn)換</p><p>  要將給定轉(zhuǎn)速Ug和反饋轉(zhuǎn)速Uf作差,將差值△U轉(zhuǎn)換成0~5V模擬電壓,驅(qū)動(dòng)直流電機(jī)。按照?qǐng)D2-1可知DAC0832的地址為5FFFH,假設(shè)要轉(zhuǎn)換的數(shù)據(jù)在累加器A中,輸出

87、的程序?yàn)椋?lt;/p><p>  MOV DPTR,#5FFFH ;送DAC0832的入口地址</p><p>  MOV A, #data ;數(shù)字量先裝入累加器</p><p>  MOVX @DPTR,A ;啟動(dòng)D/A轉(zhuǎn)換</p><p>  圖3-6數(shù)模轉(zhuǎn)換流程圖<

88、/p><p>  3.5程序中的代碼的轉(zhuǎn)換</p><p> ?。?)因?yàn)閱纹瑱C(jī)一個(gè)存儲(chǔ)單元能接收的最大數(shù)據(jù)為FFH,而電動(dòng)機(jī)的最大轉(zhuǎn)速為1500r/m,中間的倍數(shù)關(guān)系是5.9。因此在顯示之前,要先將從通信中接收到的數(shù)據(jù)乘59除10處理,所得的結(jié)果才能送到顯示緩沖區(qū)內(nèi)。</p><p>  TRAST1: ;轉(zhuǎn)換接收到的

89、數(shù)據(jù)代碼</p><p>  MOV A,1AH ;接收到的數(shù)據(jù)送A</p><p>  JMP TRAST</p><p>  TRAST: MOV B,#3BH ;乘數(shù)59送B</p><p><b>  MUL AB</b></p>&l

90、t;p>  MOV R5,A ;積的低位送R5</p><p>  MOV R4,B ;積的高位送R4</p><p>  ACALL CHU ;調(diào)用雙字節(jié)除法程序</p><p>  MOV 51H,R4 ;將壓縮BCD碼的高位送51H<

91、/p><p>  MOV 50H,R5 ;將壓縮BCD碼的低位送50H</p><p>  CHU: ;雙字節(jié)除法(R4R5被除數(shù),R6R7除數(shù),商在R4R5,余數(shù)在R2R3)</p><p>  MOV R6,#00H</p><p>  MOV R7,

92、#0AH ;除數(shù)為10</p><p>  SRT: ACALL L1</p><p>  L2: SJMP L5</p><p><b>  NOP</b></p><p>  L1: CLR A ;寄存器A清零</p>

93、<p>  MOV R2,A ;R2清零</p><p>  MOV R3,A ;R3清零</p><p>  MOV R1,#10H ;循環(huán)16次</p><p>  L5: CLR C ;進(jìn)位標(biāo)志位清零</p

94、><p>  MOV A,R5 ;被乘數(shù)低8位送A</p><p>  RLC A ;帶進(jìn)位左循環(huán)</p><p>  MOV R5,A ;A中內(nèi)容送到被乘數(shù)低8位</p><p>  MOV A,R4 ;被乘數(shù)

95、高8位送A</p><p>  RLC A ;帶進(jìn)位左循環(huán)</p><p>  MOV R4,A ;A中內(nèi)容送到被乘數(shù)高8位</p><p>  MOV A,R3</p><p><b>  RLC A</b></p><

96、p>  MOV R3,A</p><p>  MOV A,R2</p><p><b>  RLC A</b></p><p>  MOV R2,A ;被乘數(shù)左移一位送R2R3</p><p><b>  CLR C</b></p>

97、<p>  SUBB A,R6 ;比較R2和R6的大小</p><p>  JC L3 ;R2小,則轉(zhuǎn)L3</p><p>  PUSH 0E0H ;壓入堆棧</p><p>  MOV A,R3</p><p>  

98、SUBB A,R7 ;比較R3和R7的大小</p><p>  JNC L4 ;R3大,則轉(zhuǎn)L4</p><p>  MOV 0F0H,A</p><p>  POP 0E0H ;出堆棧</p><p>  SUBB A,#00H

99、</p><p><b>  JC L3</b></p><p>  MOV R2,A</p><p>  MOV R3,0F0H</p><p><b>  INC R5</b></p><p><b>  SJMP L3</b>&

100、lt;/p><p>  L4: MOV R3,A</p><p>  POP 0E0H</p><p>  MOV R2,A</p><p><b>  INC R5</b></p><p>  L3: DJNZ R1,L5 ;循環(huán)16次未

101、完,則轉(zhuǎn)L5</p><p>  RET ;返回。將二進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的轉(zhuǎn)速量,也就是轉(zhuǎn)換成壓縮BCD碼</p><p> ?。?)在顯示程序段要調(diào)用二進(jìn)制轉(zhuǎn)換成BCD碼子程序。將壓縮的BCD碼轉(zhuǎn)換成單獨(dú)的BCD碼后才能通過(guò)數(shù)碼管顯示。</p><p>  DBCD1:

102、 ;設(shè)定轉(zhuǎn)速值壓縮的BCD碼轉(zhuǎn)換成單獨(dú)的BCD碼</p><p>  MOV A,50H</p><p>  ANL A,#0FH</p><p>  MOV 60H,A ;個(gè)位數(shù)送60H</p><p>  MOV A,50H</p><p>  ANL A,#

103、0F0H</p><p><b>  SWAP A</b></p><p>  MOV 61H,A ;十位數(shù)送61H</p><p>  MOV A,51H</p><p>  ANL A,#0FH</p><p>  MOV 62H,A

104、 ;百位數(shù)送62H</p><p>  MOV A,51H</p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV 63H,A ;千位數(shù)送63H</p><p><b>  RET&l

105、t;/b></p><p>  DBCD2; ;實(shí)際轉(zhuǎn)速值壓縮BCD碼轉(zhuǎn)換成單獨(dú)的BCD碼</p><p>  MOV A,50H</p><p>  ANL A,#0FH</p><p>  MOV 64H,A ;個(gè)位數(shù)送64H</p>

106、<p>  MOV A,50H</p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV 65H,A ;十位數(shù)送65H</p><p>  MOV A,51H</p><p>  

107、ANL A,#0FH</p><p>  MOV 66H,A ;百位數(shù)送66H</p><p>  MOV A,51H</p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV 67H,A

108、 ;千位數(shù)送67H</p><p><b>  RET</b></p><p>  3.6給定速度顯示與實(shí)際速度顯示子程序</p><p>  3.6.1 給定速度顯示程序設(shè)計(jì)</p><p>  給定速度顯示流程圖設(shè)計(jì)如下:</p><p>  圖3-7 顯示流程圖<

109、;/p><p><b>  程序如下:</b></p><p>  DIS1: MOV A,#80H ;方式控制字送A</p><p>  MOV DPTR,#2FFFH ;控制命令口地址送2FFFH</p><p>  MOV @DPTR,A

110、 ;方式控制字送8255命令口</p><p>  DISPLY1:MOV R0,#DISBUF1 ;顯示緩沖區(qū)首地址送R0</p><p>  MOV R3,#0EFH ;字位碼始值送R3</p><p>  MOV A,R3</p><p>  LD1: MOV D

111、PTR,#2FFDH ;B口地址送DPTR</p><p>  MOV @DPTR,A ;字位碼送B口</p><p>  MOV DPTR,#2FFCH ;A口地址送DPTR</p><p>  MOV A,@R0 ;待顯示的地址偏移量送A</p>

112、<p>  MOV DPTR,#LEDCODE</p><p>  MOVC A,@A+DPTR ;查字型碼表</p><p>  ACALL DELAY ;延時(shí)1ms</p><p>  INC R0 ;修正顯示緩沖區(qū)指針</p><

113、;p>  MOV A,R3 ;字位碼送A</p><p>  JNB ACC.7,LD0 ;若ACC.7=0顯示完一遍,則轉(zhuǎn)LD0</p><p>  RL A ;否則字位碼左移一位</p><p>  MOV R3,A

114、 ;送回R3</p><p>  AJMP LD1 ;顯示下一個(gè)數(shù)碼(L6)</p><p>  LD0: RET ;返回</p><p>  DELAY: MOV R7,#02H ;延時(shí)1ms程序</p><p> 

115、 DLY1: MOV R6,#0FFH</p><p>  DLY2: DJNZ R6,DLY2</p><p>  DJNZ R7,DLY1</p><p><b>  RET</b></p><p>  LEDCODE:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6F

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論