畢業(yè)設(shè)計(論文)基于單片機的步進電機控制系統(tǒng)設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于單片機的步進電機控制系統(tǒng)設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于單片機的步進電機控制系統(tǒng)設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于單片機的步進電機控制系統(tǒng)設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于單片機的步進電機控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、步進電機驅(qū)動控制器設(shè)計題 目: 基于單片機的步進電機驅(qū)動控制器設(shè)計 姓 名: 學 院: 工學院 專 業(yè): 自動化 班 級: 學 號: 指導教師: 職稱: 2012 年 6 月 18日南京農(nóng)業(yè)大學教務(wù)處制摘要:本文應(yīng)用單片機、步進電機驅(qū)動芯片、字符型lcd,構(gòu)建了集步進電機控制器和驅(qū)動器為一體的步進電機控制系統(tǒng)。進行了硬件和軟件設(shè)計,系統(tǒng)實現(xiàn)了步進電機的正反轉(zhuǎn)控制及加、減速控制,以及采集溫度并根據(jù)溫度控制系統(tǒng)的轉(zhuǎn)速, 并進行了仿真。步進電機控制系統(tǒng)的開發(fā)采用了軟硬件協(xié)同仿真的方法,可以有效地減少系統(tǒng)開發(fā)的周期和成本,仿真結(jié)果滿足設(shè)計要求,最后給出了步進電機控制系統(tǒng)的應(yīng)用實例。 關(guān)鍵詞: 步進電機

2、,單片機,變頻調(diào)速,軟硬件協(xié)同仿真,驅(qū)動系統(tǒng)in this paper, microcontroller, stepper motor driver chips, character lcd , build a set of stepper motor controller and driver as one of the stepping motor control system. we use software also with hardware to finish the design. system realizes the stepping motor of positive &n

3、egative control and add, deceleration control. additionally ,the system can gather the temperature together with the temperature ,system can control its rate.and simulation, completed the system test and simulation. stepper motor control system has been developed using the software and hardware co-s

4、imulation method, can effectively reduce the system development cycle and cost. and the rusult support our research .finally, the stepper motor control system application examples.keywords: stepping motor; scm; deceleration control display; simulation by software and hardware; driving system 目錄1緒論1.

5、1引言 1.2基于單片機的步進電機驅(qū)動技術(shù)簡介 2步進電機概述 2.1步進電機的分類 2.2步進電機的工作原理 2.2.1結(jié)構(gòu)及基本原理 2.2.2步進電機的幾個常用術(shù)語 2.2.3 步進電機的控制3系統(tǒng)的硬件設(shè)計 3.1系統(tǒng)設(shè)計方案 3.1.1系統(tǒng)的方案簡述與設(shè)計要求3.1.2系統(tǒng)的組成及其對應(yīng)功能簡述 3.2步進電機的驅(qū)動 3.2.1 驅(qū)動電路的選擇 3.2.2 關(guān)于uln2003芯片4 步進電機驅(qū)動器的設(shè)計 4.1 設(shè)計任務(wù)與器件選取 4.2 軟件實現(xiàn)圖(proteus仿真) 4.3 程序設(shè)計5 結(jié)論6 致謝 7 參考文獻 1緒論1.1引言步進電動機又稱脈沖電動機或階躍電動機,國外一般稱

6、為steppingmotor,pulse -motor或stepper servo,其應(yīng)用發(fā)展已有約80年的歷史。步進電機是一種把電脈沖信號變成直線位移或角位移的控制電機,其位移速度與脈沖頻率成正比,位移量與脈沖數(shù)成正比。根據(jù)電壓脈沖的分配方式,步進電機各相繞組的電流輪流切換,在供給連續(xù)脈沖時,就能一步一步地連續(xù)轉(zhuǎn)動,從而使電機旋轉(zhuǎn)。步進電機每轉(zhuǎn)一周的步數(shù)相同,在不丟步的情況下運行,其步距誤差不會長期積累,精度高,步進電動機可以在寬廣的頻率范圍內(nèi)通過改變脈沖頻率來實現(xiàn)調(diào)速、快速起停、正反轉(zhuǎn)控制等,這是步進電動機最突出的優(yōu)點。1.2基于單片機的步進電機驅(qū)動技術(shù)簡介 目前常見的步進電機控制方案有基

