單片機(jī)三相單三拍步進(jìn)電機(jī)_第1頁(yè)
單片機(jī)三相單三拍步進(jìn)電機(jī)_第2頁(yè)
單片機(jī)三相單三拍步進(jìn)電機(jī)_第3頁(yè)
單片機(jī)三相單三拍步進(jìn)電機(jī)_第4頁(yè)
單片機(jī)三相單三拍步進(jìn)電機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)課題名稱單片機(jī)控制步進(jìn)電機(jī)姓名學(xué)號(hào)專(zhuān)業(yè)指導(dǎo)教師機(jī)電與控制工程學(xué)院2014年5月30日單片機(jī)控制步進(jìn)電機(jī)步進(jìn)電機(jī)是工業(yè)過(guò)程控制及儀表中的主要控制元件之一,它可以在機(jī)械結(jié)構(gòu)中把絲杠的角度變成直線位移,也可以用它帶動(dòng)螺旋電位器,調(diào)節(jié)電壓和電流,從而實(shí)現(xiàn)對(duì)執(zhí)行機(jī)構(gòu)的控制。在數(shù)字控制系統(tǒng)中,由于它可以直接接受計(jì)算機(jī)輸出的數(shù)字信號(hào),而不需要進(jìn)行D/A轉(zhuǎn)換,所以使用起來(lái)十分方便。步進(jìn)電機(jī)具有快速的啟停能力和精度高的顯著特點(diǎn),在定位場(chǎng)合得到了廣泛的應(yīng)用。步進(jìn)電機(jī)實(shí)際上是一個(gè)數(shù)字/角度轉(zhuǎn)換器,也是一個(gè)串行的數(shù)/模轉(zhuǎn)換器。因此,需把并行的二進(jìn)制轉(zhuǎn)換成串行的脈沖序列,并實(shí)現(xiàn)方向控制。每當(dāng)步進(jìn)電機(jī)脈沖輸入線上得到一個(gè)脈沖,它便沿著特定的方向走一步。設(shè)計(jì)要求:采用單片機(jī)來(lái)控制一個(gè)三相單三拍的步進(jìn)電機(jī)工作。步進(jìn)電機(jī)的旋轉(zhuǎn)方向由正反轉(zhuǎn)控制信號(hào)來(lái)控制。步進(jìn)電機(jī)的步數(shù)由鍵盤(pán)輸入,可輸入的步數(shù)分別為3,6,9,12,15,18,21,24,27步。并且鍵盤(pán)具有鍵盤(pán)鎖的功能,當(dāng)鍵盤(pán)上鎖的時(shí)候,步進(jìn)電機(jī)是不接受輸入步數(shù)的,也不會(huì)運(yùn)轉(zhuǎn)。只有當(dāng)鍵盤(pán)鎖打開(kāi)并輸入步數(shù)的時(shí)候,步進(jìn)電機(jī)才開(kāi)始工作。電機(jī)運(yùn)轉(zhuǎn)的時(shí)候有正轉(zhuǎn)和反轉(zhuǎn)指示燈指示。當(dāng)電機(jī)在運(yùn)轉(zhuǎn)的過(guò)程當(dāng)中,如果過(guò)熱,則電機(jī)停止運(yùn)轉(zhuǎn),同時(shí)紅色指示燈亮.,同時(shí)警報(bào)響。TOC\o"1-5"\h\z1、緒論42、方案論證(規(guī)劃、選定)73、方案說(shuō)明(設(shè)計(jì))74、硬件方案設(shè)計(jì)85、軟件方案設(shè)計(jì)126、調(diào)試137、技術(shù)小結(jié)(結(jié)束語(yǔ))148、參考文獻(xiàn)159、附錄(源程序代碼、電路圖等)16緒論步進(jìn)電機(jī)是用電脈沖信號(hào)控制,以實(shí)現(xiàn)對(duì)生產(chǎn)過(guò)程或設(shè)備的數(shù)字控制,它是過(guò)程控制中一種十分重要和常用的功率執(zhí)行器件,它可以把脈沖信號(hào)轉(zhuǎn)換成角位移,并且可用作電磁制動(dòng)輪、電磁差分器或角位移發(fā)生器等,近年來(lái)由于計(jì)算機(jī)應(yīng)用技術(shù)的迅速發(fā)展,步進(jìn)電機(jī)常常和計(jì)算機(jī)一起組成高精度的數(shù)字控制系統(tǒng)。由于它是由數(shù)字脈沖控制,因此非常適合于用單片機(jī)控制,本設(shè)計(jì)便是在此基礎(chǔ)上,AT89C51型單片機(jī)為核心,并結(jié)合外圍電路以步進(jìn)電機(jī)為控制對(duì)象的控制系統(tǒng)。1.2單片機(jī)控制步進(jìn)電機(jī)原理步進(jìn)電機(jī)的不同驅(qū)動(dòng)方式,都是在工作時(shí),脈沖信號(hào)按一定順序輪流加到三相繞組上,從而實(shí)現(xiàn)不同的工作狀態(tài)。由于通電順序不同,其運(yùn)行方式有三相單三相拍、三相雙三拍和三相單、雙六拍三種(注意:上面“三相單三拍”中的“三相”指定子有三相繞組;“拍”是指定子繞組改變一次通電方式;“三拍”表示通電三次完成一個(gè)循環(huán)。“三相雙三拍”中的“雙”是指同時(shí)有兩相繞組通電)。三相單三拍運(yùn)行方式:下頁(yè)圖所示為反應(yīng)式步進(jìn)電動(dòng)機(jī)工作原理圖,若通過(guò)脈沖分配器輸出的第一個(gè)脈沖使A相繞組通電,B,C相繞組不通電,在A相繞組通電后產(chǎn)生的磁場(chǎng)將使轉(zhuǎn)子上產(chǎn)生反應(yīng)轉(zhuǎn)矩,轉(zhuǎn)子的1、3齒將與定子磁極對(duì)齊,如果圖(a)所示。第二個(gè)脈沖到來(lái),使B相繞組通電,而A、C相繞組不通電;B相繞組產(chǎn)生的磁場(chǎng)將使轉(zhuǎn)子的2、4齒與B相磁極對(duì)齊,如圖(b)所示,與圖(a)相比,轉(zhuǎn)子逆時(shí)針?lè)较蜣D(zhuǎn)動(dòng)了一個(gè)角度。第三個(gè)脈沖到來(lái)后,是C相繞組通電,而A、B相不通電,這時(shí)轉(zhuǎn)子的1、3齒會(huì)與C組對(duì)齊,轉(zhuǎn)子的位置如圖(c)所示,與圖(b)比較,又逆時(shí)針轉(zhuǎn)過(guò)了一個(gè)角度。圖1.1反應(yīng)式步進(jìn)電機(jī)工作原理圖當(dāng)脈沖不斷到來(lái)時(shí),通過(guò)分配器使定子的繞組按著A相一B相一C相一A相……的規(guī)律不斷地接通與斷開(kāi),這時(shí)步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)子就連續(xù)不停地一步步的逆時(shí)針?lè)较蜣D(zhuǎn)動(dòng)。如果改變步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)動(dòng)方向,只要將定子各繞組通電的順序改為A相一C相一B相一A相,轉(zhuǎn)子轉(zhuǎn)動(dòng)方向即改為順時(shí)針?lè)较?。單三拍分配方式時(shí),步進(jìn)電動(dòng)機(jī)由A相通電轉(zhuǎn)換到B相通電,步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)子轉(zhuǎn)過(guò)一個(gè)角度,稱為一步。這時(shí)轉(zhuǎn)子轉(zhuǎn)過(guò)的角度是30度。步進(jìn)電動(dòng)機(jī)每一步轉(zhuǎn)過(guò)的角度稱為步距角。1.2.2三相雙三拍運(yùn)行方式三相雙三拍運(yùn)行方式:每次都有兩個(gè)繞組通電,通電方式是AB-BC-CA-AB……,如果通電順序改為AB—CA—BC—AB……則步進(jìn)電機(jī)反轉(zhuǎn)。雙三拍分配方式時(shí),步進(jìn)電動(dòng)機(jī)的步距角也是30度1.2.3三相單,雙六拍運(yùn)行方式:三相六拍分配方式就是每個(gè)周期內(nèi)有六個(gè)通電狀態(tài)。這六中通電狀態(tài)的順序可以使A--AB--B--BC--C--CA--A或者A--CA--C--BC--B--AB--A六拍通電方式中,有一個(gè)時(shí)刻兩個(gè)繞組同時(shí)通電,這時(shí)轉(zhuǎn)子齒的位置將位于通電的兩相的中間位置。在三相六拍分配方式下,轉(zhuǎn)子每一步轉(zhuǎn)過(guò)的角度只是三相三拍方式下的一半,步距角是15度。單三拍運(yùn)行的突出問(wèn)題是每次只有一相繞組通電,在轉(zhuǎn)換過(guò)程中,一相繞組斷電,另一相繞組通電,容易發(fā)生失步;另外單靠一相繞組通電吸引轉(zhuǎn)子,穩(wěn)定性不好,容易在平衡位置附近震蕩,故用的較少。雙三拍運(yùn)行的特點(diǎn)是每次都有兩相繞組通電,且在轉(zhuǎn)換過(guò)程中始終有一相繞組保持通電狀態(tài),因此工作穩(wěn)定,且步距角與單三拍相同。六拍運(yùn)行方式轉(zhuǎn)換時(shí)始終有一相繞組通電,且步距角較小,故工作穩(wěn)定性好,但電源較復(fù)雜,實(shí)際應(yīng)用較多。2.方案論證本設(shè)計(jì)由于需要實(shí)現(xiàn)9個(gè)不同部數(shù)的輸入以及其他功能的輸入,所以可以采用鍵盤(pán)輸入,實(shí)現(xiàn)步進(jìn)電機(jī)的步數(shù)由鍵盤(pán)輸入且具有鍵盤(pán)鎖功能。而本實(shí)驗(yàn)單片機(jī)的端口數(shù)量充足,最后決定直接采用鍵盤(pán)輸入。在步進(jìn)電機(jī)方面由于此次設(shè)計(jì)的軟件采用proteus,在此軟件中只有一個(gè)四相步進(jìn)電機(jī)的模型,然后考慮到步進(jìn)電機(jī)控制方法的難易度最后決定采用四相八拍控制法,由于單片機(jī)不能直接驅(qū)動(dòng)步進(jìn)電機(jī),通過(guò)芯片放大控制電壓。并讓電機(jī)停止運(yùn)轉(zhuǎn)同時(shí)鎖住鍵盤(pán)。3.方案說(shuō)明在測(cè)量溫度方面一開(kāi)始打算用一個(gè)溫度傳感器開(kāi)關(guān)去實(shí)現(xiàn)監(jiān)測(cè)電機(jī)的溫度,當(dāng)溫度過(guò)高的時(shí)候就斷開(kāi)開(kāi)關(guān);但考慮到系統(tǒng)的可操作性,準(zhǔn)確性,編程的難以度及仿真軟件的限制,最后決定用并讓電機(jī)停止運(yùn)轉(zhuǎn)同時(shí)鎖住鍵盤(pán)。3.方案說(shuō)明步進(jìn)電機(jī)和普通電動(dòng)機(jī)不同之處是步進(jìn)電機(jī)接受脈沖信號(hào)的控制。即步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)換為機(jī)械角位移的執(zhí)行元件。步進(jìn)電機(jī)的控制可以用硬件,也可以用軟件通過(guò)單片機(jī)實(shí)現(xiàn)。硬件方法是采用脈沖分配器芯片進(jìn)行通用換相控制;而軟件方法是用單片機(jī)產(chǎn)生控制脈沖來(lái)控制步進(jìn)電機(jī)的運(yùn)行狀態(tài),這種方法可簡(jiǎn)化電路,降低成本。在用軟件控制時(shí),主要設(shè)計(jì)要點(diǎn)如下:判斷旋轉(zhuǎn)方向;按相序確定控制字;按順序輸入控制字;確定控制步數(shù)和每一步的延時(shí)時(shí)間。由于單片機(jī)的驅(qū)動(dòng)電流一般都比較小,不能直接驅(qū)動(dòng)電機(jī)工作,所以單片機(jī)的I/O口輸出必須按驅(qū)動(dòng)電路,即功率驅(qū)動(dòng),才得以控制電機(jī)正常工作??刂瓶驁D如下圖所示:開(kāi)始啟動(dòng)時(shí)點(diǎn)擊處于停止轉(zhuǎn)動(dòng)狀態(tài),用鍵盤(pán)按鍵控制鍵盤(pán)鎖、步數(shù)、正轉(zhuǎn)、反轉(zhuǎn)。用80c51作為總控制芯片。ULN2003用于步進(jìn)電機(jī)的驅(qū)動(dòng)控制。其中在鍵盤(pán)控制時(shí)用鍵盤(pán)掃描程序。圖3.1總方案圖4.硬件方案設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)最小單片機(jī)系統(tǒng)PniVADDpn.WAinPO^ADZMRL11nF'cTE":T-'',-:.10二:「二■二飛::J-i..jCR.YSTAIL-JPniVADDpn.WAinPO^ADZMRL11nF'cTE":T-'',-:.10二:「二■二飛::J-i..jCR.YSTAIL-Jg'1P「‘‘''IXTKL2HBTPEI.HRD,pas^AnsP口目網(wǎng)[嗎Pn.Ti'ABT:TE::T-■'inFPE:EMALEFZB'.wEPN.W陽(yáng)P23Ainp工ma11P2.+iA12F2JVA13PM后的1+P2.TfA15M_lzzFzta壬F,gF1.DP1.1PINFlJP1.+PUP1.taP1.7P3n'R:w:[ipj.lmpP32.,-nrmpmmiTTPl.^TT]F:3_SEF3jSCTJRpi.rfwr?口TTNR1T+M"宿7qTEXQ5V電源:給系統(tǒng)供電。復(fù)位電路:程序跑飛時(shí)復(fù)位電路可以使程序從新執(zhí)行,相當(dāng)于電腦的重啟。晶振:給單片機(jī)運(yùn)行提供時(shí)鐘。EA接高電平:表示運(yùn)行內(nèi)部程序存儲(chǔ)器下載的程序。P0接排阻:P0口開(kāi)漏結(jié)構(gòu),使用時(shí)一般接排阻拉高電平。4.2鍵盤(pán)設(shè)計(jì)

