單片機(jī)控制直流電機(jī)論文_第1頁
單片機(jī)控制直流電機(jī)論文_第2頁
單片機(jī)控制直流電機(jī)論文_第3頁
單片機(jī)控制直流電機(jī)論文_第4頁
單片機(jī)控制直流電機(jī)論文_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 汽車單片機(jī)技術(shù) 課程結(jié)課設(shè)計(jì)報(bào)告 題目:單片機(jī)控制直流電動(dòng)機(jī)專 業(yè) 汽車服務(wù)工程 班 級(jí) 2013 學(xué) 號(hào) 201301503018 姓 名 曾祥金 指導(dǎo)教師 張 琦 1.1設(shè)計(jì)要求:(1) 通過改變A/D輸入端可變電阻來改變A/D的輸入電壓,D/A輸入檢測量大小,進(jìn)而改變直流電機(jī)的轉(zhuǎn)速。(2)手動(dòng)控制。在鍵盤上設(shè)置兩個(gè)按鍵直流電動(dòng)機(jī)加速鍵和直流電機(jī)減速鍵。在手動(dòng)狀態(tài)下,每按一次鍵,電機(jī)的轉(zhuǎn)速按照約定的速率改變。1.2 設(shè)計(jì)原理 直流電機(jī)是通過兩個(gè)磁場的互作用產(chǎn)生旋轉(zhuǎn)。其結(jié)構(gòu)如下頁圖所示,固定部分(定子)上,裝設(shè)了一對(duì)直流勵(lì)磁的靜止的主磁極N和S,在旋轉(zhuǎn)部分(轉(zhuǎn)子)上裝設(shè)電樞鐵心。定子與轉(zhuǎn)子

2、之間有一氣隙。在電樞鐵心上放置了由A和X 兩根導(dǎo)體連成的電樞線圈,線圈的首端和末端分別連到兩個(gè)圓弧形的銅片上,此銅片稱為換向片。換向片之間互相絕緣,由換向片構(gòu)成的整體稱為換向器。換向器固定在轉(zhuǎn)軸上,換向片與轉(zhuǎn)軸之間亦互相絕緣。在換向片上放置著一對(duì)固定不動(dòng)的電刷B1和B2,當(dāng)電樞旋轉(zhuǎn)時(shí),電樞線圈通過換向片和電刷與外電路接通。 定子通過永磁體或受激勵(lì)電磁鐵產(chǎn)生一個(gè)固定磁場,由于轉(zhuǎn)子由一系列電磁體構(gòu)成,當(dāng)電流通過其中一個(gè)繞組時(shí)會(huì)產(chǎn)生一個(gè)磁場。對(duì)有刷直流電機(jī)而言,轉(zhuǎn)子上的換向器和定子的電刷在電機(jī)旋轉(zhuǎn)時(shí)為每個(gè)繞組供給電能。通電轉(zhuǎn)子繞組與定子磁體有相反極性,因而相互吸引,使轉(zhuǎn)子轉(zhuǎn)動(dòng)至與定子磁場對(duì)準(zhǔn)的位置。

3、當(dāng)轉(zhuǎn)子到達(dá)對(duì)準(zhǔn)位置時(shí),電刷通過換向器為下一組繞組供電,從而使轉(zhuǎn)子維持旋轉(zhuǎn)運(yùn)動(dòng)。直流電機(jī)的速度與施加的電壓成正比,輸出轉(zhuǎn)矩則與電流成正比。由于必須在工作期間改變直流電機(jī)的速度,直流電機(jī)的控制是一個(gè)較困難的問題。直流電機(jī)高效運(yùn)行的最常見方法是施加一個(gè) PWM(脈寬調(diào)制)方波,其占空比對(duì)應(yīng)于所需速度。電機(jī)起到一個(gè)低通濾波器作用,將PWM信號(hào)轉(zhuǎn)換為有效直流電平。特別是對(duì)于微處理器驅(qū)動(dòng)的直流電機(jī),由于PWM信號(hào)相對(duì)容易產(chǎn)生,這種驅(qū)動(dòng)方式使用的更為廣泛。1.3 整體設(shè)計(jì) 為了使用單片機(jī)對(duì)電動(dòng)機(jī)進(jìn)行控制,對(duì)單片機(jī)的基本要求應(yīng)有足夠快點(diǎn)速度;有捕捉功能??傮w設(shè)計(jì)方案如圖所示數(shù)碼管顯示DAC0832按鍵控制單片

