久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7886|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)微型三相步進(jìn)電動(dòng)機(jī)控制系統(tǒng)設(shè)計(jì) Proteus仿真+程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:665035 發(fā)表于 2020-11-16 13:32 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
隨著電子科學(xué)技術(shù)的發(fā)展,步進(jìn)電機(jī)的應(yīng)用越來越廣泛。微型步進(jìn)電機(jī)在選擇減速電機(jī)時(shí)要看下驅(qū)動(dòng)IC的角度看步進(jìn)電機(jī),微型步進(jìn)電機(jī)是由微型電機(jī)和步進(jìn)電機(jī)的統(tǒng)稱。步進(jìn)電機(jī)運(yùn)用在多種場(chǎng)合,在現(xiàn)代控制領(lǐng)域使用廣泛,有著重要作用。步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移或線位移的電動(dòng)機(jī)。每輸入一個(gè)脈沖信號(hào),轉(zhuǎn)子就轉(zhuǎn)動(dòng)一個(gè)角度或前進(jìn)一步,其輸出的角位移或線位移與輸入的脈沖數(shù)成正比,轉(zhuǎn)速與脈沖頻率成正比。
本次設(shè)計(jì)中,要求設(shè)計(jì)三相步進(jìn)電機(jī)計(jì)算機(jī)控制系統(tǒng)硬件電路。其中硬件電路由單片機(jī)、接口電路、驅(qū)動(dòng)電路、顯示電路、開關(guān)電路等組成。設(shè)計(jì)單三拍、雙三拍、三相六拍步進(jìn)電機(jī)控制流程設(shè)計(jì);設(shè)計(jì)三相六拍步進(jìn)電機(jī)起停控制、正反轉(zhuǎn)控制、及加速及減速控制程序?qū)崿F(xiàn)及調(diào)試。通過編寫正確的程序,并使用仿真軟件PROTEUS進(jìn)行該控制系統(tǒng)的仿真。

計(jì)算機(jī)控制系統(tǒng)包括硬件、軟件和控制算法3個(gè)方面,一個(gè)完整的設(shè)計(jì)還需要考慮系統(tǒng)的抗干擾性能,使系統(tǒng)能長(zhǎng)期有效地運(yùn)行[1],計(jì)算機(jī)控制技術(shù)是一門以電子技術(shù)、自動(dòng)控制技術(shù)、計(jì)算機(jī)應(yīng)用技術(shù)為基礎(chǔ),以計(jì)算機(jī)控制技術(shù)為核心,綜合可編程控制技術(shù)、單片機(jī)技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)。
1.1          設(shè)計(jì)背景

步進(jìn)電機(jī)是一種用電脈沖信號(hào)進(jìn)行控制,并將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)的角位移或。線位移的控制驅(qū)動(dòng)裝置。由于步進(jìn)電機(jī)是受脈沖信號(hào)控制的,因此適合于作為數(shù)字控制系統(tǒng)的伺服元件。步進(jìn)電機(jī)的線圈中每輸入一個(gè)脈沖,轉(zhuǎn)子就旋轉(zhuǎn)一個(gè)步距角,它的速度和控制脈沖嚴(yán)格同步,通過改變脈沖頻率的高低就可以在很大范圍內(nèi)調(diào)節(jié)電機(jī)的轉(zhuǎn)速。由于步進(jìn)電機(jī)具有精度高、控制靈活、定位準(zhǔn)確、工作可靠,能直接接受交換數(shù)字信號(hào)等特點(diǎn),因此廣泛地應(yīng)用在計(jì)量測(cè)試儀器中。