7、于電子電路的控制,基于plc的控制,基于單片機的控制。本文將主要介紹最后一種。采用單片機來控制步進電機,實現(xiàn)了軟件與硬件相結(jié)合的控制方法。用軟件代替環(huán)形分配器,達到了對步進電機的最佳控制。系統(tǒng)中采用單片機接口線直接去控制步進電機各相驅(qū)動線路。由于單片機的強大功能,還可設(shè)計大量的外圍電路,按鈕作為一個外部中斷源,設(shè)置了步進電機正轉(zhuǎn)、反轉(zhuǎn)、檔次、停止等功能,采用中斷和查詢相結(jié)合的方法來調(diào)用中斷服務(wù)程序,完成對步進電機的最佳控制,顯示器及時顯示正轉(zhuǎn)、反轉(zhuǎn)速度等狀態(tài)。環(huán)形分配器其功能由單片機系統(tǒng)實現(xiàn),采用軟件編程的辦法實現(xiàn)脈沖的分配。本方案有以下優(yōu)點:(1)單片機軟件編程可以使復雜的控制過程實現(xiàn)自動控

8、制和精確控制,避免了失步、振蕩等對控制精度的影響;(2)用軟件代替環(huán)形分配器,通過對單片機的設(shè)定,用同一種電路實現(xiàn)了多相步進電機的控制和驅(qū)動,大大提高了接口電路的靈活性和通用性;(3)單片機的強大功能使顯示電路、鍵盤電路、復位電路等外圍電路有機的組合,大大提高系統(tǒng)的交互性。2步進電機概述2.1步進電機的分類步進電動機的種類很多,從廣義上講,步進電機的類型分為機械式、電磁式和組合式三大類型。(1)反應(yīng)式步進電機(variable reluctance,簡稱vr)反應(yīng)式步進電機的轉(zhuǎn)子是由軟磁材料制成的,轉(zhuǎn)子中沒有繞組。它的結(jié)構(gòu)簡單,成本低,步距角可以做得很小,但動態(tài)性能較差。反應(yīng)式步進電機有單段式

9、和多段式兩種類型;(2)永磁式步進電機(permanent magnet,簡稱pm)永磁式步進電機的轉(zhuǎn)子是用永磁材料制成的,轉(zhuǎn)子本身就是一個磁源。轉(zhuǎn)子的極數(shù)和定子的極數(shù)相同,所以一般步距角比較大。(3)混合式步進電機(hybrid,簡稱hb)混合式步進電機綜合了反應(yīng)式和永 磁式兩者的優(yōu)點?;旌鲜脚c傳統(tǒng)的反應(yīng)式相比,結(jié)構(gòu)上轉(zhuǎn)子加有永磁體,以提供軟磁材料的工作點,而定子激磁只需提供變化的磁場而不必提供磁材料工作點的耗能,因此該電機效率高,電流小,發(fā)熱低。2.2步進電機的工作原理 2.2.1結(jié)構(gòu)及基本原理步進電機在結(jié)構(gòu)上也是由定子和轉(zhuǎn)子組成,可以對旋轉(zhuǎn)角度和轉(zhuǎn)動速度進行高精度控制。當電流流過定子繞組

10、時,定子繞組產(chǎn)生一矢量磁場,該矢量場會帶動轉(zhuǎn)子旋轉(zhuǎn)一角度,使得轉(zhuǎn)子的一對磁極磁場方向與定子的磁場方向一著該磁場旋轉(zhuǎn)一個角度。因此,控制電機轉(zhuǎn)子旋轉(zhuǎn)實際上就是以一定的規(guī)律控制定子繞組的電流來產(chǎn)生旋轉(zhuǎn)的磁場。每來一個脈沖電壓,轉(zhuǎn)子就旋轉(zhuǎn)一個步距角,稱為一步。根據(jù)電壓脈沖的分配方式,步進電機各相繞組的電流輪流切換,在供給連續(xù)脈沖時,就能一步一步地連續(xù)轉(zhuǎn)動,從而使電機旋轉(zhuǎn)。通過電磁感應(yīng)定律我們很容易知道激勵一個線圈繞組將產(chǎn)生一個電磁場,分為北極和南極,見圖1所示。定子產(chǎn)生的磁場使轉(zhuǎn)子轉(zhuǎn)動到與定子磁場對直。通過改變定子線圈的通電順序可使電機轉(zhuǎn)子產(chǎn)生連續(xù)的旋轉(zhuǎn)運動。圖1 激勵線圈產(chǎn)生電磁場 2.2.2步進