4、機(jī)信號(hào)放大ADC0808驅(qū)動(dòng)電機(jī)電壓信號(hào)圖1.1總體設(shè)計(jì)方案鍵盤向單片機(jī)輸入相應(yīng)控制指令,由單片機(jī)通過P1口輸出與轉(zhuǎn)速相應(yīng)的8位BCD編碼,該編碼通過DAC0832譯成相應(yīng)的模擬電壓,經(jīng)過信號(hào)放大實(shí)現(xiàn)電動(dòng)機(jī)轉(zhuǎn)向與轉(zhuǎn)速的控制。 可變電阻接ADC0808轉(zhuǎn)變成相應(yīng)電壓的數(shù)字信號(hào),單片機(jī)通過P2口讀取,再由P1口輸出與轉(zhuǎn)速相應(yīng)的8位BCD編碼。電動(dòng)機(jī)的運(yùn)轉(zhuǎn)狀態(tài)則通過四位數(shù)碼管顯示出來。電動(dòng)機(jī)所處速度級(jí)以速度檔級(jí)數(shù)顯示。正轉(zhuǎn)時(shí)最高位顯示“三” ,其它三位為電機(jī)轉(zhuǎn)速;反轉(zhuǎn)時(shí)最高位顯示“F”,其它三位為電機(jī)轉(zhuǎn)速。每次電動(dòng)機(jī)啟動(dòng)后開始顯示,停止時(shí)數(shù)碼管顯示出“0000”。 第2章 系統(tǒng)硬件設(shè)計(jì) 根據(jù)總設(shè)計(jì)方

5、案可知硬件電路是以單片機(jī)為核心輔以適當(dāng)?shù)碾娐芬酝瓿梢蠊δ堋V饕@示模塊,A/D轉(zhuǎn)換模塊,D/A轉(zhuǎn)換模塊等模塊。2.1 按鍵電路2.1.1 AT89C51AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8

6、位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖2.1 按鍵電路的設(shè)計(jì)AT89C51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存

7、RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。2.1.2 按鍵電路 如圖2.1所示,單片機(jī)的P2.1和P2.2口分別接一個(gè)按鍵用于控制電機(jī)。當(dāng)按下S1鍵時(shí),電機(jī)轉(zhuǎn)速提高,進(jìn)入加速狀態(tài);當(dāng)按下S2鍵時(shí),電機(jī)轉(zhuǎn)速減慢,進(jìn)入減速狀態(tài)。通過S1,S2兩個(gè)按鍵可以達(dá)到鍵盤控制電機(jī)的作用。2.2 顯示電路2.2.1 MAX7219MAX7219/MAX7221是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的LED。其上包括一個(gè)片上的B型BCD編碼器、多路掃描回路,段字驅(qū)動(dòng)器,而且還有一個(gè)8*8的靜

8、態(tài)RAM用來存儲(chǔ)每一個(gè)數(shù)據(jù)。 只有一個(gè)外部寄存器用來設(shè)置各個(gè)LED的段電流。 MAX7221與SPI、 QSPI以及 MICROWIRE相兼容,同時(shí)它有限制回轉(zhuǎn)電流的段驅(qū)動(dòng)來減少EMI(電磁干擾)。 一個(gè)方便的四線串行接口可以聯(lián)接所有通用的微處理器。 每個(gè)數(shù)據(jù)可以尋址在更新時(shí)不需要改寫所有的顯示。MAX7219/MAX7221同樣允許用戶對(duì)每一個(gè)數(shù)據(jù)選擇編碼或者不編碼。 整個(gè)設(shè)備包含一個(gè)150A的低功耗關(guān)閉模式,模擬和數(shù)字亮度控制,一個(gè)掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù),還有一個(gè)讓所有LED發(fā)光的檢測模式。功能特點(diǎn):1、10MHz連續(xù)串行口 2、獨(dú)立的LED段控制 3、數(shù)字的譯碼與非譯碼選

