版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p> 摘 要 ……………………………………………………………2</p><p> 第一章 系統(tǒng)方案設(shè)計(jì)與論證……………………………………3</p><p> 1.1 設(shè)計(jì)要求……………………………………………………………3</p><p> 1
2、.1.1 基本要求…………………………………………………………3</p><p> 1.1.2 發(fā)揮部分…………………………………………………………3</p><p> 1.2 總體設(shè)計(jì)方案………………………………………………………3</p><p> 1.2.1 單片機(jī)的選擇………………………………………………</p><p> 1
3、.2.2 電機(jī)選擇問(wèn)題……………………………………………………3</p><p> 1.2.3 懸線長(zhǎng)度測(cè)量方法………………………………………………4</p><p> 1.2.4 重物選擇問(wèn)題……………………………………………………4</p><p> 1.2.5 步進(jìn)電機(jī)驅(qū)動(dòng)選擇………………………………………………4</p><p>
4、; 1.3 理論分析與計(jì)算…………………………………………………</p><p> 1.3.1 算法分析………………………………………………………</p><p> 1.3.2 重物運(yùn)動(dòng)形式的方案分析與比較……………………………</p><p> 第二章 單元電路設(shè)計(jì)……………………………………………</p><p> 2.1 鍵
5、盤(pán)輸入及數(shù)碼管顯示部分………………………………………</p><p> 2.1.1 8279芯片介紹……………………………………………………</p><p> 2.1.2 LED 顯示器接口…………………………………………………</p><p> 2.2步進(jìn)電機(jī)原理及應(yīng)用………………………………………………</p><p> 2.2.
6、1 步進(jìn)電機(jī)參數(shù)……………………………………………………</p><p> 2.2.2 步進(jìn)電機(jī)的特點(diǎn)………………………………………………</p><p> 2.2.3 步進(jìn)電機(jī)要素…………………………………………………</p><p> 2.2.4 步進(jìn)電機(jī)力矩與功率換算……………………………………</p><p> 2.2.5 步
7、進(jìn)電機(jī)應(yīng)用中的注意點(diǎn)……………………………………</p><p> 2.3 細(xì)分驅(qū)動(dòng)器……………………………………………………</p><p> 2.4 89C52芯片介紹……………………………………………………</p><p> 2.5 編碼器結(jié)構(gòu)與參數(shù)………………………………………………</p><p> 第三章 軟件設(shè)計(jì)部分…
8、………………………………………</p><p> 3.1 硬件連接及軟件…………………………………………………</p><p> 3.1.1硬件連接電路圖…………………………………………………</p><p> 3.1.2程序流程圖………………………………………………………</p><p> 3.2 儀器與測(cè)試方法…………………………
9、………………………</p><p> 3.2.1 芯片、儀器與用具……………………………………………</p><p> 3.2.2 測(cè)試方法………………………………………………………</p><p> 第四章 測(cè)試數(shù)據(jù)及測(cè)試結(jié)果分析……………………………2</p><p> 附錄 程序………………………………………………………2&
10、lt;/p><p> 參考文獻(xiàn)…………………………………………………………3</p><p> 外文資料………………………………………………………3</p><p> 中文譯文………………………………………………………3</p><p> 致謝……………………………………………………………35</p><p>&l
11、t;b> 摘 要</b></p><p> 本設(shè)計(jì)是應(yīng)用PIC系列單片機(jī)(PIC16F877)開(kāi)發(fā)各種院校、賓館的公共衛(wèi)生間的智能沖水系統(tǒng),可根據(jù)進(jìn)入衛(wèi)生間的人數(shù)進(jìn)行沖水時(shí)間、沖水方式進(jìn)行設(shè)定和控制已達(dá)到節(jié)約用水之目的。要求實(shí)現(xiàn)鍵盤(pán)控制輸入、數(shù)碼顯示、聲光報(bào)警等功能。為了使系統(tǒng)工作更加智能化,模式選擇方面,分別對(duì)大便池和小便池進(jìn)行設(shè)定,其中每一部分要分兩個(gè)模式:(1)按人次進(jìn)行沖水,用戶可
12、根據(jù)當(dāng)?shù)氐膶?shí)際情況通過(guò)鍵盤(pán)進(jìn)行設(shè)定。(2)按時(shí)間間隔沖水,以十分鐘為基數(shù),用戶設(shè)定乘數(shù),這樣盡可能少用按鍵,便于節(jié)省系統(tǒng)耗材,提高系統(tǒng)的整體特性。夜間,因?yàn)槿撕苌俚木壒?,關(guān)掉紅外探測(cè),以利于省電。就以小時(shí)為基準(zhǔn)單位,用戶設(shè)定倍數(shù),完成沖水任務(wù)。</p><p> 此時(shí),就可以用單片機(jī)配以繼電器來(lái)控制電磁閥,從而進(jìn)行自動(dòng)放水。</p><p> 為了使系統(tǒng)更加完善,盡力加上聲光報(bào)警系統(tǒng)。
13、當(dāng)衛(wèi)生間發(fā)生水溢出,或者電磁閥失靈的時(shí)候,報(bào)警系統(tǒng)開(kāi)始工作。用紅色二極管閃爍,發(fā)聲器鳴叫來(lái)提醒人們</p><p> 關(guān)鍵詞: PIC單片機(jī); 節(jié)水; 智能</p><p><b> Abstract</b></p><p> This design is for making use of a computer control to
14、 tread into the electrical engineering, which can make hang object accurate fixed position, and can complete some compare to act complicatedly. We adopted the coder to control the length of the walking line, carrying out
15、 the higher index sign of the fixed position accuracy, at the same time because of need control to hang the object to complete the circumference sport in the in a short time, and the other by oneself sets of higher actio
16、n of d</p><p> Key words:Suspension motion control system; Thin enter the electrical engineering actuator at every step; coder; tread into the electrical engineering</p><p> 第一章 系統(tǒng)方案設(shè)計(jì)與論證<
17、/p><p><b> 1.1 設(shè)計(jì)要求</b></p><p> 1.1.1 基本要求</p><p> (1)正確使用PIC單片機(jī)(pic16f877)來(lái)實(shí)現(xiàn)實(shí)驗(yàn)。</p><p> ?。?)控制系統(tǒng)能夠通過(guò)鍵盤(pán)輸入控制并能夠通過(guò)LCD顯示當(dāng)時(shí)的狀態(tài)等數(shù)據(jù)。</p><p> ?。?)系統(tǒng)可
18、以自己記數(shù),自己完成功能模式的轉(zhuǎn)換,并且可以對(duì)一些不正常的現(xiàn)象做出報(bào)警。</p><p> 1.1.2 發(fā)揮部分</p><p> ?。?)分成兩種模式:按人次進(jìn)行沖水,按時(shí)間間隔沖水</p><p> ?。?)按人數(shù)沖水可以通過(guò)鍵盤(pán)輸入進(jìn)行設(shè)定,按時(shí)間的沖水也可以通過(guò)鍵盤(pán)來(lái)實(shí)現(xiàn)周期的設(shè)定。</p><p> 1.2 總體設(shè)計(jì)方案<
19、/p><p> 1.2.1 單片機(jī)的選擇</p><p> 方案:當(dāng)今單片機(jī)廠商琳瑯滿目,產(chǎn)品性能各異,PIC最大的特點(diǎn)是不搞單純的功能堆積,而是從實(shí)際出發(fā),重視產(chǎn)品的性能與價(jià)格比,靠發(fā)展多種型號(hào)來(lái)滿足不同層次的應(yīng)用要求。就實(shí)際而言,不同的應(yīng)用對(duì)單片機(jī)功能和資源的需求也是不同的。PIC系列從低到高有幾十個(gè)型號(hào),可以滿足各種需要。其中,PIC12C508單片機(jī)僅有8個(gè)引腳,是世界上最小的單片
20、機(jī),PIC有優(yōu)越開(kāi)發(fā)環(huán)境。OTP單片機(jī)開(kāi)發(fā)系統(tǒng)的實(shí)時(shí)性是一個(gè)重要的指標(biāo),象普通51單片機(jī)的開(kāi)發(fā)系統(tǒng)大都采用高檔型號(hào)仿真低檔型號(hào),其實(shí)時(shí)性不盡理想。PIC在推出一款新型號(hào)的同時(shí)推出相應(yīng)的仿真芯片,所有的開(kāi)發(fā)系統(tǒng)由專用的仿真芯片支持,實(shí)時(shí)性非常好。所以我選擇PIC單片機(jī)來(lái)完成實(shí)驗(yàn)。</p><p> 1.2.2 LCD選擇問(wèn)題</p><p><b> 方案:</b>
21、</p><p> 1.2.3 懸線長(zhǎng)度測(cè)量方法</p><p> 方案一:使用89C52定時(shí)器/計(jì)數(shù)器記錄電機(jī)轉(zhuǎn)過(guò)的圈數(shù),根據(jù)圈數(shù)和電機(jī)轉(zhuǎn)一圈繩子運(yùn)動(dòng)的長(zhǎng)度算出重物的位置,由此確定重物的坐標(biāo)。</p><p> 方案二:使用編碼器記錄滑輪轉(zhuǎn)過(guò)的圈數(shù),然后根據(jù)滑輪轉(zhuǎn)一圈繩子運(yùn)動(dòng)的長(zhǎng)度算出重物的位置,由此確定重物的坐標(biāo)。</p><p>
22、 比較兩個(gè)方案,由于本設(shè)計(jì)需要精確定位,方案一當(dāng)繩子運(yùn)動(dòng)起來(lái)后,電機(jī)帶動(dòng)定滑輪轉(zhuǎn)動(dòng),隨著繩子的纏繞,其直徑變大,誤差隨之增大。而方案二由于采用了編碼器,對(duì)此不會(huì)產(chǎn)生任何影響。因此我采用了方案二。</p><p> 1.2.4 重物選擇問(wèn)題</p><p> 由于本設(shè)計(jì)需要≧100g重物,并且需要讓其畫(huà)出它的運(yùn)動(dòng)軌跡,考慮到摩擦力和環(huán)境等的影響,選定了密度大、體積小、穩(wěn)定度高的圓形,由
23、此避免了不必要的由顫抖、重心不穩(wěn)等造成的誤差。</p><p> 1.2.5 步進(jìn)電機(jī)驅(qū)動(dòng)選擇</p><p> 步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)需要移位元元脈沖的輸入才能正常運(yùn)轉(zhuǎn),采用單片機(jī)進(jìn)行驅(qū)動(dòng)需要用跟電機(jī)線圈數(shù)相同的口線來(lái)進(jìn)行信號(hào)的輸入,但是人機(jī)交換的鍵盤(pán)和顯示等要占用大部分的口線,這樣我們選擇了適用于步進(jìn)電機(jī)專用的驅(qū)動(dòng)芯片PD-0223M,只要輸入控制脈沖即可,操作方便,并且使程序大大簡(jiǎn)化。
24、</p><p> 驅(qū)動(dòng)器PD-0223M功能說(shuō)明:</p><p> (1)CW時(shí)鐘輸入。電機(jī)由5V脈沖輸入驅(qū)動(dòng),OFF=0~5V,ON=4~5V,上升沿動(dòng)作。</p><p> ?。?)CCW時(shí)鐘輸入。輸入特性與CW端相同。</p><p> (3)M.F輸入。+-5V輸入時(shí),切斷電機(jī)勵(lì)磁電流。</p><p&g
25、t; (4)RUN電流值。用于設(shè)定電機(jī)運(yùn)行時(shí)的電流值。</p><p> ?。?)O.H輸出:外殼溫度為75℃以上時(shí)此端ON,同時(shí)電機(jī)降至停止電流設(shè)定值,O.H指示燈開(kāi)始閃動(dòng),當(dāng)溫度下降到10℃以后,恢復(fù)動(dòng)作。</p><p> 1.3 理論分析與計(jì)算</p><p> 1.3.1 算法分析</p><p> 懸掛物體及步進(jìn)電機(jī)如圖所
26、示:</p><p> 左滑輪 右滑輪</p><p> 左電機(jī) 右電機(jī)</p><p> 設(shè)橫軸為X軸,縱軸為Y軸,每個(gè)坐標(biāo)點(diǎn)設(shè)為(x,y),懸掛物體中心到左滑輪中
27、心的距離為a,到右滑輪的距離為b。所以,知道懸掛物體中心的坐標(biāo),很容易求得a和b的值,通過(guò)公式:</p><p> a²=(x+15)²+(115-y)²,</p><p> b² =(95-x)²+(115-y)²,</p><p> 進(jìn)而就能求得a和b的增量,通過(guò)a和b的增量大小的變化和方向,再加
28、上距離編碼器,就能控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)方向和轉(zhuǎn)動(dòng)時(shí)間。使用的距離編碼器每轉(zhuǎn)一周產(chǎn)生500個(gè)脈沖信號(hào),用左右兩個(gè)距離編碼器發(fā)出的脈沖分別作89C52單片機(jī)計(jì)數(shù)器1和計(jì)數(shù)器2的脈沖信號(hào),根據(jù)a和b的增量設(shè)定兩個(gè)計(jì)數(shù)器的計(jì)數(shù)初值,就可以實(shí)現(xiàn)懸掛物體在坐標(biāo)格上的定位,再通過(guò)補(bǔ)償校正就能實(shí)現(xiàn)準(zhǔn)確定位。在其能夠準(zhǔn)確定位的基礎(chǔ)上,再去實(shí)現(xiàn)懸掛物體做較為復(fù)雜的運(yùn)動(dòng)。</p><p> 1.3.2 重物運(yùn)動(dòng)形式的方案分析與比較<
29、;/p><p> ?。?)坐標(biāo)位置的確定</p><p> 方案一:利用上述公式計(jì)算實(shí)現(xiàn)。這也是我所選擇的方案,可以將電機(jī)轉(zhuǎn)動(dòng)的距離通過(guò)上述公式算出,然后通過(guò)鍵盤(pán)設(shè)定坐標(biāo),啟動(dòng)程序后,電機(jī)就會(huì)帶動(dòng)重物運(yùn)動(dòng),并能較為準(zhǔn)確的到達(dá)指定位置。但也會(huì)因硬件的原因,產(chǎn)生較大的誤差。</p><p> 方案二:先算出滑輪的周長(zhǎng),用定時(shí)計(jì)數(shù)器記錄發(fā)送脈沖次數(shù),同時(shí)計(jì)算出轉(zhuǎn)一周所需脈
30、沖數(shù),據(jù)此計(jì)算出電機(jī)需要轉(zhuǎn)動(dòng)地距離距離。然后通過(guò)鍵盤(pán)設(shè)定坐標(biāo),啟動(dòng)程序后,電機(jī)就會(huì)帶動(dòng)重物運(yùn)動(dòng),并能較為準(zhǔn)確的到達(dá)指定位置。但是方案二需要計(jì)算的數(shù)太多,因此造成的誤差也會(huì)隨之加大,所以我選擇方案一。</p><p> ?。?)圓周運(yùn)動(dòng)的實(shí)現(xiàn)</p><p> 方案一:采用逐次逼近法。將圓周分成許多段,每次運(yùn)行一格,逐次逼近。</p><p> 方案二:采用畫(huà)多邊
31、形法。多邊形的邊數(shù)越多,畫(huà)出的圓就越接近圓。此法用軟件實(shí)現(xiàn)起來(lái),比較煩瑣,因此沒(méi)有采取此方案。</p><p> 方案三:運(yùn)用公式x=r*cosθ+x0,y=r*sinθ+y0。θ為圓心角,θ的范圍是[0,2∏],并根據(jù)路徑改變細(xì)分步的角度,r為圓的半徑,(x0,y0)為圓心。設(shè)定圓心后,通過(guò)單片機(jī)運(yùn)算處理控制,步進(jìn)電機(jī)可以精確地運(yùn)行,運(yùn)動(dòng)軌跡基本接近圓形。由此以來(lái),我采用方案三,并成功地實(shí)現(xiàn)了此項(xiàng)功能,可以畫(huà)
32、出一個(gè)較為完美的圓。</p><p> ?。?)直線運(yùn)動(dòng)的實(shí)現(xiàn)</p><p> 直線比圓容易實(shí)現(xiàn),根據(jù)公式:y=kx+b ,k為比例系數(shù),b為x=0時(shí)Y軸向量,k值可由任意兩點(diǎn)的坐標(biāo)值確定。兩電機(jī)的轉(zhuǎn)速快慢和方向由兩個(gè)脈沖分別控制 ,互不影響,從而提高了效率,縮短了時(shí)間。</p><p> 第二章 單元電路設(shè)計(jì)</p><p> 2
33、.1 鍵盤(pán)輸入及數(shù)碼管顯示部分</p><p> 2.1.1 8279芯片介紹</p><p> 8279是一種可編程的鍵盤(pán)/顯示接口芯片,8279能自動(dòng)完成鍵盤(pán)的掃描輸入和LED掃描顯示輸出。鍵盤(pán)部分提供的掃描方式,可以與具有64個(gè)觸點(diǎn)鍵盤(pán)或傳感器相連,能自動(dòng)清除按鍵抖動(dòng),并實(shí)現(xiàn)多鍵同時(shí)按下的保護(hù)。下圖為8279管腳圖。</p><p><b>
34、8279管腳圖 </b></p><p> 8279具有40個(gè)引腳,采用雙列直插式封裝,引腳分布圖如上圖所示,其功能定義如下。</p><p> ?。?)DBo~7是雙向外部數(shù)據(jù)總線。用于傳送8279與CPU之間的命令、數(shù)據(jù)和狀態(tài)??芍苯优cMCS—51 系列芯片連接。</p><p> ?。?)CS為選片信號(hào)。當(dāng)CS為低電平時(shí),CPU才選中8279芯
35、片,并對(duì)其進(jìn)行操作。</p><p> ?。?)A0區(qū)分信息的特性位。當(dāng)A0為1時(shí),CPU寫(xiě)入8279的信息為命令,CPU從8279讀出的信息為8279的狀態(tài)。當(dāng)A0為0時(shí),I/O信息都為數(shù)據(jù)。</p><p> ?。?)RD、WR是讀、寫(xiě)選通信號(hào),低電平有效。</p><p> ?。?)IRQ為中斷請(qǐng)求輸出線。高電平有效。在鍵盤(pán)工作方式下,當(dāng)FIFO/傳感器RAM
36、中有數(shù)據(jù)時(shí),此中斷線變高電平。在FIFO/傳感器RAM每次讀出時(shí),中斷線就下降為低電平,若在RAM 中還有信息,則此線又重新變?yōu)楦唠娖?。在傳感器工作方式中,每?dāng)傳感器信號(hào)變化時(shí),中斷線就變?yōu)楦唠娖健?lt;/p><p> ?。?)RL0~RL7為反饋輸入線,作為鍵輸入線,由內(nèi)部拉高電阻拉成高電平,也可由鍵盤(pán)上按鍵拉成低電平。</p><p> ?。?)SL0~3為掃描輸出線,用于對(duì)鍵盤(pán)顯示器掃
37、描。</p><p> ?。?)OUTB0~3,OUTA0~3為顯示段數(shù)據(jù)輸出線,可分別作為兩個(gè)半字節(jié)輸出,也可作為8位段數(shù)據(jù)輸出口,此時(shí)OUTB0為最低位,OUTA3為最高位。</p><p> ?。?)BD為消隱輸出線,低電平有效,當(dāng)顯示器切換時(shí)或使用顯示消隱命令時(shí),將顯示消隱。</p><p> (10)RESET為復(fù)位輸入線,高電平有效。當(dāng)RESET 輸入
38、端出現(xiàn)高電平時(shí),8279被復(fù)位,復(fù)位后8279被置于下列方式:</p><p> A.16個(gè)8位字符顯示為左端輸入。</p><p> B.編碼的掃描鍵為兩鍵連鎖、與此同時(shí),程序時(shí)鐘前置分頻器被置為31。</p><p> ?。?1)SHIFT,CNTL/STB為控制鍵輸入線,由內(nèi)部拉高電阻拉成高電平,也可由外部控制按鍵拉成低電子,SHIFT為換檔,CNTL為控
39、制,STB為選通。</p><p> ?。?2)CLK為外時(shí)鐘輸入端,CLK信號(hào)由外部振蕩器提供。需說(shuō)明的一點(diǎn)是:CLK是系統(tǒng)來(lái)的外時(shí)鐘,8279靠設(shè)置定時(shí)器將外部時(shí)鐘變?yōu)閮?nèi)時(shí)鐘。其內(nèi)部基頻=外時(shí)鐘/定時(shí)器值。內(nèi)部時(shí)鐘的高低控制著掃描時(shí)間和鍵盤(pán)去抖動(dòng)時(shí)間的長(zhǎng)短,若8279內(nèi)部時(shí)鐘為100kHz,則掃描時(shí)間為5.1ms,去抖動(dòng)時(shí)間為10.3ms。功能說(shuō)明:由于數(shù)據(jù)輸入和顯示乃是許多微處理機(jī)外設(shè)的一個(gè)不可分離部分。系
40、統(tǒng)設(shè)計(jì)者需要—種能夠控制這些功能,而又不致于使CPU負(fù)載過(guò)重的接口。8279為8位微處理機(jī)提供這種功能。8279有兩個(gè)部分,鍵盤(pán)部分和顯示器部分。鍵盤(pán)部分能夠與通常的打字機(jī)型鍵盤(pán)或隨機(jī)乒乓開(kāi)關(guān),或鈕子開(kāi)關(guān)相聯(lián)接。顯示部分驅(qū)動(dòng)字母數(shù)字顯示或一排指示燈。從而減輕了CPU在掃描鍵盤(pán)和刷新顯示時(shí)的負(fù)擔(dān)。8279按設(shè)計(jì)直接連到微處理機(jī)總線,CPU能夠?yàn)?279的所有操作方式編制程序,這些方式包括:</p><p><
41、b> 輸入方式:</b></p><p> a.掃描鍵盤(pán)——帶有編碼掃描線(8×8鍵鍵盤(pán))或譯碼掃描線(4×8鍵鍵盤(pán))。每按—下按鍵,就產(chǎn)生一個(gè)表示按鍵位置的6 位編碼。按鍵的位置信息以及字型變換和控制狀態(tài),都被存儲(chǔ)在FIFO中。</p><p> 所有按鍵都以兩鍵連鎖或N 鍵巡回的方式自動(dòng)回跳。</p><p> b.
42、掃描傳感器陣列——帶有編碼掃描線(8×8陣列開(kāi)關(guān))或譯碼掃描線(4×8陣列開(kāi)關(guān))。</p><p> c.按鍵的狀態(tài)(打開(kāi)或閉合)被存儲(chǔ)在可由CPU尋址的RAM 中。</p><p> d.選通輸入——在控制線選通時(shí),回送線上數(shù)據(jù)被傳送到FIFO中。</p><p><b> 輸出方式:</b></p>
43、<p> a.8字符或16字符的多路切換式顯示器。該顯示器可被組合成雙排4位或單排8位形式</p><p> (B0=D0,A3=D7)。</p><p> b.右端輸入或左端輸入的顯示格式。</p><p> 下表為8279控制命令字:</p><p> 2.1.2 LED顯示器接口</p><p&g
44、t; LED顯示器是最常用的輸出設(shè)備。由于結(jié)構(gòu)簡(jiǎn)單、價(jià)格廉價(jià)和接口容易,而得到廣乏應(yīng)用。尤其是在單片機(jī)系統(tǒng)中大量應(yīng)用。</p><p> (1)LED結(jié)構(gòu)與原理</p><p> 發(fā)光二極管顯示器是單片機(jī)應(yīng)用產(chǎn)品中常用的廉價(jià)輸出設(shè)備。它是由若干個(gè)發(fā)光二極管組成顯示的字段。當(dāng)二極管導(dǎo)通時(shí)相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆劃發(fā)光,就能顯示出各種字符,常用的七段LED顯示器的結(jié)構(gòu)如圖(a)所示。
45、 </p><p> LED數(shù)碼顯示器有兩種結(jié)構(gòu):將所有發(fā)光二極管的陽(yáng)極連在一起,稱為共陽(yáng)接法,公共端comm接高電平,當(dāng)某個(gè)字段的陰極接低電平時(shí),對(duì)應(yīng)的字段就點(diǎn)亮;而將所有發(fā)光二極管的陰極連在一起,稱為共陰接法,公共端comm接低電平,當(dāng)某個(gè)字段的陽(yáng)極接高電平時(shí),對(duì)應(yīng)的字段就點(diǎn)亮。每段所需電流一般為5~15mA,實(shí)際電流視具體的LED數(shù)碼顯示器而定。其圖如(b)、(C)所示。
46、</p><p> LED有靜態(tài)和動(dòng)態(tài)兩種顯示方法。所謂靜態(tài)顯示,就是顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定得導(dǎo)通或截止,這種方法,每一顯示位都需要一個(gè)8位的輸出口控制,占用的硬件較多,一般僅用于顯示位數(shù)較少的場(chǎng)合。而動(dòng)態(tài)就是一位一位地輪流點(diǎn)亮各位顯示器,對(duì)每一位顯示器而言,每隔一段時(shí)間點(diǎn)亮一次,利用人的視覺(jué)留感達(dá)到顯示的目的。顯示器的亮度跟導(dǎo)通的電流有關(guān),也和點(diǎn)亮的時(shí)間與間隔的比例有關(guān)。動(dòng)態(tài)顯示器因其硬件成本較
47、低,而得到廣泛的應(yīng)用。</p><p> 為了顯示字符和數(shù)字,要為L(zhǎng)ED顯示器提供顯示段碼(或稱字形代碼),組成一個(gè)“8”字形的7段,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供LED顯示器的顯示段碼為1個(gè)字節(jié)。各段碼的對(duì)應(yīng)關(guān)系如表2.1所示:</p><p> 表2.1 各段碼的對(duì)應(yīng)關(guān)系</p><p> 用LED顯示器顯示十六進(jìn)制數(shù)和空白及P 的顯示段碼,如表2
48、.2所示。</p><p> 從LED顯示器的顯示原理可知,為了顯示字母數(shù)字,必須最終轉(zhuǎn)換成相應(yīng)段選碼。這種轉(zhuǎn)換可以通過(guò)硬件譯碼器或軟件進(jìn)行譯碼。</p><p> 表2.2十六進(jìn)制數(shù)及空白與P 的顯示段碼</p><p> (2)最小系統(tǒng)板LED顯示</p><p> 該最小系統(tǒng)板數(shù)碼管采用的是共陽(yáng)極接法,采用動(dòng)態(tài)顯示。</p
49、><p> 2.2 步進(jìn)電機(jī)原理及應(yīng)用</p><p> 步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開(kāi)環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過(guò)一個(gè)步距角。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無(wú)累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來(lái)控制變的非常的簡(jiǎn)單。雖然步進(jìn)電
50、機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。步機(jī)原理由于反應(yīng)式步進(jìn)電機(jī)工作原理比較簡(jiǎn)單。步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過(guò)控制脈沖
51、頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)可以作為一種控制用的特種電機(jī),利用其沒(méi)有積累誤差(精度為100%)的特點(diǎn),廣泛應(yīng)用于各種開(kāi)環(huán)控制。 </p><p> 混合式步進(jìn)電機(jī)是指混合了永磁式和反應(yīng)式的優(yōu)點(diǎn)。它又分為兩相和五相:兩相步進(jìn)角一般為1.8度而五相步進(jìn)角一般為0.72度。這種步進(jìn)電機(jī)的應(yīng)用最為廣泛,也是本次細(xì)分驅(qū)動(dòng)方案所選用的步進(jìn)電機(jī)。</p><p>
52、2.2.1 步進(jìn)電機(jī)參數(shù)</p><p> ?。?)電機(jī)固有步距角:它表示控制系統(tǒng)每發(fā)一個(gè)步進(jìn)脈沖信號(hào),電機(jī)所轉(zhuǎn)動(dòng)的角度。電機(jī)出廠時(shí)給出了一個(gè)步距角的值,如86BYG250A型電機(jī)給出的值為0.9°/1.8°(表示半步工作時(shí)為0.9°、整步工作時(shí)為1.8°),這個(gè)步距角可以稱之為‘電機(jī)固有步距角’,它不一定是電機(jī)實(shí)際工作時(shí)的真正步距角,真正的步距角和驅(qū)動(dòng)器有關(guān)。</p
53、><p> (2)步進(jìn)電機(jī)的相數(shù):是指電機(jī)內(nèi)部的線圈組數(shù),目前常用的有二相、三相、四相、五相步進(jìn)電機(jī)。電機(jī)相數(shù)不同,其步距角也不同,一般二相電機(jī)的步距角為0.9°/1.8°、三相的為0.75°/1.5°、五相的為0.36°/0.72° 。在沒(méi)有細(xì)分驅(qū)動(dòng)器時(shí),用戶主要靠選擇不同相數(shù)的步進(jìn)電機(jī)來(lái)滿足自己步距角的要求。如果使用細(xì)分驅(qū)動(dòng)器,則‘相數(shù)’將變得沒(méi)有意義
54、,用戶只需在驅(qū)動(dòng)器上改變細(xì)分?jǐn)?shù),就可以改變步距角。</p><p> ?。?)保持轉(zhuǎn)矩(HOLDING TORQUE):是指步進(jìn)電機(jī)通電但沒(méi)有轉(zhuǎn)動(dòng)時(shí),定子鎖住轉(zhuǎn)子的力矩。它是步進(jìn)電機(jī)最重要的參數(shù)之一,通常步進(jìn)電機(jī)在低速時(shí)的力矩接近保持轉(zhuǎn)矩。由于步進(jìn)電機(jī)的輸出力矩隨速度的增大而不斷衰減,輸出功率也隨速度的增大而變化,所以保持轉(zhuǎn)矩就成為了衡量步進(jìn)電機(jī)最重要的參數(shù)之一。比如,當(dāng)人們說(shuō)2N.m的步進(jìn)電機(jī),在沒(méi)有特殊說(shuō)明的
55、情況下是指保持轉(zhuǎn)矩為2N.m的步進(jìn)電機(jī)。</p><p> ?。?)DETENT TORQUE:是指步進(jìn)電機(jī)沒(méi)有通電的情況下,定子鎖住轉(zhuǎn)子的力矩。DETENT TORQUE 在國(guó)內(nèi)沒(méi)有統(tǒng)一的翻譯方式,容易使大家產(chǎn)生誤解;由于反應(yīng)式步進(jìn)電機(jī)的轉(zhuǎn)子不是永磁材料,所以它沒(méi)有DETENT TORQUE。</p><p> (5)步進(jìn)電機(jī)還有一個(gè)技術(shù)參數(shù):空載啟動(dòng)頻率,即步進(jìn)電機(jī)在空載情況下能夠正
56、常啟動(dòng)的脈沖頻率,如果脈沖頻率高于該值,電機(jī)不能正常啟動(dòng),可能發(fā)生丟步或堵轉(zhuǎn)。在有負(fù)載的情況下,啟動(dòng)頻率應(yīng)更低。如果要使電機(jī)達(dá)到高速轉(zhuǎn)動(dòng),脈沖頻率應(yīng)該有加速過(guò)程,即啟動(dòng)頻率較低,然后按一定加速度升到所希望的高頻(電機(jī)轉(zhuǎn)速?gòu)牡退偕礁咚伲?。步進(jìn)電動(dòng)機(jī)以其顯著的特點(diǎn),在數(shù)字化制造時(shí)代發(fā)揮著重大的用途。伴隨著不同的數(shù)字化技術(shù)的發(fā)展以及步進(jìn)電機(jī)本身技術(shù)的提高,步進(jìn)電機(jī)將會(huì)在更多的領(lǐng)域得到應(yīng)用。</p><p> 2.2
57、.2 步進(jìn)電機(jī)的特點(diǎn)</p><p> ?。?)一般步進(jìn)電機(jī)的精度為步進(jìn)角的3-5%,且不累積。</p><p> ?。?)步進(jìn)電機(jī)外表允許的最高溫度。步進(jìn)電機(jī)溫度過(guò)高首先會(huì)使電機(jī)的磁性材料退磁,從而導(dǎo)致力矩下降乃至于失步,因此電機(jī)外表允許的最高溫度應(yīng)取決于不同電機(jī)磁性材料的退磁點(diǎn);一般來(lái)講,磁性材料的退磁點(diǎn)都在攝氏130度以上,有的甚至高達(dá)攝氏200度以上,所以步進(jìn)電機(jī)外表溫度在攝氏80
58、-90度完全正常。</p><p> ?。?)步進(jìn)電機(jī)的力矩會(huì)隨轉(zhuǎn)速的升高而下降。當(dāng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)時(shí),電機(jī)各相繞組的電感將形成一個(gè)反向電動(dòng)勢(shì);頻率越高,反向電動(dòng)勢(shì)越大。在它的作用下,電機(jī)隨頻率(或速度)的增大而相電流減小,從而導(dǎo)致力矩下降。</p><p> ?。?)步進(jìn)電機(jī)低速時(shí)可以正常運(yùn)轉(zhuǎn),但若高于一定速度就無(wú)法啟動(dòng),并伴有嘯叫聲。</p><p> 2.2.3
59、 步進(jìn)電機(jī)要素</p><p> 步進(jìn)電機(jī)有步距角(涉及到相數(shù))、靜轉(zhuǎn)矩、及電流三大要素組成。一旦三大要素確定,步進(jìn)電機(jī)的型號(hào)便確定下來(lái)了。</p><p> ?。?)步距角的選擇 電機(jī)的步距角取決于負(fù)載精度的要求,將負(fù)載的最小分辨率(當(dāng)量)換算到電機(jī)軸上,每個(gè)當(dāng)量電機(jī)應(yīng)走多少角度(包括減速)。電機(jī)的步距角應(yīng)等于或小于此角度。目前市場(chǎng)上步進(jìn)電機(jī)的步距角一般有0.36度/0.72度(五相電
60、機(jī))、0.9度/1.8度(二、四相電機(jī))、1.5度/3度 (三相電機(jī))等。</p><p> ?。?)靜力矩的選擇 步進(jìn)電機(jī)的動(dòng)態(tài)力矩一下子很難確定,我們往往先確定電機(jī)的靜力矩。靜力矩選擇的依據(jù)是電機(jī)工作的負(fù)載,而負(fù)載可分為慣性負(fù)載和摩擦負(fù)載二種。單一的慣性負(fù)載和單一的摩擦負(fù)載是不存在的。直接起動(dòng)時(shí)(一般由低速)時(shí)二種負(fù)載均要考慮,加速起動(dòng)時(shí)主要考慮慣性負(fù)載,恒速運(yùn)行進(jìn)只要考慮摩擦負(fù)載。一般情況下,靜力矩應(yīng)為摩擦
61、負(fù)載的2-3倍內(nèi)好,靜力矩一旦選定,電機(jī)的機(jī)座及長(zhǎng)度便能確定下來(lái)(幾何尺寸)。</p><p> ?。?)、電流的選擇 靜力矩一樣的電機(jī),由于電流參數(shù)不同,其運(yùn)行特性差別很大,可依據(jù)矩頻特性曲線圖,判斷電機(jī)的電流(參考驅(qū)動(dòng)電源、及驅(qū)動(dòng)電壓)。</p><p> 2.2.4 步進(jìn)電機(jī)力矩與功率換算 </p><p> 步進(jìn)電機(jī)一般在較大范圍內(nèi)調(diào)速使用、其功率是變化
62、的,一般只用力矩來(lái)衡量,力矩與功率換算如下:P= Ω·M Ω=2π·n/60 P=2πnM/60 其P為功率單位為瓦,Ω為每秒角速度,單位為弧度,n為每分鐘轉(zhuǎn)速,M為力矩單位為牛頓·米 P=2πfM/400(半步工作)其中f為每秒脈沖數(shù)(簡(jiǎn)稱PPS)</p><p> 其它特性還有慣頻特性、起動(dòng)頻率特性等。電機(jī)一旦選定,電機(jī)的靜力矩確定,而動(dòng)態(tài)力矩卻不然,電機(jī)的動(dòng)態(tài)力矩取決于電機(jī)運(yùn)
63、行時(shí)的平均電流(而非靜態(tài)電流),平均電流越大,電機(jī)輸出力矩越大,即電機(jī)的頻率特性越硬。</p><p> 2.2.5步進(jìn)電機(jī)應(yīng)用中的注意點(diǎn)</p><p> ?。?)步進(jìn)電機(jī)應(yīng)用于低速場(chǎng)合---每分鐘轉(zhuǎn)速不超過(guò)1000轉(zhuǎn),(0.9度時(shí)6666PPS),最好在1000-3000PPS(0.9度)間使用,可通過(guò)減速裝置使其在此間工作,此時(shí)電機(jī)工作效率高,噪音低。 </p>&l
64、t;p> ?。?)步進(jìn)電機(jī)最好不使用整步狀態(tài),整步狀態(tài)時(shí)振動(dòng)大。 </p><p> ?。?)由于歷史原因,只有標(biāo)稱為12V電壓的電機(jī)使用12V外,其他電機(jī)的電壓值不是驅(qū)動(dòng)電壓伏值 ,可根據(jù)驅(qū)動(dòng)器選擇驅(qū)動(dòng)電壓(建議:57BYG采用直流24V-36V,86BYG采用直流50V,110BYG采用高于直流80V),當(dāng)然12伏的電壓除12V恒壓驅(qū)動(dòng)外也可以采用其他驅(qū)動(dòng)電源, 不過(guò)要考慮溫升。 </p>
65、<p> (4)轉(zhuǎn)動(dòng)慣量大的負(fù)載應(yīng)選擇大機(jī)座號(hào)電機(jī)。 </p><p> ?。?)電機(jī)在較高速或大慣量負(fù)載時(shí),一般不在工作速度起動(dòng),而采用逐漸升頻提速,一電機(jī)不失步,二可以減少噪音同時(shí)可以提高停止的定位精度。 </p><p> ?。?)高精度時(shí),應(yīng)通過(guò)機(jī)械減速、提高電機(jī)速度,或采用高細(xì)分?jǐn)?shù)的驅(qū)動(dòng)器來(lái)解決,也可以采用5相電機(jī),不過(guò)其整個(gè)系統(tǒng)的價(jià)格較貴,生產(chǎn)廠家少,其被淘汰的說(shuō)
66、法是外行話。 </p><p> ?。?)電機(jī)不應(yīng)在振動(dòng)區(qū)內(nèi)工作,如若必須可通過(guò)改變電壓、電流或加一些阻尼的解決。 </p><p> ?。?)電機(jī)在600PPS(0.9度)以下工作,應(yīng)采用小電流、大電感、低電壓來(lái)驅(qū)動(dòng)。 </p><p><b> 2.3 細(xì)分驅(qū)動(dòng)器</b></p><p> 在步進(jìn)電機(jī)步距角不能滿
67、足使用的條件下,可采用細(xì)分驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)步進(jìn)電機(jī),細(xì)分驅(qū)動(dòng)器的原理是通過(guò)改變相鄰(A,B)電流的大小,以改變合成磁場(chǎng)的夾角來(lái)控制步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的。</p><p> 2.4 89C52芯片介紹</p><p> 本設(shè)計(jì)采用89C52芯片來(lái)進(jìn)行微機(jī)控制。89C52單片機(jī)是美國(guó)Intel公司推出的高性能8位單片微型計(jì)算機(jī),它的指令系統(tǒng)與芯片引腳完全兼容,下面介紹一下89C52的引腳功能:<
68、;/p><p> Vcc:+5V電源電壓。</p><p> Vss:電路接地端。</p><p> P0.0~P0.7:通道0,它是8位漏極開(kāi)路的雙向I/O通道,當(dāng)擴(kuò)展外部存貯器時(shí),這也是低八位</p><p> P1.0~P1.7:通道1是8位擬雙向I/O通道,在編程和校驗(yàn)時(shí),它發(fā)出低8位地址。 通道1吸收/發(fā)出一個(gè)TTL負(fù)載。<
69、;/p><p> P2.0~P2.7:通道2是8位擬雙向I/O通道,當(dāng)訪問(wèn)外部存貯器時(shí),用作高8位地址總線。通道2能吸收/發(fā)出一個(gè)TTL負(fù)載。</p><p> P3.0~P3.7:通道3準(zhǔn)雙向I/O通道。通道3能吸收/發(fā)出一個(gè)TTL負(fù)載,P3通道的每一根線還有另一種功能:</p><p> P3.2:INT0,外部中斷0輸入口。</p><p
70、> P3.3:INT1,外部中斷1輸入口。</p><p> P3.4:T0,定時(shí)器/計(jì)數(shù)器0外部事件脈沖輸入端。</p><p> P3.5:T1,定時(shí)器/計(jì)數(shù)器1外部事件脈沖輸入端</p><p> P3.6:WR,外部數(shù)據(jù)存貯器寫(xiě)脈沖。</p><p> P3.7:RD,外部數(shù)據(jù)存貯器讀脈沖。</p>&l
71、t;p> RST/VpD:引腳9,復(fù)位輸入信號(hào),振蕩器工作時(shí),該引腳上2個(gè)機(jī)器周期的高電平可以實(shí)現(xiàn)復(fù)</p><p> ALE/PROG:引腳30,地址鎖存有效信號(hào),其主要作用是提供一個(gè)適當(dāng)?shù)亩〞r(shí)信號(hào),在它的下降沿用于外部程序存儲(chǔ)器或外部數(shù)據(jù)存貯器的低8位地址鎖存,使總線P0輸出/輸入口分時(shí)用作</p><p> 地址總線(低8位)和數(shù)據(jù)總線,此信號(hào)每個(gè)機(jī)器出現(xiàn)2次,只是在訪問(wèn)
72、外部數(shù)據(jù)存儲(chǔ)器期間才不輸出ALE。所以,在任何不使用外部數(shù)據(jù)存貯器的系統(tǒng)中,ALE以1/6振蕩頻率的固定速率 輸出,因而它能用作外部時(shí)鐘或定時(shí),8751內(nèi)的EPROM編程時(shí),此端輸編程脈沖信號(hào)。</p><p> PSEN:引腳29,程序選通有效信號(hào),當(dāng)從外部程序存貯器讀取指令時(shí)產(chǎn)生,低電平時(shí),指令寄存器的內(nèi)容讀到數(shù)據(jù)總線上。</p><p> EA/VPP:引腳31,當(dāng)保持TTL高電
73、平時(shí),如果指令計(jì)數(shù)器小于4096,8051執(zhí)行內(nèi)部ROM的指令, 8751執(zhí)行內(nèi)部EPROM的指令,當(dāng)使TTL為低電平時(shí), 從外部程序存貯器取出所有指令,在8751內(nèi)的EPROM編程時(shí),此端為21V編程電源輸入端。</p><p> XTAL1:引腳18,內(nèi)部振蕩器外接晶振的一個(gè)輸入端,HMOS芯片使用外部振蕩源時(shí),此端必須接地。</p><p> XTAL2:引腳19,內(nèi)部振蕩器外接
74、晶振的另一個(gè)輸入端,HMOS芯片使用外部振蕩器時(shí),此端用于輸入外部振蕩信號(hào)。</p><p><b> 管腳圖如下所示: </b></p><p> 89C52管腳分步圖 </p><p> 2.5 編碼器結(jié)構(gòu)與參數(shù)</p><p><b> ?。?)結(jié)構(gòu)</b></p><
75、;p><b> ?。?)相關(guān)參數(shù)</b></p><p> 第三章 軟件設(shè)計(jì)部分</p><p> 3.1 硬件連接及軟件</p><p> 3.1.1 硬件連接電路圖</p><p> 3.1.2 程序流程圖</p><p><b> N</b></
76、p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p> 3.2 儀器與測(cè)試方法</p><p> 3.2.1 芯片、儀器與用具</p><p> 日本
77、公司生產(chǎn)RM2690S步進(jìn)電機(jī)兩個(gè)(配有專門(mén)的驅(qū)動(dòng)控制器), 上海藿德光電科技有限公司MODEL編碼器兩個(gè),米尺、編碼器、天平、89C52、8279、74LS244、74LS138、74HC373、共陽(yáng)極極數(shù)碼管、細(xì)步驅(qū)動(dòng)器、直尺、示波器等。</p><p> 3.2.2 測(cè)試方法</p><p> 根據(jù)試驗(yàn)測(cè)試一定的距離測(cè)量不同的的脈沖,取多組數(shù)據(jù),經(jīng)過(guò)取舍后,然后計(jì)算平均值來(lái)求出單
78、位距離需要的脈沖數(shù),進(jìn)而根據(jù)編碼器的脈沖數(shù)測(cè)出重物移動(dòng)的距離,將重物的運(yùn)動(dòng)軌跡記錄下來(lái),進(jìn)行誤差分析,進(jìn)而進(jìn)行相應(yīng)補(bǔ)償。</p><p> 第四章 測(cè)試數(shù)據(jù)及測(cè)試結(jié)果分析(cm)</p><p> 分析上述結(jié)果,在工作區(qū)域內(nèi)大部分還是比較準(zhǔn)的,但是到了邊框部分就出現(xiàn)了較大的失誤,有時(shí)甚至出現(xiàn)電機(jī)不停轉(zhuǎn)的情況,在這過(guò)程中,我們發(fā)現(xiàn)并分析了不夠準(zhǔn)確的原因:是電機(jī)的的速度不夠協(xié)調(diào),重物的質(zhì)
79、量太小,角度太小時(shí)繩上的分力小,加上傳感器上有一定的摩擦力使得繩子松動(dòng),不能帶動(dòng)傳感器計(jì)數(shù),使得單片機(jī)不能完成動(dòng)作,尤其是到了邊框和右下角這種情況最嚴(yán)重,由于這部分的機(jī)械構(gòu)造,在實(shí)驗(yàn)過(guò)程中有電機(jī)不停轉(zhuǎn)再所難免的。</p><p> 對(duì)于畫(huà)圓的情況,重物的運(yùn)動(dòng)軌跡并不是很固定,這要取決于現(xiàn)場(chǎng)的情況跟機(jī)械部分是否運(yùn)轉(zhuǎn)正常,主要原因是繩跟傳感器的打滑是一個(gè)未知量,也是一個(gè)不固定量,造成了運(yùn)動(dòng)軌跡的不確定性。</
80、p><p><b> 參考文獻(xiàn)</b></p><p> A. 黃智偉. 全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽訓(xùn)練教程[M]. 電子工業(yè)出版社, 2005.01</p><p> B. 余永權(quán),李小青,陳林康. 單片機(jī)應(yīng)用系統(tǒng)的功率接口技術(shù)[M]. 北航出版社,1992.9</p><p> C. 范立南. 單片微型計(jì)算機(jī)控制系統(tǒng)
81、設(shè)計(jì)[M]. 人民郵電出版社, 2004.3</p><p> D. 付家才. 單片機(jī)控制工程實(shí)踐技術(shù)[M]. 化學(xué)工業(yè)出版社,2003.8</p><p><b> 附 錄</b></p><p><b> 程序</b></p><p> #include <reg52.h>
82、</p><p> #include <absacc.h></p><p> #include <math.h></p><p> #define COM XBYTE [0x3fff]</p><p> #define DAT XBYTE [0x3ffe]</p><p> #defi
83、ne uchar unsigned char</p><p> uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p> uchar code table2[]={0x03,0x02,0x0a,0x12,0x01,0x09
84、,0x11,0x00,0x08,0x10,0x1b,0x1a,0x19,0x18,0x13,0x0b};</p><p> uchar code table3[]={0x00,0x00,0x79,0x31,0x31,0x3f,0x31,0x00};</p><p> sbit flag=ACC^7;</p><p> sbit p1_0=P1^0;</p
85、><p> sbit p1_1=P1^1;</p><p> sbit p1_2=P1^2;</p><p> sbit p1_3=P1^3;</p><p> sbit p1_4=P1^4;</p><p> sbit p1_5=P1^5;</p><p> bit idata p10
86、flag;</p><p> bit idata p13flag;</p><p> bit idata m_flag0=0;</p><p> bit idata m_flag1=0;</p><p> bit idata flag1=0;</p><p> bit idata flag2=0;</p
87、><p> bit idata flag3=0;</p><p> uchar idata temp[8];</p><p> uchar idata wemp[8];</p><p> uchar idata a=0;</p><p> uchar idata b=0;</p><p>
88、 uchar idata c=0;</p><p> uchar idata w;</p><p> uchar idata p=0;</p><p> uchar idata counter_x=0;</p><p> uchar idata counter_y=0;</p><p> uchar ida
89、ta counter_x1=0;</p><p> uchar idata counter_y1=0;</p><p> float idata counter_a;</p><p> float idata counter_b;</p><p> float idata counter_a_second;</p>&l
90、t;p> float idata counter_b_second;</p><p> float idata counter_a_first=115.9741;</p><p> float idata counter_b_first=1.491643e+002;</p><p> float idata angle;</p><
91、p> void intial();</p><p> void clear();</p><p> void finish(); </p><p> void error();</p><p> void equ();</p><p> void gk();</p><p>
92、 void wwww();</p><p> unsigned long math(uchar i); </p><p> void move_m(float counter_a,float counter_b);</p><p> uchar keyin();</p><p> void kkk() interrupt 0 u
93、sing 1 //程序1</p><p> { p=keyin(); // 讀鍵值子程序 </p><p> if(p>=10&&p<=13)</p><p><b> {</b></p><p> wwww();
94、 // + - * / 功能鍵處理子程序</p><p><b> }</b></p><p> else if(p==14) </p><p><b> { </b></p><p> equ(); // =號(hào)鍵處理子程序&l
95、t;/p><p><b> }</b></p><p> else if(p==15) </p><p><b> { </b></p><p> clear(); // 清屏鍵處理子程序</p><p><b> }</b><
96、;/p><p><b> else</b></p><p><b> { </b></p><p> gk(); // 數(shù)字鍵處理子程序</p><p><b> } </b></p><p><b> }<
97、/b></p><p> void count0() interrupt 1 using 2 //程序2</p><p><b> {</b></p><p> m_flag0=1;</p><p><b> TR0=0;</b></p>
98、<p> if(m_flag1==1)</p><p><b> {</b></p><p><b> TR2=0;</b></p><p> m_flag0=0;</p><p> m_flag1=0;</p><p><b> } <
99、/b></p><p><b> }</b></p><p> void count4() interrupt 3 using 2 //程序3</p><p><b> {</b></p><p><b> ET0=0;</b><
100、;/p><p> m_flag1=1;</p><p><b> TR1=0;</b></p><p> if(m_flag0==1)</p><p><b> {</b></p><p><b> TR2=0;</b></p>&l
101、t;p> m_flag0=0;</p><p> m_flag1=0;</p><p><b> }</b></p><p><b> ET0=1;</b></p><p><b> }</b></p><p> void delays
102、 () interrupt 5 using 3 //程序4</p><p><b> {</b></p><p><b> ET0=0;</b></p><p><b> ET1=0;</b></p><p> if(m_flag0==0
103、)</p><p><b> {</b></p><p> p10flag=!p10flag;</p><p> p1_0=p10flag;</p><p><b> }</b></p><p> if(m_flag1==0) </p><p&g
104、t;<b> {</b></p><p> p13flag=!p13flag;</p><p> p1_3=p13flag;</p><p><b> } </b></p><p> TH2=(65536-4000)/256;</p><p> TL2=(6553
105、6-4000)%256;</p><p><b> TF2=0;</b></p><p><b> ET0=1;</b></p><p><b> ET1=1;</b></p><p><b> }</b></p><p>
106、 void main() //程序5</p><p><b> {</b></p><p> uchar idata i,j;</p><p> float idata x,y;</p><p> for(i=0;i<255;i++)</p>
107、<p><b> {</b></p><p> for(j=0;j<255;j++)</p><p><b> {</b></p><p><b> ;</b></p><p><b> } </b></p><
108、;p><b> } </b></p><p> intial(); //初始化子程序</p><p><b> DAT=0x71;</b></p><p><b> DAT=0x71;</b></p><p><
109、b> DAT=0x71;</b></p><p><b> DAT=0x71;</b></p><p> TH2=(65536-4000)/256;</p><p> TL2=(65536-4000)%256;</p><p> p10flag=p1_0;</p><p&g
110、t; p13flag=p1_3;</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(flag1==1)</p><p><b> {</b></p><p> move_m(co
111、unter_a,counter_b);</p><p><b> flag1=0;</b></p><p><b> DAT=0x71;</b></p><p><b> DAT=0x71;</b></p><p><b> } </b><
112、;/p><p> else if(flag2==1)</p><p><b> {</b></p><p> move_m(counter_a,counter_b);</p><p><b> flag2=0;</b></p><p><b> DAT=0x7
113、1;</b></p><p><b> DAT=0x71;</b></p><p> while(TR2==1)</p><p><b> {; }</b></p><p><b> DAT=0x71;</b></p><p> f
114、or(angle=6.3029852/120;angle<=6.3029852;) //畫(huà)圓</p><p><b> {</b></p><p> x=25*cos(angle)+counter_x1;</p><p> y=25*sin(angle)+counter_y1;</p><p>
115、counter_a=sqrt((x+15)*(x+15)+(115-y)*(115-y)); </p><p> counter_b=sqrt((95-x)*(95-x)+(115-y)*(115-y)); </p><p> angle=angle+6.3029852/120;</p><p><b> DAT=0x71;</b><
116、;/p><p> move_m(counter_a,counter_b);</p><p> for(i=0;i<200;i++)</p><p><b> {</b></p><p> for(j=0;j<200;j++)</p><p><b> {</b&g
117、t;</p><p><b> ;</b></p><p><b> } </b></p><p><b> } </b></p><p> while(TR2==1) </p><p><b> {</b>
118、</p><p><b> ;</b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p> else if(flag3==1)<
119、/p><p><b> {</b></p><p> move_m(counter_a,counter_b);</p><p><b> flag1=0;</b></p><p><b> DAT=0x71;</b></p><p><b>
120、; DAT=0x71;</b></p><p> while(TR2==1) </p><p><b> {</b></p><p><b> ;</b></p><p><b> } </b></p><p> for(
121、angle=6.3029852/120;angle<=6.3029852;) //畫(huà)圓</p><p><b> {</b></p><p> x=25*cos(angle)+counter_x1-25;</p><p> y=25*sin(angle)+counter_y1;</p><p>
溫馨提示
- 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ù)僅提供信息存儲(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è)設(shè)計(jì)--pic單片機(jī)的煤炭監(jiān)控系統(tǒng)
- 畢業(yè)設(shè)計(jì)--pic單片機(jī)的煤炭監(jiān)控系統(tǒng)
- 畢業(yè)設(shè)計(jì)-基于pic單片機(jī)的直流調(diào)速系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能化衛(wèi)生間設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于單片機(jī)的恒壓供水系統(tǒng)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)---基于pic單片機(jī)的多路溫度巡回檢測(cè)系統(tǒng)
- 單片機(jī)畢業(yè)設(shè)計(jì)外文翻譯-- pic系列單片機(jī)的特點(diǎn)
- 單片機(jī)畢業(yè)設(shè)計(jì)----魚(yú)缸自動(dòng)換水系統(tǒng)設(shè)計(jì)
- 基于 pic單片機(jī)的智能小區(qū)監(jiān)控系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的智能臺(tái)燈系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于pic單片機(jī)的出租車(chē)計(jì)費(fèi)系統(tǒng)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的智能臺(tái)燈系統(tǒng)
- 畢業(yè)設(shè)計(jì)----基于pic單片機(jī)的出租車(chē)計(jì)費(fèi)系統(tǒng)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的恒壓供水系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于單片機(jī)的定時(shí)澆水系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制恒壓供水系統(tǒng)的設(shè)計(jì)論文
- 基于pic單片機(jī)的出租車(chē)計(jì)費(fèi)系統(tǒng)----畢業(yè)設(shè)計(jì)論文
- 單片機(jī)控制的智能供熱監(jiān)控系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的智能窗簾設(shè)計(jì)
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論