11、電機的幾個常用術(shù)語 步距角:表示控制系統(tǒng)每發(fā)一個步進脈沖信號,步進電機轉(zhuǎn)子所應(yīng)轉(zhuǎn)動的角度理論值。 其中 z -轉(zhuǎn)子的齒數(shù) n-運行拍數(shù)。齒距角:相鄰兩齒中心線間的夾角 步進電機轉(zhuǎn)速:步進電機的相數(shù):是指步進電機內(nèi)部的線圈組數(shù)。運行頻率:是指拖動一定負載使頻率連續(xù)上升時,步進電機能不失步運行的極限頻率。啟動頻率:是指在一定負載下直接啟動而不失步的極限頻率。 2.2.3步進電機的控制(1)控制換相順序步進電機的通電換相順序嚴格按照步進電機的工作方式進行。通常我們把通電換相這一過程成為脈沖分配。例如,步進電機的八拍工作方式,其各相通電的順序為aab-b-bc-c-cd-d-da(正轉(zhuǎn))或da-d-c

12、d-c-bc-b-ba-a(反轉(zhuǎn)),通電控制脈沖必須嚴格這一順序分別控制a,b,c,d相得通電和斷電。(2)控制步進電機的轉(zhuǎn)向如果按定的工作方式正序通電換相,步進電機就正轉(zhuǎn);如果按反序通電換相,則步進電機就反轉(zhuǎn)。(3)控制步進電機的轉(zhuǎn)速如果給定步進電機一個控制脈沖,它就轉(zhuǎn)成一步,再發(fā)一個控制脈沖,它就會再轉(zhuǎn)一步。兩個脈沖的間隔時間越短,步進電機就轉(zhuǎn)的越快。因此,脈沖的頻率決定了步進電機的轉(zhuǎn)速。調(diào)整單片機發(fā)出脈沖的頻率,就可以對步進電機進行調(diào)速。(4)調(diào)整單片機輸出地步進脈沖頻率的方法:軟件延時方法:改變延時的時間長度就可以改變輸出脈沖的頻率,但這種方法使cpu長時間等待無法進行其他工作,因此沒

13、有實用價值。在單獨進行步進電機的演示時可以采用。 定時器中斷方法在中斷服務(wù)子程序中進行脈沖輸出操作,調(diào)整定時器的定時 常數(shù)就可以實現(xiàn)調(diào)速。這種方法占用cpu時間較少,是一種比較實用的調(diào)速 法。用單片機對步進電機進行速度控制,實際上就是控制每次換相的時間間隔。升速時,使脈沖頻率逐漸升高,降速時則相反。(5)步進電機的三種運行方式 單四拍運行方式當電機繞組通電時序為a-b-c-d時為正轉(zhuǎn),通電時序為d-c-b-a時為反序。 n=4.步距角:則步進電機轉(zhuǎn)一圈所需步進脈沖數(shù): 雙四拍運行方式當電機繞組通電時序為ab-bc-cd-da時為正轉(zhuǎn),通電時序為da-cd-bc-ab時為反轉(zhuǎn)。n=4.步距角:則

14、步進電機轉(zhuǎn)一圈所需步進脈沖數(shù): 八拍運行方式當電機繞組通電時序為a-ab-b-bc-c-cd-d-da時為正轉(zhuǎn),通電時序da-d-cd-c-bc-b-ba-a時為反轉(zhuǎn).n=8步距角:則步進電機轉(zhuǎn)一圈所需步進脈沖數(shù):八拍運行方式的步距角要比單四拍和雙四拍運行方式的步距角小一半,所以步進精度高一倍。 表1 步進電機相序分配表 3系統(tǒng)的硬件設(shè)計3.1系統(tǒng)設(shè)計方案 3.1.1系統(tǒng)的方案簡述與設(shè)計要求本設(shè)計采用單片機89c51來作為整個步進電機控制系統(tǒng)的運動控制核心部件,采用了電機驅(qū)動芯片及其外圍電路構(gòu)成了整個系統(tǒng)的驅(qū)動部分,再加上作為執(zhí)行部件的步進電機來構(gòu)成了一個基本的步進電機控制系統(tǒng)。系統(tǒng)的具體功能