P0.0/AD0373635NNHiNHt34P0.2/AD2F,0.3^AD3F^.LU'ASP2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/FXDP3.1XTXDP3.2.nMT0RP2a5P0.0/AD0373635NNHiNHt34P0.2/AD2F,0.3^AD3F^.LU'ASP2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/FXDP3.1XTXDP3.2.nMT0RP2a5H■?_L?,SW:1SW1°SW12SW-SPS-ciTEXTt-.SW-SPS1乜丁后立Ta?SW-SPST-TE>::T-該電路中采用獨(dú)立鍵盤(pán)工作方式,共設(shè)有十二個(gè)按鍵,分別是3,6,9,12,15,18,21,24,27布局選擇功能,鍵盤(pán)鎖功能以及步進(jìn)電機(jī)轉(zhuǎn)動(dòng)方向選擇功能。其中有程序決定起作用。4.3步進(jìn)電機(jī)步進(jìn)電機(jī)的驅(qū)動(dòng)采用ULN2003,接到單片機(jī)的P1.0~P1.3,如圖步進(jìn)電機(jī)驅(qū)動(dòng)和單片機(jī)連線圖。

4.4正反轉(zhuǎn)顯示燈和報(bào)警燈鈴4.5溫度傳感器模塊5.軟件設(shè)計(jì)主程序流程圖所示如下:判斷電機(jī)是否溫度是鎖鍵盤(pán)電機(jī)高溫?否盤(pán)否報(bào)警,紅燈點(diǎn)亮,步進(jìn)電機(jī)停轉(zhuǎn)是開(kāi)始初始化程序步進(jìn)電機(jī)運(yùn)轉(zhuǎn)+等待開(kāi)鍵確定輸入步調(diào)試Proteus仿真軟件Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。調(diào)試步驟及方法本電路經(jīng)調(diào)試符合題目要求,各項(xiàng)技術(shù)指標(biāo)均達(dá)到設(shè)計(jì)的目的。具體操作控制方法如下:1、當(dāng)電機(jī)按下啟動(dòng)按鈕時(shí),步進(jìn)電機(jī)根據(jù)制定默認(rèn)狀態(tài)開(kāi)始轉(zhuǎn)動(dòng);2、當(dāng)電機(jī)按下停止按鈕時(shí),步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng);3、當(dāng)電機(jī)按下正轉(zhuǎn)按鈕時(shí),步進(jìn)電機(jī)正轉(zhuǎn);4、當(dāng)電機(jī)按下反轉(zhuǎn)按鈕時(shí),步進(jìn)電機(jī)反轉(zhuǎn);5、當(dāng)電機(jī)按下步數(shù)按鈕時(shí),步進(jìn)電機(jī)根據(jù)步數(shù)實(shí)現(xiàn)轉(zhuǎn)動(dòng)7.技術(shù)小結(jié)為期一周的單片機(jī)課程設(shè)計(jì)在忙碌中已接近尾聲,經(jīng)過(guò)這么多天的努力,終于完成了這次課程設(shè)計(jì)基本設(shè)計(jì)要求,在充實(shí)中也學(xué)到了很多知識(shí),是真正將所學(xué)知識(shí)運(yùn)用于實(shí)踐中的一次很好的體驗(yàn),使人受益匪淺。由于此次控制要求不是很高,選用51系列80C51。接下來(lái)就是硬件接口分配問(wèn)題和如何去驅(qū)動(dòng)電機(jī)。對(duì)于步進(jìn)電機(jī)之前沒(méi)有什么接觸,所以我上網(wǎng)查了許多關(guān)于步進(jìn)電機(jī)的資料,知道了其基本工作原理以及怎么去實(shí)現(xiàn)其控制運(yùn)轉(zhuǎn)和驅(qū)動(dòng)。接下來(lái)的主要問(wèn)題就是如何編程去實(shí)現(xiàn)控制它了,這次程序的編寫(xiě)和調(diào)試對(duì)我來(lái)說(shuō)是個(gè)不小的挑戰(zhàn),因?yàn)橹爸痪帉?xiě)過(guò)一些簡(jiǎn)短的小程序,對(duì)較大的程序總體性方面還不能很好的把握。經(jīng)過(guò)反復(fù)的嘗試和調(diào)試,用發(fā)現(xiàn)一個(gè)問(wèn)題,解決一個(gè)問(wèn)題的方法,還參考了一些別人的經(jīng)驗(yàn)方法,完成了程序的編寫(xiě)。這對(duì)我以后編寫(xiě)程序是一次很好的經(jīng)驗(yàn)積累。通過(guò)這次課程設(shè)計(jì),我也了解到了自己的不足,以前自己學(xué)習(xí)單片機(jī)的時(shí)候,往往只去看懂別人寫(xiě)的程序,以為看懂了自己就知道寫(xiě)了,但事實(shí)并不是這樣,雖然這次課程設(shè)計(jì)程序是完成了,但棘手的地方很多,編程并不像以前認(rèn)為的簡(jiǎn)單。所以在以后的學(xué)習(xí)中,不能手高眼低,一定要腳踏實(shí)地,一步步地走,自己動(dòng)手去做,這樣才能將知識(shí)真正學(xué)到手。這次課程設(shè)計(jì)能得以順利完成,還要感謝毛老師的指導(dǎo),感受很深,是一次很好的經(jīng)驗(yàn)積累和設(shè)計(jì)經(jīng)歷。8參考文獻(xiàn)1.張毅剛編著,《單片機(jī)原理及應(yīng)用》高等教育出版社,2010。2.樓然苗等編著,《51系列單片機(jī)設(shè)計(jì)實(shí)例》北京航空航天大學(xué)出版社,2006。.汪道輝編著,《單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)踐》電子工業(yè)出版社2005。.譚浩強(qiáng)編著,《C程序設(shè)計(jì)(第三版)》清華大學(xué)出版社2005。5.王港元編著,《電工電子實(shí)踐指導(dǎo)》江西科學(xué)技術(shù)出版社2008。.周潤(rùn)景編著,《PROTEUS入門(mén)實(shí)用教程》機(jī)械工業(yè)出版社2011。.林立編著,《單片機(jī)原理及應(yīng)用:基于Proteus和KeilC》電子工業(yè)出版社2011。8.閻石編著,《數(shù)字電子技術(shù)基礎(chǔ)》高等教育出版社,2006。