9、擇 4、150A的低功耗關(guān)閉模式 5、亮度的數(shù)字和模擬控制 6、高電壓中斷顯示 7、共陰極LED顯示驅(qū)動(dòng) 8、限制回轉(zhuǎn)電流的段驅(qū)動(dòng)來減少EMI(MAX7221) 9、SPI, QSPI, MICROWIRE串行接口(MAX7221) 10、24腳的 DIP和 SO 封裝2.2.2 工作原理 圖2.2 顯示電路的設(shè)計(jì) 如圖2.2所示,可變電阻接ADC0808轉(zhuǎn)變成相應(yīng)電壓的數(shù)字信號(hào),單片機(jī)通過P0口讀取,再由P1口輸出與轉(zhuǎn)速相應(yīng)的8位BCD編碼到MAX7219。經(jīng)由MAX7219處理后通過四位數(shù)碼管顯示出來。電動(dòng)機(jī)所處速度級(jí)以速度檔級(jí)數(shù)顯示。正轉(zhuǎn)時(shí)最高位顯示“三” ,其它三位為電機(jī)轉(zhuǎn)速;反轉(zhuǎn)時(shí)最

10、高位顯示“F”,其它三位為電機(jī)轉(zhuǎn)速。每次電動(dòng)機(jī)啟動(dòng)后開始顯示,停止時(shí)數(shù)碼管顯示出“0000”。2.3 A/D轉(zhuǎn)換模塊2.3.1 ADC0808 ADC0808是美國國家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。是目前國內(nèi)應(yīng)用最廣泛的8位通用A/D芯片。 主要特性 1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。 2)具有轉(zhuǎn)換起停控制端。 3)轉(zhuǎn)換時(shí)間為100s(時(shí)鐘為640kHz時(shí)),130s(時(shí)鐘為500kHz時(shí)) 4)單個(gè)+5V電源供電。 5)模擬輸入電

11、壓范圍0+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。 6)工作溫度范圍為-40+85攝氏度。 7)低功耗,約15mW。 ADC0809的工作過程首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。 轉(zhuǎn)換數(shù)據(jù)的傳送 A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如

12、何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。為此可采用下述三種方式。 (1)定時(shí)傳送方式 對(duì)于一種A/D轉(zhuǎn)換器來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128s,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期??蓳?jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。 (2)查詢方式 A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0808的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可確認(rèn)轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。 (3)中斷方式 把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為

13、中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。 不管使用上述哪種方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受。圖2.3 AD轉(zhuǎn)換電路的設(shè)計(jì)2.3.2 工作原理 如圖2.3所示,外部電源通過滑動(dòng)變阻器向ADC0808輸入控制電壓信號(hào),經(jīng)A/D處理后,輸入到AT89C51中,交由AT89C51處理,進(jìn)行下一步動(dòng)作。2.4 D/A轉(zhuǎn)換模塊2.4.1 DAC0832 DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用

14、。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。主要特性參數(shù) 1.分辨率為8位; 2.電流穩(wěn)定時(shí)間1us; 3.可單緩沖、雙緩沖或直接數(shù)字輸入; 4.只需在滿量程下調(diào)整其線性度; 5.單一電源供電(+5V+15V); 6.低功耗,20mW。DAC0832的工作方式DAC0832進(jìn)行D/A轉(zhuǎn)換,可以采用兩種方法對(duì)數(shù)據(jù)進(jìn)行鎖存。 第一種方法是使輸入寄存器工作在鎖存狀態(tài),而DAC寄存器工作在直通狀態(tài)。具體地說,就是使 和 都為低電平,DAC寄存器的鎖存選通端得不到有效電平而直通;此外,使輸入寄存器的控制信號(hào)ILE處于高電平、 處于低電平,這樣,當(dāng) 端來一個(gè)負(fù)脈