15、和要求如下:(1) 通過單片機控制步進電機單步或連續(xù)運行。(2) 使用按鍵控制步進電機運行和正反轉(zhuǎn)。(3) 通過按鍵設(shè)置步進電機運行速度、運行時間、轉(zhuǎn)動角度等,并將有關(guān)參數(shù)顯示在lcd顯示器上。(4) 將運行參數(shù)顯示在上位機,并可通過上位機對步進電機的運行參數(shù)進行設(shè)置。(5) 采集并顯示當前溫度,并可根據(jù)溫度高低自動調(diào)節(jié)步進電機的轉(zhuǎn)速。3.1.2 系統(tǒng)的組成及其對應(yīng)功能簡述整個系統(tǒng)的組成包括單片機最小系統(tǒng),電機驅(qū)動模塊,串口下載模塊,lcd顯示模塊,電機驅(qū)動電流檢測模塊,獨立按鍵等模塊組成。 單片機最小系統(tǒng)作為整個系統(tǒng)的控制核心,它主要負責產(chǎn)生控制步進電機轉(zhuǎn)動的脈沖,通過單片機的軟件編程代替環(huán)

16、形脈沖分配器輸出控制步進電機的脈沖信號,步進電機轉(zhuǎn)動的角度大小與單片機輸出的脈沖數(shù)成正比步進電機轉(zhuǎn)動的速度與輸出的脈沖頻率成正比,而步進電機轉(zhuǎn)動的的方向與輸出的脈沖順序有關(guān)。與此同時,單片機將會把電機轉(zhuǎn)速,電機的轉(zhuǎn)動方向,以及溫度值通過lcd顯示出來。電機驅(qū)動模塊負責將單片機發(fā)給步進電機的信號功率放大,從而驅(qū)動電機工作。串口下載模塊主要是負責實行計算機和單片機之間的通信,將在計算機里面編寫好的程序下載到單片機芯片當中。lcd顯示模塊就主要是顯示電機轉(zhuǎn)速,電機轉(zhuǎn)向,和通過電機的電流等系統(tǒng)的實時信息。按鍵作為外部中斷源,和單片機端口連接,通過它設(shè)置了電機的正轉(zhuǎn),反轉(zhuǎn),加速,減速,顯示溫度等功能。采

17、用了中斷和查詢相結(jié)合的方法來調(diào)用中斷服務(wù)程序,完成了對步進電機的最佳的及時的控制。3.2 步進電機的驅(qū)動 3.2.1驅(qū)動電路的選擇步進電機的驅(qū)動電機有多種,但最為常用的就是單電壓驅(qū)動、雙電壓驅(qū)動、斬波驅(qū)動、細分控制驅(qū)動等。單電壓驅(qū)動是步進電機控制中最為簡單的一種驅(qū)動電路,它在本質(zhì)上是一個單間的反相器。它的最大特點是結(jié)構(gòu)簡單,因它的工作效率低,特別是在高頻下更顯的突出。它的外接電阻r要消耗相當一部分的熱量,這樣就會影響電路的穩(wěn)定性所以此種驅(qū)動方式一般只用在小功率的步進電機的驅(qū)動電路中。雙電壓驅(qū)動是電路一般采用兩種電源電壓來驅(qū)動,因這兩個電源分別是一個為高壓一個為低壓,因此也稱為高低壓驅(qū)動電路。雙

18、電壓驅(qū)動電路的缺點是在高低壓連接處電流出現(xiàn)谷點,這樣必然引起力矩在谷點處下降。不宜于電機的正常運行。對于斬波電路驅(qū)動則可以克服這種缺點,并且還可以提高步進電機的效率。所以從提高效率來看這是一種很好的驅(qū)動電路,它可以用較高的電源電壓,同時無需外接電阻來限定期額定電流和減少時間常數(shù)。但由于其波形頂部呈現(xiàn)鋸齒形波動,所以會產(chǎn)生較大的電磁噪聲。細分驅(qū)動是用脈沖電壓來供電的,對于一個電壓脈沖,轉(zhuǎn)子就可以轉(zhuǎn)動一步,一般會根據(jù)電壓脈沖的分配方式,步進電機各相繞阻會輪流切換,固可以使步進電機的轉(zhuǎn)子旋轉(zhuǎn)。細分控制的電路一般分為兩類,一類是采用線性模擬功率放大器的方法獲得階梯形電流,這種方法簡單,但效率低。別一種