設(shè)計(jì)一個(gè)基于單片機(jī)AT89S52的計(jì)算機(jī)步進(jìn)電機(jī)控制系統(tǒng),使用數(shù)字控制器進(jìn)行步進(jìn)電機(jī)的起停、正、反轉(zhuǎn)控制以及步進(jìn)電機(jī)的加速、減速控制,主要有以下四個(gè)方面的要求:
組建一個(gè)使用單片機(jī)AT89S52作為控制器的三相步進(jìn)電機(jī)控制系統(tǒng)。
用K0-K2作為通電方式選擇鍵,K0為單三拍,K1為雙三拍,K2為三相六拍;K3、K4分別為啟動(dòng)和方向控制;正轉(zhuǎn)時(shí)紅色指示燈亮,反轉(zhuǎn)時(shí)黃色指示燈亮,不轉(zhuǎn)時(shí)綠色指示燈亮;用K5-K12作為步數(shù)的給定值;用3位LED顯示剩余工作步數(shù)。
根據(jù)設(shè)計(jì)要求進(jìn)行硬件線路圖設(shè)計(jì),選擇合適的器件,進(jìn)行硬件電路圖設(shè)計(jì)。
編寫程序,實(shí)現(xiàn)相應(yīng)功能。
進(jìn)行程序調(diào)試,模擬仿真

         晶振電路
一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容。晶體振蕩器,簡(jiǎn)稱晶振。在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率是串聯(lián)諧振,較高的頻率是并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏谶@個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。這個(gè)并聯(lián)諧振電路加到一個(gè)負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍很窄,所以即使其他元件的參數(shù)變化很大,這個(gè)振蕩器的頻率也不會(huì)有很大的變化。晶振有一個(gè)重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。如圖 2?3所示:

圖 2?3晶振電路

2.3          復(fù)位電路
復(fù)位是單片機(jī)的初始化工作,復(fù)位后中央處理器CPU和單片機(jī)內(nèi)的其它功能部件都處在一定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。為了防止程序執(zhí)行過程中失步或運(yùn)行紊亂,此處我們采用了上電復(fù)位,電路圖如下圖 2?4所示:

圖 2?4復(fù)位電路

單片機(jī)最小系統(tǒng)是單片機(jī)運(yùn)行的最基本條件:電源,單片機(jī)芯片,晶振電路,復(fù)位電路。電源為整個(gè)系統(tǒng)供能,單片機(jī)芯片運(yùn)行程序,處理數(shù)據(jù);晶振電路為單片機(jī)工作提供節(jié)拍,常被理解為單片機(jī)心臟;復(fù)位電路,在單片機(jī)上電時(shí)需要復(fù)位使程序從頭開始運(yùn)行。
2.4          工作方式選擇模塊
用K0-K2作為通電方式選擇鍵,K0為單三拍,K1為雙三拍,K2為三相六拍;K3、K4分別為啟動(dòng)和方向控制;如下圖 2?5所示:

圖 2?5工作方式選擇模塊圖

2.5          電動(dòng)機(jī)及驅(qū)動(dòng)
步進(jìn)電機(jī)模塊如下圖 2?6所示

圖 2?6電動(dòng)機(jī)模塊

2.5.1         步進(jìn)電機(jī)
本次設(shè)計(jì)采用的是步進(jìn)電機(jī),如下圖 2?7所示。

圖 2?7步進(jìn)電機(jī)實(shí)物圖

步進(jìn)電機(jī)的不同驅(qū)動(dòng)方式,都是在工作時(shí),脈沖信號(hào)按一定順序輪流加到三相繞組上,從而實(shí)現(xiàn)不同的工作狀態(tài)。由于通電順序不同,其運(yùn)行方式有三相單三相拍、三相雙三拍和三相單、雙六拍三種(注意:上面“三相單三拍”中的“三相”指定子有三相繞組;“拍”是指定子繞組改變一次通電方式;“三拍”表示通電三次完成一個(gè)循環(huán)。“三相雙三拍”中的“雙”是指同時(shí)有兩相繞組通電)。
2.5.2         驅(qū)動(dòng)電路
ULN2003A電路是美國(guó)Texas+Instruments公司和Sprague公司開發(fā)的高壓大電流達(dá)林頓晶體管陣列電路。ULN2003是高耐壓、大電流、內(nèi)部由七個(gè)硅NPN和達(dá)林頓管組成的驅(qū)動(dòng)芯片,如圖 2?8所示。經(jīng)常在以下電路中使用,作為:顯示驅(qū)動(dòng)、繼電器驅(qū)動(dòng)、照明燈驅(qū)動(dòng)、電磁閥驅(qū)動(dòng)、伺服電機(jī)、步進(jìn)電機(jī)驅(qū)動(dòng)等電路中。該電路的特點(diǎn)如下:ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并能在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。