9附錄實(shí)驗(yàn)器材名稱型號(hào)數(shù)量備注單片機(jī)AT89C511單片機(jī)底座1微動(dòng)開(kāi)關(guān)9自鎖開(kāi)關(guān)3發(fā)光二級(jí)管LED3驅(qū)動(dòng)芯片ULN2003A1步進(jìn)電機(jī)28BYJ421電源1溫度傳感器18B201蜂鳴器1三極管NPN1晶振12MHz1電容各種大小若干電阻各種大小若干排阻1仿真圖vcc"DC電RMPACMHEAT,■SW-10U2■a卜工T昌L1m口由fTiP0.1W1F02#心2t3ZTAL2P0.5/AJM,工R5TFiJOiWF23JA11.Li—ALEF?qmvcc"DC電RMPACMHEAT,■SW-10U2■a卜工T昌L1m口由fTiP0.1W1F02#心2t3ZTAL2P0.5/AJM,工R5TFiJOiWF23JA11.Li—ALEF?qm上而F2j6JA13F2屈A14P2.7ififi.15F'lJQP1.1Fl2F13R3JWAXDP3.in.xJDFS.LiiiiTaP33而T.魚(yú)_3聲PI.4F'1.i5FlflP14/TUPS.iTlP3Qil'iFP37iFDr1■正良5W-3PSTJIGND??O4.1h?EJ->UUl2l]0a^uik而$..網(wǎng)購(gòu).mm...R1..仙H-iWF-f_SiXSPSlT.9W11■5用GFG.T;TEtT?.SW-124B5BTB1C2C3E4匚5CSC?C上..11伯SPEAKERHPN.4Tm...LSI程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineledP0//數(shù)碼管段選#definehahaP2sbitsi=P01;sbits2=P012;//按鍵定義,si正轉(zhuǎn),s2反轉(zhuǎn)sbits3=P013;//按鍵定義,停止sbitspeaker=P0^4;sbitLED1=P0"5;sbitLED2=P0"6;