15、沖時(shí),就可以完成1次轉(zhuǎn)換。 第二種方法是使輸入寄存器工作在直通狀態(tài),而DAC寄存器工作在鎖存狀態(tài)。就是使和為低電平,LE為高電平,這樣,輸入寄存器的鎖存選通信號(hào)處于無效狀態(tài)而直通;當(dāng)和端輸入1個(gè)負(fù)脈沖時(shí),使得DAC寄存器工作在鎖存狀態(tài),提供鎖存數(shù)據(jù)進(jìn)行轉(zhuǎn)換。 圖2.4 DA轉(zhuǎn)換電路的設(shè)計(jì)2.4.2 工作原理如上圖2.4所示,電壓信號(hào)輸入后經(jīng)過AD轉(zhuǎn)換輸入到AT89C51,由單片機(jī)通過P1口輸出與轉(zhuǎn)速相應(yīng)的8位BCD編碼,該編碼通過DAC0832譯成相應(yīng)的模擬電壓,經(jīng)過信號(hào)放大實(shí)現(xiàn)電動(dòng)機(jī)轉(zhuǎn)向與轉(zhuǎn)速的控制。2.5 總電路圖 由各子模塊設(shè)計(jì)給得出總硬件電路設(shè)計(jì)如下圖2.5所示 圖2.5 硬件總電路圖

16、第三章 系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)編程部分工作采用KELI-C51語言完成,采用模塊化的設(shè)計(jì)方法,與各子程序做為實(shí)現(xiàn)各部分功能和過程的入口,完成鍵盤輸入、按鍵識(shí)別、ADC0809讀取和DAC0832輸出以及數(shù)碼管顯示等部分的設(shè)計(jì)。開始3.1 系統(tǒng)主程序設(shè)計(jì) 系統(tǒng)初始化按鍵是否按下 N讀取鍵值 Y 減速加速 電機(jī)加速電機(jī)減速將模擬電壓轉(zhuǎn)變?yōu)閿?shù)字信號(hào)調(diào)用顯示子程序 顯示速度返回圖3.1 主程序流程圖 主程序流程圖如上圖3.1所示。系統(tǒng)初始化后,主程序通過調(diào)用各子程序完成預(yù)定動(dòng)作,達(dá)到控制電機(jī)正反轉(zhuǎn)及轉(zhuǎn)速的目的。4.1 按鍵掃描程序 按鍵掃描程序采用中斷方式,按下鍵,完成延時(shí)去抖動(dòng)、鍵碼識(shí)別、按鍵功能執(zhí)行。

17、要實(shí)現(xiàn)按住加/減速鍵不放時(shí)恒加或恒減速直到放開停止,就需在判斷是否松開該按鍵時(shí),每進(jìn)行一次增加/減少一定的占空比。按鍵掃描程序流程圖如下圖3.2所示開始按鍵是否釋放 N延時(shí)去抖動(dòng)、 Y鍵碼識(shí)別按鍵功能執(zhí)行加/減占空比返回圖3.2 按鍵掃描程序流程圖由流程圖設(shè)計(jì)程序如下:/*按鍵掃描*/key()if(P12=0) /如果按下, while(!P12) /去抖動(dòng) display(); k=k; if(P16=0) /啟動(dòng)while(P16=0);IE=0x8a; if(P13=0) /加速while (P13=0);t+;if(t>=5)t=5;if(P14=0) /減速while(P14

18、=0);t-;if(t<1)t=1;if(P15=0) /停止while(P15=0);EA=0;P10=0;P11=0; 4.2 顯示子程序顯示子程序用于處理DAC0832處理出來的8位BCD,利用數(shù)組方式定義顯示緩存區(qū),緩存區(qū)有8位,分別存放各個(gè)數(shù)碼管要顯示的值。流程圖如下圖3.3所示開始 求各位數(shù)值,并送入各位對(duì)應(yīng)的緩沖區(qū)顯示各位數(shù)值延時(shí)顯示正反轉(zhuǎn)返回圖3.3 顯示程序流程圖由流程圖設(shè)計(jì)程序如下:/*數(shù)碼管顯示*/display()uchar i; gw=x%10; /求速度個(gè)位值,送到個(gè)位顯示緩沖區(qū)sw=(x/10)%10; /求速度十位值,送到十位顯示緩沖區(qū)bw=(x/100)

