




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄 1 設計任務分析.1 2 方案設計與論證.1 2.1 三套可行方案選擇.1 2.2 最佳方案論證.2 2.2.1 電機選擇.2 2.2.2 運水量測量.2 2.2.3 自動給水裝置與機器人的通訊.3 2.2.4 路面黑線檢測.3 2.2.5 其他方案論證.3 2.3 最終系統方案.3 3 系統電路分析與軟件說明.4 3.1 電路分析.4 3.1.1 黑線檢測電路.4 3.1.2 分布導線水量測量法.4 3.1.3 機器人與自動裝水裝置通訊模塊.5 3.2 軟件說明.5 4 數據測試.6 5 創新總結.6 5.1 系統設計創新點.6 5.2 心得體會.7 附頁.8 摘要:本運水機器人從實
2、際應用出發,充分融入機電一體化的思想,使機器人具備自動裝水、 按照設定路線進行運水、并在目的地準確卸水的基本功能。此外,運水量的測量、工作過程 的自動計時、運水溫度的測量、工作狀態的語音適時播報、相關信息液晶屏顯示等附加功能 的實現,使本機器人具備良好的人機交互界面。控制系統采用主從機的結構框架進行設計。 此外根據水的導電特性,創造性的設計出了一套由導線和比較器構成的液位測量系統。 關鍵詞:自動運水;水量測量;語音播報 1 設計任務分析 設計一套運水機器人系統,使此機器人能夠將裝水區域的水運輸到指定區域,并能進行 自動卸水。裝水區域 a 與卸水區域 c 之間由一根寬度不大于 20mm 的引導黑
3、線相連;引導 線所在的區域為運輸區 b,三個區域由起始邊線和返回邊線隔離,邊線同樣為不大于 20mm 的黑線。如圖 1 所示,運水機器人的運水線路圖。 圖 1 機器人運水線路 該系統包括 a 區的自動(或手動)給水裝置,裝置形狀大小及擺放方式自定;往返于 a、c 區之間的機器人(包含運水容器,其總垂直高度不得超過 300mm,儲水裝置容量不超 過 600ml,口徑不大于 100mm) ,機器人任意部分不得超出其邊緣 50mm;c 區存水裝置, 口徑不得大 100mm,高度不得低于 250mm,固定底板。起初機器人置于黑色啟車線的右側, 巡著黑色引導線運行至返回邊線右側,輪子均不得壓線。按照單位
4、時間運水量評價機器人性 能;此外機器人還需具備同步顯示運行時間,顯示兩次測量所得運水量及總運水量的功能。 反復琢磨任務要求,可得出如下結論: (1)機器人能夠沿著引導線進行巡跡,并能通過檢測起始邊線和返回邊線進行準確定位; (2)機器人如果采用自動給水方式,a 區給水裝置應具有電路控制系統,并能和機器人 控制系統進行信息交換; (3)自動給水裝置的給水方式和機器人的卸水方式,可以有多種方案予以實現,但應是 在保證轉移方式可靠的前提下,追求轉移速度; (4)運水量不應按機器人上容器的每次運水總量進行測量,而應按由機器人裝卸到 c 區 容器中的水量進行測量; (5)完成發揮部分需要顯示運行時間以及
5、運水量,顯示界面應具備顯示多個字符的功能; (6)容器尺寸以及機器人相關尺寸有嚴格要求,均應滿足。 2 方案設計與論證 隨著計算機技術的迅猛發展和廣泛應用,機電一體化技術正獲得前所未有的發展,而機 器人是機電一體化技術的最佳詮釋。本運水機器人賽題從實際應用出發,機電一體化思想的 充分融入是本賽題的最大特色,而成本低廉、性能可靠、結構合理是進行方案設計的出發點。 2.1 三套可行方案選擇 根據系統設計任務所得出的結論,結合機械電子學、電子技術、微控技術等相關的學科 知識,以及電子元器件市場器件的銷售情況,現對本運水機器人系統涉及的相關項目進行逐 項設計,每個設計項目分別給出三套可行方案,并作出最
6、終選擇。如表 1 所示,三套可行頂 層方案的設計與選擇。 表 1 三套頂層方案的設計與選擇 2.2 最佳方案論證 2.2.1 電機選擇 直流電機具有良好的調速特性、較大的啟動轉矩,以及功率大響應快速等優點,特別是 其調速范圍廣,調速時的能量損耗小,且易于平滑調節。步進電機雖然具有機械振動小、噪 聲低、易于數字精確控制等一系列的優點,但是其輸出力矩隨轉速升高而下降、在較高轉速 時會急劇下降,且一般不具有過載能力的特點,使其無法滿足本運水機器人對力矩和速度的 要求。而采用舵機轉向直流電機驅動的方案,無疑曾加了軟件控制的復雜程度。 直流減速電機其大力矩,平滑調速的特性很好的滿足了本運水載重機器人的要
7、求。 2.2.2 運水量測量 利用稱重傳感器測出容器儲水總重,減去放水后剩量換算得出運水量。然而稱重傳感器 輸出的模擬信號為微弱的毫伏級電壓信號,需要經運算放大器放大后送給 ad 轉換芯片進行 模數轉換,最后再給 cpu 進行相應處理,這樣不但增加了硬件設計成本,而且軟件編寫較 為復雜,不符合運水機器人高性價比的設計初衷。而根據容器尺寸,抽水流量和時間計算得 出運水量的設計方案,屬于開環測試,很難控制測量的精確度,無法滿足 5%以內的測量誤 差。 設計項目方案一方案二方案三最佳方案 電機選擇直流減速電機混合式步進電機轉向舵機加后輪驅動 電機 方案一 運水量測量稱重傳感器測水重, 從而換算出運水
8、量 根據容器尺寸和抽水 時間計算運水量 根據水的導電特性, 利用分布導線測出液 位換算出運水量 方案三 自動給水裝置與 機器人通訊 無線發射接受紅外編碼解碼光電式接近開關方案二 路面黑線檢測主動式紅外探測器直 流驅動方式 紅外探測器脈沖調制 方式 發光二極管與光敏電 阻加 ad 轉換方式 方案一 自動裝水方式直流微型隔膜水泵電磁閥舵機連同水龍頭加以 改裝 方案一 c 區卸水方式著重結構設計,采用 傾倒方式 微型離心水泵抽水合理設計儲水容器, 改裝水龍頭 方案二 顯示方式led 數碼管顯示lcd1602 液晶顯示lcd12864 液晶顯示方案二 控制中心一片 51 單片機,加譯 碼器鎖存器擴展
9、io 口 兩片 51 單片機,主從 機控制結構 fpga方案二 這里利用水液的微弱導電性,采用自創的分布導線法進行液位測量,不但測量穩定精度 較高,而且成本低廉。其詳細測量方法將在后文進行述說。 2.2.3 自動給水裝置與機器人的通訊 無線發射接受方式信號可傳輸距離遠,但是其自身抗干擾能力差,由于涉及到高頻電路 的制作與調試,制作較為復雜,而且成本較紅外編解碼方式高。而采用光電接近開關方案, 主要靠檢測機器人位置來輸出信號,是一種被動式的信號交換形式,可控性能相對較差。 2.2.4 路面黑線檢測 路面黑線檢測采用主動式紅外探測器直流驅動方式。雖然其較脈沖調制方式檢測距離近, 易受干擾,但通過合
10、理設計電路元器件參數同樣能達到滿意效果,鑒于價格考慮這里采用前 者。發光二極管與光敏電阻加 ad 轉換組成的巡線方案,適于在環境光線基本不變的情況下 使用,適應性較差,而且硬件成本高昂。 2.2.5 其他方案論證 自動裝水方式采用直流隔膜水泵。電磁閥多數為 220v 交流供電,而且價格昂貴流速較 慢。將自來水龍頭改裝后,用舵機控制它的擰開和關閉。這種方案簡便可靠,頗具創意,考 慮到機械加工工作量較大,我們舍棄了此種方案。 lcd1602 液晶顯示器價格便宜,功耗低、顯示清晰。而數碼管顯示字符少,功耗太大。 至于 lcd12864 顯示屏幕太大,用于此系統不大協調。 2.3 最終系統方案 根據上
11、文分析和論述,現將系統方案確定。如圖 2 所示,為最終的系統方案方框圖。除 了上面談及的內容外,另外還將水溫測量并顯示、語音適時播報融入系統作為本機器人發揮 部分的特色與創新。 水溫測量 cpu 上位主機上位主機 控制中心控制中心 cpu 下位從機 lcd 液晶顯示液位測量 h 橋雙路電機驅動直流電機 繼電器驅動模塊車上卸水泵水滿檢測 紅外編碼發射 紅外解碼接收a 區裝水 cpu 繼電器驅動模塊 a 區裝水泵 語音適時播報 黑線檢測 指示電珠 圖 2 系統方案方框圖 3 系統電路分析與軟件說明 3.1 電路分析 3.1.1 黑線檢測電路 采用 rpr220 反射型紅外對管采集路面信號。紅外發射
12、管發出紅外光線,經反射物體反 射到接收管上,使接收管的集電極和發射極間電阻變小,輸入電位變小,接收管輸出端輸出 高電平,通過 pnp 三極管放大輸入比較器(lm393ad)的反相端。當紅外光線照射到黑色 條紋時,反射至接收管中的光強變弱,輸出低電壓經三極管放大,再經比較器處理,輸出高 電平。 由于 lm339 是開源輸出,需在輸出端接一個 10k 的上拉電阻。在比較器的同相輸入端 接電位器用來調節閥值,以適應不同光線環境的要求;在紅外發光管串接一個 1k 電位器, 調節發光強度,以消除紅外管的出廠誤差。如圖 3 所示,為黑線檢測電路原理圖。本運水機 器人系統,共用到 12 路此檢測電路。前后各
13、六個,其中五個檢測引導線,一個檢測邊線。 1k r3 220 r1 rpr220 9012 vccvcc 200k r4 102 r2 2 4 5 lm339ad 104 r6 33k r5 vcc 10k r7 vcc out 圖 3 路面黑線檢測電路 3.1.2 分布導線水量測量法 純水是一種極弱的電解質,故而具有微弱的導電特性,自來水較純凈水的導電性強。利 用水的這一特性,我們獨創了一套運水量測量方法-分布導線水量測量法。 如圖 4 所示,為分布導線測水量的示意圖。在容器口附近布置 1-8 號八根導線,導線成 梯度等距分布,導線分布越多、之間距離越短測量精度越高。根據設計任務要求,運水量
14、應 為從機器人儲水容器注入 c 區容器中的水量;在容器近底面處安放 0 號放水完畢檢測導線。 運水量即為液面高度所擁有的水量 vi減去檢測導線處所擁有的水量 vo。0 號導線高度 ho固 定,1-8 號導線測出液面高度 hi。運水量的計算公式如下: v=vi-vo =a(hi -ho) ml a 容器底面積; vi 液面高度所擁有的水量; v 檢測導線處所擁有的水量; hi 第 i 號(1-8 號)導線所在的液面高度; ho 放水完畢檢測導線所在的液面高度 2 4 5 lm339ad 100k r1 10k r4 vccvcc out in 10k r3 104 r2 圖 4 分布導線測水量示
15、意圖 圖 5 測水量比較器電平處理電路 水的導電性能十分微弱,雖然給容器中的水液上拉了 12v 的電壓,但從檢測導線輸出 的信號只有 0.4v-0.8v,在 ttl 中依然為低電平,無法為單片機所采集。這里設計以比較器 為中心的電平處理電路,能將 0.4v-0.8v 的弱電平轉換為穩定的 ttl 電平,如圖 5 所示。 r3 為輸入端的下拉電阻,保證無信號輸入時比較器同相輸入端為低電平;r4 為輸出端上拉 電阻,以解決比較器開源輸出的問題。比較器反相輸入端參考電壓調節至 0.2v。 3.1.3 機器人與自動裝水裝置通訊模塊 本模塊通訊方式為紅外編解碼,模塊由三態編解芯片mc145026 和mc
16、145027 組成,此 組芯片是摩托羅拉公司生產的用于通信配對使用的最新芯片。編碼芯片mc145026 可對9 位 輸入信息(地址位a1a5,數據位d6d9)進行編碼,編碼后每個數據位用兩個脈沖表示: “1”編碼為兩個寬脈沖;“0”編碼為兩個窄脈沖;“開路”編碼為一寬脈沖和一窄脈沖交 叉。對于每9 位數據信息,可以看作是一個數據字,為了提高通信的安全性,編解碼芯片對 每個數據字發送兩次,接收兩次。其電路原理如圖6所示。 a1 1 a2 2 a3 3 a4 4 a5 5 a6/d6 6 a7/d7 7 vss 8 a8/d8 9 a9/d9 10 rs 11 ctc 12 rtc 13 te 1
17、4 out 15 vdd 16 mc145026 u2 mc145026 a1 1 a2 2 a3 3 a4 4 a5 5 r1 6 c1 7 vss 8 in 9 r2/c2 10 vt 11 d9 12 d8 13 d7 14 d6 15 vdd 16 mc145027 u4 mc145027 y1 1 a1 2 b1 3 y2 4 a2 5 b2 6 gnd 7 a3 8 b3 9 y3 10 a4 11 b4 12 y4 13 vcc 14 74ls02 u3 74ls02 in1 1 in1 2 out1 3 out2 4 in2 5 in2 6 vss 7 in3 8 in3 9
18、out3 10 out4 11 in4 12 in4 13 vdd 14 u1 cd4011 vcc 51kr1 100kr2 4.7k r5 561 c2 103c1 103 c1 9013 led 300k r3 vcc 200 r6 vcc 503 r4 下下下下下下 vcc vcc out 200kr1 400kr2 104c2 下下下下下下 1 2 3 0038 in 圖6 紅外編解碼通訊原理圖 3.2 軟件說明 由于篇幅有限,這里只給出主程序的核心流程圖,如圖7所示。 圖7 主程序核心流程圖 4 數據測試 運水機器人制作完成后,對系統性能作出了測試。測試儀器如表2所示,測試數據如表
19、3 所示。 表2 測試儀器 儀器數量 秒表1 只 燒杯2 只 溫度計1 只 表3 測試數據 項目 次數 顯示時間 單位:s 秒表時間 單位:s 測量水量 單位:ml 實際水量 單位:ml 測量水溫 單位: 實際水溫 單位: 測試時間 133.433.61100107625.425.6am 9:10 235.134.81110109026.626.7am10:08 332.232.71100108127.427.6am10:50 436.837.01100107228.027.8pm14:35 533.033.31090101328.228.2pm15:00 634.634.0109010982
20、7.227.5pm17:00 根據測試記錄數據可知:考慮人為按下秒表的因素,系統時間顯示準確無誤;水量測量 誤差均控制在3%以內;18b20單總線溫度傳感器的水溫測量亦是無可挑剔。 整套系統經過一個星期的反復試驗和測試,可靠穩定、達到方案設計的預期指標。 5 創新總結 5.1 系統設計創新點 (1)采用自創的分布導線液位測量法進行運水量測量,并將測量誤差控制在3%以內; (2)機器人每次動作的進行都配套有適時的語音播報,加上lcd液晶顯示使其具備更 佳的人機交換界面; (3)對每次所運的水進行水溫測量,并液晶顯示,使其在相關應用領域具備一定的實 用價值; (4)電路焊接工藝良好,機械結構設計簡
21、便合理,機器人運行平穩無噪聲,而且不乏 創新元素的融入,外形亦是具備很強的觀賞性。 5.2 心得體會 “三人行,必有我師焉”,這恐怕是我們此次省賽體會最為深刻的一句話。我們三個人 共同點是從大一開始便開始熱衷于各種課外創新活動,尤其在電子創新方面有所側重;不同 之處是三人專業不盡相同機械、能源、通信工程。三個人都有自己的特長和優勢,大家 在一起交流學習、取長補短、并肩作戰并樂在其中這個暑假繁忙而充實! 附頁: p1.0/t2 1 p1.1/t2ex 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst 9 p3.0/rxd 10 p3.1/txd 11
22、 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p
23、0.0/ad0 39 vcc 40 stc89c52 5v 12 12m 30pf c1 30pf c2 s1 1k r1 10k r2 5v 100pf c3 1 2 3 4 5 下下下下 5v in1 5 en a 6 in2 7 gnd 8 vss 9 in3 10 en b 11 in4 12 out3 13 out4 14 is en a 15 is en b 1 out1 2 out2 3 vs 4 lm298 u2 lm298 d5d7 d2d3d1d4 d6d8 m 下下下下 m 下下下下 100ufc9100ufc11 0.1ufc100.1ufc8 8550 1k r4 m
24、 下下下1 m 下下下2 vcc 1 2 3 下下下下 1 2 3 4 5 6 7 8 下下下下下 1 2 3 4 5 6 7 8 下下下下下 1 2 12v 下下下 ds1 led2 vinvout gnd vr-7806 104 c4 vinvout gnd vr-7805下下下下 12v 103 c5104 c6 470u c7 1k r3 5v 1 2 3 下下下下下下下 6v 6v 12v 下下 下下 下下下下下下下 12v 5v p1.0/t2 1 p1.1/t2ex 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst 9 p3.0/rx
25、d 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2
26、37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 stc89c52 5v 12 12m 30pf c1 30pf c2 s1 1k r1 10k r2 5v 100pf c3 1 2 3 4 5 下下下下 5v 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10k out1 2 out2 1 out3 14 out4 13 vcc 3 in1- 4 in1+ 5 in2- 6 in2+ 7 in3- 8 in3+ 9 in4- 10 in4+ 11 gnd 12 u1 lm339 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
27、 10 10 11 11 12 12 13 13 14 14 15 15 16 16 lcd1602 10k r4 10k r5 5v rs lcdes 5v 1 2 3 ds18b20 out1 2 out2 1 out3 14 out4 13 vcc 3 in1- 4 in1+ 5 in2- 6 in2+ 7 in3- 8 in3+ 9 in4- 10 in4+ 11 gnd 12 u2lm339 104 r11 5v 1 2 3 4 5 6 7 8 下下下下下下 1 2 3 下下下下下下下 rw rs rw lcdes 5v 5v 5v bj bj bj bj bj bj bj bj b
28、j 下下下下下下下 附表1 元器件清單 名稱型號數量名稱型號數量 單片機stc89c523直流隔膜水泵12v 20w1 單片機spce061a1微型水泵12v 8w2 比較器lm3396直流減速電機12v 120r/min2 功率放大器l298n1晶振12 mhz3 繼電器srd-s-1052晶振32.768khz1 繼電器jrc-21f1或非門74ls021 紅外編碼芯片mc1450261與非門cd40111 紅外解碼芯片mc1450271音頻功放spy00301 紅外對管rpr22012電位器10212 液晶顯示器lcd16021電位器1032 溫度傳感器ds18b201電位器1045 三
29、極管901212集成穩壓芯片l78053 三極管90133集成穩壓芯片l78062 上位機 /=奧運第四天省賽程序完整版=/ /_ _ _ _ _ _ _ _ _ _ _ /-全部功能很好實現- /- /=洞庭飛=洞庭飛=洞庭飛=洞庭飛=/ /- /=/ #include #includeintrins.h /_nop_();延時函數用 #includemath.h #define uchar unsigned char #define uint unsigned int #define ulint unsigned long bit k1=0,k2=0; /k=0正轉k=1反轉 sbit s
30、huiman=p32; /一根線在a區檢測水滿,則使a區水泵停止 sbit fangshui=p33;/通過紅外發射控制a區泵的轉動和停止高有效 sbit kaibeng=p34;/車在c區開泵向c容器中放水 sbit shuidao=p35;/車向c容器中放水,檢測b容器中水已抽完 sbit start=p36; /上位51機控制下位機定時器0開,也作為小車運行停止的聯絡信號 sbit jianshui=p37;/上位機控制下位開始檢測水位 uchar bianh,bianl; /k控制轉動方向 uchar sud1=0,sud2=0; /速度調節碼值 uchar jishi1=0,jish
31、i2=0; /定時器0中斷計數 uchar yuyin; /= /應用時先開中斷tr0=1,設sud1,sud2大小控制速度, /k1 k2值控制方向,sud范圍為0-255,對應停止-全速 /k=0電機正向轉動,k1=1電機反向轉動 /- timer0() interrupt 1 using 1 /使用定時器0 uchar zuoq,zuot,youq,yout; th0=bianh; /每次中斷定時0.1ms tl0=bianl; jishi1+; jishi2+; /*左直流電機* if(sud1!=0) if(k1=0) /k1=0,左電機正轉 if(jishi1=sud1) zuoq
32、=0 x01;zuot=0 x00; else if(sud1jishi1100) jishi1=0;zuoq=0;zuot=0; else /k1!=0,左電機反轉 if(jishi1=sud1) zuoq=0 x00;zuot=0 x01; else if(sud1jishi1=100) zuoq=0 x00;zuot=0 x00; else jishi1=0;zuoq=0;zuot=0; else /sud1=0,左電機停轉 zuoq=0;zuot=0; /*右直流電機* if(sud2!=0) if(k2=0) /k2=0,右電機正轉 if(jishi2=sud2) youq=0 x0
33、1;yout=0 x00; else if(sud2jishi2=100) youq=0 x00;yout=0 x00; else jishi2=0;youq=0;yout=0; else /k2!=0,右電機反轉 if(jishi2=sud2) youq=0 x00;yout=0 x01; else if(sud2jishi2=100) youq=0 x00;yout=0 x00; else jishi2=0;youq=0;yout=0; else /sud2=0,右電機停轉 youq=0 x00;yout=0 x00; /*兩電機驅動碼中和* yout=yout3;youq=youq2;z
34、uot=zuot1; p2=(yout|youq|zuot|zuoq|yuyin); / p2口低四位輸出驅動碼 /p2.0 p2.1控制左電機,p2.2 p2.3控制右電機 /以及控制凌陽61的語音,p2.4 p2.5 p2.6控制 /- /*前進巡線,即由a區運行至c區* void xunqian() uchar hong5=0; /存紅外狀態 k1=0;k2=0; /左右電機都正轉 hong5=p0;_nop_(); hong5=hong5 if(hong5 sud2=255; else if(hong5 sud2=255; /左電機減速,右電機大全速 else if(hong5sud2
35、=0; /右電機大減速,左電機全速 else if(hong5sud2=255;/右電機全速左電機小減速 else if(hong5sud2=170; /右電機大減速,左電機全速 /- /*倒車巡線,即由c區運行至a區,前端* void xunhou() uchar hong5=0; /存紅外狀態 k1=1;k2=1; /左右電機都反轉 hong5=p1;_nop_(); hong5=hong5 if(hong5 sud2=255; else if(hong5 sud2=0; /左電機減速,右電機大全速 else if(hong5sud2=255; /右電機大減速,左電機全速 else if(
36、hong5sud2=170;/右電機全速左電機小減速 else if(hong5sud2=255; /右電機大減速,左電機全速 /= void xunhou1() uchar hong5=0; /存紅外狀態 k1=1;k2=1; /左右電機都反轉 hong5=p0;_nop_(); hong5=hong5 if(hong5 sud2=255; else if(hong5 sud2=255; /右電機減速,左電機大全速 else if(hong5sud2=120; /左電機大減速,右電機全速 else if(hong5sud2=255;/左電機全速右電機小減速 else if(hong5sud2
37、=200; /左電機大減速,右電機全速 /-延時程序,一個單位代表約1ms- void delay(uint k) uint i,j; for(i=0;i=k;i+) for(j=0;j=200;j+) ; /- /不管小車是前進還是倒車都是sud1控制左邊的, /速度2控制右邊的 /當然都是人站在車后面向行駛的方向看去 /= /=/ /sbit start=p30;/上位51機控制下位機定時器0開,使之開始計時 /sbit jianshui=p31;/上位機控制下位開始檢測水位 /sbit shuiman=p32;/下位機檢測水滿后反饋給上位機一個信號 /sbit fangshui=p33;
38、/上位機通過紅外發射控制a區泵的轉動和停止, / 低有效 /sbit kaibeng=p34;/車在c區開泵向c容器中放水,低有效 /sbit shuidao=p35;/車向c容器中放水,檢測b容器中水已抽完 /*主函數* /= void main() ulint kk=0; /-初始化- uchar biao1=0,heng2=0,heng1=0,biao2=0,biao3=0,biao4=0; tmod=0 x01; /初始化,定時器0用方式1定時 bianh=0 xff; /定時us bianl=0 xc0; th0=bianh; tl0=bianl; ea=1;et0=1;tr0=0;
39、 sud1=0;k1=0; sud2=0;k2=0; yuyin=0; start=0; jianshui=0; fangshui=0; kaibeng=1; tr0=1; /開定時器0 start=1; /開下位機定時器0開始計時間 delay(40); /安全延時約6秒鐘 /- /小車第一次在a區進行裝水程序段,小車還未開始計時 fangshui=1; /開泵放水 delay(80); jianshui=1; delay(10); /延時0.2秒由下位機檢水 while(!shuiman); /下位機檢測水未滿,在此等待 fangshui=0; /關泵 jianshui=0; /關下位機檢
40、水程序 delay(30); /% yuyin=0 x30; /% delay(120); /- sud1=220;sud2=220; /-小車裝水完畢第一次由a區運行至c區- biao1=1; delay(30); yuyin=0 x40; delay(50); while(biao1=1) /% yuyin=0 x10; /% xunqian(); heng2=p0; /檢測第二條橫線 heng2=heng2/用前紅外管0號管檢測 if(heng2!=0) biao1=0;sud1=0;sud2=0;yuyin=0 x00;/檢測到橫線后停車 delay(40); /-小車停在c區向容器中
41、抽水- while(shuidao) kaibeng=0; kaibeng=1; /水到shuidao為0后,關b容器中泵停止抽水 yuyin=0 x50; /-為倒車即車由c區運行至a區作準備- biao2=1; delay(50); sud1=255;k1=1; sud2=255;k2=1; delay(65); yuyin=0 x20; /-小車由c區運行至a區- while(biao2=1) xunhou(); heng1=p1; /檢測第二條橫線 heng1=heng1 /用前紅外管0號管檢測 if(heng1!=0) biao2=0; biao3=1; yuyin=0 x60; w
42、hile(biao3=1) xunhou1(); heng1=p0; /檢測第二條橫線 heng1=heng1 /用前紅外管0號管檢測 if(heng1!=0) biao3=0;sud1=0;sud2=0;yuyin=0 x00; /車到達a區停穩 /-由a區容器向車中容器放水- delay(10); /# start=0; /小車第2次在a區進行裝水程序段 fangshui=1; /開泵放水 delay(10); jianshui=1; /延時0.2秒由下位機檢水 while(!shuiman); /下位機檢測水未滿,在此等待 fangshui=0; /關泵 jianshui=0; /關下位
43、機檢水程序 delay(90); /- /-為小車第二次由a區運行至c區做好準備- sud1=220;k1=0; sud2=220;k2=0; /-小車裝水完畢第二次由a區運行至c區- biao4=1; delay(55); /% yuyin=0 x30; /% start=1; while(biao4=1) /% kk=0; kk+; if(100000kk100100) yuyin=0 x40; else yuyin=0 x10; /% xunqian(); heng2=p0; /檢測第二條橫線 heng2=heng2/用前紅外管0號管檢測 if(heng2!=0) biao4=0;sud
44、1=0;sud2=0;yuyin=0 x00;/檢測到橫線后停車 /- delay(40); kaibeng=0; delay(50); jianshui=1; while(shuidao); /% yuyin=0 x30; delay(10); yuyin=0 x50; /% kaibeng=1; jianshui=0; start=0; yuyin=0 x00; tr0=0; delay(10); while(1); 下位機 /=08奧運第四天版,中國軍團已獲12金= /_ _ _ _ _ _ _ _ _ _ _ _ /= /液位測量,根據實際容器情況換算為運載容量進行顯示 /包括第一次運
45、載量ml,第二次運載量,以及總和 /水溫測試 ds18b20 /精確計算,含一位小數液晶顯示液晶板1602 /運行時間顯示 /= #include #includeintrins.h /_nop_();延時函數用 #includemath.h #define uchar unsigned char #define uint unsigned int #define ulint unsigned long sbit dq=p27; /溫度控制口18b20,傳感器輸入 sbit rs=p24; /液晶控制 sbit rw=p25; sbit e=p26; sbit start=p20; /上位51
46、機控制下位機定時器0開,使之開始計時 sbit jianshui=p21; /上位機控制下位開始檢測水位 /sbit shuiman=p22; /下位機檢測水滿后反饋給上位機一個信號 /sbit chebiao=p23;/作為小車運行停止接受上位機的聯絡信號 sbit yeweizhi2=p11; uchar add; /用來存顯示地址 uint time=0; uchar data dis16= t,:, , , ,., ,s, , w, , ,., ,0 xeb,c,; /存計算結果水溫測量及運行時間顯示 uchar data dis116= v,1,:, , , , , , v,2,:,
47、 , , ,m,l ; /用于顯示第一次運水量,第二次運水量 單位:ml uchar data dis216= ,v,0,=,v,1,+,v,2,=, , , , ,m,l; /用于顯示兩次運水量總和,單位:ml uchar code ditab16= 0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06, 0 x06,0 x07,0 x08,0 x08,0 x09,0 x09; /小數轉換表 /= timer0() interrupt 1 using 1 /使用定時器0 th0=-(10200/256); /每次中斷延時10m
48、s tl0=-(10200%256); dis2=time/10000+0 x30; dis3= (time%10000)/1000+0 x30; dis4= (time%1000)/100+0 x30; dis6= (time%100)/10+0 x30; time+; /# /=/ /=水溫測量塊=/ /* /延時11us函數 void delay(uint t) for(;t0;t-); /* /復位程序 ow_reset(void) bit presence=1; while(presence) while(presence) dq=1; _nop_(); _nop_(); dq=0;
49、 delay(50); /550us dq=1; delay(6); /66us presence=dq; /presence=0繼續下一步 delay(45); /500us presence=dq; dq=1; /* /寫命令函數,寫一個字節 void write_byte(uchar val) uchar i; for(i=8;i0;i-) dq=1; _nop_(); _nop_(); dq=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_();/5us dq=val /最低位移出 delay(6); /66us val=val1; /右移1位
50、dq=1; delay(1); /* /讀一字節函數 uchar read_byte(void) uchar i; uchar value=0; for(i=8;i0;i-) dq=1; _nop_(); _nop_(); value=1; dq=0; _nop_(); _nop_(); _nop_(); _nop_(); /4us dq=1; _nop_(); _nop_(); _nop_(); _nop_(); /4us if(dq) value|=0 x80; delay(6); /66us dq=1; return(value); /* /溫度數據處理函數 void chuli(uch
51、ar gaowei,uchar diwei) uchar zong; dis13=diwei /轉換成液晶碼 dis13=ditabdis13+0 x30; zong=(diwei dis11=zong%100; dis10=dis11/10+0 x30; dis11=dis11%10+0 x30; /* /=/ /=1602液晶顯示塊=/ /*延時*/ delay1(uint z) uint i,j; for(i=0;iz;i+) for(j=0;j120;j+) ; /* /寫指令子程序 wrcod(uchar i) p0=i; /p0口為數據位 rs=0; e=0; delay1(8);
52、 e=1; /* /寫數據子程序 wrshu(uchar i) p0=i; rs=1; e=0; delay1(2); e=1; /* /初始化液晶 chushi() uchar coad; coad=0 x01; /清屏 wrcod(coad); coad=0 x06; wrcod(coad); /輸入方式控制 coad=0 x0e; wrcod(coad); /顯示開關控制 coad=0 x38; wrcod(coad); /功能設定:設置16x2顯示,5x7顯示,8位數據接口 /* /顯示程序 /-顯示小車工作時間,水溫- xian1() uchar i=0; while(i16) wr
53、shu(disi); i+; /-顯示第一次運水量,第二次運水量- xian2() uchar i=0; while(i16) wrshu(dis1i); i+; /-顯示運水總量- xian3() uint yeweizhi3; uchar i=0; yeweizhi3=11090; dis210=yeweizhi3/10000+0 x30; /送至1602顯示 dis211=(yeweizhi3%10000)/1000+0 x30; dis212=(yeweizhi3%1000)/100+0 x30; dis213=(yeweizhi3%100)/10+0 x30; while(i16)
54、wrshu(dis2i); i+; /* /* /*水溫測量初始* void shuiwen() uchar wenh,wenl; /存高低溫度值ow_reset(); /轉換 ow_reset(); /轉換 write_byte(0 xcc); write_byte(0 x44); ow_reset(); write_byte(0 xcc); /發讀命令 write_byte(0 xbe); wenl=read_byte(); /溫度低八位 wenh=read_byte(); /溫度高八位 chuli(wenh,wenl); /數據處理 /-運行時間顯示,水溫測量顯示-/ add=0 x80
55、; /顯示 wrcod(add); xian1(); /- add=0 xc0; wrcod(add); xian2(); /運水量的已經測量的顯示 /-/ delay1(200); /= /# /=液位測量子程序= ceye() uint ce1,ce3,ceyewei; ce1=p1; /接高處的短排針 ce3=p3 / 接較低處的,即較長排針的 ce1=7; ceyewei=ce1|ce3; return(ceyewei); /- ceyewei() uint yewei,yeweizhi=0; yewei=ceye(); switch(yewei) case 0 x0000:yewei
56、zhi=yeweizhi+10;break; case 0 x0001:yeweizhi=4800;break; /可檢測處最低液面處 case 0 x0003:yeweizhi=4874;break; case 0 x0007:yeweizhi=4948;break; case 0 x000f:yeweizhi=5022;break; case 0 x001f:yeweizhi=5096;break; case 0 x003f:yeweizhi=5170;break; case 0 x007f:yeweizhi=5244;break; case 0 x00ff:yeweizhi=5318;b
57、reak; case 0 x01ff:yeweizhi=5392;break; case 0 x03ff:yeweizhi=5466;break; case 0 x07ff:yeweizhi=5540;break; case 0 x0fff:yeweizhi=5614;break; case 0 x1fff:yeweizhi=5688;break; case 0 x3fff:yeweizhi=5762;break; case 0 x7fff:yeweizhi=5836;break; /case 0 xffff:yeweizhi=5840;break; default: break; return(yeweizhi); /-對測得的液位值進行顯示處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025網絡游戲交易合同
- 2025標準小型建筑工程合同樣本
- 2025精密鋁件采購合同
- 2025員工勞動合同協議
- 貴州省六盤水市盤州市2023?2024學年高二下冊期末考試數學試卷附解析
- 廣東省江門市新會區2024~2025學年 高二下冊3月月考數學試卷附解析
- 神經網絡在金融領域洞察生成的應用研究-洞察闡釋
- 2024年南充市順慶區考調工作人員真題
- 提價通知函范本
- 河南鄭州白求恩醫學專修學院招聘筆試真題2024
- 第二十一講 典型的技術創新組織形式
- 第二講 堅持和發展中國特色社會主義的總任務PPT習概論2023優化版教學課件
- 危險化學品品名及編號規則
- 國家開放大學02150-計算機網絡(本)期末復習題及參考答案
- 子長市2022年農業面源污染治理項目社會穩定風險評估報告
- 國開2023年春《理工英語3》機考網考期末復習資料參考答案
- 全國工會財務知識競賽題庫附答案
- 植物精油提取工藝技術
- 淅川縣石槽溝-打磨溝釩礦礦產資源開采與生態修復方案
- GB/T 42381.61-2023數據質量第61部分:數據質量管理:過程參考模型
- 《數據結構》期末考試試題及答案
評論
0/150
提交評論