




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄一、 需求分析11.1 設(shè)計(jì)的硬件資源環(huán)境11.2 設(shè)計(jì)的軟件資源環(huán)境11.3 設(shè)計(jì)的具體要求1二、概要設(shè)計(jì)12.1 運(yùn)行方式與方向的控制循環(huán)查表法22.2 步進(jìn)電機(jī)運(yùn)行速度的控制軟件延時(shí)法32.3 步進(jìn)電機(jī)接口32.4 步進(jìn)電機(jī)的驅(qū)動(dòng)32.5 步進(jìn)電機(jī)的起/停控制設(shè)置開關(guān)42.6 步進(jìn)電機(jī)設(shè)計(jì)電路的搭建42.7雙機(jī)遠(yuǎn)程通信原理5三、詳細(xì)設(shè)計(jì)63.1 硬件設(shè)計(jì)63.2 軟件設(shè)計(jì)7四、調(diào)試與操作說明8五、課程設(shè)計(jì)總結(jié)與體會(huì)9致 謝10參考文獻(xiàn)11附錄A:步進(jìn)電機(jī)遠(yuǎn)程控制的接收端程序12附錄B:步進(jìn)電機(jī)遠(yuǎn)程控制的發(fā)送端程序19一、 需求分析本課程的設(shè)計(jì)的題目為“步進(jìn)電機(jī)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)”。從
2、題目上可以看出,本課程設(shè)計(jì)的硬件中心是“步進(jìn)電機(jī)遠(yuǎn)程控制系統(tǒng)”,我們的任務(wù)就是首先在理論上設(shè)計(jì)出一套抽象的硬件模型,然后根據(jù)理論與實(shí)際的需要選擇我們需要的元件并進(jìn)行制作,在制作的過程中需要對(duì)出現(xiàn)的各種問題以及障礙進(jìn)行處理、對(duì)各個(gè)工作環(huán)節(jié)進(jìn)行調(diào)試,并最終實(shí)現(xiàn)硬件實(shí)體的正常運(yùn)轉(zhuǎn)。我們的設(shè)計(jì)目的便是通過步進(jìn)電機(jī)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì),深入了解與掌握利用RS232或RS485串行通信標(biāo)準(zhǔn)進(jìn)行遠(yuǎn)距離傳送的原理與方法。1.1 設(shè)計(jì)的硬件資源環(huán)境(1)PC兼容機(jī)(2.MFID多功能微機(jī)實(shí)驗(yàn)平臺(tái)(含PCI總線驅(qū)動(dòng)板)(3)面包板(4)安裝或焊接工具1.2 設(shè)計(jì)的軟件資源環(huán)境(1)Windows 2000(2) M2
3、KI集成開發(fā)環(huán)境1.3 設(shè)計(jì)的具體要求(1)甲機(jī)通過RS-232或RS-485接口遠(yuǎn)距離控制乙機(jī)一側(cè)步進(jìn)電機(jī)的起/停;(2)甲機(jī)通過RS-232或RS-485接口遠(yuǎn)距離控制乙機(jī)上步進(jìn)電機(jī)的方向;(3)甲機(jī)通過RS-232或RS-485接口遠(yuǎn)距離控制乙機(jī)上步進(jìn)電機(jī)的起/停、方向、速度,并采用對(duì)話框選擇控制項(xiàng)目。 二、概要設(shè)計(jì) 步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)換成角位移的一種機(jī)電式數(shù)模轉(zhuǎn)換器。步進(jìn)電機(jī)旋轉(zhuǎn)的角位移與輸入脈沖的個(gè)數(shù)成正比;步進(jìn)電機(jī)的轉(zhuǎn)速與輸入脈沖的頻率成正比;步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向與輸入脈沖對(duì)繞組加電的順序有關(guān)。因此,步進(jìn)電機(jī)旋轉(zhuǎn)的角位移、轉(zhuǎn)速以及方向均受輸入脈沖的控制。而我們要實(shí)現(xiàn)的是采用軟件
4、的方法實(shí)現(xiàn)遠(yuǎn)程控制步進(jìn)電機(jī),也就是在兩臺(tái)微機(jī)之間按RS232/RS485標(biāo)準(zhǔn)協(xié)議進(jìn)行零MODEM方式半雙工串行通信。2.1 運(yùn)行方式與方向的控制循環(huán)查表法步進(jìn)電機(jī)的運(yùn)行方式是指各相繞組循環(huán)流通電的方式。如四相步進(jìn)電機(jī)有但單四拍ABCD、雙四拍ABBCCDDA、單八拍ABBBCCCDDDAA和雙八拍ABABCBCBCDCDCDADADAB幾種方式。為了實(shí)現(xiàn)對(duì)個(gè)繞組按一定方式輪流加電,需要一個(gè)脈沖循環(huán)分配器。循環(huán)分配器可用硬件電路來實(shí)現(xiàn),也可用軟件來實(shí)現(xiàn)。這里采用的是軟件方法,軟件方法又分為控制字法和循環(huán)查表法,這里采用的是循環(huán)查表法。相序表見表2.1 所示。繞組與數(shù)據(jù)線的連接 運(yùn)行方式 相序表
5、方 向加電代碼地址單元正向反向 雙八拍 表2.1 相序表D C B AD7 D6D5D4D3D2D1D00 0 0 0 0 1 0 10 0 0 1 0 1 0 10 0 0 1 0 1 0 00 1 0 1 0 1 0 00 1 0 1 0 0 0 00 1 0 1 0 0 0 10 1 0 0 0 0 0 10 1 0 0 0 1 0 1ABABCBCBCDCDCDADADAB05H 400H15H 401H14H 402H54H 403H50H 404H51H 405H41H 406H2.2 步進(jìn)電機(jī)運(yùn)行速度的控制軟件延時(shí)法控制步進(jìn)電機(jī)速度有兩個(gè)途徑:一是硬件改變輸入脈沖的頻率,通過對(duì)定
6、時(shí)器(如:8253)定時(shí)常數(shù)的設(shè)定,使其升頻、降頻或恒頻。二是軟件延時(shí),或調(diào)用延時(shí)子程序。采用軟件延時(shí)方法來改變步進(jìn)電機(jī)速度,雖然簡(jiǎn)單易行,但延時(shí)受CPU主頻的影響,導(dǎo)致在主頻較低的微機(jī)上開發(fā)的步進(jìn)電機(jī)控制程序換到主頻較高的微機(jī)上,就不能正常運(yùn)行,甚至由于頻率太高,步進(jìn)電機(jī)干脆不動(dòng)了。應(yīng)該指出的是,步進(jìn)電機(jī)的速度還受到本身矩-頻特性的限制,設(shè)計(jì)時(shí)應(yīng)滿足運(yùn)行頻率與負(fù)載力矩之間的確定關(guān)系,否則,就會(huì)產(chǎn)生失步或無法工作的現(xiàn)象。2.3 步進(jìn)電機(jī)接口步進(jìn)電機(jī)接口的硬件部分主要是提供輸送相序代碼的并行接口數(shù)據(jù)線(8根),以及保護(hù)電機(jī)繞組的器件,所以接口電路以8255A為主芯片(8255A的介紹詳見前面音樂
7、發(fā)生器中的介紹),將PA口作為數(shù)據(jù)口,傳送加電代碼,再加上鎖存器74LS373作繞組保護(hù),74LS73芯片的引腳分配如圖2.1所示,功能對(duì)應(yīng)表如表2.2所示,功Vcc8Q8D7D7Q6Q6D5D5Q使能G輸出控制1Q 1D 2D 2Q 3Q 3D 4D 4Q GND圖2.1 74LS373(八D寄存器)1234567891020191817161514131211能表中當(dāng)G為高時(shí),Q輸出將隨數(shù)據(jù)D輸入而變;當(dāng)G為低時(shí),Q輸出將鎖存已建立的數(shù)據(jù)電平。另外,還有功率驅(qū)動(dòng)管TIP122,以及二極管(用作保護(hù)TIP驅(qū)動(dòng)管)、按鍵開關(guān)SW等。很明顯,這里并沒有什么聯(lián)絡(luò)線。這是因?yàn)榇颂幍谋豢貙?duì)象步進(jìn)電機(jī)總
8、是處于準(zhǔn)備好接收8255A傳來的數(shù)據(jù)(相序加控制輸出 使能 G D 輸出 Q L H H H L H L L L L x Q0 H x x Z表2.2 74LS373功能對(duì)應(yīng)表電代碼)的,不需要查詢是否準(zhǔn)備好,即無條件傳送。2.4 步進(jìn)電機(jī)的驅(qū)動(dòng)TIP122+12VA圖2.2 步進(jìn)電機(jī)驅(qū)動(dòng)原理圖步進(jìn)電機(jī)在系統(tǒng)中是一種執(zhí)行元件,都要帶負(fù)載,因此,需要功率的驅(qū)動(dòng)。在電子儀器和設(shè)備中,一般所需功率較小,常采用達(dá)林頓復(fù)合管作功率驅(qū)動(dòng)。驅(qū)動(dòng)原理圖如2.2所示。圖2.2中,在TIP122的基極上,加電脈沖為高時(shí),加電代碼1時(shí),達(dá)林頓管導(dǎo)通,使繞組A通電;加電代碼0時(shí),繞組斷電。2.5 步進(jìn)電機(jī)的起/停控制
9、設(shè)置開關(guān)為了控制步進(jìn)電機(jī)的起/停,通常采用設(shè)置硬開關(guān)或軟開關(guān)的方法。所謂硬開關(guān)方法,一般是在外部設(shè)置按鍵開關(guān)SW,并且約定當(dāng)開關(guān)SW按下時(shí)啟動(dòng)運(yùn)行或停止運(yùn)動(dòng)。為此,需要在程序中將開關(guān)SW的狀態(tài)讀入,以便檢測(cè)SW是否按下。所謂軟開關(guān)方法,就是利用系統(tǒng)的鍵盤,定義某一個(gè)鍵,當(dāng)該按鍵按下時(shí),啟動(dòng)或停止運(yùn)動(dòng)。為此,在程序中要利用DOS系統(tǒng)功能調(diào)用來檢測(cè)鍵盤輸入。2.6 步進(jìn)電機(jī)設(shè)計(jì)電路的搭建實(shí)驗(yàn)原理圖設(shè)計(jì)好了以后,在面包板上搭建步進(jìn)電機(jī)驅(qū)動(dòng)模塊的電路,并使用26芯的扁平電纜線,將面包板與平臺(tái)上的并行接口插座J5連接起來。步進(jìn)電機(jī)驅(qū)動(dòng)模塊的電路連接如圖2.3所示,步進(jìn)電機(jī)驅(qū)動(dòng)模塊的PCB圖如圖2.4所示
10、。 圖2.3 步進(jìn)電機(jī)驅(qū)動(dòng)模塊電路連接圖圖2.4 步進(jìn)電機(jī)驅(qū)動(dòng)模塊電路PCB圖2.7雙機(jī)遠(yuǎn)程通信原理此次課程設(shè)計(jì)是在小于15m的距離下進(jìn)行的,所以我們不需要采用調(diào)制解調(diào)器MODEM,通信雙方可以直接通信,既只需要TxD,RxD,SG三根線連接就能通信。采用8251A作為接口的主芯片再配置少量附加電路,如波特率時(shí)鐘發(fā)生器,RS-232C與TTL電平轉(zhuǎn)換電路,地址譯碼電路等就可以構(gòu)成一個(gè)串行通信接口,如圖2.5所示。 乙機(jī)CPUEIA/TTL變換EIA/TTL變換TxDRxDSG_TxC_RxC波特率發(fā)生器波特率發(fā)生器TxDRxDSG_TxC_RxC 甲機(jī)CPU圖2.5 雙機(jī)遠(yuǎn)程通信示意圖三、詳細(xì)
11、設(shè)計(jì)3.1 硬件設(shè)計(jì)(1)設(shè)計(jì)符合設(shè)計(jì)要求的電路圖,如圖2.3所示 (2)根據(jù)電路圖找到所需的電子元件及導(dǎo)線若干(3)區(qū)分各元件并進(jìn)行分類(4)取來面包板。仔細(xì)研究面包板,分清它的內(nèi)部結(jié)構(gòu)、線路走向及插線原理等。(5)開始搭建元件,將其插到合適的位置上。(6)按圖連線。要注意分清電源及地線,各元件的電器特性(如二極管的正負(fù)極問題),以便確保正確無誤。(7)電路。要反復(fù)檢查問題,看是否有線路搭錯(cuò)的情況。(8)區(qū)分電機(jī)的四相。因?yàn)槲覀冏龅氖遣竭M(jìn)電機(jī)的設(shè)計(jì),所以需要區(qū)分電機(jī)的四相。注意,A、B、C、D依次導(dǎo)線顏色為白、綠、藍(lán)、紅。用烙鐵將導(dǎo)線焊接好。(9)在微機(jī)平臺(tái)上做實(shí)驗(yàn),運(yùn)行系統(tǒng)自帶的程序??此?/p>
12、個(gè)LED指示燈是否依次亮起,不能同時(shí)一起亮也不能全不都不亮,要依照雙四拍ABBCCDDA的順序閃亮。檢查電機(jī)是否按所要求順序旋轉(zhuǎn),兩個(gè)開關(guān)SW1和SW2能否起到控制電機(jī)的起/停、旋轉(zhuǎn)方向、旋轉(zhuǎn)速度等功能。(10)碰到問題、檢查問題、解決問題、反復(fù)調(diào)試直到成功。3.2 軟件設(shè)計(jì) 接口電路以8251為核心,8253提供收/發(fā)時(shí)鐘,8255控制8253的GATE門。I/O 端口地址:8255的四個(gè)端口地址為300H303H。其中A口=304H,B口=301H,C口=302H,命令口=303H。8253的四個(gè)端口地址為304H307H。其中通道0為304H,通道1為305H,通道2為306H,命令口為
13、307H。8251的兩個(gè)端口地址為:308H309H,其中,308H為8251數(shù)據(jù)口,309H為命令/狀態(tài)口。在程序中我們要求雙方通信的傳輸速率只能在1109600bps之間可選。實(shí)現(xiàn)方法是利用人機(jī)對(duì)話的方式選擇波特率,然后再按照 Tc=CLK/(Baud*factor)公式,根據(jù)所選定的波特率,在程序中計(jì)算出8253的定時(shí)常數(shù)Tc,在裝入8253的計(jì)數(shù)器。然后我們?cè)诎l(fā)送端設(shè)置了一些特殊的字符,如發(fā)送端發(fā)送字符a為步進(jìn)電機(jī)正向慢轉(zhuǎn),發(fā)送字符b為步進(jìn)電機(jī)反向慢轉(zhuǎn),發(fā)送字符c為步進(jìn)電機(jī)正向快轉(zhuǎn),發(fā)送字符d為步進(jìn)電機(jī)反向快轉(zhuǎn)。(1)程序流程圖程序流程圖如圖3.1所示 (2)程序通信程序有發(fā)送端程序和
14、接收端程序,由發(fā)送端發(fā)送特定的字符,接收端接收到以后,引起步進(jìn)電機(jī)的相應(yīng)轉(zhuǎn)動(dòng),以實(shí)現(xiàn)遠(yuǎn)程控制的要求。接收程序:見附錄A,發(fā)送程序:見附錄B。圖3.1 程序流程圖四、調(diào)試與操作說明(1)首先檢驗(yàn)步進(jìn)電機(jī)在原有的程序中是否正常運(yùn)轉(zhuǎn);(2)以原有的程序?yàn)閰⒄?,我們用C語(yǔ)言編寫了一套步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)程序,然后檢驗(yàn)它是否能使步進(jìn)電機(jī)根據(jù)要求正常運(yùn)轉(zhuǎn),結(jié)果發(fā)現(xiàn)在調(diào)試過程中,當(dāng)SW2按下時(shí)步進(jìn)電機(jī)雖然停止了工作,但指示燈仍然沒有熄滅。最后在反復(fù)調(diào)試檢驗(yàn)中發(fā)現(xiàn)如果加上outportb(0x300,0x00);語(yǔ)句燈就熄滅了,目的是將它清零(注:此時(shí)的步進(jìn)電機(jī)的起/停是受開關(guān)SW1和SW2控制的)。(3)接下來做
15、遠(yuǎn)程控制。我們用兩臺(tái)計(jì)算機(jī)來實(shí)現(xiàn),一臺(tái)作為發(fā)送端,一臺(tái)作為接收端。通過發(fā)送端發(fā)送的特殊字符來控制接收端上步進(jìn)電機(jī)的運(yùn)轉(zhuǎn);(4)我們分別編制了兩套程序(發(fā)送程序和接收程序)。調(diào)試中我們遇到了很多問題,比如,當(dāng)我們將步進(jìn)電機(jī)的程序與之搭配時(shí),我們無法用鍵盤控制發(fā)送的字符,并且開關(guān)也失去了作用;(5)在進(jìn)行遠(yuǎn)程控制時(shí),端口之間也發(fā)生沖突,我們組采用了中斷的方法,但每次遠(yuǎn)程控制只能實(shí)現(xiàn)一次。最后參照別的組,發(fā)現(xiàn)他們是將PC口改成了PB來進(jìn)行多次控制。五、課程設(shè)計(jì)總結(jié)與體會(huì)我覺得此次課程設(shè)計(jì)不僅提高了我們?cè)诖钣布矫娴哪芰?,還鞏固了我們?cè)谲浖矫娴木幊讨R(shí),在此過程中我們收獲很多,但同時(shí)也遇到了各種各樣
16、的困難。步進(jìn)電機(jī)的硬件電路是由男生完成的,但當(dāng)我們測(cè)試時(shí)發(fā)現(xiàn)步進(jìn)電機(jī)雖然在運(yùn)轉(zhuǎn),但兩個(gè)開關(guān)卻不起作用,于是我對(duì)照電路圖,并請(qǐng)教老師,又將開關(guān)的線重新連接了一遍,使開關(guān)可以控制電機(jī)的起/停。接下來就是實(shí)現(xiàn)軟件編程,也是我主要負(fù)責(zé)的一部分,我查詢了相關(guān)的知識(shí),比如8255,8253和8251的工作方式和原理,以及它們之間的聯(lián)系。然后我試著開始編程,首先我編寫了控制步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的程序,讓它可以在本地實(shí)現(xiàn)正/反運(yùn)轉(zhuǎn),經(jīng)過多次調(diào)試后,程序是沒有邏輯上的錯(cuò)誤了,但又出現(xiàn)了一個(gè)小問題,那就是按下SW2時(shí),電機(jī)是停了,可燈沒有全部熄滅,后來發(fā)現(xiàn)是沒有將8255的300置零。接著是編寫遠(yuǎn)程控制的程序,發(fā)送端我引
17、用了電腦中已有的程序,而接收端是要將步進(jìn)電機(jī)的程序嵌入到其中。在測(cè)試中我是不斷改進(jìn)程序,我先讓接收端可以接收發(fā)送端發(fā)送的字符,然后再將電機(jī)接好,通過RS232/RS485進(jìn)行串行通信。在通信過程中,一開始我設(shè)置一個(gè)字符,將信號(hào)傳到接收端,告訴接收端電機(jī)可以運(yùn)轉(zhuǎn)了,但此時(shí)電機(jī)的起停還是由開關(guān)控制的。我原本打算通過循環(huán)查表的方法,發(fā)送端發(fā)送特定的字符而接收端接到后,控制電機(jī)相應(yīng)的運(yùn)轉(zhuǎn)情況,但此方法屢次失敗,甚至連字符都收不到,我請(qǐng)教了許多老師和相關(guān)的技術(shù)人員都沒有解決這個(gè)問題。最后在老師的幫助下,通過中斷的方式,我終于實(shí)現(xiàn)了遠(yuǎn)程控制步進(jìn)電機(jī),但每回只能發(fā)一個(gè)字符,即實(shí)現(xiàn)一次轉(zhuǎn)。我覺得做到這里,都是
18、不容易的,其間我遇到了許多的困難。其實(shí)有兩組同學(xué)共同完成了這個(gè)課題,后來我也研究了一下,因?yàn)槎丝谥g使用時(shí)存在沖突,那兩組同學(xué)解決的方法是改成了PB口,這樣線路也要跟著修改,總之完成這個(gè)課程設(shè)計(jì)期間,我受益良多,原本連面包板是什么東西我都不知道,現(xiàn)在我都可以自己動(dòng)手搭電路了,并且我還了解到了元器件運(yùn)行的原理。希望學(xué)校以后能多開展這樣的活動(dòng),加強(qiáng)我們的動(dòng)手能力,使原理可以和實(shí)踐很好地結(jié)合起來,從而開拓我們的思維。致 謝 在這次的課程設(shè)計(jì)中,郭赟同學(xué)負(fù)責(zé)硬件電路,解決了很多復(fù)雜的硬件問題;周敏、李慧娟同學(xué)在軟件環(huán)境中做了大量的程序設(shè)計(jì)和測(cè)試工作;葉新同學(xué)在硬件設(shè)計(jì)的前期做了細(xì)致的繪圖;潘晶晶同學(xué)最
19、后排版和整理了這份實(shí)驗(yàn)報(bào)告。正是因?yàn)橛辛舜蠹业墓餐图w的力量,我們的實(shí)驗(yàn)才獲得了最后的成功,在此對(duì)他們表示誠(chéng)摯的謝意。特別感謝龔義建主任以及其它輔導(dǎo)老師在這次課程設(shè)計(jì)期間對(duì)我們進(jìn)行的孜孜不倦的指導(dǎo),讓我們得以順利完成這次工作,并讓我們學(xué)到了很多專業(yè)知識(shí)、培養(yǎng)了我們解決問題的能力以及自學(xué)的能力。其學(xué)者風(fēng)度以及親切的教導(dǎo)讓我們收益匪淺。參考文獻(xiàn)1 劉樂善主編 微機(jī)接口技術(shù)及應(yīng)用, 華中科技大學(xué)出版社,2004年4月第1版。2 實(shí)驗(yàn)硬件電路參考32位微機(jī)實(shí)驗(yàn)指導(dǎo)書,華中科技大學(xué)計(jì)算機(jī)學(xué)院。附錄A:步進(jìn)電機(jī)遠(yuǎn)程控制的接收端程序接收程序:#include <conio.h> /kbhi
20、t();#include <stdio.h> /printf();#include <dos.h> /delay();#define data51 0x308 /8251A數(shù)據(jù)口#define ctrl51 0x309 /8251A命令/狀態(tài)口#define ctrl55 0x303 /8255命令口#define timer2 0x306 /8253的2號(hào)計(jì)數(shù)器端口#define timctl 0x307 /8253命令口#define factor 16 /波特率因子16#ifdef _cplusplus /if in C+ mode #define _CPPARG
21、S .#else #define _CPPARGS#endifunsigned long int clk = 1193182;char buffer1024 = ""int len = 0; /定時(shí)常數(shù)數(shù)組int tc_table8=110,/ 0=110bps 150, / 1=150b/s 300, / 2=300b/s600, / 3=600b/s 1200, / 4=1200b/s 2400, / 5=2400b/s4800, / 6=4800b/s 9600 / 1=9600b/s ;void int51(); /初始化8251avoid set_bps(int
22、bps); /8253-5記數(shù)初值計(jì)算與裝入void interrupt handler(_CPPARGS) int letter;disable();letter = inportb(data51);bufferlen+ = letter;outportb(0xa0,0x62);/發(fā)中斷結(jié)束命令(OCW2),向從片8259發(fā)EOI命令outportb(0x20,0x20);/向主片8259發(fā)EOI命令enable(); void int51() outportb(ctrl51,0x00);delay(100);outportb(ctrl51,0x40);/8251復(fù)位delay(100);o
23、utportb(ctrl51,0x4a);/8251A方式命令delay(100);outportb(ctrl51,0x27);/8251A工作命令 void set_bps(int bps) int count,sendhigh,sendlow;count=clk/bps;count=count/factor;/計(jì)算計(jì)數(shù)初值sendhigh = (count >> 8) & 0x00ff;sendlow = count & 0x00ff;outportb(timctl,0xb6);outportb(timer2,sendlow);/裝計(jì)數(shù)初值低字節(jié)outportb
24、(timer2,sendhigh);/裝計(jì)數(shù)初值高字節(jié) void main() int getvalue=0,getout = 1;int temp=-1;void interrupt (*oldhandler)(_CPPARGS);int status;for(;) clrscr();printf(" baud-rate :n 0-110n 1-150n 2-300n 3-600n 4-1200n 5-2400n 6-4800n 7-9600n"); printf("n please select one of baud-ratesn");getval
25、ue=getch();if(getvalue<'0') | (getvalue>'7') printf("n Input error! try again please! n");/error messagegetch();continue; else break; temp = getvalue - '0'set_bps(tc_tabletemp);/8253-5記數(shù)初值計(jì)算與裝入int51();/初始化8251aprintf("n now enter the serial communication&
26、quot;);printf("n if you want to end,please press "q" or "Q"n");outportb(0x303,0x80);/初始化8255outportb(0x303,0x0d);/令PC6=1,打開8253的GATE2,輸出方波delay(100);oldhandler=getvect(0x72);/獲取原中斷向量setvect(0x72,handler);/設(shè)置新中斷向量status=inportb(0xa1);outportb(0xa1,status&0xfb);/打開IRQ
27、10(OCW1)status=inportb(0x21);outportb(0x21,status&0xfb);/打開IRQ2(OCW1)delay(1000);while(getout)/按下Q/q就退出int i=0; while(i<len) printf("%c",bufferi); if(bufferi='a') int xu8=0x05,0x15,0x14,0x54,0x50,0x51,0x41,0x45;/相序表unsigned int i=0;unsigned char recv;/printf("nPress sw1
28、 to start!n");/printf("If you want to quit,press sw2!n");outportb(0x303,0x81);/初始化outportb(0x303,0x09);/置PC4=1關(guān)閉74LS373 /do /recv = inportb(0x302);/while(0x02&recv)!=0);/查SW1按下 outportb(0x303,0x08);/置PC4=0,打開74LS373do outportb(0x300,xui);/送相序代碼到PA口 i+; if(i=8) i=0; delay(200);/延時(shí)w
29、hile(0x01&inportb(0x302)!=0);/查SW2按下outportb(0x303,0x09);/置PC4=1,關(guān)閉74LS373 if(bufferi='b') int xu8=0x45,0x41,0x51,0x50,0x54,0x14,0x15,0x05;/相序表unsigned int i=0;unsigned char recv;/printf("nPress sw1 to start!n");/printf("If you want to quit,press sw2!n");outportb(0x30
30、3,0x81);/初始化outportb(0x303,0x09);/置PC4=1關(guān)閉74LS373/do/recv = inportb(0x302);/while(0x02&recv)!=0);/查SW1按下 outportb(0x303,0x08);/置PC4=0,打開74LS373dooutportb(0x300,xui);/送相序代碼到PA口 i+; if(i=8) i=0; delay(200);/延時(shí)while(0x01&inportb(0x302)!=0);/查SW2按下outportb(0x303,0x09);/置PC4=1,關(guān)閉74LS373 if(buffer
31、i='c') int xu8=0x05,0x15,0x14,0x54,0x50,0x51,0x41,0x45;/相序表unsigned int i=0;unsigned char recv;/printf("nPress sw1 to start!n");/printf("If you want to quit,press sw2!n");outportb(0x303,0x81);/初始化outportb(0x303,0x09);/置PC4=1關(guān)閉74LS373/do/recv = inportb(0x302);/while(0x02&a
32、mp;recv)!=0);/查SW1按下 outportb(0x303,0x08);/置PC4=0,打開74LS373do outportb(0x300,xui);/送相序代碼到PA口 i+; if(i=8) i=0; delay(40);/延時(shí)while(0x01&inportb(0x302)!=0);/查SW2按下outportb(0x303,0x09);/置PC4=1,關(guān)閉74LS373 if(bufferi='d') int xu8=0x45,0x41,0x51,0x50,0x54,0x14,0x15,0x05;/相序表unsigned int i=0;unsi
33、gned char recv;/printf("nPress sw1 to start!n");/printf("If you want to quit,press sw2!n");outportb(0x303,0x81);/初始化outportb(0x303,0x09);/置PC4=1關(guān)閉74LS373/do/recv = inportb(0x302);/while(0x02&recv)!=0);/查SW1按下 outportb(0x303,0x08);/置PC4=0,打開74LS373do outportb(0x300,xui);/送相序代碼
34、到PA口 i+; if(i=8) i=0; delay(40);/延時(shí)while(0x01&inportb(0x302)!=0);/查SW2按下outportb(0x303,0x09);/置PC4=1,關(guān)閉74LS373 i+;if (i=len) len=0;if(kbhit() if(getch()=0x51)|(getch()=0x71) getout = 0;/ESC鍵按下返回 setvect(0x72,oldhandler);status=inportb(0xa1);outportb(0xa1,status|0x04);/屏蔽IRQ10(OCW1)status=inportb
35、(0x21);outportb(0x21,status|0x04);/屏蔽IRQ2outport(ctrl55,0x0c);/關(guān)閉8253附錄B:步進(jìn)電機(jī)遠(yuǎn)程控制的發(fā)送端程序發(fā)送程序:#include <conio.h> /kbhit();#include <stdio.h> /printf();#include <dos.h> /delay();#define data51 0x308 /8251A數(shù)據(jù)口#define ctrl51 0x309 /8251A命令/狀態(tài)口#define ctrl55 0x303 /8255命令口#define timer2
36、0x306 /8253的2號(hào)計(jì)數(shù)器端口#define timctl 0x307 /8253命令口/#define clk 1193182 #define factor 16 /波特率因子16unsigned long int clk = 1193182;/8251輸入時(shí)鐘頻率(十六進(jìn)制表示) /定時(shí)常數(shù)數(shù)組int tc_table8=110, / 0=110bps 150, / 1=150b/s 300, / 2=300b/s 600, / 3=600b/s 1200, / 4=1200b/s 2400, / 5=2400b/s4800, / 6=4800b/s 9600 / 1=9600b/s ;void int51(); /初始化8251avoid set_bps(int bps); /8253-5記數(shù)初值計(jì)算與裝入void main() int getvalue=0;int temp=-1;int sletter,rletter,status;for(;) clrscr();printf("n 0-110n 1-150n 2-300n 3-600n 4-1200n 5-2400n 6-4800n 7-9
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 哈爾濱醫(yī)科大學(xué)《書畫裝裱》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《工程招投標(biāo)與概預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇航運(yùn)職業(yè)技術(shù)學(xué)院《中學(xué)語(yǔ)文教學(xué)設(shè)計(jì)與技能訓(xùn)練(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江司法警官職業(yè)學(xué)院《模擬電子技術(shù)課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《數(shù)字特效合成》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津工藝美術(shù)職業(yè)學(xué)院《衛(wèi)生檢驗(yàn)綜合技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 東莞職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)與操作系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢工程科技學(xué)院《外國(guó)文學(xué)名篇》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025三年級(jí)湘教版語(yǔ)文下學(xué)期期末知識(shí)點(diǎn)歸納復(fù)習(xí)周末練習(xí)單
- PROMIS-評(píng)分量表-使用版
- 《柔性棚洞防護(hù)結(jié)構(gòu)技術(shù)規(guī)程》
- 危險(xiǎn)廢物綜合利用與處置技術(shù)規(guī)范 通則
- 植物組織培養(yǎng)技術(shù)應(yīng)用研究進(jìn)展
- 教育心理學(xué)課件(完整版)
- YYT 1898-2024 血管內(nèi)導(dǎo)管導(dǎo)絲 親水性涂層牢固度試驗(yàn)方法
- 2023年安徽電氣工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能試題及答案解析
- JIS-D1601-1995-汽車零部件振動(dòng)試驗(yàn)方法
- 高血壓腎病護(hù)理查房課件
- 基坑開挖影響周邊環(huán)境與建筑物研究
- 《民事訴訟法》課件
- 環(huán)保合規(guī)與企業(yè)風(fēng)險(xiǎn)管理
評(píng)論
0/150
提交評(píng)論