19、是用單片機采用數(shù)子脈寬調(diào)制的方法獲得階梯電流,這種方法需要復雜的計算可使細分后的步距角一致。我們所使用的系統(tǒng)是小型步進電機,對電壓和電流要求不是很高,故選擇驅(qū)動芯片uln2003a來驅(qū)動,并通過軟件來實現(xiàn)步進電機的調(diào)速。3.2.2 uln2003芯片 uln2003的設(shè)計與標準ttl系列兼容。它的管腳連接圖如圖2所示,內(nèi)部結(jié)構(gòu)如圖3所示圖2 uln2003管腳連接圖其主要特性為: 表2 uln2003主要特性表參數(shù)名稱符號數(shù)值單位輸入電壓vin30v輸入電流iin25ma功 耗pd1w工作環(huán)境溫度topr-20to +85 貯存溫度tstg-55to+150 uln2003芯片概述與特點:ul

20、n2003芯片是高耐壓、大電流達林頓陣列,由7組達林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)以及鉗位二極管網(wǎng)絡(luò)構(gòu)成,具有同時驅(qū)動7組負載的能力,為單片雙極型大功率高速集成電路。功率電子電路大多要求具有大電流輸出能力,以便于驅(qū)動各種類型的負載。功率驅(qū)動電路是功率電子設(shè)備輸出電路的一個重要組成部分。步進電機驅(qū)動電路的工作過程是:首先從p1口輸出00000001b,由于單片機與uln2003連接只用到了p1.0p1.3,所以uln2003與單片機連接的四個管腳中每時刻只有一個管腳處于導通狀態(tài)(采用單拍方式對步進電機控制),其他管腳處于斷開狀態(tài)。這樣就使得與uln2003連接的步進電機只有一個引出端導通。該系統(tǒng)驅(qū)

21、動原理圖如圖3:圖3 步進電機驅(qū)動原理圖4步進電機驅(qū)動器的設(shè)計4.1 設(shè)計任務(wù)與器件選取設(shè)計任務(wù)和要求(1)通過單片機控制步進電機單步或連續(xù)運行。(2)使用按鍵控制步進電機運行和正反轉(zhuǎn)。(3)通過按鍵設(shè)置步進電機運行速度、運行時間、轉(zhuǎn)動角度等,并將有關(guān)參數(shù)顯示在lcd顯示器上。(4)將運行參數(shù)顯示在上位機,并可通過上位機對步進電機的運行參數(shù)進行設(shè)置。(5)采集并顯示當前溫度,并可根據(jù)溫度高低自動調(diào)節(jié)步進電機的轉(zhuǎn)速。器材選取80c51單片機、步進電機、按鈕、lcd液晶屏、鏈接導線、串口、晶振、uln2003驅(qū)動芯片、電容、排阻、三極管、滑動變阻器、ds18b20、蜂鳴器、電阻、電源。 4.2軟件

22、實現(xiàn)圖(proteus仿真) 圖4 步進電機驅(qū)動仿真圖實習過程中的部分截圖 電機運行狀態(tài)顯示為stop,檔位為5檔,開機轉(zhuǎn)速為2.66r/min按下啟動鍵后,轉(zhuǎn)向顯示出顯示,即電機順時針轉(zhuǎn)4.3 程序設(shè)計#include #include /內(nèi)部包含延時函數(shù) _nop_();#define uchar unsigned char#define uint unsigned int#define delaynop(); _nop_();_nop_();_nop_();_nop_();uchar code ffw8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9; /

23、正轉(zhuǎn)相序編碼表uchar code rev8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;/反轉(zhuǎn)相序編碼表sbit k1 = p14; /單步sbit k2 = p15; /運行與停止sbit k3 = p16; /時間設(shè)置sbit k4 = p17; /加速sbit k5 = p32; /減速sbit k6 = p33; /方向轉(zhuǎn)換sbit k7 = p34; /顯示溫度并自動調(diào)速sbit ds = p36; /ds18b20輸入sbit lcd_rs = p20; sbit lcd_rw = p21;sbit lcd_en = p22;sbit beep