圖 2?8ULN2003邏輯圖

2.6          狀態(tài)顯示模塊
LED發(fā)光二極管顯示步進(jìn)電機(jī)的工作狀態(tài),它們分別接到單片機(jī)的P3.4~P3.6。如下圖 2?9所示,讓單片機(jī)連接到LED陰極,LED陽(yáng)極接VCC。這樣通過設(shè)置端口電平就能使LED亮滅,達(dá)到顯示效果。本設(shè)計(jì)中,綠燈代表停止,紅燈代表正轉(zhuǎn),黃燈代表反轉(zhuǎn)。

圖 2?9LED狀態(tài)顯示

2.7          數(shù)碼管顯示
LED數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a,b,c,d,e,f,g,dp來表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看到的字樣了。通過分時(shí)輪流控制各個(gè)LED數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。
本課題采用六位共陰極數(shù)碼管來對(duì)電機(jī)步數(shù),速度擋位進(jìn)行顯示。電路如下,接在單片機(jī)P0口,P0必須添加上拉電阻,以為P0扣不加上拉電阻時(shí)處于開漏狀態(tài),只允許輸出低電平,加上拉電阻后可輸出高電平。電路如下圖 2?10示。

圖 2?10數(shù)碼管電路

2.8          本章小結(jié)
本章主要是對(duì)硬件設(shè)計(jì)的描述。先是呈現(xiàn)出總硬件系統(tǒng)框圖及AT89S52單片機(jī)的接口及各種特性,再進(jìn)行各部分電路的設(shè)計(jì)的原理,即:晶振電路,復(fù)位電路,工作方式選擇模塊,驅(qū)動(dòng)電路,電機(jī)工作狀態(tài)顯示部分,數(shù)碼管顯示部分。
3   軟件設(shè)計(jì)3.1          功能框圖
步進(jìn)電機(jī)控制系統(tǒng)功能框圖如下圖 3?1所示,說明了每個(gè)模塊與單片機(jī)之間的聯(lián)系,控制邏輯;通過單片機(jī)控制掃描,數(shù)碼管顯示,LED顯示,步進(jìn)電機(jī)控制等。

圖 3?1功能框圖

3.2          主流程圖

圖 3?2主流程圖

首先進(jìn)行工作方式選擇,如圖圖 3?2所示,按下啟動(dòng)按鈕,單片機(jī)判斷是否啟動(dòng),如果沒啟動(dòng)綠燈亮,啟動(dòng)后單片機(jī)查詢電機(jī)的工作模式,K0為單三拍,K1為雙三拍,K2為三相六拍。再查詢電機(jī)的指定步數(shù),接著判斷電機(jī)正轉(zhuǎn)還是反轉(zhuǎn),正轉(zhuǎn)紅燈亮,反轉(zhuǎn)時(shí)紅燈亮。由此可以讓步進(jìn)電機(jī)按照指定的方式運(yùn)轉(zhuǎn),并且剩余步數(shù)顯示到數(shù)碼管上;單片機(jī)判斷步數(shù)是否走完。

3.3          步進(jìn)電機(jī)模塊3.3.1               步進(jìn)電機(jī)工作方式說明
(1)三相單三拍工作方式
    如表 3?1,在這種工作方式下,A、B、C三相輪流通電,電流切換三次,磁場(chǎng)旋轉(zhuǎn)一周,轉(zhuǎn)子向前轉(zhuǎn)過一個(gè)齒距角。因此這種通電方式叫做三相單三拍工作方式。A-B-C為正轉(zhuǎn),C-B-A為反轉(zhuǎn),這時(shí)步距角θb (度)為
                                                  (公式1)
式中:m──步進(jìn)電機(jī)工作拍數(shù); z ──轉(zhuǎn)子齒數(shù)