sbitLED3=P07;sbita=P2八3;TOC\o"1-5"\h\zsbitb=P2"2;sbitc=P2」;sbitd=P2八0;//脈沖信號(hào)輸入端定義sbit_key3=P1^0;//3步sbit_key6=P11;//6步sbit_key9=P1^2;//9步sbit_key12=P1^3;//12步sbit_key12=P1^3;//12步sbit_key15=P1^4;〃15步sbit_key18=P1^5;//18步sbit_key18=P1^5;//18步TOC\o"1-5"\h\zsbit_key21=P1"6;〃21步sbit_key24=P1“7;〃24步sbit_key27=P0"0;〃27步unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值0~9unsignedcharcodedofly_WeiMa口={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsignedcharTempData[8];//存儲(chǔ)顯示值的全局變量/*DS18B20端口定義*/sbitDQ=P2"7;//ds18b20端口bitReadTempFlag;//定義讀時(shí)間標(biāo)志/*函數(shù)聲明*/unsignedintReadTemperature(void);bitInit_DS18B20(void);unsignedcharReadOneChar(void);voidWriteOneChar(unsignedchardat);voidDelayUs2x(unsignedchart);voidDelayMs(unsignedchart);void_18b20(void);//DS18B20定義/**/ucharcodedisplay[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共陽(yáng)數(shù)碼管驅(qū)動(dòng)信號(hào)09,不顯示ucharcodetime_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc},//9.71ms{0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};ucharnuml=0;〃控制取勵(lì)磁信號(hào)變量ucharnum2=8;ucharbushu=0;uchark=1;〃加減檔位控制,1為最小檔bitflag1=0;〃初始正轉(zhuǎn),正反轉(zhuǎn)標(biāo)志ucharbuf[4]={0,10,10,1};〃數(shù)碼管顯示緩存,正轉(zhuǎn),不顯示,不顯示,顯示1檔位,高一一低(不能去掉)voidkey(void);voidkeyscan(void);〃================================定時(shí)器0/1初始化函數(shù)================================voidT0_T1_init(){TMOD=0x11;//定時(shí)器0/1均工作于方式1,16位計(jì)時(shí)方式TH0=(65536-4000)/256;TL0=(65536-4000)%256;//定時(shí)器0,定時(shí)4ms用于數(shù)碼管掃描顯示TH1=time_counter[k-1][0];TL1=time_counter[k-1][1];//定時(shí)器1,定時(shí)10ms用于步進(jìn)電機(jī)轉(zhuǎn)速控制TR0=1;TR1=1;ET0=1;ET1=1;//開(kāi)定時(shí)器中斷EA=1;//開(kāi)總中斷)//================================ms級(jí)延時(shí)函數(shù)=======================================voiddelay1m(uintx)(uinti,j;for(i=0;i<x;i++)〃連數(shù)x次,約xmsfor(j=0;j<120;j++);〃數(shù)120次,約1ms)〃================================主函數(shù)=============================================voidmain()(T0_T1_init();Init_DS18B20();//buf[1]=10;//不顯示LED3=1;speaker=1;while(1)(if(s1==0)(delay1m(3);if(s1==0)(flag1=0;//正轉(zhuǎn)haha=0x00;//停止}while(!s1);}if(s2==0){delay1m(3);if(s2==0){flag1=1;//反轉(zhuǎn)haha=0x00;//停止}while(!s2);}if(s3==0){delay1m(3);if(s3==0){EA=0;LED2=1;LED1=1;LED3=1;speaker=1;else(EA=1;)key();_18b20();))〃==================================定時(shí)器1中斷函數(shù),用于脈沖頻率控制=====================================voidtime1_interrupt()interrupt3(staticnum1=0;staticnum2=0;ucharm=0;TH1=time_counter[k-1][0];TL1=time_counter[k-1][1];//定時(shí)器1,定時(shí)1用于步進(jìn)電機(jī)轉(zhuǎn)速控制m=bushu;for(;m>0;m--){if(flag1==0)//正轉(zhuǎn)(LED3=1;speaker=1;LED1=0;