24、 = p23; /蜂鳴器bit on_off=0; /運行與停止標志bit direction=1; /方向標志bit flag; uchar code t1= tep c ;uchar code wendu=0123456789; /利用一個溫度表解決溫度顯示亂碼uchar codecdis0 = welcome wu&guo;uchar codecdis1 = stepping motor ;uchar codecdis2 = control system ;uchar codecdis3 = stoping;uchar codecdis4 = dw:;uchar codecdis5 =

25、running;uchar codecdis6 = r/min;uchar codecdis7 = rate:;uchar codecdis8 = one step;uchar codecdis9 = time;ucharm,v=0,q=0,j,i;ucharsbuf_temp;ucharrate=5;ucharangle=0,time=0; /預設(shè)定速度檔uchardata_temp1,data_temp2,data_temp3,data_temp4; uint zs,data_temp;uint num; /定義的時候用uchar宏定義就會出錯uint num1; uint num2;/*

26、/void delay(uint t) / 延時t毫秒函數(shù) uchar k; while(t-) for(k=0; k125; k+) /*/void delayb(uchar x)/x*0.14ms uchar i; while(x-) for(i=0;i13;i+);/*/void beep() /蜂鳴器 uchar j; for (j=0;j100;j+) delayb(4); beep=!beep; /beep取反 beep=1;/關(guān)閉蜂鳴器 delay(170); /*/ bit lcd_busy() /檢查lcd是否為忙狀態(tài),lcd_busy為1時,忙,等待。為0時,閑,可寫指令與

27、數(shù)據(jù)。 bit result;lcd_rs = 0;lcd_rw = 1;lcd_en = 1;delaynop();result = (bit)(p0&0x80);lcd_en = 0;return(result); /*/void lcd_wcmd(uchar cmd)/寫指令數(shù)據(jù)到lcd ,*rs=l,rw=l,e=高脈沖,d0-d7=指令碼。while(lcd_busy();lcd_rs = 0;lcd_rw = 0;lcd_en = 0;_nop_();_nop_(); p0 = cmd;delaynop();lcd_en = 1;delaynop();lcd_en = 0; /*/