(2)雙三拍工作方式
     如表 3?2,在這種工作方式下,每次都是有兩相導(dǎo)通,兩相繞組處在相同電壓之下,以AB─BC─CA─AB (或反之)方式通電,故稱為雙三拍工作方式。以這種方式通電,轉(zhuǎn)子齒所處的位置相當(dāng)于六拍控制方式中去掉單三拍后的三個(gè)位置。它的步距角計(jì)算公式與單三拍時(shí)的公式相同。
極分度角/齒距角= R + k·1/m
進(jìn)一步化簡(jiǎn)得齒數(shù)z:
                    (公式2)
式中:m──相數(shù); q──每相的極數(shù); k──≤ (m - 1)的正整數(shù);
R──正整數(shù),為0、1、2、3……。

                            表 3?2 三相雙三拍的相位控制

(3)三相六拍工作方式
     如表 3?3,在這種工作方式下,繞組以A—AB—B—BC—C—CA—A時(shí)序(或反時(shí)序)轉(zhuǎn)換6次,磁場(chǎng)旋轉(zhuǎn)一周,轉(zhuǎn)子前進(jìn)一個(gè)齒距,每次切換均使轉(zhuǎn)子轉(zhuǎn)動(dòng)1. 5°,故這種通電方式稱為三相六柏工作方式。其步距角θb 為:

                                                     (公式3)
式中:m──步進(jìn)電機(jī)工作拍數(shù); z ──轉(zhuǎn)子齒數(shù)
  關(guān)鍵模塊設(shè)計(jì)3.4.1              三相步進(jìn)電機(jī)模塊設(shè)計(jì)
設(shè)計(jì)說明:在此設(shè)計(jì)中,采用的是三相步進(jìn)電機(jī),對(duì)于步進(jìn)電機(jī)模塊的程序設(shè)計(jì)采用循環(huán)程序設(shè)計(jì)方法。先把正反轉(zhuǎn)向的控制模型存放在內(nèi)存單元中,然后再逐一從單元中取出控制模塊并輸出。首先啟動(dòng),選擇步進(jìn)電機(jī)的拍數(shù),輸入步數(shù),然后讀入正反轉(zhuǎn)的控制模型驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)
   三相步進(jìn)電機(jī)的流程框圖,如圖 3?3所示:

                       圖 3?3 三相步進(jìn)電機(jī)的流程框圖

3.4.2         顯示模塊設(shè)計(jì)
設(shè)計(jì)說明:顯示模塊是用4位七段數(shù)碼管來顯示工作步數(shù)。先將顯示碼存入數(shù)組中,指向最左邊一位,然后取出要顯示的數(shù)據(jù),指向換碼表首地址,取出顯示碼,從P0口輸出顯示碼,P2口輸入位選碼,顯示出4位工作步數(shù),最后修改數(shù)組地址,求下一位位選碼繼續(xù)顯示。如圖 3?4所示。

圖 3?4 數(shù)碼管顯示原理

3.5          本章小結(jié)

本章主要描述了步進(jìn)電機(jī)實(shí)現(xiàn)過程軟件的設(shè)計(jì)思路,包括功能框圖,主流程圖,步進(jìn)電機(jī)模塊,關(guān)于工作方式的說明,數(shù)碼管顯示設(shè)計(jì)。

4   測(cè)試和驗(yàn)證4.1          任務(wù)分工
本次設(shè)計(jì)我們小組共4人,a主要負(fù)責(zé)了對(duì)于系統(tǒng)控制的電路設(shè)計(jì)。b負(fù)責(zé)了系統(tǒng)程序的編寫和調(diào)試,查閱了相關(guān)資料,實(shí)現(xiàn)系統(tǒng)功能,c主要負(fù)責(zé)了小組統(tǒng)籌規(guī)劃,收集資料,電路分析,靳筌鈞主要負(fù)責(zé)了測(cè)試驗(yàn)證,文檔整理的工作,每個(gè)人分工合作,完成了設(shè)計(jì)任務(wù)。
4.2          搭建環(huán)境
使用KEIL uVision 4編寫單片機(jī)程序,在Proteus中搭建仿真環(huán)境,將可執(zhí)行程序加載到仿真單片機(jī)中,進(jìn)行仿真,驗(yàn)證設(shè)計(jì)的正確性,可行性。
4.2.1         建立編輯編譯環(huán)境
  • 創(chuàng)建AT89C51工程,進(jìn)行編輯。如下4?1所示:

