版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
壬建工商大學(xué)
單片機(jī)實(shí)驗(yàn)
課程名稱(chēng):步進(jìn)電機(jī)表實(shí)驗(yàn)
授課班級(jí):2023級(jí)自動(dòng)化三班
任課教師:文遠(yuǎn)落
計(jì)劃學(xué)時(shí):學(xué)時(shí)------------------
實(shí)驗(yàn)成員:張?zhí)僖w福亮王聰慧
秦菱蔚梁欽鄭歡
目錄
摘要.......................................................
第一章概述................................................
1.1實(shí)驗(yàn)?zāi)康?......................................................
1.2實(shí)驗(yàn)規(guī)定.......................................................
1.3步進(jìn)電機(jī)的介紹...................................................
1.4研究思緒......................................................
第二章硬件設(shè)計(jì)............................................
2.151單片機(jī)介紹...................................................
2.2UIN2023A.........................................................................................................................
2.3ZLG7290.............................................................................................................................
2.3.17290工作原理...............................................
2.3.27290引腳圖...................................................
第三章相關(guān)圖像................................................
3.1總電路圖....................................................
3.27290控制數(shù)碼管..................................................
3.3程序流程圖.......................................................
3.3.1控制框圖....................................................
3.3.2流程圖.....................................................
第四章調(diào)試.....................................................
第五章心得體會(huì).................................................
附錄【一】系統(tǒng)程序.............................................
附錄【二】參考文獻(xiàn)............................................../摘
要】:
步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€(xiàn)位移的開(kāi)環(huán)控制元步進(jìn)電機(jī)件。在非超載的情
況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)
步進(jìn)驅(qū)動(dòng)器接受到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,稱(chēng)為
“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)營(yíng)的??梢酝ㄟ^(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移
量,從而達(dá)成準(zhǔn)擬定位的目的;同時(shí)可以通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,
從而達(dá)成調(diào)速的目的。
本課程設(shè)計(jì)的內(nèi)容是運(yùn)用51單片機(jī),達(dá)成控制步進(jìn)電機(jī)的啟動(dòng)、停止、正轉(zhuǎn)、反轉(zhuǎn)、點(diǎn)動(dòng)
和狀態(tài)顯示的目的,使步進(jìn)電機(jī)控制更加靈活。步進(jìn)電機(jī)驅(qū)動(dòng)芯片采用UIN2023,具有大電流、
高電壓,外電路簡(jiǎn)樸等優(yōu)點(diǎn)。運(yùn)用四位數(shù)碼管(ZLG7290)增設(shè)電機(jī)狀態(tài)顯示功能,各項(xiàng)數(shù)
據(jù)更直觀。實(shí)測(cè)結(jié)果表白,該控制系統(tǒng)達(dá)成了設(shè)計(jì)的規(guī)定。
【關(guān)鍵詞】:?jiǎn)纹瑱C(jī)步進(jìn)電機(jī)UIN2023ZLG7290數(shù)碼管
第一章概述
1.1實(shí)驗(yàn)?zāi)康?/p>
1、單片機(jī)對(duì)步進(jìn)電機(jī)控制可以熟悉步進(jìn)電機(jī)的原理和應(yīng)用。
2、單片機(jī)對(duì)步進(jìn)電機(jī)控制可以熟悉單哦就功能已經(jīng)原理、構(gòu)造。
3、通過(guò)這次實(shí)驗(yàn)?zāi)苓\(yùn)用所學(xué)基本理論知識(shí)、專(zhuān)業(yè)技能來(lái)對(duì)問(wèn)題進(jìn)行分析,思考,解決,提高
對(duì)專(zhuān)業(yè)知識(shí)的掌握以及鍛煉邏輯思維能力。
1.2實(shí)驗(yàn)規(guī)定
實(shí)現(xiàn)步進(jìn)電機(jī)按規(guī)定的速度正轉(zhuǎn)、反轉(zhuǎn),轉(zhuǎn)過(guò)指定的角度,要有點(diǎn)動(dòng)功能。所有命令通過(guò)鍵
盤(pán)輸入,步進(jìn)電機(jī)在運(yùn)營(yíng)過(guò)程中要有狀態(tài)和數(shù)據(jù)指示。
1.3步進(jìn)電機(jī)的介紹
步進(jìn)電機(jī)是一種感應(yīng)電機(jī),它的工作原理是運(yùn)用電子電路,將直流電變成分時(shí)供電的,多相
時(shí)序控制電流,用這種電流為步進(jìn)電機(jī)供電,步進(jìn)電機(jī)才干正常工作,驅(qū)動(dòng)器就是為步進(jìn)電機(jī)
分時(shí)供電的,多相時(shí)序控制器
雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能像普通的直流電機(jī),交流電機(jī)在常規(guī)
下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。因此用好步
進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專(zhuān)業(yè)知識(shí)。
步進(jìn)電機(jī)作為執(zhí)行元件,是機(jī)電一體化的關(guān)鍵產(chǎn)品之一,廣泛應(yīng)用在各種自動(dòng)化控制
系統(tǒng)中。隨著微電子和計(jì)算機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,在各個(gè)國(guó)民經(jīng)濟(jì)領(lǐng)域
都有應(yīng)用。
步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點(diǎn)講:當(dāng)步進(jìn)驅(qū)動(dòng)器接受到
一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(即步進(jìn)角)。您可以通
過(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,從而達(dá)成準(zhǔn)擬定位的目的;同時(shí)您可以通過(guò)控制脈沖頻率
來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)成調(diào)速的目的。
圖1步進(jìn)電機(jī)剖面圖
1.4研究思緒
1、了解單片機(jī)自身內(nèi)部應(yīng)有的資源,如:中斷、定期器、計(jì)數(shù)器、1\0的使用。
2、了解步進(jìn)電機(jī)的工作原理和作用。
3、根據(jù)步進(jìn)電機(jī)的原理,分析并分派單片機(jī)內(nèi)部資源,并根據(jù)單片機(jī)的資源,來(lái)實(shí)現(xiàn)硬件電路的
設(shè)計(jì)以及軟件程序的編寫(xiě)。
4.、對(duì)于自己不熟悉的東西,查閱資料。
5、在設(shè)計(jì)好單片機(jī)步進(jìn)電機(jī)時(shí),要學(xué)會(huì)分析電路中出現(xiàn)的問(wèn)題,并好好總結(jié)。
第二章硬件設(shè)計(jì)
2.1單片機(jī)的簡(jiǎn)介
單片機(jī)是續(xù)計(jì)算機(jī)出現(xiàn)之后,并隨著電器時(shí)代大到來(lái),人們借助電氣技術(shù)想實(shí)現(xiàn)了自動(dòng)控
制機(jī)械,自動(dòng)生產(chǎn)線(xiàn)甚至自動(dòng)工廠,但依靠計(jì)算機(jī)去完畢每一個(gè)自動(dòng)的過(guò)程,反而有些復(fù)雜以
及資源的亂費(fèi);所以用更方便,更微小,更智能的微型解決器來(lái)解決工業(yè)現(xiàn)場(chǎng)的測(cè)控領(lǐng)域,控
制領(lǐng)域,有著重大意義;更何況目前,彩電,冰箱,空調(diào),錄像機(jī),VCD,遙控器,游戲機(jī),電飯煲等
無(wú)處不見(jiàn)單片機(jī)的影子,所以單片機(jī)將會(huì)更滿(mǎn)足我們的生活,會(huì)更取代大型的計(jì)算機(jī)。
現(xiàn)在單片機(jī)重要按用途,大體上可分為兩大類(lèi):1—通用型單片機(jī)2-專(zhuān)用型單片機(jī)
專(zhuān)用型單片機(jī)是指用途比較專(zhuān)一,出廠時(shí)程序已經(jīng)一次性固化好,不能再修該的單片機(jī)。
例如電子表里的單片機(jī)就是其中的一種。其生產(chǎn)成本很低。A通用型單片機(jī)的用途很
廣泛,使用不同的接口電路及編制不同的應(yīng)用程序就可完畢不同的功能。小到家用電器儀
器儀表,大到機(jī)器設(shè)備和整套生產(chǎn)線(xiàn)都可用單片機(jī)來(lái)實(shí)現(xiàn)自動(dòng)化控制。
2.2UIN2023
本文選用ULN2023構(gòu)成步進(jìn)電機(jī)的驅(qū)動(dòng)電路,下面但見(jiàn)介紹下ULN2023的結(jié)構(gòu)和特
占?
八、、?
ULN2023是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。
該電路的特點(diǎn)如下:
ULN2023的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL
和CMOS電路直接相連,可以直接解決原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)解決的數(shù)據(jù)。
ULN2023工作電壓高,工作電流大,灌電流可達(dá)500mA,并且可以在關(guān)態(tài)時(shí)承受50V的
電壓,輸出還可以在高負(fù)載電流并行運(yùn)營(yíng)。
ULN2023方框圖如圖2所示。
9
圖2ULN2023內(nèi)部方框圖
運(yùn)用ULN2023以及AT89c54RD設(shè)計(jì)的步進(jìn)電機(jī)驅(qū)動(dòng)電路如圖3所示。
2.3ZLG7290
2.3.17290工作原理
ZLG7290的核心是一塊ZLG7290B芯片,它采用12c接口,能直接驅(qū)動(dòng)8位共陰式數(shù)碼
管,同時(shí)可掃描管理多達(dá)64只按鍵,實(shí)現(xiàn)人機(jī)對(duì)話(huà)的功能資源十分豐富。除具有自動(dòng)消除抖動(dòng)
功能外,它還具有段閃爍、段點(diǎn)亮、段熄滅、功能鍵、連擊鍵計(jì)數(shù)等強(qiáng)大功能,并可提供10種
數(shù)字和21種字母的譯碼顯示功能,用戶(hù)可以直接向顯示緩存寫(xiě)入顯示數(shù)據(jù),并且無(wú)需外接元
件即可直接驅(qū)動(dòng)數(shù)碼管,還可擴(kuò)展驅(qū)動(dòng)電壓和電流。此外,ZLG7290B的電路簡(jiǎn)樸,使用也很
方便。用戶(hù)按下某個(gè)鍵時(shí),ZLG7290的INT引腳會(huì)產(chǎn)生一個(gè)低電平的中斷請(qǐng)求信號(hào),讀取鍵
值后,中斷信號(hào)就會(huì)自動(dòng)撤消。正常情況下,微控制器只需要判斷INT引腳就可以得到鍵盤(pán)輸
入的信息。微控制器可通過(guò)兩種方式得到用戶(hù)的鍵盤(pán)輸入信息。其一是中斷方式,該方式的優(yōu)
點(diǎn)是抗干擾能力強(qiáng),缺陷是要占用微控制器的一個(gè)外部中斷源。其二是查詢(xún)方式,即通過(guò)不斷查
詢(xún)INT引腳來(lái)判斷是否有鍵按下,該方式可以節(jié)省微控制器的一根1/O口線(xiàn),但是代價(jià)是12C
總線(xiàn)處在頻繁的活動(dòng)狀態(tài),消耗電流多并且不利于抗干擾。
2.3.27290引腳圖
1323
Dig7SegA
1224
Dig6SegB
211
Dig5SegC
222
Dig4SegD
37
Dig3SegE
48
Dig2SegF
59
DiglSegG
610
DigOSegH
2016
SDAVCC
1918
SCLOSC2
17
吩/INT0SC1
GND/RES
ZLG7290
圖37290引腳圖
第三章相關(guān)圖像
3.1總體電路圖
PQDMMJ
?Q3TA”
*□
,0????
raiM?r
g■
M
la
2c
2a三
39D
?8c
g??
“
3.27290控制數(shù)碼管
3.3程序流程圖
3.3.1控制框圖
3.3.2流程圖
ZLG729O庫(kù)函激
第四章調(diào)試
1、按照實(shí)驗(yàn)原理圖連接好電路圖。
2、根據(jù)原理圖編寫(xiě)程序。
3、電路上電,調(diào)試程序,觀測(cè)并控制電機(jī)使其按照預(yù)期的行為工作。
4、當(dāng)電機(jī)可以通過(guò)按鍵控制其正轉(zhuǎn)加減速、反轉(zhuǎn)加減速程序、點(diǎn)動(dòng)后,調(diào)試結(jié)束。
5、優(yōu)化程序,整理實(shí)驗(yàn)結(jié)果。
總的來(lái)說(shuō),過(guò)程比較順利,只是粗心之下,連線(xiàn)出現(xiàn)了錯(cuò)誤,對(duì)于此,我進(jìn)行了深刻
的自我檢討和批評(píng)。在通過(guò)老師的知道后,我們終于實(shí)現(xiàn)了實(shí)驗(yàn)規(guī)定的功能,能實(shí)現(xiàn)正反轉(zhuǎn),快
慢變化及點(diǎn)動(dòng)等。
第五章收獲體會(huì)
一方面是關(guān)于課題的選擇,開(kāi)始是準(zhǔn)備做一個(gè)萬(wàn)年歷,通過(guò)查看資料后發(fā)現(xiàn)計(jì)算機(jī)的過(guò)
程實(shí)現(xiàn)比較的復(fù)雜,而這次的課程設(shè)計(jì)時(shí)間比較短,故放棄了這個(gè)想法。通過(guò)各種篩選,最后決
定做步進(jìn)電機(jī)的相關(guān)設(shè)計(jì),起初看著指導(dǎo)書(shū)上的內(nèi)容覺(jué)得實(shí)現(xiàn)步進(jìn)電機(jī)是比較的簡(jiǎn)樸的,但當(dāng)
我真正開(kāi)始設(shè)計(jì)之后才發(fā)現(xiàn)并沒(méi)有想像中那么的簡(jiǎn)樸。
這學(xué)期的微機(jī)課和單片機(jī)課沒(méi)怎么學(xué)好,故感覺(jué)在做這個(gè)設(shè)計(jì)時(shí)有點(diǎn)困難,比如匯編程
序。后來(lái)決定用c來(lái)編寫(xiě)程序,這樣稍微輕松點(diǎn),在設(shè)計(jì)程序中涉及到了中斷程序的編寫(xiě),發(fā)
現(xiàn)已學(xué)的理論知識(shí)完全用不上來(lái),也許這就是理論脫離時(shí)間的結(jié)果,在期間惡補(bǔ)了單片機(jī)的中
斷知識(shí)及其相應(yīng)的程序編寫(xiě)。
通過(guò)這次課程設(shè)計(jì)實(shí)驗(yàn),我對(duì)步進(jìn)電機(jī)調(diào)速控制系統(tǒng)有了實(shí)際的了解和結(jié)識(shí),提高了動(dòng)手
能力。本次實(shí)驗(yàn)把書(shū)本上、課堂上學(xué)到的知識(shí)靈活地運(yùn)用到實(shí)際的實(shí)物上,感覺(jué)是對(duì)學(xué)以致用
的一種鍛煉和考驗(yàn)提高了用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力,加深和鞏固的對(duì)知識(shí)的理解和掌
握。控制電路、驅(qū)動(dòng)電路、測(cè)速反饋電路、步進(jìn)電機(jī)幾個(gè)模塊的整合,也實(shí)際中提高了自己對(duì)
系統(tǒng)的結(jié)識(shí),有了些整體的概念和思維觀。實(shí)驗(yàn)是團(tuán)隊(duì)合作完畢的,從設(shè)計(jì)電路到設(shè)計(jì)軟件,
然后仿真到做硬件做出符合規(guī)定的控制系統(tǒng),不僅從實(shí)際中鍛煉了動(dòng)手能力并且學(xué)會(huì)了團(tuán)隊(duì)合
作,互相學(xué)習(xí),提高自己。
這次的課程設(shè)計(jì)總的感覺(jué)就是很累,但在不斷的學(xué)習(xí)機(jī)實(shí)踐當(dāng)中學(xué)到了很多東西,知識(shí)的
提高那是最基礎(chǔ)的,中斷,電路工作及相關(guān)的知識(shí)都是得到了提高;然后就是個(gè)人解決問(wèn)題能
力的提高,雖然說(shuō)這次的設(shè)計(jì)不算一個(gè)大的項(xiàng)目,但也算是小的雛形,課題的選擇,前期的準(zhǔn)備,
理論的實(shí)踐,知識(shí)的提高,解決實(shí)際問(wèn)題及后期的總結(jié)歸納。
付出去收獲往往是成正比的,這次的課程設(shè)計(jì)中得到了充足的體現(xiàn)。
總的來(lái)說(shuō),這次設(shè)計(jì)的步進(jìn)電機(jī)控制電路還是比較成功的在設(shè)計(jì)中碰到了很多問(wèn)題,
最后在自己的思考下,宿舍大家一起通過(guò)劇烈的探討下,終于游逆而解,有點(diǎn)小小的成就感,終
于覺(jué)得平時(shí)所學(xué)的知識(shí)有了實(shí)用的價(jià)值,達(dá)成了理論與實(shí)際相結(jié)合的目的。不僅學(xué)到了不少知
識(shí),并且鍛煉了自己的能力,使自己對(duì)以后的路有了更加清楚的結(jié)識(shí)。同時(shí),對(duì)未來(lái)有了更多的
信心。最后,對(duì)文老師表達(dá)忠心的感謝,老師,你辛勞了。
《附錄【一】系統(tǒng)程序
主程序:
/***************************************************************
*********
基于51單片機(jī)的異步電機(jī)控制程序
**************************************************************
**********/
#include<reg51.h>
#include"VIIC_C51.Hn
#includeHZLG7290,h"
#defineucharunsignedchar
#defineuintunsignedint
/*四相步進(jìn)電動(dòng)機(jī)單、雙八拍運(yùn)營(yíng)狀態(tài)表
111111100?FEHA
111111OOOFCHoAB
111111010。FDHB
111110010F9HoBC
11111011?0FBH?C
11110011?0F3HCD
111101110F7HD
11110110OF6H0DA
*/
sbitPA=P1A0;〃P1控制電機(jī)
sbitPB=P1Al;
sbitPC=P「2;
sbitPD=PlA3;
sbitRST=P1A4;
sbitKEY_INT=P3-2;〃看是否更改為P3A2
sbitSCL=P1A6;
sbitSDA=P1A7;
ucharcodestep_tab[9]={0xff,0xfe,0xfc,0xfd,Oxf9,0xfb,0xf3,0xf7,0xf6};
uintcodede1aytime[4]={60,40,20,10};//延時(shí)時(shí)間列表
〃變量的定義
uchardirection;?〃狀態(tài)變量0-正向」一反向
ucharcontinuous;?〃狀態(tài)變量。。一指定步數(shù)運(yùn)營(yíng),1—連續(xù)速度運(yùn)營(yíng)
ucharrun;。//狀態(tài)變量0—電機(jī)未運(yùn)營(yíng),1-電機(jī)運(yùn)營(yíng)中
ucharspeed_num;//連續(xù)速度運(yùn)營(yíng)標(biāo)號(hào)1—4
ucharcur_step;〃八拍運(yùn)營(yíng)狀態(tài)
ucharstep_num;//指定運(yùn)營(yíng)的步數(shù),范圍0-99
〃鍵值定義
#defineKey_dir1〃方向鍵
#defineKey_Run2?!▎?dòng)鍵
#defineKey_stop3。//停止鍵
#defineKet_Step4//單步運(yùn)營(yíng)鍵
#defineKey_step_add5〃步數(shù)加鍵
#defineKey_step_sub6“/步數(shù)減鍵
#defineKey_speed_add7。//速度加鍵
#defineKey_speed_sub8〃速度減鍵
#defineKey_Con_Set9?!ㄟB續(xù)運(yùn)營(yíng)與指定步數(shù)運(yùn)營(yíng)切換鍵。
//定義鍵盤(pán)中斷標(biāo)志,FlagINT0=1表達(dá)有鍵按下
volatilebitF1agINTO=0;
voidKeyProsess(ucharkey);
/*************************************************************
***********
函數(shù):INT0_SVC()
功能:ZLG7290鍵盤(pán)中斷服務(wù)程序
說(shuō)明:中斷觸發(fā)方式選擇負(fù)邊沿觸發(fā),因此不必等待中斷請(qǐng)求信號(hào)恢復(fù)為高電平
***************************************************************
voidINT0_SVC()interrupt0
unsignedcharKeyValue;
〃讀取鍵值
KeyValue=ZLG7290_GetKey();
?!ń鉀Q鍵值
?KeyProsess(KeyValue);
}
/**************************************************************
**********
函數(shù):Delay()
功能:定期器實(shí)現(xiàn)延時(shí)tms
**************************************************************
**********/
voidDelay(unsignedintt)
{
do
{。//TH=64536
?TH1=OxFC;
8TL1=Ox18;
TR1=1;//啟動(dòng)定期器T1并等待中斷
。whi1e(!TF1);
ooTFl=0;o//中斷請(qǐng)求標(biāo)致清零
。TRI=0;//停止T1定期器
}while(—t);
/***************************************************************
*********
函數(shù):DispDir()
功能:顯示方向子程序
說(shuō)明:dat0正向,1反向
******************************************************
******************/
voidDispDir(uchardat)
(
if(dat==0)
°{
ZLG7290_SendCmd(0x60+7,0xOf);//"F"表達(dá)正轉(zhuǎn)
?e1se
°(
ZLG7290_SendCmd(0x60+7,0x0b);//"B"表達(dá)反轉(zhuǎn)
}
I*****************************************************************
*******
函數(shù):DispSpeed()
功能:顯示速度號(hào)子程序
說(shuō)明:dat1~4。代表四種不同的速度
********************************************************************
****/
voidDispSpeed(uchardat)
{
?ZLG7290_SendCmd(0x60+5,dat);
)
/*************************************************************
***********
函數(shù):DispStepNum()
功能:顯示運(yùn)營(yíng)步數(shù)號(hào)程序
說(shuō)明:間接實(shí)現(xiàn)轉(zhuǎn)過(guò)指定角度=步距角*步數(shù)
*************************************************************
***********/
voidDispStepNum(uchardat)
(
unsignedchard;
d=dat/10;
oZLG7290_SendCmd(Ox60+l,d);
。d=dat—d*10;
ZLG7290_SendCmd(0x60+0,d);
)
/***********************************************************
*************
函數(shù):DispContinuous()
功能:顯示運(yùn)營(yíng)狀態(tài),連續(xù)還是指定步數(shù)
說(shuō)明:0一指定步數(shù)運(yùn)營(yíng),1一連續(xù)速度運(yùn)營(yíng)
*************************************************************
***********/
voidDispContinuous(uchardat)
(
if(dat==0)
(
ZLG7290_SendCmd(0x60+3,OxOd);〃d表達(dá)指定步數(shù)運(yùn)營(yíng)狀態(tài)
°)
else
6(
。ZLG7290_SendCmd(0x60+3,0xOc);//'C'表達(dá)連續(xù)速度運(yùn)營(yíng)
}
)
/*********************************************************************
***
函數(shù):OnStep()
功能:實(shí)現(xiàn)單步運(yùn)營(yíng)
******************************************************************
******/
voidOneStep()
(
if(direction==0)
{〃正向
8if(cur_step==8)
00{
o。cur_step=1;
}else
6{
ocur_step++;
°}
o?P1=step_tab[cur_step];//輸出
。}
else
e(
?if(cur_step<=1)
6{
?<>cur_step=8;
}else
(
oocur_step-
?P1=step_tab[cur_step];〃輸出
)
)
/***********************************************************
****************
函數(shù):OnContinue()
功能:連續(xù)運(yùn)營(yíng)
*************************************************************
**************/
voidOnContinue()
(
if(continuous!=0)
。{//連續(xù)運(yùn)營(yíng)
gwhi1e(run!=0)
0(
。?OneStep();
。。Delay(delaytime[speed_num-1]);//延遲目的改變轉(zhuǎn)速
。}
)
eIse
{//指定步數(shù)運(yùn)營(yíng)
?if(step_num!=0)
0{
MDneStep();
Delay(50);//50ms延遲
8step—num—;
。DispStepNum(step—num);〃更新顯示步數(shù)即顯示剩下沒(méi)有執(zhí)行的步數(shù)
。Mf(run==0)return;〃若停止鍵按下,則停止
)
oeIse
grun=0;//停止
return;
}
}
/*************************************************************
***************
函數(shù):KeyProsess()
功能:鍵值解決程序
********************************************************
voidKeyProsess(ucharkey)
{
switch(key)
(
?caseKey_dir。:。//方向鍵
gif(run==0)
。{
“f(direction==0)
3direction=1;
。else
gdirection=0;
sDispDir(direction);
)
^break;
ocaseKey_Run"http://啟動(dòng)鍵
f(run==0)
?!眜n=1;
。}
。break;
ocaseKey_stop:〃停止鍵
if(run!=0)
°{
run=0;
)
。break;
CaseKet_Step://單步運(yùn)營(yíng)鍵實(shí)現(xiàn)點(diǎn)動(dòng)功能
“f(run=0)
grim=1;
。OneStep();
。run=0;
0)
break;
caseKey_step_add:〃步數(shù)加鍵。n=(步距角*60)/(360*t*0.001)單位r/min
>if(run==0)
(
=>if(step_num==99)
00
step_num=0;
}eIse
0
88Step_num++;
}
。oDispStepNum(step_num);
°}
obreak;
℃aseKey_step_sub:。//步數(shù)減鍵
。if(run==0)
。{
if(step_num==0)
?step_num=99;
}eIse
°{
g<>step_num—;
6)
sDispStepNum(step_num);
)
?break;
ocaseKey_speed_add:“/速度力口鍵
if(run=0)
if(speed_num4)
8speed_num=1;
8。}e1se
6{
。speed_num++;
000}
oeDispSpeed(speed_num);
00}
break;
。caseKey_speed_sub://速度減鍵
。if(run==0)
00{
if(speed_num==1)
06{
?speed_num=4;
g}else
8{
speed_num—;
)
o“DispSpeed(speed_num);
)
。。break;
℃aseKey_Con_Set。://連續(xù)運(yùn)營(yíng)與指定步數(shù)運(yùn)營(yíng)切換鍵。
Xf(run==0)
if(continuous==0)
0001
。continuous=1;
}else
0001
8continuous=0;
00}
。。DispContinuous(continuous);
)
break;
。default:
。break;
)
)
/******************************************************************
****************
函數(shù):SystemInit()
功能:系統(tǒng)初始化
**********************************************************
************************/
voidSystemInit()
“//初始化單片機(jī)
?TM0D=Oxll;//定期器設(shè)立,T0,T1方式1:16位定期器
?Delay(300);“/延時(shí)300ms等待ZLG7290復(fù)位完畢
EA=0;
ITO1;//INTO,負(fù)邊沿觸發(fā)中斷
?EXOh//允許外部中斷INTO
FlagINTO=0;
?EA=1;
。//初始化步進(jìn)電機(jī)控制器
direction=0;〃狀態(tài)變量0。-正向,1-反向
continuous=0;〃狀態(tài)變量0■指定步數(shù)運(yùn)營(yíng)」一連續(xù)速度運(yùn)營(yíng)
”un=1;//,狀態(tài)變量0。-電機(jī)未運(yùn)營(yíng),1—電機(jī)運(yùn)營(yíng)中
ospeed_num=1;<>//連續(xù)速度運(yùn)營(yíng)標(biāo)號(hào)1-4
cur_step=0;//八拍運(yùn)營(yíng)狀態(tài)
?step_num=0;。//。指定運(yùn)營(yíng)的步數(shù),范圍0-99
DispContinuous(continuous);
DispStepNum(step_num);
2ispSpeed(speed_num);
DispDir(direction);
P1=step_tab[cur_step];〃輸出
)
/***************************************************************
******************
主函數(shù)main()
**********************************************************
************************/
voidmain(void)
oSystemlnit();//系統(tǒng)初始化
whi1e(l)//循環(huán)檢測(cè)按鍵狀態(tài)
°if(run==1)
°{
。OnContinue();
)
。}
)
庫(kù)函數(shù)程序:
I************************************************************
********
VIIC_C51.C
此程序是12c操作平臺(tái)(主方式的軟件平臺(tái))的底層的C子程序,如發(fā)送數(shù)據(jù)
及接受數(shù)據(jù),應(yīng)答位發(fā)送,并提供了幾個(gè)直接面對(duì)器件的操作函數(shù),它很方便的
與用戶(hù)程序連接并擴(kuò)展.?…
注意:函數(shù)是采用軟件延時(shí)的方法產(chǎn)生SCL脈沖,固對(duì)高晶振頻率要作
一定的修改....(本例是lus機(jī)器周期,即晶振頻率要小于12MHZ)
********************************************************I
#include<reg52.h>/*頭文獻(xiàn)的包含*/
#include<intrins.h>
#defineucharunsignedchar/*宏定義*/
#defineuintunsignedint
#define_Nop()_nop_()/*定義空指令*/
/*常,變量定義區(qū)*/
/*端口位定義*/
sbitSDA=P1A7;/*模擬12C數(shù)據(jù)傳送位*/
sbitSCL=P1A6;/*模擬12c時(shí)鐘控制位*/
/*狀態(tài)標(biāo)志
*/
bitack;/*應(yīng)答標(biāo)志位*/
/************************************************************
*****
起動(dòng)總線(xiàn)函數(shù)
函數(shù)原型:voidStart_I2c();
功能:?jiǎn)?dòng)12c總線(xiàn),即發(fā)送12c起始條件.
****************************************************************
****/
voidStart_I2c()
SDA=1;/*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
_Nop();
SCL=1;
_Nop();/*起始條件建立時(shí)間大于4.7us,延時(shí)*/
_Nop();
_Nop();
_Nop();
_Nop();
SDA=0;/*發(fā)送起始信號(hào)*/
_Nop();/*起始條件鎖定期間大于4us*/
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;/*鉗住I2c總線(xiàn),準(zhǔn)備發(fā)送或接受數(shù)據(jù)*/
_Nop();
_Nop();
)
/***************************************************************
****
結(jié)束總線(xiàn)函數(shù)
函數(shù)原型:voidStop」2c();
功能:結(jié)束12c總線(xiàn),即發(fā)送I2C結(jié)束條件.
********************************************************************/
voidStop_I2c()
(
SDA=0;/*發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*/
_Nop();/*發(fā)送結(jié)束條件的時(shí)鐘信號(hào)*/
SCL=1;/*結(jié)束條件建立時(shí)間大于4口s*/
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1;/*發(fā)送12c總線(xiàn)結(jié)束信號(hào)*/
_Nop();
_Nop();
_Nop();
_Nop();
****************************************************************
***
字節(jié)數(shù)據(jù)傳送函數(shù)
函數(shù)原型:voidSendByte(ucharc);
功能:將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對(duì)
此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0假)
發(fā)送數(shù)據(jù)正常,ack=1;ack=0表達(dá)被控器無(wú)應(yīng)答或損壞。
*********************************************************
***********/
voidSendByte(ucharc)
(
ucharBitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++)/*要傳送的數(shù)據(jù)長(zhǎng)度為8位*/
(
if((c?BitCnt)&0x80)SDA=l;/*判斷發(fā)送位*/
elseSDA=0;
_Nop();
SCL=1;/*置時(shí)鐘線(xiàn)為高,告知被控器開(kāi)始接受數(shù)據(jù)位*/
_Nop();
_Nop();/*保證時(shí)鐘高電平周期大于4口s*/
_Nop();
_Nop();
_Nop();
SCL=0;
}
_Nop();
_Nop();
SDA=1;/*8位發(fā)送完后釋放數(shù)據(jù)線(xiàn),準(zhǔn)備接受應(yīng)答位*/
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA==l)ack=0;
elseack=1;/*判斷是否接受到應(yīng)答信號(hào)*/
SCL=0;
_Nop();
_Nop();
/**************************************************************
*****
字節(jié)數(shù)據(jù)傳送函數(shù)
函數(shù)原型:ucharRcvByte();
功能:用來(lái)接受從器件傳來(lái)的數(shù)據(jù),并判斷總線(xiàn)錯(cuò)誤(不發(fā)應(yīng)答信號(hào)),
發(fā)完后請(qǐng)用應(yīng)答函數(shù)。
**************************************************************
******I0
ucharRcvByte()
(
ucharretc;
ucharBitCnt;
retc=0;
SDA=1;/*置數(shù)據(jù)線(xiàn)為輸入方式*/
for(BitCnt=0;BitCnt<8;BitCnt++)
(
_Nop();
SCL=0;/*置時(shí)鐘線(xiàn)為低,準(zhǔn)備接受數(shù)據(jù)位*/
_Nop();
_Nop();/*時(shí)鐘低電平周期大于4.7ns*/
_Nop();
_Nop();
_Nop();
SCL=1;/*置時(shí)鐘線(xiàn)為高使數(shù)據(jù)線(xiàn)上數(shù)據(jù)有效*/
_Nop();
_Nop();
retc=retC<<1;
if(SDA=l)retc=retc+1;/*讀數(shù)據(jù)位,接受的數(shù)據(jù)位放入retc中*/
_Nop();
_Nop();
SCL=O;
_Nop();
_Nop();
return(retc);
/*********************************************************
***********
應(yīng)答子函數(shù)
原型:voidAck_I2c(bita);
功能:主控器進(jìn)行應(yīng)答信號(hào),(可以是應(yīng)答或非應(yīng)答信號(hào))
***************************************************************
*****/
voidAck_I2c(bita)
(
if(a==0)SDA=0;/*在此發(fā)出應(yīng)答或非應(yīng)答信號(hào)*/
e1seSDA=1;
_Nop();
Nop();
_Nop();
SCL=1;
_Nop();
_Nop();/*時(shí)鐘低電平周期大于4口s*/
_Nop();
_Nop();
_Nop();
SCL=0;/*清時(shí)鐘線(xiàn),鉗住12c總線(xiàn)以便繼續(xù)接受*/
_Nop();
_Nop();
/****************************************************************
***
向無(wú)子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitISendByte(ucharsla,ucahrc);
功能:從啟動(dòng)總線(xiàn)到發(fā)送地址,數(shù)據(jù),結(jié)束總線(xiàn)的全過(guò)程,從器件地址sla.
假如返回1表達(dá)操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線(xiàn)。
********************************************************************
bitISendByte(ucharsia,ucharc)
Start_I2c();/*啟動(dòng)總線(xiàn)*/
SendByte(sla);/*發(fā)送器件地址*/
if(ack==O)return(0);
SendByte(c);/*發(fā)送數(shù)據(jù)*/
if(ack==0)return(0);
Stop_I2c();/*結(jié)束總線(xiàn)*/
return(l);
I*************************************************************
******
向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)
函數(shù)原型:bitISendStr(ucharsla,ucharsuba,ucahr*s,ucharno);
功能:從啟動(dòng)總線(xiàn)到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線(xiàn)的全過(guò)程,從器件
地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個(gè)字節(jié)。
假如返回1表達(dá)操作成功,否則操作有誤。
注意:使用前必須已結(jié)束總線(xiàn)。
****************************************************************
****/
bitISendStr(uchars1a,ucharsuba,uchar*s,ucharno)
uchari;
Start_I2c();/*啟動(dòng)總線(xiàn)列
SendByte(s1a);/*發(fā)送器件地址*/
if(ack==O)return(O);
SendByte(sub
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度變電站電氣安裝工程安全施工與維護(hù)協(xié)議6篇
- 2024新型氣象數(shù)據(jù)采集系統(tǒng)供應(yīng)商采購(gòu)協(xié)議合同3篇
- 2025年度智能安防技術(shù)研發(fā)與應(yīng)用合同2篇
- 二零二五年度安置區(qū)房屋租賃合同續(xù)簽協(xié)議
- 二零二五年加油站知識(shí)產(chǎn)權(quán)保護(hù)與授權(quán)協(xié)議3篇
- 2024熱處理技術(shù)性協(xié)議書(shū)5大全
- 2025版酒店電子門(mén)鎖采購(gòu)合同含智能鎖具與酒店移動(dòng)支付系統(tǒng)對(duì)接3篇
- 2024招投標(biāo)部合同履約監(jiān)管與服務(wù)保障合同3篇
- 2025年度水上樂(lè)園會(huì)員積分兌換合作協(xié)議3篇
- 2025版人才派遣與業(yè)務(wù)外包服務(wù)合同3篇
- 三類(lèi)醫(yī)療器械最新管理制度修訂版(2022)
- 環(huán)境清潔消毒與醫(yī)院感染控制ppt課件
- 2019年血站績(jī)效考核標(biāo)準(zhǔn)
- 盤(pán)扣架支架計(jì)算小程序EXCEL
- 腦卒中康復(fù)治療流程圖
- 標(biāo)準(zhǔn)—上海市工程建設(shè)規(guī)范普通中小學(xué)校建設(shè)標(biāo)準(zhǔn)
- 《Something Just Like This》歌詞
- 人民網(wǎng)刪除稿件(帖文)申請(qǐng)登記表
- 橋梁加固、拼寬流程圖(共9頁(yè))
- 小組合作學(xué)習(xí)學(xué)生評(píng)價(jià)量表
- 新錄用公務(wù)員服務(wù)協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論