19、%10; /求速度百位值,送到百位顯示緩沖區(qū)qw=x/1000; /求速度千位值,送到千位顯示緩沖區(qū)for(i=0;i<4;)P2=ledi;if(i=0) /顯示個(gè)位P0=smggw;delays();else if(i=1) /顯示十位P0=smgsw;delays();else if(i=2) /顯示百位P0=smgbw;delays(); else if(i=3) /顯示千位 if(k=0)/正轉(zhuǎn)時(shí)顯示"三" P0=0x49; delays();else P0=0x71; /反轉(zhuǎn)時(shí)顯示"F" i+;4.3 定時(shí)中斷處理程序定時(shí)中斷處理程序:

20、采用定時(shí)方式1,因?yàn)閱纹瑱C(jī)使用12M晶振,可產(chǎn)生最高約為65.5ms的延時(shí)。對(duì)定時(shí)器置初值B1E0H可定時(shí)20ms,即系統(tǒng)時(shí)鐘精度可達(dá)0.02s。當(dāng)20ms定時(shí)時(shí)間到,定時(shí)器溢出則響應(yīng)該定時(shí)中斷處理程序,完成對(duì)定時(shí)器的再次賦值,并對(duì)全局變量time加1,這樣,通過變量time可計(jì)算出系統(tǒng)的運(yùn)行時(shí)間。4.4 A/D轉(zhuǎn)換程序首先判斷A/D轉(zhuǎn)換是否允許進(jìn)行,當(dāng)WR又低變高時(shí)AD開始轉(zhuǎn)換,再讀取轉(zhuǎn)換數(shù)據(jù)結(jié)果,把數(shù)據(jù)存到ad_data中,完成A/D轉(zhuǎn)換。流程圖如下圖4.4所示開始acds=0 N允許A/D轉(zhuǎn)換、 Y讀取轉(zhuǎn)換數(shù)據(jù)結(jié)果數(shù)據(jù)結(jié)果把數(shù)據(jù)存到ad_data中停止A/D轉(zhuǎn)換圖3.4 A/D轉(zhuǎn)換程序流

21、程圖 由流程圖設(shè)計(jì)程序如下:ADC0809:/啟動(dòng)AD轉(zhuǎn)換子程序/void start_adc0809(void) /adcs=0; /允許進(jìn)行A/D轉(zhuǎn)換 adwr=0;delay_50us(2);adwr=1; /WR由低變高時(shí),AD開始轉(zhuǎn)換 /adcs=1; /停止AD轉(zhuǎn)換delay_50us(10);/讀A/D數(shù)據(jù)子程序/read_ad() uint ad_data; ad1_7=0xff; /adcs=0; /允許讀 /adrd=0; /讀取轉(zhuǎn)換數(shù)據(jù)結(jié)果 delay_50us(5); ad_data=ad1_7; /把數(shù)據(jù)存到ad_data中 /adrd=1;adcs=1; /停止A/

22、D讀取 return(ad_data);第4章 系統(tǒng)仿真4.1 仿真步驟 加載目標(biāo)代碼文件 打開元器件單片機(jī)屬性窗口,在“Program File”欄中添加上面編譯好的目標(biāo)代碼文件“keil-12.hex”;在“Clock Frequency”欄中輸入晶振頻率為12MHz。ADC0809的時(shí)鐘信號(hào)設(shè)置為640kHz。啟動(dòng)仿真如下頁圖所示,各按鍵功能如圖中所注,LED中顯示的為當(dāng)前電壓的數(shù)字信號(hào)值,即當(dāng)前轉(zhuǎn)速的檔位(0-256),通過調(diào)整從滑動(dòng)變阻器輸出的電壓值,可以觀察到直流電機(jī)不同的轉(zhuǎn)速。通過按鍵加減速,改變電機(jī)轉(zhuǎn)速,數(shù)碼管顯示的數(shù)字也相應(yīng)改變。結(jié)果如圖4.1所示:圖4.1 仿真結(jié)果 按下加