圖 4?1 創(chuàng)建工程

  • 編輯代碼,選擇生成.Hex文件。如下4?2所示:

圖 4?2 生成目標(biāo)文件

4.2.2     建立仿真和測(cè)試環(huán)境
根據(jù)電路原理圖在Proteus中搭建仿真模型。分別由數(shù)碼管顯示模塊,復(fù)位電路,矩陣鍵盤,晶振電路,單片機(jī)主控芯片,步進(jìn)電機(jī)模塊,工作狀態(tài)顯示模塊。如下圖 4?3所示:

圖 4?3仿真模型

4.3          方案驗(yàn)證
通過仿真來驗(yàn)證步進(jìn)電機(jī)的控制是否合理。驗(yàn)證如下:
4.3.1     三種工作方式
圖 4?4為步進(jìn)電機(jī)工作在三相單三拍,此時(shí)K0,K3接高電平,K1,K2接低電平啟動(dòng);;圖 4?6為步進(jìn)電機(jī)工作在三相六拍,此時(shí)K0,K1接低電平,K2,K3接高電平;若K4接高電平則反轉(zhuǎn),低電平則正轉(zhuǎn)。這三種工作方式工作不同,三相單三拍時(shí),通電順序?yàn)锳-B-C-A;三相雙三拍時(shí),通電順序?yàn)锳B-BC-CA-AB;三相六拍時(shí),通電順序?yàn)锳-AB-B-BC-C-CA-A;以上通電方式是三種工作方式正轉(zhuǎn)的情況,若要反轉(zhuǎn),則通電方式放過來即可

圖 4?4單三拍正轉(zhuǎn)

圖 4?5圖 4?6為步進(jìn)電機(jī)工作在三相雙三拍,此時(shí)K1,K3接高電平,K0,K2接低電平

圖 4?5 三相雙三拍


圖 4?6三相雙三拍

圖 4?7圖 4?8為步進(jìn)電機(jī)工作在三相六拍,此時(shí)K0,K1接低電平,K2,K3接高電平。

圖 4?7 三相六拍

圖 4?8 三相六拍

4.3.2     正轉(zhuǎn)和反轉(zhuǎn)
  圖 4?7為三相步進(jìn)電機(jī)工作在正轉(zhuǎn)狀態(tài),此時(shí)K4接高電平。

圖 4?9電機(jī)正轉(zhuǎn)

圖 4?8為三相步進(jìn)電機(jī)工作在反轉(zhuǎn)狀態(tài),此時(shí)K4低電平

圖 4?10 電機(jī)反轉(zhuǎn)

4.3.3     指定步數(shù)和數(shù)碼管顯示

當(dāng)按下K5~K12按鍵時(shí),分別指定步數(shù)值為20、40、60、80、100、120、140、160。當(dāng)步進(jìn)電機(jī)運(yùn)轉(zhuǎn)時(shí),每運(yùn)轉(zhuǎn)一步程序?qū)⒖偛綌?shù)自減1,在運(yùn)用數(shù)碼管和單片機(jī)的端口連接顯示剩余步數(shù),如圖 4?9所示。

圖 4?11 指定步數(shù)和數(shù)碼管顯示


4.4          問題與分析
在本次課題中,我遇到一些問題如下:
  • 由于對(duì)單片機(jī)知識(shí)不是很熟悉,在設(shè)計(jì)過程中常常需要翻閱許多相關(guān)知識(shí)才能有思路,需要不斷鞏固和運(yùn)用
  • 在對(duì)數(shù)碼管進(jìn)行設(shè)計(jì)的時(shí)候,忘記加入上拉電阻,以至于多次仿真運(yùn)行時(shí)數(shù)碼管都不顯示
  • 在進(jìn)行控制時(shí),有很多時(shí)候開關(guān)都無法起到相應(yīng)的作用,說明程序控制有誤,且數(shù)碼管顯示不全,對(duì)數(shù)碼管的顯示設(shè)計(jì)出現(xiàn)了許多程序上的錯(cuò)誤。
  • 在設(shè)計(jì)電路的過程中,調(diào)試程序以及控制都無法達(dá)到預(yù)期的狀態(tài),通過請(qǐng)教老師和同學(xué),對(duì)程序不斷修改,一步一步的驗(yàn)證和測(cè)試,老師也給我們的設(shè)計(jì)提出了相關(guān)問題,才完善
    創(chuàng)新與擴(kuò)展