LED2=LED2=1;switch(num1){case0:a=1;b=0;c=0;d=0;break;case1:a=1;b=1;c=0;d=0;break;case2:a=0;b=1;c=0;d=0;break;case3:a=0;b=1;c=1;d=0;break;case4:a=0;b=0;c=1;d=0;break;case5:a=0;b=0;c=1;d=1;break;case6:a=0;b=0;c=0;d=1;break;case7:a=1;b=0;c=0;d=1;break;}num1++;if(num1==8)num1=0;}else//反轉(zhuǎn){LED3=1;speaker=1;LED1=1;LED2=0;switch(num2){case0:a=1;b=0;c=0;d=1;break;case1:a=0;b=0;c=0;d=1;break;case2:a=0;b=0;c=1;d=1;break;case3:a=0;b=0;c=1;d=0;break;case4:a=0;b=1;c=1;d=0;break;case5:a=0;b=1;c=0;d=0;break;case6:a=1;b=1;c=0;d=0;break;case7:a=1;b=0;c=0;d=0;break;}num2++;if(num2==8)num2=0;}}}voidkey(){if(s3==1)//這里開(kāi)關(guān)閉合,表示鍵盤(pán)鎖打開(kāi)。如果開(kāi)關(guān)不閉合,表示上鎖,電機(jī)不轉(zhuǎn){delay1m(100);if(s3==1){if(_key27==0)bushu=27;//步數(shù)高的優(yōu)先,即多個(gè)步數(shù)開(kāi)關(guān)同時(shí)打上,運(yùn)行高步數(shù)elseif(_key24==0)bushu=24;elseif(_key21==0)bushu=21;elseif(_key18==0)bushu=18;elseif(_key15==0)bushu=15;elseif(_key12==0)bushu=12;elseif(_key9==0)bushu=9;elseif(_key6==0)bushu=6;elseif(_key3==0)bushu=3;}}}〃以下為18B20程序/*18b20初始化*/bitInit_DS18B20(void){bitdat=0;DQ=1;//DQ復(fù)位DelayUs2x(5);//稍做延時(shí)DQ=0;〃單片機(jī)將DQ拉低DelayUs2x(200);〃精確延時(shí)大于480us小于960usDelayUs2x(200);DQ=1;//拉高總線DelayUs2x(50);//15~60us后接收60-240us的存在脈沖dat=DQ;〃如果x=0則初始化成功,x=1則初始化失敗DelayUs2x(25);//稍作延時(shí)返回returndat;/*讀取一個(gè)字節(jié)*/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if(DQ)dat|=0x80;DelayUs2x(25);}return(dat);}/*寫(xiě)入一個(gè)字節(jié)*/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;DelayUs2x(25);DQ=1;dat>>=1;}DelayUs2x(25);}/*讀取溫度*/unsignedintReadTemperature(void){unsignedchara=0;unsignedintb=0;unsignedintt=0;Init_DS18B20();WriteOneChar(0xCC);//跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換DelayMs(10);Init_DS18B20();WriteOneChar(0xCC);//跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個(gè)寄存器)前兩個(gè)就是溫度a=ReadOneChar();//低位b=ReadOneChar();//高位b<<=8;t=a+b;return(t);}/*uS延時(shí)函數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論