23、速鍵后,電機(jī)轉(zhuǎn)速加快,數(shù)碼管顯示的數(shù)值增大。結(jié)果如圖4.2所示:圖4.2 仿真結(jié)果4.2 仿真結(jié)果分析通過鍵盤向單片機(jī)輸入相應(yīng)控制指令,數(shù)碼管顯示出不同的數(shù)值。當(dāng)按下加速鍵時(shí),數(shù)碼管顯示數(shù)值增大,說明電機(jī)轉(zhuǎn)速增快;當(dāng)按下減速鍵時(shí),數(shù)碼管顯示數(shù)值減小,說明電機(jī)轉(zhuǎn)速減慢。鍵盤通過單片機(jī)實(shí)現(xiàn)了控制電機(jī)轉(zhuǎn)速的功能。 當(dāng)改變可變電阻阻值時(shí),電機(jī)兩端改變,數(shù)碼管顯示的數(shù)值也改變。說明電阻改變可改變電機(jī)兩端的電壓,從而達(dá)到控制直流電機(jī)的目的,且當(dāng)電壓越大時(shí),數(shù)碼管顯示數(shù)值越大,電機(jī)轉(zhuǎn)速越快;電壓越小時(shí),數(shù)碼管顯示數(shù)值越小,電機(jī)轉(zhuǎn)速越慢。附錄附錄一 電路原理圖及PCB板附圖1 電路原理圖附圖2 PCB板附錄二

24、 系統(tǒng)程序#include<reg52.h> #include"lcd1602.h" #include"fonction.h"uchar count=0,count2=1;uchar key_num=0;uint speed5;/bit direct_flag=1,run_flag=0;/方向標(biāo)志 運(yùn)行標(biāo)志uchar pwmdata=50;sbit right=P27;sbit left=P26;/=void dsp() if(run_flag) gotoxy(1,0);display_string("running");

25、/ 顯示電機(jī)的轉(zhuǎn)動(dòng)去停止情況 else gotoxy(1,0);display_string(" stop "); / if(direct_flag) gotoxy(12,0);display_string("->"); /顯示電機(jī)的轉(zhuǎn)動(dòng)方向 箭頭方向 else gotoxy(12,0);display_string("<-"); / gotoxy(2,1);display_data(0,speed/300);display_data(1,speed/3%100); /顯示當(dāng)前速度 轉(zhuǎn)速 gotoxy(10,1);disp

26、lay_data(0,pwmdata/100);display_data(1,pwmdata%100); / pwmdata占空比/=void key_set() if(key_num!=0) switch(key_num) case 1:run_flag=run_flag;break; case 2:direct_flag=1;break; case 3:direct_flag=0;break;case 4:pwmdata+; if(pwmdata>=100)pwmdata=100; break; case 5:pwmdata-; if(pwmdata>=100)pwmdata=

27、0; break; key_num=0;/清零/= void main() /-硬件初始化- EA=1; ET0=1; TMOD=0X51; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; /- TH1=0; TL1=0; TR1=1; /.- EX0=1; IT0=1; /-控制端口初始化- right=0;left=0; init_lcd(); gotoxy(0,0); display_string(" stop dt:-> ");/stop 2 running 1 gotoxy(0,1); display

28、_string(" 000r/s 050% ");/2 11 /- for(;) count2+; if(count>100)count2=1; if(run_flag=0)right=0;left=0; else if(count2<=pwmdata) if(direct_flag)right=1;left=0; else right=0;left=1; else right=0;left=0; /*void init_lcd(void) /初始化lcd1602 delay(15);write_com(lcd_mode);delay(20);write_com

29、(undisplay_cursor);delay(20);write_com(0x06); /let cursor movedelay(20);write_com(0x01); /clear lcddelay(20);/*void gotoxy(uchar x,uchar y) if(y=0) write_com(0x80+x);else write_com(0xc0+x); /*void display_data(bit kuandu,char number) uchar x,y;if(kuandu=0)write_date(int_to_charnumber);else x=number/10; y=number%10;/y=number-10*x

溫馨提示

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

評(píng)論

0/150

提交評(píng)論