28、void lcd_wdat(uchar dat)/寫顯示數(shù)據(jù)到lcd,rs=h,rw=l,e=高脈沖,d0-d7=數(shù)據(jù)。while(lcd_busy();lcd_rs = 1;lcd_rw = 0;lcd_en = 0;p0 = dat;delaynop();lcd_en = 1;delaynop();lcd_en = 0; /*/void lcd_init()/lcd初始化設(shè)定 delay(30); lcd_wcmd(0x38); /16*2顯示,5*7點陣,8位數(shù)據(jù)delay(5);lcd_wcmd(0x38); delay(5);lcd_wcmd(0x38); delay(5);lcd_

29、wcmd(0x0c); /顯示開,關(guān)光標delay(5);lcd_wcmd(0x06); /移動光標delay(5);lcd_wcmd(0x01); /清除lcd的顯示內(nèi)容delay(5);/*/void lcd_pos(uchar pos)/設(shè)定顯示位置 lcd_wcmd(pos | 0x80); /數(shù)據(jù)指針=80+地址變量/*/void wr_string(unsigned char str) /字符串顯示子程序 unsigned char num = 0; while (strnum) lcd_wdat(strnum+); /*/void lcd_init_dis()/ lcd1602初

30、始顯示子程序 delay(10); /延時 lcd_init();/初始化lcd lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 wr_string(cdis0); delay(2000); lcd_wcmd(0x01); /清屏/*/void data_conv()/檔位數(shù)據(jù)轉(zhuǎn)換子程序 data_temp1=data_temp/10;/高位if(data_temp1=0) data_temp1=0x20;/高位為0不顯示 else data_temp1=data_temp1+0x30; data_temp2=data_temp%10; /低位 data_temp2=data_te

31、mp2+0x30; /*/void data_conv1()/轉(zhuǎn)速數(shù)據(jù)轉(zhuǎn)換子程序 data_temp1=data_temp/1000;/整數(shù)位第一位 if(data_temp1=0) data_temp1=0x20;/高位為0不顯示 else data_temp1=data_temp1+0x30; data_temp2=data_temp%1000/100; /整數(shù)位第2位 data_temp2=data_temp2+0x30; data_temp3=data_temp%100/10; /小數(shù)位第一位 data_temp3=data_temp3+0x30; data_temp4=data_te

32、mp%10; /小數(shù)位第二位 data_temp4=data_temp4+0x30; /*/void data_dis() /數(shù)據(jù)顯示子程序 data_temp = rate; /顯示檔位 data_conv(); lcd_pos(0x0b); lcd_wdat(data_temp1); lcd_pos(0x0c); lcd_wdat(data_temp2);zs=1332/(10-rate);/轉(zhuǎn)速換算公式:zs=13.32/rate;data_temp=zs; /顯示轉(zhuǎn)速data_conv1(); lcd_pos(0x45); lcd_wdat(data_temp1); lcd_pos(0

33、x46); lcd_wdat(data_temp2); lcd_pos(0x48); lcd_wdat(data_temp3); lcd_pos(0x49); lcd_wdat(data_temp4);/*/void motor_dr()/顯示運行方向符號 if(direction=1) /正轉(zhuǎn)方向標志 for(m=0;m號 else for(m=0;m2;m+) /反轉(zhuǎn)方向標志 lcd_pos(0x0e+m); /顯示方向符號 lcd_wdat(0x3c); /顯示號 /*/void motor_run() /顯示運行狀態(tài) if(on_off=1) tr0=1; lcd_pos(0); /設(shè)

34、置顯示位置為第一行的第1個字符wr_string(cdis5); else tr0=0; p1 =0x0f; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 wr_string(cdis3); /*/單位void danwei() lcd_wcmd(0x01); /清屏if(on_off=0) lcd_pos(0x00); /設(shè)置顯示位置為第一行的第1個字符 wr_string(cdis3); if(on_off=1) lcd_pos(0x00); /設(shè)置顯示位置為第一行的第1個字符 wr_string(cdis5); lcd_pos(0x08); /設(shè)置顯示位置為第一行第9個字符

35、 wr_string(cdis4); for(m=0;m0;i-)ds = 0; / 給脈沖信號dat=1;ds = 1; / 給脈沖信號if(ds)dat|=0x80;tmpdelay(4);return(dat);/*/void writeonechar(unsigned char dat)/寫一個字節(jié)unsigned char i=0;for (i=8; i0; i-)ds = 0;ds = dat&0x01;tmpdelay(5);ds = 1;dat=1;/*/unsigned int readtemp()/讀取溫度unsigned char a=0;unsigned char b=

36、0;unsigned int t=0;float tt=0;init_ds18b20();writeonechar(0xcc); / 跳過讀序號列號的操作writeonechar(0x44); / 啟動溫度轉(zhuǎn)換init_ds18b20();writeonechar(0xcc); /跳過讀序號列號的操作writeonechar(0xbe); /讀取溫度寄存器a=readonechar(); /連續(xù)讀兩個字節(jié)數(shù)據(jù) /讀低8位 b=readonechar(); /讀高8位t=b;t=8;t=t|a; /兩字節(jié)合成一個整型變量。tt=t*0.0625; /得到真實十進制溫度值,因為ds18b20可以精

37、確到0.0625度,所 以讀回數(shù)據(jù)的最低位代表的是0.0625度t= tt*10+0.5; /放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作。return(t);/*/void display()/uint num; /定義的時候用uchar宏定義就會出錯uint shi,ge,xiaoshu; /這里的num,shi,ge,xiaoshu 必須用uint無符號整數(shù)來表示,用uchar字符型則顯示錯誤num=readtemp();shi=num/100;ge=num/10%10;xiaoshu=num%10;write_com(0xc0+5);write_d

38、ate(wendushi);write_com(0xc0+6);write_date(wenduge);write_com(0xc0+7);write_date(0x2e);write_com(0xc0+8);write_date(wenduxiaoshu);write_com(0xc0+9);write_date(0xa1);/*/void serial_pro() /上位機命令判斷子程序 switch (sbuf_temp)case 1:k1=0;break;case 2:k2=0;break;case 3:k3=0;break;case 4:k4=0;break;case 5:k5=0;break;case 6:k6=0;break;case 7:k7=0;break;void sbuf_return() /上位機速率

溫馨提示

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

評論

0/150

提交評論