版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
整理為word格式整理為word格式整理為word格式懸掛運(yùn)動(dòng)控制系統(tǒng)(E題)設(shè)計(jì)報(bào)告摘要:本懸掛控制系統(tǒng)是一個(gè)電機(jī)控制系統(tǒng),控制物體在80cm×100cm的范圍內(nèi)作直線、圓、尋跡等運(yùn)動(dòng),并且在運(yùn)動(dòng)時(shí)能顯示運(yùn)動(dòng)物體的坐標(biāo)。設(shè)計(jì)采用AT89S52單片機(jī)作為核心控制器件,采用57BYG007-4型步進(jìn)電機(jī)和高細(xì)分步進(jìn)電機(jī)驅(qū)動(dòng)器SM-60作為動(dòng)力裝置,采用紅外反射式光電傳感器實(shí)現(xiàn)畫板上黑色線尋跡檢測(cè),顯示部分用液晶顯示模塊LCD1602實(shí)現(xiàn)。關(guān)鍵詞:懸掛控制、單片機(jī)、步進(jìn)電機(jī)、紅外反射式光電傳感器整理為word格式整理為word格式整理為word格式一、設(shè)計(jì)要求1、任務(wù)設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運(yùn)動(dòng)。在一白色底板上固定兩個(gè)滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運(yùn)動(dòng),運(yùn)動(dòng)范圍為80cm×100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動(dòng)時(shí)能在板上畫出運(yùn)動(dòng)軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn),示意圖如下。整理為word格式整理為word格式整理為word格式2、基本要求:(1)控制系統(tǒng)能夠通過鍵盤或其他方式任意設(shè)定坐標(biāo)點(diǎn)參數(shù);(2)控制物體在80cm×100cm的范圍內(nèi)作自行設(shè)定的運(yùn)動(dòng),運(yùn)動(dòng)軌跡長(zhǎng)度不小于100cm,物體在運(yùn)動(dòng)時(shí)能夠在板上畫出運(yùn)動(dòng)軌跡,限300秒內(nèi)完成;(3)控制物體作圓心可任意設(shè)定、直徑為50cm的圓周運(yùn)動(dòng),限300秒內(nèi)完成;(4)物體從左下角坐標(biāo)原點(diǎn)出發(fā),在150秒內(nèi)到達(dá)設(shè)定的一個(gè)坐標(biāo)點(diǎn)(兩點(diǎn)間直線距離不小于40cm)。3、發(fā)揮部分(1)能夠顯示物體中畫筆所在位置的坐標(biāo);(2)控制物體沿板上標(biāo)出的任意曲線運(yùn)動(dòng)(見示意圖),曲線在測(cè)試時(shí)現(xiàn)場(chǎng)標(biāo)出,線寬1.5cm~1.8cm,總長(zhǎng)度約50cm,顏色為黑色;曲線的前一部分是連續(xù)的,長(zhǎng)約30cm;后一部分是兩段總長(zhǎng)約20cm的間斷線段,間斷距離不大于1cm;沿連續(xù)曲線運(yùn)動(dòng)限定在200秒內(nèi)完成,沿間斷曲線運(yùn)動(dòng)限定在300秒內(nèi)完成;(3)其他。4、評(píng)分標(biāo)準(zhǔn)項(xiàng)目滿分整理為word格式整理為word格式整理為word格式基本要求設(shè)計(jì)與總結(jié)報(bào)告:方案比較、設(shè)計(jì)與論證,理論分析與計(jì)算,電路圖及有關(guān)設(shè)計(jì)文件,測(cè)試方法與儀器,測(cè)試數(shù)據(jù)及測(cè)試結(jié)果分析。50實(shí)際制作完成情況50發(fā)揮部分完成第(1)項(xiàng)10完成第(2)項(xiàng)中連續(xù)線段運(yùn)動(dòng)14完成第(2)項(xiàng)中斷續(xù)線段運(yùn)動(dòng)16其他105、說明1、物體的運(yùn)動(dòng)軌跡以畫筆畫出的痕跡為準(zhǔn),應(yīng)盡量使物體運(yùn)動(dòng)軌跡與預(yù)期軌跡吻合,同時(shí)盡量縮短運(yùn)動(dòng)時(shí)間;2、若在某項(xiàng)測(cè)試中運(yùn)動(dòng)超過限定的時(shí)間,該項(xiàng)目不得分;3、運(yùn)動(dòng)軌跡與預(yù)期軌跡之間的偏差超過4cm時(shí),該項(xiàng)目不得分;4、在基本要求(3)、(4)和發(fā)揮部分(2)中,物體開始運(yùn)動(dòng)前,允許手動(dòng)將物體定位;開始運(yùn)動(dòng)后,不能再人為干預(yù)物體運(yùn)動(dòng);5、競(jìng)賽結(jié)束時(shí),控制系統(tǒng)封存上交賽區(qū)組委會(huì),測(cè)試用板(板上含空白坐標(biāo)紙)測(cè)試時(shí)自帶。二、方案論證與選擇1.核心控制模塊的選擇方案一:FPGA/CPLD方式。即用FPGA/CPLD完成鍵盤定義與識(shí)別、電機(jī)工作狀態(tài)選擇與切換、液晶電路的驅(qū)動(dòng)與控制等功能。這種方案的優(yōu)點(diǎn)在于系統(tǒng)結(jié)構(gòu)緊湊、操作方便,而且可以使用的I/O口線很多;缺點(diǎn)是調(diào)試時(shí)需要接很多接線,過程繁瑣,而且使用CPLD時(shí),由于其內(nèi)部沒有ROM,對(duì)功能的實(shí)現(xiàn)有所限制。方案二:?jiǎn)纹瑱C(jī)方式。即由單片機(jī)、電機(jī)驅(qū)動(dòng)電路及電機(jī)等組成系統(tǒng)。使用單片機(jī)也可以完成鍵盤定義與識(shí)別、電機(jī)工作狀選擇與切換等功能,組成的系統(tǒng)規(guī)模較小,有一定靈活性,而且可以使用我們比較熟悉的單片機(jī)最小系統(tǒng)電路板,減少了工作量。該控制方式需要單片機(jī)具有較大的程序存儲(chǔ)量,所以可選擇存儲(chǔ)量為8K的AT89S52單片機(jī)。整理為word格式整理為word格式整理為word格式基于以上分析,擬選用方案二。2.電機(jī)及其驅(qū)動(dòng)模塊的選擇
電機(jī)驅(qū)動(dòng)模塊是本系統(tǒng)的執(zhí)行機(jī)構(gòu),用于控制懸掛物體的運(yùn)動(dòng)。
方案1:采用普通小型直流電機(jī)。普通直流電機(jī)由于其自身結(jié)構(gòu)的限制,控制精度很低,無(wú)法達(dá)到系統(tǒng)要求的指標(biāo),這里不予采用。
方案2:采用專用步進(jìn)電機(jī)驅(qū)動(dòng)器及與其配套的步進(jìn)電機(jī)。用這種方案的控制精度、效率和可靠性都很高。
根據(jù)精度要求選擇方案二。
3.黑線探測(cè)模塊方案一:采用多路陣列式光敏電阻組成的光電探測(cè)器。因?yàn)楣饷綦娮杼綔y(cè)到黑線時(shí),黑線上方的電阻值發(fā)生變化,經(jīng)過電壓比較器比較將信號(hào)送給單片機(jī)處理,從而控制物體做相應(yīng)的動(dòng)作。但由于光敏電阻對(duì)環(huán)境光的識(shí)別,容易受到外界環(huán)境光的影響。,方案二:采用紅外反射式探測(cè),即用已調(diào)的紅外線垂直射到板面,經(jīng)反射后轉(zhuǎn)換為電信號(hào)送入單片機(jī)處理。由于使用的是紅外線,不受外界自然光的影響,循跡效果好?;谏厦娴挠懻摚x用了抗干擾能力強(qiáng)的方案二。4.顯示方案的選擇方案一:采用LED數(shù)碼管顯示器。LED數(shù)碼管亮度高,醒目,但是其電路復(fù)雜,顯示信息量較小,且動(dòng)態(tài)掃描需要占用大量單片機(jī)時(shí)間,無(wú)法做到實(shí)時(shí)顯示。方案二:采用漢字LCD液晶顯示器。LCD有明顯的優(yōu)點(diǎn):微功耗、尺寸小,超薄輕巧、顯示信息量大、字跡清晰、美觀、視覺舒適。本設(shè)計(jì)中采用1602字符型LCM。1602字符型LCM克服了LED數(shù)碼管的缺點(diǎn),具有顯示容量大、占用單片機(jī)口線少、節(jié)省單片機(jī)時(shí)間、功耗低等優(yōu)點(diǎn),完全符合本系統(tǒng)要求。5.位置傳感模塊
位置傳感模塊用于實(shí)現(xiàn)"顯示畫筆位置"的功能。對(duì)于這個(gè)模塊可以有硬件和軟件兩類解決方案。
方案1:在物體上安裝水平和垂直方向的兩只激光筆,在板邊緣每條坐標(biāo)線旁邊安裝一光電傳感器,物體坐標(biāo)所在處的傳感器接收到激光筆,即可確定物體位置??梢姳痉桨腹残枰?80個(gè)光電傳感器,造成此方案幾乎不可實(shí)現(xiàn)。整理為word格式整理為word格式整理為word格式
方案2:采用軟件的方法確定物體位置。單片機(jī)控制物體從某個(gè)已知的坐標(biāo)位置出發(fā),并且記錄步進(jìn)電機(jī)的每一次移動(dòng)情況,就可以通過一定的算法計(jì)算出物體的位置。這種方案沒有位置傳感器,精度較低,但是系統(tǒng)簡(jiǎn)單。避免了硬件方案過于復(fù)雜的缺點(diǎn)。
本設(shè)計(jì)使用方案2。6.鍵盤模塊
本模塊采用即插型按鍵,接在最小系統(tǒng)的P2.0—P2.7,采用了4×4的16點(diǎn)陣鍵盤。可以鍵入1—9的數(shù)字,即可以輸入點(diǎn)的坐標(biāo)值(X,Y),以及清除,確定,等功能按鍵。 三、系統(tǒng)具體設(shè)計(jì)實(shí)現(xiàn)1、硬件電路的設(shè)計(jì)(1)系統(tǒng)的總體設(shè)計(jì)方案
如圖3-1所示采用AT89S52單片機(jī)作為運(yùn)動(dòng)物體的控制中心,進(jìn)行數(shù)學(xué)計(jì)算、對(duì)光電傳感器送來(lái)的信號(hào)進(jìn)行處理來(lái)控制運(yùn)動(dòng)物體的運(yùn)行方向、計(jì)算運(yùn)行物體的坐標(biāo)位置、LCD數(shù)據(jù)顯示、鍵盤控制等。
圖整理為word格式整理為word格式整理為word格式3-1系統(tǒng)方框圖(2)黑線檢測(cè)模塊電路黑線檢測(cè)模塊電路圖3-2所示。當(dāng)紅外線反射式光電傳感器ST178位于黑線之上時(shí),光電開關(guān)輸出高電平;反之,輸出低電平。光電傳感器輸出電平后接反相器74LS04以穩(wěn)定電平和增大驅(qū)動(dòng)能力。本設(shè)計(jì)采用8個(gè)紅外傳感器實(shí)現(xiàn)對(duì)黑線的檢測(cè),通過并口轉(zhuǎn)串口芯片74LS165將數(shù)據(jù)串行傳送到單片機(jī)。圖3-2黑線檢測(cè)模塊電路(3)鍵盤電路本設(shè)計(jì)采用4x4矩陣鍵盤實(shí)現(xiàn)數(shù)字的輸入和功能的選擇,鍵盤接到AT89S52單片機(jī)的P2口,通過單片機(jī)對(duì)鍵盤的行列掃描實(shí)現(xiàn)按鍵的識(shí)別。鍵盤電路如圖3-3所示:整理為word格式整理為word格式整理為word格式圖3-34x4鍵盤電路對(duì)應(yīng)的按鍵碼如下:789/456/123/清除0確認(rèn)/(4)單片機(jī)電源電路單片機(jī)控制電路、紅外傳感器模塊電路和液晶顯示模塊均采用+5V供電,采用集成穩(wěn)壓芯片7805來(lái)實(shí)現(xiàn),電路圖如圖3-4所示。整理為word格式整理為word格式整理為word格式圖3-4單片機(jī)電源電路(5)步進(jìn)電機(jī)驅(qū)動(dòng)電路本設(shè)計(jì)采用57BYG007-4型步進(jìn)電機(jī)和專用高細(xì)分步進(jìn)電機(jī)驅(qū)動(dòng)器SM-60作為動(dòng)力裝置。57BYG007-4型步進(jìn)電機(jī)為四相混合式步進(jìn)電機(jī),由于實(shí)驗(yàn)室現(xiàn)有電機(jī)驅(qū)動(dòng)器為兩相的,固步進(jìn)電機(jī)作兩相使用,步距腳為1.8度,通過步進(jìn)電機(jī)驅(qū)動(dòng)器SM-60細(xì)分實(shí)現(xiàn)步距腳0.9度。電機(jī)驅(qū)動(dòng)器SM-60接口如下
:☆GND端為外接直流電源,直流電壓為12v
☆
A+,A-端為電機(jī)A相,B+,B-端為電機(jī)B相。
☆
+COM端為光電隔離電源公共端,接單片機(jī)供電電源為+5V,☆
CP端為脈沖信號(hào),下降沿有效。
☆
DIR端為方向控制信號(hào),電平高低決定電機(jī)運(yùn)行方向。
☆
FREE端為驅(qū)動(dòng)器使能,高電平或懸空電機(jī)可運(yùn)行。低電平驅(qū)動(dòng)器無(wú)電流輸出,電機(jī)處于自由狀態(tài)。2、軟件及算法設(shè)計(jì)(1)物體位置的計(jì)算整理為word格式整理為word格式整理為word格式
圖3-5物體位置示意圖坐標(biāo)點(diǎn)參數(shù)的計(jì)算
將畫筆所在的位置設(shè)定為整個(gè)物體的位置。如圖3-5
設(shè)定物體位置的初值坐標(biāo)為(X,Y)
L1=
L2=
設(shè)電機(jī)A
的步進(jìn)為acm,電機(jī)B的步進(jìn)為bcm,物體高度為hcm。
如圖8為物體在畫板某一位置,則有:
解得X軸點(diǎn)位置和h為
則Y軸點(diǎn)位置
Y=115-h
控制物體從一點(diǎn)到另一點(diǎn)的實(shí)現(xiàn)就是當(dāng)X、Y已知條件,求電機(jī)的步進(jìn)過程。由圖8解得:
整理為word格式整理為word格式整理為word格式
解得
(cm)
(cm)
由此,利用軟件實(shí)現(xiàn)以上算法來(lái)分別控制兩個(gè)步進(jìn)電機(jī)的步進(jìn)a,b,這樣就可以向控制系統(tǒng)輸入起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)讓物體在畫板置任意行走。(2)直線算法:目前畫直線的算法也算是有很多,比如:逐點(diǎn)比較直線插補(bǔ),脈沖增量插補(bǔ)和數(shù)據(jù)采集插補(bǔ),本設(shè)計(jì)根據(jù)實(shí)際所學(xué)知識(shí),選擇了逐點(diǎn)比較直線插補(bǔ)法,具體如下:逐點(diǎn)比較法的基本原理是,在刀具按要求軌跡運(yùn)動(dòng)加工零件輪廓的過程中,不斷比較刀具與被加工零件輪廓之間的相對(duì)位置,并根據(jù)比較結(jié)果決定下一步的進(jìn)給方向,使刀具向減小偏差的方向進(jìn)給。圖3-6第一象限直線如圖3-6所示,設(shè)直線的起點(diǎn)為坐標(biāo)原點(diǎn),終點(diǎn)坐標(biāo)為A(,),點(diǎn)m(,)為加工點(diǎn)(動(dòng)點(diǎn))。定義偏差公式為。整理為word格式整理為word格式整理為word格式若=0,表明點(diǎn)m在OA直線段上;若>0,表明點(diǎn)m在OA直線段上方,即點(diǎn)m’處;若<0,表明點(diǎn)m在OA直線段下方,即點(diǎn)m’’處。由此可得第一象限直線逐點(diǎn)比較法插補(bǔ)的原理是:從直線的起點(diǎn)出發(fā),當(dāng)0時(shí),沿+x軸方向走一步;當(dāng)<0時(shí),沿+y軸方向走一步;當(dāng)兩方向所走的步數(shù)與終點(diǎn)坐標(biāo)(,)相等時(shí),發(fā)出終點(diǎn)到信號(hào),停止插補(bǔ)??梢詫⑸厦嫠x的偏差公式進(jìn)一步簡(jiǎn)化,推導(dǎo)出偏差的遞推公式。當(dāng)0時(shí),沿+x軸方向進(jìn)給一步,(1)②當(dāng)<0時(shí),沿+y軸方向進(jìn)給一步,(2)式(1)和式(2)是簡(jiǎn)化后偏差的計(jì)算公式,在公式中只有一次加法或減法運(yùn)算,新加工點(diǎn)的偏差都可由前一點(diǎn)偏差和終點(diǎn)坐標(biāo)相加或相減得到。本體設(shè)計(jì)中采用以上原理,不過對(duì)于非原點(diǎn)開始的直線,采用起點(diǎn)坐標(biāo)歸零思想,結(jié)果也證明了改思路的可行性。(3)畫圓算法:畫圓算法采用圓弧插補(bǔ)法。圓弧插補(bǔ)法也是在繪圖系統(tǒng)中常用的一種方法,它和直線插補(bǔ)法原理相同,也是逐點(diǎn)比較算法。
若F=0,表明加工點(diǎn)在圓弧上;
F>0,表明加工點(diǎn)在圓弧外;
F<0,表明加工點(diǎn)在圓弧內(nèi)。
若F≥0,為逼近圓弧,下一步向-X軸進(jìn)給一步,并計(jì)算出新的偏差值;
F<0,為逼近圓弧,下一步向+Y軸進(jìn)給一步,并計(jì)算出新的偏差值。各象限插補(bǔ)公式如下整理為word格式整理為word格式整理為word格式在實(shí)際操作中,可以以圓心為假設(shè)的坐標(biāo)原點(diǎn),再根據(jù)上面的原理設(shè)計(jì)算法。(4)循跡黑線的探測(cè)及循跡算法在以畫筆為中心,半徑200707654321-1+1圖3-7軌跡探測(cè)傳感器安裝方式圖3-8方向調(diào)整示意圖整理為word格式整理為word格式整理為word格式根據(jù)圖3-7安裝方式及安裝半徑,只要系統(tǒng)的采樣頻率足夠高,軌跡是無(wú)法脫離探測(cè)范圍的。但由于使用了8個(gè)傳感器,不同傳感器信號(hào)間的組合太多,使用一般窮舉辦法難以實(shí)現(xiàn)循跡控制,因此自己設(shè)計(jì)了一套循跡算法。如圖3-8,定義了物體循跡時(shí)運(yùn)動(dòng)的8個(gè)方向,圖中黑箭頭(1號(hào)方向上)表示物體當(dāng)前的循跡方向。循跡時(shí),使用變量Direct表示當(dāng)前物體運(yùn)動(dòng)方向,物體每次運(yùn)動(dòng)時(shí)先按當(dāng)前方向向前步進(jìn)一段固定的距離,然后檢測(cè)采樣傳感器信號(hào)并調(diào)整Direct,再沿新的Direct方向步進(jìn)。由于所給的曲線是連續(xù)的,所以每次調(diào)整Direct只能是+1或-1。如圖3-8所示,Direct在需向左偏時(shí)則Direct加1,需向右偏則減1,繼續(xù)前進(jìn)則保持不變。由于只有8個(gè)運(yùn)動(dòng)方向,所以對(duì)Direct的運(yùn)算需在模8的范圍內(nèi)(0~7)進(jìn)行?,F(xiàn)在考慮如何決定左偏或右偏的問題,使用上述調(diào)整辦法只需要根據(jù)Direct的前后方向及左右方向的四個(gè)信號(hào)對(duì)Direct調(diào)整即可。如圖4中僅需根據(jù)1、3、5、7方向的信號(hào)對(duì)Direct調(diào)整。由于每個(gè)方向上±1和保持不變的傳感器信號(hào)是一定的,故對(duì)8個(gè)方向上的調(diào)整策略用一個(gè)靜態(tài)數(shù)組的形式保存起來(lái),調(diào)整時(shí)直接查表即可,方便編程。這種循跡算法大大地減少了循跡運(yùn)動(dòng)的調(diào)試時(shí)間,為整個(gè)作品成功的完成打下了基礎(chǔ)。當(dāng)每次步進(jìn)的距離較小時(shí),若在Direct方向的前、左、右三處的傳感器同時(shí)發(fā)現(xiàn)是白紙,則表明傳感器探測(cè)到了曲線的間斷部分或盡頭,此時(shí)應(yīng)根據(jù)前幾次(2~3次)Direct的平均值作為探索方向,再向前步進(jìn)2~3步,保證循跡的正確停止。在取平均值時(shí),需對(duì)7à0和0à7的轉(zhuǎn)變作特殊處理,否則可能出錯(cuò)。實(shí)踐證明,按照上面的辦法循跡迅速穩(wěn)定,并且不會(huì)受交叉線的影響。由于軌跡線有一定寬度,實(shí)際的軌跡不可能轉(zhuǎn)折得十分迅速,當(dāng)步進(jìn)距離較小時(shí),甚至可以完成銳角的循跡。本系統(tǒng)使用的步進(jìn)距離是5毫米整理為word格式整理為word格式整理為word格式(5)系統(tǒng)主程序流程框圖上電,初始化液晶顯示上電,初始化液晶顯示等待按鍵,選擇所需的功能1直線2正方形3圓4循跡輸入起點(diǎn)終點(diǎn)坐標(biāo)按照事先設(shè)定運(yùn)行設(shè)定圓心手動(dòng)到點(diǎn)手動(dòng)到循跡起始點(diǎn)執(zhí)行部件返回顯示程序按鍵確認(rèn),進(jìn)入對(duì)應(yīng)程序圖3-9系統(tǒng)主程序流程框圖整理為word格式整理為word格式整理為word格式四、系統(tǒng)測(cè)試1.測(cè)試儀器DT92秒表、卷尺;+12V直流穩(wěn)壓電源。2.測(cè)量結(jié)果(1)直線測(cè)試次數(shù)設(shè)定起點(diǎn)坐標(biāo)設(shè)定終點(diǎn)坐標(biāo)實(shí)際坐標(biāo)誤差用時(shí)1(0,0)(50,50)(50.2,51.3)2cm75s2(0,0)(80,99)(80.1,100.5)1.5cm134s(2)畫圓測(cè)試次數(shù)圓心坐標(biāo)半徑最大誤差用時(shí)1(25,25)251cm130s2(3)循跡測(cè)試連續(xù)線段線長(zhǎng)間斷線段長(zhǎng)度60cm46cm用時(shí)28.1s24.3s3.誤差分析及改進(jìn)措施(1)坐標(biāo)轉(zhuǎn)換的誤差。(X,Y)坐標(biāo)向(L,R)坐標(biāo)轉(zhuǎn)換時(shí)使用幾何分析的方法,但為了處理方便,將懸掛滑輪視為一點(diǎn),沒有考慮其半徑。本作品以減小其半徑的辦法降低誤差。同時(shí),進(jìn)行坐標(biāo)變換時(shí),單片機(jī)在計(jì)算精度上也會(huì)引進(jìn)誤差,由于使用浮點(diǎn)運(yùn)算,該誤差不大。整理為word格式整理為word格式整理為word格式(2)筆尖和懸掛點(diǎn)不在同一平面引入誤差,應(yīng)盡量使三點(diǎn)處于與地板平行的平面以減小誤差。(3)步進(jìn)電機(jī)的步進(jìn)脈沖個(gè)數(shù)和步進(jìn)線距離之間的折算誤差。作品使用了直接測(cè)量一段距離和步進(jìn)個(gè)數(shù)再求平均值的辦法降低誤差。(4)牽引線引入的誤差,包括拉伸誤差和由松弛產(chǎn)生的誤差。改進(jìn)措施是使用變形系數(shù)小的牽引線和增加懸掛物體的重量。(5)繞線產(chǎn)生的誤差。解決辦法是根據(jù)力學(xué)分析采用機(jī)械的辦法保證繞線不重疊,并且使用半徑小的牽引線使繞線在橫向延伸的距離減少,從而減少誤差。(6)讀數(shù)誤差。初始定位時(shí)需提供物體坐標(biāo),測(cè)量結(jié)果需人為讀數(shù),這會(huì)引入誤差。五、結(jié)論本設(shè)計(jì)以AT89S52單片機(jī)為核心,利用軟件編程,實(shí)現(xiàn)了定點(diǎn)直線運(yùn)動(dòng),圓形軌跡運(yùn)動(dòng),間斷黑線循跡以及坐標(biāo)的實(shí)時(shí)顯示。測(cè)試結(jié)果表明,本設(shè)計(jì)很好地完成了題目基本部分和發(fā)揮部分的全部要求,速度快、精度高。整個(gè)系統(tǒng)從軟件到硬件都體現(xiàn)優(yōu)良簡(jiǎn)約的風(fēng)格。主要有以下幾個(gè)優(yōu)點(diǎn):
(1)采用步進(jìn)電機(jī)及專用細(xì)分驅(qū)動(dòng)器,懸繩收放控制較精確;
(2)程序算法優(yōu)良,易于誤差處理和提高精確度;
(3)LCD液晶顯示,界面友好。六、參考文獻(xiàn)1、王瓊.單片機(jī)原理及應(yīng)用.合肥工業(yè)大學(xué)出版社2、求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.人民郵電出版社3、高吉祥.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽培訓(xùn)教程-數(shù)字系統(tǒng)與自動(dòng)控制系統(tǒng)設(shè)計(jì).電子工業(yè)出版社整理為word格式整理為word格式整理為word格式附錄一電路原理圖1、控制部分電路圖:2、循跡模塊電路圖:整理為word格式整理為word格式整理為word格式附錄二源代碼/*******************************************************************/#include<reg52.h>#include<intrins.h>#include<string.h>#include<math.h>#defineucharunsignedchar//無(wú)符號(hào)字符類型定義#defineuintunsignedint//無(wú)符號(hào)整數(shù)類型定義/******************************************************************///步進(jìn)電機(jī)驅(qū)動(dòng)器引腳連接定義sbitMotor_Left_CP=P1^0;//左步進(jìn)電機(jī)脈沖sbitMotor_Left_DIR=P1^1;//左步進(jìn)電機(jī)方向控制端sbitMotor_Right_CP=P1^2; //右步進(jìn)電機(jī)脈沖sbitMotor_Right_DIR=P1^3; //右步進(jìn)電機(jī)方向控制端sbitMotor_FREE=P1^4; //電機(jī)使能端(高電平有效,低電平是電機(jī)處于自由狀態(tài))整理為word格式整理為word格式整理為word格式sbitSHLD=P1^5;sbitS_clk=P1^6;sbitS_data=P1^7;sbitjiesu=P3^6;/**************************************************/#definepai3.141592//圓周率#definea15 //80cmx100cm場(chǎng)地到兩電機(jī)連線的垂直距離(厘米)#defineb15 //80cmx100cm場(chǎng)地到邊線(頂端滑輪和電機(jī)的連線)的垂直距離(厘米)#definer0.8276//滑輪半徑(厘米)#definestepz0.0122//左步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)#definestepy0.0122//右進(jìn)步點(diǎn)擊每步弧長(zhǎng)(厘米)#definestep0.0125//步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)#defineradius25 //圓周半徑長(zhǎng)度#defineMotor_FREE1/**************************************************///LCD1602液晶模塊引腳連接定義#defineLCD_DataP0 //1602的8位數(shù)據(jù)線連接到P0口sbitRS=P3^5; //1602的數(shù)據(jù)/命令選擇端RS連接到P1.0sbitRW=P3^4; //1602的讀/寫選擇端連接到P1.1sbitEN=P3^3; //1602的使能信號(hào)引腳連接到P1.2/**************************************************/ucharcodekaiji0[16]={">>>WELCOME!<<<"};整理為word格式整理為word格式整理為word格式ucharcodekaiji1[16]={"LOADDOWNING....."};ucharcodetable0[16]={"1.Line2Rectan"};ucharcodetable1[16]={"3.Circu4.Follow"};ucharcodetable3[16]={"DrawaLine"};ucharcodetable4[16]={"DrawCircularity"};ucharcodetable5[16]={"FollowtheLine"};ucharcodetable6[16]={"(,);(,)"};ucharcodetable7[16]={"(,);r=cm"};ucharcodetable8[16]={"(cm,cm)"};ucharcodetable9[16]={"ENTERtoBegin"};ucharcodetable10[16]={"Executing....x"};ucharcodetable11[16]={"Rectanperform."};ucharcodetable12[16]={"(25,25)-(50,25)"};ucharcodetable13[16]={"(50,50)-(25,50)"};ucharcodetable14[16]={"havecompleted!!"};ucharcodewrong[16]={"WrongCoordinate"};ucharcodeagian[16]={"InputAgian?"};ucharcodenumber[10]={"0123456789"};/**************************************************/intx0,y0,x1,y1;/*******************************************************************///函數(shù)聲明voidDelay_1ms(inttime); //延時(shí)1ms*time整理為word格式整理為word格式整理為word格式voidLCD1602_Busy_Check(void);//LCD1602忙檢查函數(shù)voidWrite_LCD1602(ucharudata,bitcommand);//LCD1602寫數(shù)據(jù)和寫指令函數(shù)voidWrite_Byte_Locate(ucharx,uchary,ucharudata);//把數(shù)據(jù)顯示在LCD1602的指定位置voidInit_LCD1602(); //LCD1602初始化函數(shù)ucharKeyboard_Scan(void); //鍵盤掃描函數(shù),返回鍵盤掃描碼ucharScan_Code_Transform(ucharscancode); //鍵碼識(shí)別函數(shù)//voidMotot_ld(int);voidMotor_Left_Step(bitDir);//左電機(jī)轉(zhuǎn)動(dòng)一步,Dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即松開線;Dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即收緊線voidMotor_Right_Step(bitDir);//右電機(jī)轉(zhuǎn)動(dòng)一步,Dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即收緊線;Dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即松開線voidDraw_Circular(intx,inty);//畫圓函數(shù)voidcurrentdisp(intline,intx,inty);//當(dāng)前顯示voidlinedisp(int,int,int,int,int);//當(dāng)前直線點(diǎn)顯示voiddisplay(uchartable[16],bitline);//提示顯示voidline(int,int,int,int); //畫直線函數(shù)voidDraw_line();//voidbuchang(float,float,float,float);//確定左右電機(jī)移動(dòng)的步數(shù)voidReturndata();//讀取對(duì)光二極管的值voidfollow();//循跡函數(shù)voidzouxiang(int);//循跡電機(jī)驅(qū)動(dòng)函數(shù)/*******************************************************************///延時(shí)函數(shù),延時(shí)時(shí)間=1ms*time(晶振12MHz)整理為word格式整理為word格式整理為word格式voidDelay_1ms(inttime){uchari,j;do{for(i=0;i<15;i++)for(j=0;j<20;j++);}while((time--)!=0);}/*******************************************************************//**********************************LCD1602液晶操作函數(shù)部分**********///LCD1602液晶檢查忙函數(shù)voidLCD1602_Busy_Check(void){EN=0;RW=1;RS=0;EN=1;while(LCD_Data&&0x80==1);EN=0;Delay_1ms(1);}/**************************************************///LCD1602寫數(shù)據(jù)和寫指令函數(shù)整理為word格式整理為word格式整理為word格式//把寫數(shù)據(jù)和指令二個(gè)合在一起,用一個(gè)變量command來(lái)判斷voidWrite_LCD1602(ucharudata,bitcommand){LCD1602_Busy_Check();//忙檢查RS=command; //command=0時(shí)寫入指令,command=1時(shí)寫入數(shù)據(jù)RW=0; //把LCD設(shè)置成寫狀態(tài)EN=1; //E=高脈沖,把數(shù)據(jù)/指令寫入LCD_Data=udata;EN=0;}/**************************************************///把數(shù)據(jù)顯示在LCD1602的指定位置//x,y是坐標(biāo),udata是需要顯示的數(shù)據(jù)//x不能大于15,每行最多顯示16字符//y不能大于1,最多顯示2行voidWrite_Byte_Locate(ucharx,uchary,ucharudata){if(y){x+=0x40;}//判斷顯示哪行,顯示第二行LCD存儲(chǔ)區(qū)加40Hx+=0x80; //如果沒有加0X40則顯示第一行Write_LCD1602(x,0);//寫指令Write_LCD1602(udata,1);//寫顯示數(shù)據(jù)}/**************************************************/整理為word格式整理為word格式整理為word格式//LCD1602初始化函數(shù)voidInit_LCD1602(){Write_LCD1602(0x38,0);//顯示模式設(shè)置Delay_1ms(20);Write_LCD1602(0x01,0);//清除屏幕Write_LCD1602(0x06,0);//顯示光標(biāo)移動(dòng)設(shè)置Write_LCD1602(0x0c,0);//開顯示}/*******************************************************************//*******************鍵盤掃描和鍵碼識(shí)別函數(shù)部分**********************///鍵盤掃描函數(shù),返回鍵盤掃描碼//P2.0~P2.3輸出,P2.4~P2.7輸入ucharKeyboard_Scan(void){ucharscancode,tmpcode;P2=0xf0;while(P2==0xf0);//等待有鍵按下Delay_1ms(20); //延時(shí)10ms去抖動(dòng)if(P2!=0xf0){scancode=0xfe;//逐行掃描while(scancode!=0xef) //還沒有掃描完4行{整理為word格式整理為word格式整理為word格式 P2=scancode;if((P2&0xf0)!=0xf0)//本列有鍵按下{ tmpcode=(P2&0xf0)|(scancode&0x0f); while((P2&0xf0)!=0xf0);//等待鍵釋放 return(tmpcode);}elsescancode=(scancode<<1)|0x01;}} return(0);}/**************************************************///鍵碼識(shí)別函數(shù)ucharScan_Code_Transform(ucharscancode){switch(scancode){/*將按鍵碼轉(zhuǎn)換成鍵值*/case0xde:return0;case0xed:return1;case0xdd:return2;case0xbd:return3;case0xeb:return4;case0xdb:return5;整理為word格式整理為word格式整理為word格式case0xbb:return6;case0xe7:return7;case0xd7:return8;case0xb7:return9;case0xee:return10;default:return0xff;}}/*******************************************************************//********************步進(jìn)電機(jī)基本操作部分***************************///左電機(jī)轉(zhuǎn)動(dòng)一步,Dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即松開線;Dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即收緊線voidMotor_Left_Step(bitDir){Motor_Left_DIR=Dir;Motor_Left_CP=1;Delay_1ms(1);Motor_Left_CP=0;Delay_1ms(1);}/**************************************************///右電機(jī)轉(zhuǎn)動(dòng)一步,Dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即收緊線;Dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即松開線voidMotor_Right_Step(bitDir)整理為word格式整理為word格式整理為word格式{Motor_Right_DIR=Dir;Motor_Right_CP=1;Delay_1ms(1);Motor_Right_CP=0;Delay_1ms(1);}/*************************************************//*圓形當(dāng)前坐標(biāo)顯示模塊*/voidcurrentdisp(intline,intx,inty){Write_Byte_Locate(1,line,number[x/10]); Write_Byte_Locate(2,line,number[x%10]);Write_Byte_Locate(4,line,number[y/10]);Write_Byte_Locate(5,line,number[y%10]);}/************直線當(dāng)前坐標(biāo)實(shí)現(xiàn)模塊****************//*“(,);(,)”*/voidlinedisp(intline,intx,inty,intxz,intyz){ display(table6,line);Write_Byte_Locate(1,line,number[x/10]); Write_Byte_Locate(2,line,number[x%10]); Write_Byte_Locate(4,line,number[y/10]);整理為word格式整理為word格式整理為word格式 Write_Byte_Locate(5,line,number[y%10]); Write_Byte_Locate(9,line,number[xz/10]); Write_Byte_Locate(10,line,number[xz%10]); Write_Byte_Locate(12,line,number[yz/10]); Write_Byte_Locate(13,line,number[yz%10]);}/*******************************************************************//*******************************功能實(shí)現(xiàn)部分************************//******************步數(shù)確定函數(shù)*********************/voidbuchang(floatx,floaty,floatnextx,floatnexty)//,int*znum1,int*ynum1){floatzb,yb; intznum,ynum,fhz,fhy;zb=(sqrt((114.3-y)*(114.3-y)+(14.4+x)*(14.4+x))-sqrt((114.3-nexty)*(114.3-nexty)+(14.4+nextx)*(14.4+nextx)))/stepz;yb=(sqrt((114.3-y)*(114.3-y)+(94.4-x)*(94.4-x))-sqrt((114.3-nexty)*(114.3-nexty)+(94.4-nextx)*(94.4-nextx)))/stepy;if(zb>0) {znum=(int)(zb+0.5); fhz=1;} else {znum=abs((int)(zb-0.5)); fhz=0;} if(yb>0)整理為word格式整理為word格式整理為word格式 {ynum=(int)(yb+0.5); fhy=0;} else {ynum=abs((int)(yb-0.5)); fhy=1;} while(znum--) { Motor_Left_Step(fhz); } while(ynum--) { Motor_Right_Step(fhy); }// return0;}/*floatsumz1=0.0;floatsumz2=0.0;floatsumy1=0.0;floatsumy2=0.0;voidbuchang(floatx,floaty,floatnextx,floatnexty)//,int*znum1,int*ynum1){floatzb,yb;整理為word格式整理為word格式整理為word格式floatd; intznum,ynum,fhz,fhy;zb=(sqrt((114.7-y)*(114.7-y)+(14.4+x)*(14.4+x))-sqrt((114.7-nexty)*(114.7-nexty)+(14.4+nextx)*(14.4+nextx)))/stepz;yb=(sqrt((114.5-y)*(114.5-y)+(94.4-x)*(94.4-x))-sqrt((114.5-nexty)*(114.5-nexty)+(94.4-nextx)*(94.4-nextx)))/stepy;if(zb>0) {d=zb-(int)(zb);sumz1+=d; fhz=1;if(sumz1>=1){sumz1-=1;znum=(int)(zb)+1;}elseznum=(int)(zb);} else {d=zb-(int)(zb);sumz2+=d; fhz=0;if(sumz2<=-1){整理為word格式整理為word格式整理為word格式sumz2+=1;znum=abs((int)(zb)-1);}elseznum=abs((int)(zb));} if(yb>0) {d=yb-(int)(yb);sumy1+=d; fhy=0;if(sumy1>=1){sumy1-=1;ynum=(int)(yb)+1;}elseynum=(int)(yb);} else {d=yb-(int)(yb);sumy1+=d; fhy=1;if(sumy1<=-1){sumy1+=1;整理為word格式整理為word格式整理為word格式y(tǒng)num=abs((int)(yb))+1;}elseynum=abs((int)(yb)); } while(znum--) { Motor_Left_Step(fhz); } while(ynum--) { Motor_Right_Step(fhy); }// return0;}*//****************************************************************//*****************畫直線函數(shù)*************************/voidline(inta0,intb0,inta1,intb1){intcnt;floatx,y,nextx,nexty;intzx,zy,sx,sy;intfm;整理為word格式整理為word格式整理為word格式intcnt1;cnt=(int)((abs(a1-a0)+abs(b1-b0))/(8*step));x=0.0;y=0.0;fm=0;sx=a1-a0;sy=b1-b0;zx=abs(a1-a0);zy=abs(b1-b0);while(cnt--){if((sx>0)&&(sy>=0)){if(fm>=0){if(fm==0) {nextx=x+8*step; nexty=y; buchang((x+a0),(y+b0),(nextx+a0+0.003),(nexty+b0)); fm=fm-zy; } else { nextx=x+8*step; nexty=y;整理為word格式整理為word格式整理為word格式 buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm-zy; }} else{ nexty=y+8*step; nextx=x;; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm+zx;} }elseif((sx<=0)&&(sy>0))//2{if(fm>=0){nextx=x-8*step; nexty=y; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0));fm=fm-zy;}else {整理為word格式整理為word格式整理為word格式 nexty=y+8*step; nextx=x; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm+zx;} }elseif((sx<0)&&(sy<=0))//3{if(fm>=0){nextx=x-8*step; nexty=y; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm-zy;}else{ nexty=y-8*step; nextx=x; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm+zx;}}整理為word格式整理為word格式整理為word格式elseif((sx>=0)&&(sy<0))//4{if(fm>=0){nextx=x+8*step; nexty=y; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0));fm=fm-zy;}else { nexty=y-8*step; nextx=x; buchang((x+a0),(y+b0),(nextx+a0),(nexty+b0)); fm=fm+zx; } }x=nextx; y=nexty; nextx=x+a0;nexty=y+b0; cnt1++;整理為word格式整理為word格式整理為word格式 if(cnt1==10) { linedisp(1,a0,b0,nextx,nexty); cnt1=0; } }}voidDraw_line(){if((x0==0)&&(y0==0)) { linedisp(0,x0,y0,x1,y1); line(x0,y0,x1,y1); } else { linedisp(0,0,0,x0,y0); line(0,0,x0,y0); Delay_1ms(100); linedisp(0,x0,y0,x1,y1);line(x0,y0,x1,y1); }整理為word格式整理為word格式整理為word格式}/*************************************************************//*********************畫圓程序****************************/ //采用逐點(diǎn)比較法畫圓voidDraw_Circular(intx,inty){floatpointx,pointy,nextx,nexty;floatresult;floatsize=0.15; intcnt; intcnt1=0; cnt=(8*radius)/size;pointx=x;pointy=y-25; display(table7,0);currentdisp(0,x,y); Write_Byte_Locate(11,0,number[radius/10]); Write_Byte_Locate(12,0,number[radius%10]);while(cnt--){result=((pointx-25)*(pointx-25)+(pointy-25)*(pointy-25))>625?1:0;if(result){整理為word格式整理為word格式整理為word格式if((pointx>x)&&(pointy>=y)){nextx=pointx-size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<=x)&&(pointy>y)){nextx=pointx;nexty=pointy-size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<x)&&(pointy<=y)){nextx=pointx+size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}elseif((pointx>=x)&&(pointy<y)){nextx=pointx;nexty=pointy+size;buchang(pointx,pointy,nextx,nexty);整理為word格式整理為word格式整理為word格式}}else{if((pointx>x)&&(pointy>=y)){nextx=pointx;nexty=pointy+size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<=x)&&(pointy>y)){nextx=pointx-size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<x)&&(pointy<=y)){nextx=pointx;nexty=pointy-size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx>=x)&&(pointy<y))整理為word格式整理為word格式整理為word格式{nextx=pointx+size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}}pointx=nextx;pointy=nexty; cnt1++; if(cnt1==10) { display(table7,1);//在1602第二行顯示table6中的字符 currentdisp(1,nextx,nexty); Write_Byte_Locate(11,1,number[radius/10]); Write_Byte_Locate(12,1,number[radius%10]);cnt1=0; }} }/*voidDraw_Circular(intx,inty){floatpointx,pointy,nextx,nexty;floatresult;整理為word格式整理為word格式整理為word格式floatsize=0.15; intcnt; intcnt1=0; cnt=(8*radius)/size;pointx=x;pointy=y-25; display(table7,0);currentdisp(0,x,y); Write_Byte_Locate(11,0,number[radius/10]); Write_Byte_Locate(12,0,number[radius%10]);while(cnt--){result=((pointx-25)*(pointx-25)+(pointy-25)*(pointy-25))>625?1:0;if(result){if((pointx>x)&&(pointy>=y)){nextx=pointx;nexty=pointy-size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<=x)&&(pointy>y)){整理為word格式整理為word格式整理為word格式nextx=pointx+size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<x)&&(pointy<=y)){nextx=pointx;nexty=pointy+size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx>=x)&&(pointy<y)){nextx=pointx-size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}}else{if((pointx>x)&&(pointy>=y)){nextx=pointx+size;nexty=pointy;整理為word格式整理為word格式整理為word格式buchang(pointx,pointy,nextx,nexty);}elseif((pointx<=x)&&(pointy>y)){nextx=pointx;nexty=pointy+size;buchang(pointx,pointy,nextx,nexty);}elseif((pointx<x)&&(pointy<=y)){nextx=pointx-size;nexty=pointy;buchang(pointx,pointy,nextx,nexty);}elseif((pointx>=x)&&(pointy<y)){nextx=pointx;nexty=pointy-size;buchang(pointx,pointy,nextx,nexty);}} pointx=nextx;pointy=nexty;整理為word格式整理為word格式整理為word格式 cnt1++; if(cnt1==10) { display(table7,1);//在1602第二行顯示table6中的字符 currentdisp(1,nextx,nexty); Write_Byte_Locate(11,1,number[radius/10]); Write_Byte_Locate(12,1,number[radius%10]);cnt1=0; } }} *///循跡功能程序voidzouxiang(intn){intznum,ynum;switch(n)//0表示→1表示↘2表示↓3表示↙4表示←5表示↖6表示↑7表示↗{case0:znum=20;ynum=15;while(znum--){Motor_Left_Step(0);整理為word格式整理為word格式整理為word格式}while(ynum--){Motor_Right_Step(0);}break;case1:znum=52;ynum=12;while(znum--){Motor_Left_Step(0);}while(ynum--){Motor_Right_Step(0);}break;case2:znum=27;ynum=29;while(znum--){整理為word格式整理為word格式整理為word格式Motor_Left_Step(0);}while(ynum--){Motor_Right_Step(1);}break;case3:znum=10;ynum=50;while(znum--){Motor_Left_Step(0);}while(ynum--){Motor_Right_Step(1);}break;case4:znum=20;ynum=15;while(znum--)整理為word格式整理為word格式整理為word格式{Motor_Left_Step(1);}while(ynum--){Motor_Right_Step(1);}break;case5:znum=52;ynum=12;while(znum--){Motor_Left_Step(1);}while(ynum--){Motor_Right_Step(1);}break;case6:znum=29;ynum=27;整理為word格式整理為word格式整理為word格式while(znum--){Motor_Left_Step(1);}while(ynum--){Motor_Right_Step(0);}break;case7:znum=15;ynum=50;while(znum--){Motor_Left_Step(1);}while(ynum--){Motor_Right_Step(0);}break;default:break;}整理為word格式整理為word格式整理為word格式}voidfollow(){inti,j; intarray[9]; array[8]=0; i=0; //display(table11,1); SHLD=0;//將8路檢測(cè)器的電平置入74LS165寄存器中 SHLD=1;//串行移位控制 for(j=0;j<=7;j++) { array[j]=S_data; S_clk=0; S_clk=1; } Delay_1ms(10);while(array[i]){ //Delay_1ms(20);zouxiang(i); Write_Byte_Locate(15,1,number[i]); SHLD=0;//將8路檢測(cè)器的電平置入74LS165寄存器中整理為word格式整理為word格式整理為word格式 SHLD=1;//串行移位控制 for(j=0;j<=7;j++) { array[j]=S_data; S_clk=0; S_clk=1; } Delay_1ms(10);if(array[i%8]){i=i%8;}elseif(array[(i+1+8)%8]){i=(i+1+8)%8;}elseif(array[(i-1+8)%8]){i=(i-1+8)%8;}//elseif(array[(i-2+8)%8])//{i=(i-2+8)%8;}//elseif(array[(i+2+8)%8])//{i=(i+2+8)%8;}else{ //Delay_1ms(20);zouxiang(i);zouxiang(i);整理為word格式整理為word格式整理為word格式 Write_Byte_Locate(15,1,number[i]); SHLD=0;//將8路檢測(cè)器的電平置入74LS165寄存器中 SHLD=1;//串行移位控制 for(j=0;j<=7;j++) { array[j]=S_data; S_clk=0; S_clk=1; } Delay_1ms(100);if((array[i%8]==0)&&(array[(i+1+8)%8]==0)&&(array[(i-1+8
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版毛石擋土墻施工安全防護(hù)設(shè)施采購(gòu)合同4篇
- 二零二五年度出國(guó)勞務(wù)人員福利待遇協(xié)議4篇
- 二零二五年度太陽(yáng)能路燈照明工程設(shè)計(jì)與設(shè)備供應(yīng)合同3篇
- 2025版教育行業(yè)學(xué)徒制實(shí)習(xí)協(xié)議范本3篇
- 2025年機(jī)場(chǎng)車庫(kù)租賃與行李托運(yùn)服務(wù)協(xié)議4篇
- 二零二五年度女方離婚上訴狀法律援助合同
- 2025年度文化產(chǎn)業(yè)投資基金入股協(xié)議
- 2025年度沿海漁船租賃及捕撈作業(yè)合同范本4篇
- 2025年度農(nóng)副產(chǎn)品電商平臺(tái)數(shù)據(jù)共享與安全協(xié)議
- 2025版協(xié)議離婚糾紛解決與財(cái)產(chǎn)保全合同3篇
- 電化學(xué)儲(chǔ)能電站安全規(guī)程
- 幼兒園學(xué)習(xí)使用人民幣教案教案
- 2023年浙江省紹興市中考科學(xué)真題(解析版)
- 語(yǔ)言學(xué)概論全套教學(xué)課件
- 大數(shù)據(jù)與人工智能概論
- 《史記》上冊(cè)注音版
- 2018年湖北省武漢市中考數(shù)學(xué)試卷含解析
- 測(cè)繪工程產(chǎn)品價(jià)格表匯編
- 《腎臟的結(jié)構(gòu)和功能》課件
- 裝飾圖案設(shè)計(jì)-裝飾圖案的形式課件
- 護(hù)理學(xué)基礎(chǔ)教案導(dǎo)尿術(shù)catheterization
評(píng)論
0/150
提交評(píng)論