在對(duì)步進(jìn)電機(jī)進(jìn)行設(shè)計(jì)的時(shí)候,在系統(tǒng)的基礎(chǔ)上,還可以充分利用步進(jìn)電機(jī)的功能,加上蜂鳴器,對(duì)步進(jìn)電機(jī)故障時(shí)進(jìn)行報(bào)警,可以將顯示步數(shù)的開關(guān)利用集成開關(guān)進(jìn)行控制,減少接線,顯示剩余步數(shù)不僅可以使用數(shù)碼管,還可以使用液晶顯示器,使用戶觀感更佳。同時(shí)步進(jìn)電機(jī)可以運(yùn)用到生活中很多場(chǎng)合,我們可以經(jīng)過AD轉(zhuǎn)換,改變狀態(tài)

附錄一 電路圖


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include <stdio.h>
  3. void delay1(void);
  4. void delay2(void);
  5. void display(int);
  6. sbit green=P1^4;
  7. sbit red=P1^6;
  8. sbit yellow=P1^5;
  9. sbit K5=P2^4;
  10. sbit K6=P2^5;
  11. sbit K7=P2^6;
  12. sbit K8=P2^7;
  13. sbit K9=P3^5;
  14. sbit K10=P3^6;
  15. sbit K11=P3^7;
  16. sbit K12=P1^7;
  17. int bushu=0;
  18. void main()
  19. {
  20. char a,b,c,d,j,*q,
  21. done1[8]={0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},
  22. done2[8]={0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00},
  23. done3[14]={0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};   //電機(jī)通電方式表
  24. L:
  25. a=P3;
  26. while(!(a&0x08))   //判斷是否啟動(dòng),若沒啟動(dòng)則重新判斷
  27. {
  28. green=1;
  29. red=0;
  30. yellow=0;
  31. delay1();
  32. a=P3;
  33. }
  34. if(a&0x01)  //判斷電機(jī)工作方式
  35. q=done1;    //單三拍
  36. else if(a&0x02)
  37. q=done2;    //雙三拍
  38. else if(a&0x04)
  39. q=done3;    //三相六拍

  40. if(K5==1)
  41. {
  42. bushu=20; //設(shè)置bushu的值,以控制步數(shù)
  43. }
  44. else if(K6==1)
  45. {
  46. bushu=40; //設(shè)置bushu的值,以控制步數(shù)
  47. }
  48. else if(K7==1)
  49. {
  50. bushu=60; //設(shè)置bushu的值,以控制步數(shù)
  51. }
  52. else if(K8==1)
  53. {
  54. bushu=80; //設(shè)置bushu的值,以控制步數(shù)
  55. }
  56. else if(K9==1)
  57. {
  58. bushu=100; //設(shè)置bushu的值,以控制步數(shù)
  59. }
  60. else if(K10==1)
  61. {
  62. bushu=120; //設(shè)置bushu的值,以控制步數(shù)
  63. }
  64. else if(K11==1)
  65. {
  66. bushu=140; //設(shè)置bushu的值,以控制步數(shù)
  67. }
  68. else if(K12==1)
  69. {
  70. bushu=160; //設(shè)置bushu的值,以控制步數(shù)
  71. }

  72. if(a&0x10)  //判斷電機(jī)是否正轉(zhuǎn)
  73. {
  74. green=0;
  75. red=1;
  76. yellow=0;   //電機(jī)正轉(zhuǎn),紅燈亮
  77. b=0;
  78. }
  79. else
  80. {
  81. green=0;
  82. red=0;
  83. yellow=1;   //電機(jī)反轉(zhuǎn),黃燈亮
  84. if(a&0x04)  b=7;  //反轉(zhuǎn)將b置位,通電順序反向
  85. else b=4;
  86. }
  87. d=b;
  88. while(1)
  89. {
  90. c=*(q+b);
  91. if(c==0) b=d;   //步數(shù)走完,b重新置位
  92. else
  93. {
  94. P1=c;     //從P3口輸出電機(jī)控制信號(hào)
  95. b++;
  96. bushu--;  //剩余步數(shù)
  97. display(bushu);  //顯示步數(shù)
  98. j=a;
  99. a=P3;
  100. if(a!=j&&bushu==0)   //判斷P3口狀態(tài)信號(hào)是否改變
  101. if(!(a&0x08))
  102. bushu=0;  //若為停止信號(hào),總步數(shù)清零
  103. goto L;      //狀態(tài)信號(hào)改變,返回到L,重新開始判斷控制
  104. }
  105. }
  106. }

  107. void display(int n)   //步數(shù)顯示程序
  108. {
  109. unsigned char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  110. unsigned char i,k,t,num[3];
  111. num[0]=n%10;
  112. num[1]=(n/10)%10;
  113. num[2]=(n/100)%10;
  114. for(t=0;t<50;t++)  //掃描50次
  115. {
  116. k=0x04;   //位選碼為最高位
  117. for(i=0;i<3;i++)
  118. {
  119. P2=k;   //P2口輸出位選碼
  120. P0=tab[num[i]];   //P0口輸出顯示剩余步數(shù)
  121. k=k>>1;   //下一位位選碼
  122. delay2();
  123. }
  124. }
  125. }

  126. void delay1()
  127. {
  128. int i,j;
  129. for(i=0;i<200;i++)
  130. for(j=0;j<300;j++);
  131. }
  132. void delay2()
  133. {
  134. int i,j;
  135. for(i=0;i<10;i++)
  136. for(j=0;j<60;j++);
  137. }
復(fù)制代碼

所有資料51hei提供下載:
計(jì)算機(jī)實(shí)驗(yàn)和51hei設(shè)計(jì)資料.rar (5.56 MB, 下載次數(shù): 86)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:857825 發(fā)表于 2020-12-11 10:18 | 只看該作者
可以發(fā)一下其他幾種接法的c的源程序不
回復(fù)

使用道具 舉報(bào)

板凳
ID:926155 發(fā)表于 2021-5-24 00:33 來自觸屏版 | 只看該作者
有繞線機(jī)的控制程序嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:1026095 發(fā)表于 2023-4-1 13:49 | 只看該作者
這個(gè)proteus用什么版本打開
回復(fù)

使用道具 舉報(bào)

5#
ID:1081783 發(fā)表于 2023-6-8 13:28 | 只看該作者
感謝大佬,解決了困擾我的疑問。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久综合爱 | 三级视频在线播放 | 日韩不卡一区二区 | 四虎影院最新地址 | 久久久久成人网 | 怡红院久久 | 一区二区三区免费观看 | 中国女人真人一级毛片 | 日日干夜夜草 | 亚洲色网址 | 日本国产视频 | 日韩一区在线播放 | 狠狠五月 | 成人网在线 | 韩日av在线| 国产成人免费视频 | 国产一区在线播放 | 91精品国产日韩91久久久久久 | 男女在线视频 | 欧美日韩成人在线 | 在线一区二区三区 | 毛片在线视频 | 欧美91视频 | 国产麻豆精品视频 | 一级黄色片免费 | 国产在线观看一区二区三区 | 91精品成人 | 国产精品久久久久久中文字 | 91日韩欧美 | 中文字幕免费在线 | 亚洲国产精品久久久 | 国产成人在线视频 | 久久黄色录像 | 日韩欧美三区 | 国产日韩精品在线 | 在线观看亚洲 | av毛片网站 | 精品一区二区免费视频 | 欧美特黄一级片 | 国产一区二区精品丝袜 | 中文字幕日韩一区 |