機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn)
《機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn)(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、設(shè)計(jì)題目: 機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名: ******* 所在院系: 信息工程學(xué)院 所學(xué)專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 導(dǎo)師姓名: ******** 完成時(shí)間: ********** 摘要 機(jī)器人關(guān)節(jié)是機(jī)器人的基礎(chǔ)部件,其性能的好壞直接影響機(jī)器人的性能。隨 著數(shù)字伺服技術(shù)等電子技術(shù)的發(fā)展, 機(jī)器人關(guān)節(jié)也在不斷發(fā)展。本文主要研究基 于舵機(jī)的機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn)。本文主要了完成以下工作: 采用定時(shí)器控制方法產(chǎn)生舵機(jī)控制的脈沖信號(hào)。 為了能實(shí)現(xiàn)活動(dòng)關(guān)節(jié)根據(jù)輸 入角度準(zhǔn)確定位和微調(diào),在設(shè)計(jì)中加入了矩陣鍵盤(pán)調(diào)控系統(tǒng)。在硬件搭建方面, 設(shè)計(jì)了基于STC89C52的2路
2、脈沖信號(hào)的硬件控制電路系統(tǒng)。之后對(duì)系統(tǒng)所使用 的編輯軟件和調(diào)試工具進(jìn)行了簡(jiǎn)要說(shuō)明,并詳細(xì)介紹了軟硬件主要模塊的設(shè)計(jì)和 實(shí)現(xiàn)過(guò)程,以及重要模塊的調(diào)試和仿真的具體過(guò)程。 最后,根據(jù)軟硬件設(shè)計(jì)結(jié)果, 制作了一個(gè)極坐標(biāo)結(jié)構(gòu)的機(jī)器人關(guān)節(jié),能夠完成在水平和豎直方向的比較精確的 控制。 關(guān)鍵詞 舵機(jī),機(jī)器人關(guān)節(jié),脈沖信號(hào) Abstract Robots joi nt, is a basic part of robot, whose performa nee will directly affect a robot. With the developme nt of electr onic tech n
3、o logy such as digital servo, the tech no logy of robot joint is develop ing continu ally. This paper studies the robot joint desig n and impleme ntati on based on digital serv o. In this paper, the follow ing work to complete: In order to achieve activities Joint accurate positioning and fine-tune
4、 based on the in put an gle, the desig n addi ng a matrix keyboard to con trol the system. Hardware structures desig ned 2-way pulse hardware con trol based on STC89C52 circuit system. Then, the paper briefly describes the editing software and debugging tools by the system. This paper in troduces th
5、e desig n and impleme ntati on of the main modules of hardware and software, and importa nt part of the specific process of debugg ing and simulatio n. Fin ally, accord ing to the results of software and hardware desig n, produced a polar structure of the robot joi nts which can complete in the hori
6、z on tal and vertical directi on s, respectively, the more precise con trol. Key words Servo, Robot joint. Pulse signal 1. 弓 I言 2.. 1.1 課題背景 2. 1.2 舵機(jī)簡(jiǎn)介 3. 1.3 本文研究的工作 4. 2. 系統(tǒng)的總體設(shè)計(jì) 4. 3. 硬件的設(shè)計(jì)與實(shí)現(xiàn) 5. 3.1 主要元器件介紹 5. 3.1.1 舵機(jī) 5. 3.1.2 STC89C52 .6.. 3.2 硬件的設(shè)計(jì)過(guò)程 6. 3.2.1 工作電源控制電路設(shè)計(jì) 6 3.2
7、.2 1602顯示控制電路設(shè)計(jì) 1 3.2.3 矩陣鍵盤(pán)控制電路設(shè)計(jì) 8 3.2.4 舵機(jī)與系統(tǒng)接口電路設(shè)計(jì) 9 3.2.5 機(jī)器人關(guān)節(jié)的外形設(shè)計(jì) 9 3.3 硬件的實(shí)現(xiàn)過(guò)程 9. 3.3.1 電路板的設(shè)計(jì)過(guò)程 9. 3.3.2 硬件的組裝過(guò)程 10 4. 軟件的設(shè)計(jì)與實(shí)現(xiàn) 1.0 4.1 系統(tǒng)軟件設(shè)計(jì)流程 1.1 4.2 各模塊程序設(shè)計(jì) 1.1 4.2.1 脈沖信號(hào)產(chǎn)生模塊 1.1 4.2.2 矩陣鍵盤(pán)控制模塊 12 4.3 數(shù)據(jù)處理 1.3 4.3.1 矩陣鍵盤(pán)的散列轉(zhuǎn)換 1.3 4.3.2 脈寬與角度的數(shù)據(jù)處理 1.4 5. 仿真與調(diào)試 15
8、 5.1 硬件電路的仿真 15 5.2 單片機(jī)的程序調(diào)試 16 6. 總結(jié) 17 致謝 1.8 參考文獻(xiàn) 1.9 附錄1 20 附錄2 20 1.引言 從一戰(zhàn)以來(lái),機(jī)器人學(xué)和飛機(jī)、火箭、計(jì)算機(jī)等一樣,也日益發(fā)展成為我們 日常生活不可或缺的科學(xué)技術(shù),機(jī)器人的應(yīng)用廣泛,從傳統(tǒng)的自動(dòng)化制造領(lǐng)域, 到人類的日常生活,再到茫茫星系的探索,都已經(jīng)離不開(kāi)機(jī)器人。 1.1課題背景 機(jī)器人關(guān)節(jié)的種類有很多,根據(jù)機(jī)器人的功能不同,關(guān)節(jié)的配臵和運(yùn)動(dòng)系統(tǒng) 的形式也都各不相同。 應(yīng)用最多的工業(yè)機(jī)器人是多關(guān)節(jié)機(jī)器人,它主要是由多個(gè)回轉(zhuǎn)關(guān)節(jié)和連桿組 成,模擬人的肩關(guān)節(jié)、肘關(guān)節(jié)和腕關(guān)節(jié)等的作用。工業(yè)
9、機(jī)器人關(guān)節(jié)根據(jù)輸出運(yùn)動(dòng) 形式的不同分為移動(dòng)關(guān)節(jié)和轉(zhuǎn)動(dòng)關(guān)節(jié):根據(jù)傳動(dòng)機(jī)構(gòu)的不同可以分為齒輪傳動(dòng)、 連桿傳動(dòng)和擺線針輪減速傳動(dòng);根據(jù)驅(qū)動(dòng)器形式的不同可以分為電驅(qū)動(dòng)關(guān)節(jié)、 氣 壓驅(qū)動(dòng)關(guān)節(jié)、液壓驅(qū)動(dòng)關(guān)節(jié)和特種驅(qū)動(dòng)關(guān)節(jié)等。仿人機(jī)器人也是當(dāng)今機(jī)器人愛(ài)好 者研究的熱點(diǎn)之一,仿人機(jī)器人因?yàn)橥庑皖惾藙t其關(guān)節(jié)可以分為上肢關(guān)節(jié)和下肢 關(guān)節(jié)。仿人機(jī)器人主要分為仿人手臂型和仿人雙足型。仿人手臂型主要是研究 7 自由度手臂和多自由度操作臂、多指靈巧手及手臂和靈巧手的組合。 仿人雙足型 主要研究步行機(jī)構(gòu)及步行特性,下肢關(guān)節(jié)結(jié)構(gòu)是步行質(zhì)量好壞的關(guān)鍵。微型機(jī)器 人則是利用集成電路微細(xì)加工,將驅(qū)動(dòng)器,關(guān)節(jié)傳動(dòng)裝臵以及傳感器控
10、制器和電 源等集成在很小的多晶硅上。工業(yè)機(jī)器人與仿人機(jī)器人的肩、 肘、髖關(guān)節(jié)不同的 是自由度的個(gè)數(shù)。通常工業(yè)機(jī)器人的肩肘髖的關(guān)節(jié)的自由度為 1。 總體來(lái)看機(jī)器人關(guān)節(jié)呈現(xiàn)出大力矩,高精度,反應(yīng)靈敏,小型化,標(biāo)準(zhǔn)化和 模塊化的趨勢(shì)和發(fā)展。 1.2舵機(jī)簡(jiǎn)介 在機(jī)器人關(guān)節(jié)的設(shè)計(jì)中,電機(jī)是至關(guān)重要的一部分,電機(jī)就像是機(jī)器人關(guān)節(jié) 的肌肉,只有正確的配臵和使用電機(jī)才能使機(jī)器人關(guān)節(jié)正常運(yùn)轉(zhuǎn)起來(lái)。 常見(jiàn)的電機(jī)主要有直、交流電機(jī),而直流電機(jī)一直在機(jī)器人設(shè)計(jì)中占有主導(dǎo) 地位。直流電機(jī)可以分為連續(xù)轉(zhuǎn)動(dòng)電機(jī)和步進(jìn)電機(jī) 2種,主要區(qū)別是連續(xù)轉(zhuǎn)動(dòng)的 電機(jī)在通電后主軸連續(xù)轉(zhuǎn)動(dòng),只有當(dāng)斷電或者電機(jī)提供的驅(qū)動(dòng)力無(wú)法驅(qū)動(dòng)負(fù)
11、載 時(shí),主軸才停止轉(zhuǎn)動(dòng)或這阻塞;步進(jìn)電機(jī)則是通電后主軸轉(zhuǎn)動(dòng)某一個(gè)角度后, 然 后停止。直流電機(jī)和步進(jìn)電機(jī)都是開(kāi)環(huán)反饋系統(tǒng), 也就是在電機(jī)轉(zhuǎn)動(dòng)的過(guò)程中并 不知道電機(jī)究竟轉(zhuǎn)過(guò)了多少角度。 伺服電機(jī)是一種比較特殊的連續(xù)轉(zhuǎn)動(dòng)電機(jī)類型。 伺服電機(jī)轉(zhuǎn)動(dòng)的角度可以通 過(guò)控制電路反饋,并且控制電路不斷的修正轉(zhuǎn)動(dòng)角度的誤差, 直到電機(jī)轉(zhuǎn)動(dòng)要預(yù) 期位臵。 舵機(jī)是一種伺服電機(jī),它具有伺服電機(jī)的優(yōu)點(diǎn),即在接收到控制信號(hào)后可以 轉(zhuǎn)過(guò)相對(duì)準(zhǔn)確的位臵,這使舵機(jī)在機(jī)器人設(shè)計(jì),航模,船模等有著廣泛的應(yīng)用, 比如用來(lái)控制機(jī)器人的轉(zhuǎn)動(dòng)方向等。 舵機(jī)的定位是利用脈寬調(diào)制的方法實(shí)現(xiàn)的。 舵機(jī)可以根據(jù)周期內(nèi)高電平的持 續(xù)時(shí)間(即
12、脈寬)來(lái)完成定位。一般的舵機(jī)控制電路能夠接收周期為 20ms、脈 寬為1~2ms的脈沖信號(hào),脈沖的準(zhǔn)確長(zhǎng)度決定了舵機(jī)軸轉(zhuǎn)動(dòng)的準(zhǔn)確位臵 (圖1-1)。 目前普遍使用PWM (占空比)即高電平在20ms周期內(nèi)的持續(xù)時(shí)間所占的比例 來(lái)描述脈寬。當(dāng)舵機(jī)接收到的1ms的脈寬時(shí),舵機(jī)向某一個(gè)極限位臵轉(zhuǎn)動(dòng),當(dāng) 接收到脈寬為2ms的時(shí)候,舵機(jī)向另一個(gè)方向極限位臵轉(zhuǎn)動(dòng)。也可以說(shuō)舵機(jī)的 角位移與接收到的脈寬成正比,一般情況下,舵機(jī)能在 0.25~0.5的時(shí)間內(nèi)轉(zhuǎn)過(guò) 60°。 伺服電機(jī)是一種閉環(huán)反饋系統(tǒng),內(nèi)部主要有一個(gè)控制電路、一個(gè)電機(jī)、一個(gè) 齒輪箱和一個(gè)電位計(jì)組成。電位計(jì)的作用是檢測(cè)舵機(jī)的輸出軸是否已經(jīng)轉(zhuǎn)到
13、期望 位臵。電位計(jì)與舵機(jī)的輸出軸相連接,這樣分壓計(jì)能夠非常準(zhǔn)確的反映出舵機(jī)輸 出軸的當(dāng)前位臵。電位計(jì)輸出為一個(gè)電壓信號(hào),當(dāng)舵機(jī)的輸出軸的位臵變換時(shí), 控制電路就會(huì)從分壓器接收到不同的電壓信號(hào)。 舵機(jī)中的控制電路將電位計(jì)的輸 出的電壓信號(hào)和控制脈沖信號(hào)定時(shí)比較,如果電壓信號(hào)不正確就會(huì)產(chǎn)生誤差信 號(hào)。該誤差信號(hào)與電位計(jì)的位臵和可能告知脈沖的差值成正比, 當(dāng)存在誤差信號(hào) 時(shí),電機(jī)就會(huì)保持轉(zhuǎn)動(dòng),直到電位計(jì)輸出的電壓信號(hào)和控制脈沖信號(hào)相匹配時(shí), 誤差信號(hào)被移除,電機(jī)停轉(zhuǎn)。 1?2ms A 20ms 圖1-1周期為
14、20ms的脈沖信號(hào)的高電平持續(xù)時(shí)間在 1~2ms之間變化可以控制舵機(jī)的輸出軸位臵 舵機(jī)的主要技術(shù)參數(shù)有力矩,回轉(zhuǎn)率,工作電壓,工作溫度,死區(qū)等。舵機(jī) 的應(yīng)用場(chǎng)合,主要有多自由度機(jī)器人設(shè)計(jì),多路伺服航??刂?,電動(dòng)遙控飛機(jī) , 遙控飛機(jī),航海模型,高檔遙控仿真車(chē)等。 1.3本文研究的工作 通過(guò)對(duì)電機(jī)類型的結(jié)構(gòu)和原理進(jìn)行分析與比較,本課題選用舵機(jī)作為機(jī)器人 關(guān)節(jié)的本體原件來(lái)完成的機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn),以達(dá)到可以在水平和豎直兩 個(gè)方向上控制機(jī)器人關(guān)節(jié)的活動(dòng)效果。 系統(tǒng)主要包括硬件設(shè)計(jì)和軟件設(shè)計(jì), 以及 最終硬件的制作。硬件設(shè)計(jì)主要包括液晶顯示模塊,矩陣鍵盤(pán)模塊和舵機(jī)與單片 機(jī)的接口模
15、塊,以及最后的機(jī)器人關(guān)節(jié)外形設(shè)計(jì)。 與硬件設(shè)計(jì)相對(duì)應(yīng)的,軟件設(shè) 計(jì)主要包括液晶顯示模塊,矩陣鍵盤(pán)模塊和舵機(jī)的脈沖形成模塊。在本文的下面 一些章節(jié)會(huì)詳細(xì)介紹軟硬件各部分的設(shè)計(jì)過(guò)程。 2.系統(tǒng)的總體設(shè)計(jì) 系統(tǒng)的總體設(shè)計(jì)分別包括系統(tǒng)的硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件設(shè)計(jì)主要是指完 成系統(tǒng)工作所必須的硬件部分電路設(shè)計(jì)以及硬件組裝設(shè)計(jì); 軟件設(shè)計(jì)主要是指單 片機(jī)的程序設(shè)計(jì)。硬件設(shè)計(jì)主要包含液晶顯示,矩陣鍵盤(pán)和舵機(jī)接口三大部分。 圖2-1為系統(tǒng)框圖。 圖2-1系統(tǒng)框圖 3.硬件的設(shè)計(jì)與實(shí)現(xiàn) 硬件是系統(tǒng)運(yùn)行的基礎(chǔ),硬件設(shè)計(jì)是系統(tǒng)設(shè)計(jì)中的重要組成部分。本系統(tǒng)中 的硬件設(shè)計(jì)主要包括系統(tǒng)工作電源電
16、路設(shè)計(jì), 1602液晶顯示電路設(shè)計(jì),矩陣鍵 盤(pán)和舵機(jī)與系統(tǒng)接口的電路設(shè)計(jì)等。 3.1主要元器件介紹 下面主要對(duì)硬件中使用的一些重要的元器件的電氣特征作一下介紹。 3.1.1舵機(jī) 通過(guò)對(duì)舵機(jī)的結(jié)構(gòu)原理,控制特性與機(jī)械特性的綜合分析與研究, 最終選擇 TowerPro公司的MG995型號(hào)舵機(jī)(圖3-1)作為本課題的舵機(jī)本體。該型號(hào)舵 機(jī)具有力矩大(10kg/cm),輸出功率高,價(jià)格合理,穩(wěn)定性好等優(yōu)點(diǎn)。其他參數(shù) 還有回轉(zhuǎn)率0.20s/60°,工作電壓4.8~7.2V,工作溫度為0~55°C,角度范圍0~90 度等。 圖 3-1 TowerPro MG995 3.1.2 STC89
17、C52 由于51系列單片機(jī)在國(guó)內(nèi)廣泛使用,技術(shù)比較成熟,而且相關(guān)的開(kāi)發(fā)工具 也比較普及,性能優(yōu)越,所以在此也選擇 51系列的STC89C52單片機(jī)作為控制 機(jī)器人關(guān)節(jié)的單片機(jī)。STC89C5*系列單片機(jī)不僅性能優(yōu)越,而且控制簡(jiǎn)單,價(jià) 格合理。該型號(hào)的單片機(jī)片內(nèi) EPROM達(dá)到8K,同時(shí)有2個(gè)定時(shí)器,足以承擔(dān) 系統(tǒng)的設(shè)計(jì)需要。 其他的選用的主要器件還有穩(wěn)壓器 7805,液晶顯示器1602,電容和電阻等 一系列電器元件。 3.2硬件的設(shè)計(jì)過(guò)程 硬件的設(shè)計(jì)過(guò)程包括硬件的電路設(shè)計(jì)和機(jī)器人關(guān)節(jié)的外形設(shè)計(jì)。 根據(jù)系統(tǒng)將要完成的幾項(xiàng)功能考慮硬件電路設(shè)計(jì),硬件部分所要提供的功能 有液晶顯示、矩陣鍵盤(pán)
18、、舵機(jī)接口,所以硬件電路設(shè)計(jì)主要包含這幾個(gè)部分的功 能。除此之外還有系統(tǒng)工作的電壓電路, 以及機(jī)器人關(guān)節(jié)的外形設(shè)計(jì)等。 下面詳 細(xì)介紹重要功能模塊的設(shè)計(jì)。 3.2.1工作電源控制電路設(shè)計(jì) 為了給系統(tǒng)各部分提供穩(wěn)定可靠的直流電壓,在控制系統(tǒng)中選用了穩(wěn)壓器 7805完成對(duì)工作電壓的穩(wěn)定控制工作。7805具有體積小,重量輕,可靠性好等 特點(diǎn)。圖3-2是為系統(tǒng)電源控制電路圖。 12V的直流電壓經(jīng)過(guò)7805后轉(zhuǎn)換為穩(wěn)定的5V電壓后,供應(yīng)整個(gè)電路的電 源系統(tǒng)。為了防止電路回時(shí)電流過(guò)大對(duì) 7805造成損害,在電路中選用二極管保 護(hù) 7805。 VCC 5V VCC 12V 7805 1 3
19、 2 C1 C2 key 當(dāng)GND 圖3-2電源控制電路圖 3.2.2 1602顯示控制電路設(shè)計(jì) 系統(tǒng)選用1602 (SPI16引腳)作為數(shù)據(jù)顯示器件,主要用于顯示舵機(jī)的當(dāng)前 角度和調(diào)整角度。1602是一種16*2字符型液晶顯示器,采用電路模塊封裝,控 制器大部分為HD44780,帶有標(biāo)準(zhǔn)的SIP14引腳(無(wú)背光)或SIP16引腳(帶背 光),芯片和背光電路工作電壓與單片機(jī)兼容引腳分為電源、通信數(shù)據(jù)和控制三 部分,可以很方便的可以與單片機(jī)進(jìn)行連接。 設(shè)計(jì)中選用單片機(jī)的 P0 口作為1602的數(shù)據(jù)輸入端口( D0~D7 ),P3.2,P3.3, P3.4分別作為數(shù)據(jù)命令選擇端
20、(H/L)( RS),讀/寫(xiě)選擇端(H/L)( RW),使能信 號(hào)端(E)。上拉電阻部分(RP1)具有限流的作用。圖3-3為1602與STC89C52 的接口電路圖。 LM016L 圖3-3 1602 顯示電路圖 3.2.3矩陣鍵盤(pán)控制電路設(shè)計(jì) 本系統(tǒng)的矩陣鍵盤(pán)主要是用于定位調(diào)整和加減微調(diào)舵機(jī)角度兩項(xiàng)功能。 電路 圖3-4為矩陣鍵盤(pán)的控制電路。 選用STC98C52單片機(jī)的P2 口作為矩陣鍵盤(pán)的控制端口。按鍵 0~9為數(shù)字 按鍵,主要用于定位舵機(jī)角度的輸入。鍵 D1++,D1――,D2++,D2――分別 控制舵機(jī)1和舵機(jī)2微調(diào)。確定鍵,當(dāng)輸入舵機(jī)需要定位的角度后,按下確認(rèn)鍵 后
21、,舵機(jī)開(kāi)始運(yùn)轉(zhuǎn)。取消鍵,用于取消輸入的定位角度(未按確定鍵前) 。 P2.0 10 P2.1 P2.2 P2.3 STC89C>4 P2.5 P2.6 P2.7 11 12 13 14 15 16 17 1 2 3 D1++ 4 5 6 D1-- 7 8 9 0 D2++ D2-- 確認(rèn) 取消 14 15 16 「 仃 「 10 11 12 13 圖3-4
22、 矩陣鍵盤(pán)電路圖 324舵機(jī)與系統(tǒng)接口電路設(shè)計(jì) 向舵機(jī)發(fā)送脈沖信號(hào)的電路部分,舵機(jī)根據(jù)脈沖寬度調(diào)整舵機(jī)的位臵。 下圖 (圖3-5)為舵機(jī)與系統(tǒng)接口的控制電路部分。 VCC 分別選用STC89C52單片機(jī)的P1.3, P1.4引腳作為舵機(jī)1和舵機(jī)2的輸出 脈沖信號(hào)的控制端口。在電路仿真中,該2個(gè)端口接的是虛擬示波器,用來(lái)顯示 和反映脈沖信號(hào)的輸出狀態(tài)。 3.2.5機(jī)器人關(guān)節(jié)的外形設(shè)計(jì) 機(jī)器人關(guān)節(jié)的外形設(shè)計(jì)是指最終機(jī)器人關(guān)節(jié)的成型外形。 首先是關(guān)節(jié)的支架 部分的設(shè)計(jì),因?yàn)殛P(guān)節(jié)支架是第一眼外觀直接接觸到的, 所以設(shè)計(jì)的時(shí)候兼顧成 本與外形的美觀;然后是關(guān)節(jié)基座的設(shè)計(jì),關(guān)節(jié)基
23、座是位于關(guān)節(jié)底層的基礎(chǔ)部件, 它的穩(wěn)固與靈活直接關(guān)系到整個(gè)關(guān)節(jié)的活動(dòng)性。 3.3硬件的實(shí)現(xiàn)過(guò)程 硬件的實(shí)現(xiàn)過(guò)程主要包括PCB板得制作過(guò)程和硬件的組裝過(guò)程下面對(duì)此兩 方面做分別介紹。 3.3.1電路板的設(shè)計(jì)過(guò)程 將整個(gè)系統(tǒng)電路圖設(shè)計(jì)出來(lái)后,接下來(lái)我們就需要制作電路板圖了。 電路板 設(shè)計(jì)得是否合理,質(zhì)量是否可靠,直接決定著制作出來(lái)的控制電路的質(zhì)量和運(yùn)行 的可靠性。Altium Designer提供了板圖設(shè)計(jì)功能,包括自動(dòng)布線和器件自動(dòng)擺放 功能。事實(shí)上,器件自動(dòng)擺放功能是達(dá)不到要求的,因此,實(shí)際操作時(shí)應(yīng)采用“人 工擺放兀件一人工預(yù)布線一自動(dòng)布線一人工細(xì)調(diào)” 的設(shè)計(jì)流程,一步一步制作出
24、符合要求的電路板。電路板圖見(jiàn)附錄二。 332硬件的組裝過(guò)程 這部分主要包括部分硬件的制作和硬件的組裝。前期硬件制作的精細(xì)將直接 關(guān)系到最終關(guān)節(jié)的靈活性、外觀以及擴(kuò)充能力,也就是決定了機(jī)器人關(guān)節(jié)的質(zhì)量。 硬件的組裝主要包括機(jī)器人關(guān)節(jié)的外形組裝和電路板的各元件的安放與焊 接,以及組裝完成后的調(diào)試等過(guò)程。首先是硬件的選材,在跑遍各材料市場(chǎng)之后, 終于選定了以鋁合金作為支架的材料。 但是因?yàn)殇X合金的硬度較大,實(shí)驗(yàn)的工具 設(shè)計(jì)的不足,以及遇到各式各樣的問(wèn)題 剪過(guò)程的失誤,造 有限,不易裁剪,所以這對(duì)部分的器件制作產(chǎn)生了不小的困難。 不過(guò)最終我們依 然是不懈的向我們的設(shè)計(jì)靠近,裁剪出來(lái)比較合格的
25、部件。硬件的組裝過(guò)程可以 說(shuō)也是一個(gè)有難度的過(guò)程,在設(shè)計(jì)階段的各個(gè)關(guān)節(jié)部件,在組裝過(guò)程中才會(huì)發(fā)現(xiàn) 。比如會(huì)遇到裁剪好的部件因?yàn)檎`差和裁 E的最終部件不能很好的吻合舵機(jī)的轉(zhuǎn)軸問(wèn)題等。 4.軟件的設(shè)計(jì) '實(shí)現(xiàn) 圖3-6 關(guān)節(jié)實(shí)物圖 軟件是系統(tǒng)的靈魂,軟件設(shè)計(jì)的好壞直接影響到整個(gè)系統(tǒng)性能的強(qiáng)弱。 所以 軟件設(shè)計(jì)是本系統(tǒng)中重要的組成部分 4.1系統(tǒng)軟件設(shè)計(jì)流程 在本系統(tǒng)中的軟件主要是指單片機(jī)的程序,主要包括舵機(jī)脈沖信號(hào)發(fā)生模 塊,矩陣鍵盤(pán)控制模塊和液晶顯示器 1602顯示模塊幾大部分。 軟件的工作過(guò)程首先單片機(jī)程序復(fù)位以后,定時(shí)器和 160分別進(jìn)行初始化。 之后在主函數(shù)里設(shè)臵舵機(jī)的初始
26、位臵,然后進(jìn)入 while()函數(shù)。在函數(shù)內(nèi)部,不 停的進(jìn)行按鍵掃描是否有按鍵被按下, 如果按鍵被按下,則進(jìn)入按鍵數(shù)據(jù)處理函 數(shù)keymanage(進(jìn)行按鍵處理,并將處理結(jié)果送去 1602顯示。系統(tǒng)流程圖如圖 4-1所示。 4-1系統(tǒng)設(shè)計(jì)流程圖 4.2各模塊程序設(shè)計(jì) 單片機(jī)程序的子模塊主要包括脈沖信號(hào)產(chǎn)生模塊,矩陣鍵盤(pán)控制模塊和液晶 顯示模塊,在這里主要詳細(xì)介紹前 2個(gè)模塊。 4.2.1脈沖信號(hào)產(chǎn)生模塊 在該單片機(jī)程序中,主要使用2個(gè)定時(shí)器來(lái)產(chǎn)生2路脈沖信號(hào),分別輸送給 2個(gè)舵機(jī)。具體實(shí)現(xiàn)方法是timer1作為基準(zhǔn)定時(shí)器,提供穩(wěn)定的10ms定時(shí),timerO 則作為控制
27、高電平時(shí)間定時(shí)器。在 timerl中每次根據(jù)標(biāo)志位選擇翻轉(zhuǎn)脈沖信號(hào) 高低電平,并打開(kāi)timerO:在timerO中斷函數(shù)中,則根據(jù)標(biāo)志位重新翻轉(zhuǎn)脈沖信 號(hào),最后關(guān)閉timerO,則形成高電平脈沖,完成舵機(jī)脈沖信號(hào)的輸出。脈沖信號(hào) 產(chǎn)生流程圖如圖4-2所示。 ▼ 設(shè)置 timerO, timerl timerl timerO 打開(kāi) timerO, timerl PWM1=~PWM1 Flag=1 PWM2=?PWM2 Flag=O 設(shè)置舵機(jī)2的定 時(shí)器初值并 PWM 仁?PWM1 設(shè)置舵機(jī)1的定 時(shí)器初值并 PWM2=~PWM2 是 —— (Fl
28、ag==O)? 打開(kāi)timeO 關(guān)閉TimerO 圖4-2 脈沖信號(hào)產(chǎn)生流程圖 因?yàn)槎鏅C(jī)的控制電路周期的脈沖時(shí)間為 20ms,而STC89C52里共有2個(gè)定 時(shí)器,所以本系統(tǒng)采用分時(shí)復(fù)用的方法來(lái)產(chǎn)生 2路脈沖信號(hào)。該方法在理論上可 以控制10個(gè)舵機(jī)的共同工作,可擴(kuò)充性強(qiáng)。 4.2.2矩陣鍵盤(pán)控制模塊 在單片機(jī)程序中,矩陣鍵盤(pán)的控制最為繁雜。首先是鍵盤(pán)的掃描,根據(jù)按鍵 的不同分別執(zhí)行不同的程序操作:0~9數(shù)字按鍵經(jīng)過(guò)鍵盤(pán)的散列轉(zhuǎn)換后分別被存 入程序處理并臵flag_key=1 (表示有數(shù)字按鍵被按下)和送去液晶顯示器顯示; ++,――按鍵直接控制脈寬信號(hào)微調(diào)增加(減少)千分之 0.5
29、( <0.1°);確定鍵 則是很據(jù)所輸入2個(gè)舵機(jī)的角度的范圍滿足要求且flag_key=1(數(shù)字鍵按下標(biāo)志) 時(shí),系統(tǒng)則控制脈寬信號(hào)發(fā)生變化,舵機(jī)轉(zhuǎn)動(dòng)到相應(yīng)角度,并更新 1602顯示, 否則執(zhí)行出錯(cuò);取消鍵則是用于取消已輸入角度,但是還未按下確定鍵的角度值。 矩陣鍵盤(pán)的控制流程圖如圖4-3所示。 按鍵掃描 有按鍵被? 按下? ■ —1
30、 是 r 鍵盤(pán)散列轉(zhuǎn)換 1 數(shù)據(jù)處理 否 圖4-3 矩陣鍵盤(pán)流程圖 4.3數(shù)據(jù)處理 在本單片機(jī)程序中,數(shù)據(jù)處理的任務(wù)主要有兩個(gè),分別是矩陣鍵盤(pán)的散列轉(zhuǎn) 換和脈寬與角度轉(zhuǎn)換的處理。 4.3.1矩陣鍵盤(pán)的散列轉(zhuǎn)換 鍵盤(pán)的散列轉(zhuǎn)換是指鍵盤(pán)分別接收到不同的按鍵信息后, 分別轉(zhuǎn)化為相應(yīng)的 數(shù)字或者相應(yīng)的操作。鍵盤(pán)地散列轉(zhuǎn)換采用根據(jù) P2的值來(lái)進(jìn)行不同的鍵的功能 定義,分別對(duì)應(yīng)見(jiàn)下表: 表4-3-1鍵盤(pán)散列轉(zhuǎn)換功能定義表 P2值 對(duì)應(yīng)鍵 P2值 對(duì)應(yīng)鍵 Oxee 取消 Oxeb 舵機(jī)1-- Oxde 確定 Oxdb 6 Oxbe 舵機(jī)2-
31、- Oxbb 5 0x7e 舵機(jī)2++ 0x7e 4 Oxed 0 Oxe7 舵機(jī)1++ Oxdd 9 Oxd7 3 Oxbd 8 Oxb7 2 0x7d 7 Ox77 1 432脈寬與角度的數(shù)據(jù)處理 根據(jù)舵機(jī)的控制原理可知,脈寬與角度滿足線性關(guān)系(圖4.2)o脈寬與角度 的處理包含2個(gè)部分,一是將脈寬信號(hào)轉(zhuǎn)化為角度并用液晶顯示器顯示出來(lái), 另 一部分是將輸入的角度轉(zhuǎn)換為脈寬信號(hào)。 若角度記為 二,脈寬記為,,脈寬-角度關(guān)系圖如圖4-4所示。 圖4-4脈寬一角度關(guān)系圖 在將脈寬轉(zhuǎn)換為角度的時(shí)候,因?yàn)轱@示的角度是整數(shù),顯示部分采取下限
32、取 整(如80.0° ~80.9°顯示為80)。需要指出的是,在程序內(nèi)部,使用的脈寬單位 為us,故轉(zhuǎn)換公式如下: v - 0.09* ——90 脈寬信號(hào)在程序內(nèi)部采用的是整數(shù)(即 1000~2000us),在將輸入的角度轉(zhuǎn) 換為脈寬信號(hào)時(shí),采取的約法是四舍五入(如 1500.3=1500,1500.6=1501。轉(zhuǎn)換 公式如下: = ((「90)*10)*1.1111 0.5 5.仿真與調(diào)試 5.1硬件電路的仿真 在本系統(tǒng)中的硬件電路仿真設(shè)計(jì),主要是運(yùn)用英國(guó)Labcenter electronics公司 開(kāi)發(fā)的EDA工具軟件Protues, Protues是一款非常優(yōu)秀的仿真
33、軟件,能支持當(dāng) 前主流單片機(jī)系統(tǒng)的仿真并有豐富的軟件調(diào)試功能。 下面對(duì)主要的硬件電路仿真 作介紹和分析。首先是系統(tǒng)脈沖信號(hào)的產(chǎn)生,因?yàn)楫a(chǎn)生的是脈沖信號(hào),所以選用 2個(gè)虛擬示波器查看單片機(jī)定時(shí)器產(chǎn)生的波形與大??;然后使用 LCD1602來(lái)模 擬液晶顯示器的顯示,4*4按鍵模擬矩陣鍵盤(pán)(圖5-1)。 圖5-1電路仿真圖 系統(tǒng)最終輸送給舵機(jī)的脈沖信號(hào)是 20ms分2次10ms周期,兩路舵機(jī)信號(hào) 分別在前10ms與后10ms翻轉(zhuǎn),形成高電平,最終仍然脈沖周期仍為 20ms。圖 5-2為系統(tǒng)產(chǎn)生的2路舵機(jī)脈沖信號(hào)圖。 PWM1 PWM2 <-
34、 i 10ms — ?! 20i ms - ■* 圖5-2 2路舵機(jī)脈沖信號(hào)圖 5.2單片機(jī)的程序調(diào)試 開(kāi)發(fā)工具是選用目前國(guó)內(nèi)流行的 Keil公司出品的51系列單片機(jī)軟件仿真 器。Keil Vision3 IDE是一個(gè)窗口化的軟件開(kāi)發(fā)平臺(tái),它集可視化編程、編譯、 調(diào)試、仿真于一體,支持51匯編、PLM和C語(yǔ)言的混合編程,界面友好、易學(xué) 易用、功能強(qiáng)大。它具有功能強(qiáng)大的編輯器、工程管理器以及各種編譯工具。 由于單片機(jī)程序采用 C語(yǔ)言編寫(xiě),因而程序的調(diào)試比較簡(jiǎn)單。使用 Keil uVision3提供了豐富的調(diào)試工具,使調(diào)試進(jìn)行的非常順利,最后通過(guò)編譯并生成 了
35、hex可執(zhí)行文件,下圖5-3為程序部分調(diào)試過(guò)程圖。 lESin ■mnz* K■訃*IrstdKiHiR斟djh W Q[ Fljili FrLiihrdi ]>山 兩 Ejdp 冋* N4 | -■ - + 電 二鼻咖 愴了監(jiān)£|聞也暑3 ■JU: LP^^MrrEK E'. ■AJLCTJd £hkf rCllLZ V 1 ?i 苓 罷匸粗1 mH方回 ■ml! lrat I'widl dLt Fni-pi*]a 如戈 FnChiP: 站0. .'7L1I2 Hf :F】魁弘何4 //Lllf ffl riitim: 匸庇顧 丿
36、門(mén)芒?rtl帛電甲*;找界廿 TIIRI. CEtuyiJpOI. LfJC-TQ.dlM 卄 ★ip】町.宜rue 1石. ■ ■93 I $?????*? ■ ■ +CJI ESK [QE -iibhBBariiidJ I I iikhbiririiiiid 11 LtabfaBS?ddiiJ I I iikhbiririririJ 11 Ltabhfci?d:l OX 蟲(chóng)il ifldriD fihx! ■WH]) I聞0: TJHHI.=i?:EE!!2?-MLI/2E£!>. tll?C=■::£E£frNUCl..,2Et:L nH
37、L^i;i;IEE£:i>mL!iaiE£:i. JfiH 厲冋階nkDinbh Eg角心2 STrfill Brwrl.14r St列k霽t OOWJEWS DEFINE DIR Pitploy &tn E^Luoc* KIT IWC to 曲UWE KILL - 圖5-3 程序部分調(diào)試圖 6?總結(jié) 本課題利用單片機(jī)定時(shí)器實(shí)現(xiàn)了舵機(jī) 2路脈
38、沖信號(hào)的輸出,實(shí)現(xiàn)了機(jī)器人關(guān) 節(jié)轉(zhuǎn)動(dòng)的功能,完成了本課題的主要內(nèi)容:機(jī)器人關(guān)節(jié)的設(shè)計(jì)與實(shí)現(xiàn)。 由于制作工藝水平的有限,使得本次設(shè)計(jì)中電路系統(tǒng)做得比較簡(jiǎn)易與粗糙, 由于時(shí)間緊迫,未能完成更高等的目標(biāo)與任務(wù)。然而,在有限的時(shí)間內(nèi),我努力 掌握了舵機(jī)的控制方式,整體把握了機(jī)器人關(guān)節(jié)的設(shè)計(jì)思路, 完成了從設(shè)計(jì)硬件 電路、單片機(jī)程序到實(shí)現(xiàn)關(guān)節(jié)轉(zhuǎn)動(dòng)的整個(gè)過(guò)程。在實(shí)驗(yàn)過(guò)程中,我學(xué)習(xí)了 Keil、 Potues和Altium Designer軟件的基本功能,并掌握了一些基本的使用方法。 在前期收集資料的過(guò)程中,從網(wǎng)上和前輩們的論文中搜集到了很多不同的多 路PWM脈沖信號(hào)的控制方法,使我從不同的角度深入的
39、了解舵機(jī)的控制方法, 這對(duì)我本次實(shí)驗(yàn)的軟件設(shè)計(jì)脈沖信號(hào)部分有很大的借鑒和參考意義。 雖然這次軟 件設(shè)計(jì)過(guò)程中,林林總總換了三、四種脈沖信號(hào)產(chǎn)生方案,在做過(guò)幾種方法的穩(wěn) 定性與操作難度的比較之后,最終決定使用定時(shí)器方式來(lái)完成脈沖信號(hào)的產(chǎn)生。 畢業(yè)設(shè)計(jì)是一個(gè)回顧與理順舊知識(shí), 不斷的吸收新知識(shí)的過(guò)程。在這個(gè)過(guò)程 中,我深深感覺(jué)到自己的不足,連每一次的失敗都顯得是那么的珍貴, 都會(huì)給我 以深刻的啟迪。雖然在以后不一定會(huì)有機(jī)會(huì)從事單片機(jī)相關(guān)的工作,但是這個(gè)過(guò) 程的努力和汗水,思維和方法都會(huì)是我寶貴的人生財(cái)富。 在論文的完成過(guò)程中,得到了院系老師的大力支持,尤其是得到了曲培新老 師的精心指導(dǎo)和
40、幫助,感謝曲老師在百忙之中的辛苦指點(diǎn),給予我無(wú)盡的啟迪。 曲老師從論文方向的選定,到最后的整篇文論的完成,都非常耐心的對(duì)我進(jìn)行指 導(dǎo)。給我提供了大量數(shù)據(jù)資料和建議,告訴我應(yīng)該注意的細(xì)節(jié)問(wèn)題,細(xì)心的給我 指出錯(cuò)誤。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地 感染和激勵(lì)著我。 在此,我還要特別感謝在論文完成過(guò)程中所有給予我?guī)椭睦蠋熀屯瑢W(xué)。 正 是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑, 直至本文的順利 完成。在論文即將完成之際,請(qǐng)?jiān)谶@里請(qǐng)接受我誠(chéng)摯的謝意! 參考文獻(xiàn) [1] 劉廣瑞等?機(jī)器人創(chuàng)新制作?西安:西北工業(yè)大學(xué)出版社,2007.2 [2] 張玉
41、茹,李繼婷,李劍鋒等.機(jī)器人靈巧手.北京:機(jī)械工業(yè)出版社, 2007.1 [3] ( 美)Gordon McComb Myke Predko著;龐明等譯.北京:科學(xué)出版社, 2007 [4] (美)McComb,G著:原魁等譯?機(jī)器人本體制作指南?北京:機(jī)械工業(yè)出 版社,2006.2 ⑸李華晉,劉鳴?機(jī)器人關(guān)節(jié)及轉(zhuǎn)向裝臵一一舵機(jī)的原理及應(yīng)用[J]高校實(shí) 驗(yàn)室工作研究,2010( 103): 62-63 [6] 王倩,李冬雪?基于FPGA的機(jī)器人多路舵機(jī)控制器[J] 科學(xué)技術(shù)與工 程,2009( 11):3083-3085 [7] 萬(wàn)小丹,孔凡讓,李巖,趙小偉.基于at89c5
42、2單片機(jī)的機(jī)器人關(guān)節(jié)控制 系統(tǒng)設(shè)計(jì)[J]學(xué)術(shù)論文2008(2):38-40 [8] 付麗,劉衛(wèi)國(guó),伊強(qiáng)?單片要控制的多路舵機(jī)用 PWM波產(chǎn)生方法[J]微 特電機(jī),2006(2) : 28-33 [9] 徐謀峰,黃雪梅?舞蹈機(jī)器人動(dòng)作編程研究[J]山東理工大學(xué)學(xué)報(bào),2010 (24) : 77-80 [10] 梁峰,王志良,解侖,等?多舵機(jī)控制在類人機(jī)器人上的應(yīng)用 [J].微計(jì) 算機(jī)信息,2008(1-2) : 242-243 附錄1 附錄2 /*現(xiàn)在系統(tǒng)中需要2個(gè)舵機(jī)的控制,采用的控制方式是改變單片機(jī)的一個(gè)定時(shí)器中斷的初 值,對(duì)于每一個(gè)舵機(jī)來(lái)說(shuō),是將 20ms分為三次中
43、斷執(zhí)行,一次短定時(shí)中斷和兩次長(zhǎng)定時(shí)中 斷。這樣既節(jié)省了硬件電路,也減少了軟件開(kāi)銷(xiāo),控制系統(tǒng)工作效率和控制精度都很高。 具體的設(shè)計(jì)過(guò)程:例如想讓舵機(jī)轉(zhuǎn)向左極限的角度,它的正脈沖為 2ms,則負(fù)脈沖為 20ms-2ms=18ms 所以開(kāi)始時(shí)在控制口發(fā)送高電平, 然后設(shè)臵定時(shí)器在 2ms后發(fā)生中斷,中斷發(fā)生后,在 中斷程序里將控制口改為低電平,并關(guān)閉短中斷,再過(guò) 18ms進(jìn)入下一次定時(shí)長(zhǎng)中斷,再將 控制口改為高電平,打開(kāi)短中斷并將定時(shí)器初值改為 2ms,等待下次中斷到來(lái),如此往復(fù)實(shí) 現(xiàn)PWMI號(hào)輸出到舵機(jī)。用修改定時(shí)器中斷初值的方法巧妙形成了脈沖信號(hào), 調(diào)整時(shí)間段的 寬度便可使伺服機(jī)
44、靈活運(yùn)動(dòng)為保證軟件在定時(shí)中斷里采集其他信號(hào), 并且使發(fā)生PWM信號(hào)的
程序不影響中斷程序的運(yùn)行 (如果這些程序所占用時(shí)間過(guò)長(zhǎng),有可能會(huì)發(fā)生中斷程序還未結(jié) 束,下次中斷又到來(lái)的后果 ),所以需要將采集信號(hào)的函數(shù)放在長(zhǎng)定時(shí)中斷過(guò)程中執(zhí)行,也 就是說(shuō)每經(jīng)過(guò)兩次中斷執(zhí)行一次這些程序,執(zhí)行的周期還是 20ms。*/
#in elude < reg52.h >
#in elude vintrin s.h>
#in clude
45、sig ned char flag=1; un sig ned char TIM0H2; un sig ned char TIM0L2; void in it(void); sbit PWM 仁P"3; // sbit PWM2=P1A4; //舵機(jī)1短定時(shí)器初始化高 8位 //舵機(jī)1短定時(shí)器初始化低 8位 //控制舵機(jī)PWM輸出標(biāo)志變量 //舵機(jī)2短定時(shí)器初始化高 8位 //舵機(jī)2短定時(shí)器初始化低 8位 //定時(shí)器初始化函數(shù) 定義舵機(jī)1信號(hào)輸出接口 //定義舵機(jī)2信號(hào)輸出接口 *********************************************
46、********** 主函數(shù) ******************************************************** ini t(); // 定時(shí)器初始化 F1602_i nit(); //1602 初始化 F1602_clear(); //1602 清屏 NUM1=1500; //1.5ms 的高電平舵機(jī)1初值 NUM2=1500; //1.5ms的高電平舵機(jī)2初值 PWM 仁1; //舵機(jī)1的PWMU始設(shè)臵高為電平 gotoxy(1,0); in t_To_char(); display_stri ng(a); //16
47、02顯示舵機(jī)的初始角度 while(1) //保證while連續(xù)執(zhí)行 { key(); //按鍵檢索函數(shù) 短定時(shí)器時(shí)間為 NUM1 us // void mai n() { TIM0H1=((65536-NUM1)/256); TIM0L1=((65536-NUM1)%256); TIM0H2=((65536-NUM2)/256); TIM0L2=((65536-NUM2)%256); // 短定時(shí)器的時(shí)間為 NUM2 us /********************************************************* 中斷服務(wù)函數(shù)
48、**********************************************************/ void Timel(void) in terrupt 3 { TH1=0xd8; TL1=0xf0; if(flag==0) { PWM 仁-PWMI; flag=1; //10ms 定時(shí) // 舵機(jī)1PWMH號(hào)翻轉(zhuǎn) //舵機(jī)1電平翻轉(zhuǎn)完畢,改變標(biāo)志位 } else
49、 { PWM2=?PWM2; flag=O; } TR0=1; } void TimeO(void) in terrupt 1 { if(flag==1) { TH0=TIM0H2; TL0=TIM0L2; PWM 仁?PWM1; } else //舵機(jī)1PWMH號(hào)翻轉(zhuǎn) // 舵機(jī)1翻轉(zhuǎn)完畢, 改變標(biāo)志位 // 波形產(chǎn)生,每舵機(jī) PWM20m反 轉(zhuǎn) // 產(chǎn)生長(zhǎng)時(shí)間中斷后, 打開(kāi)小中斷 // 舵機(jī)1的信號(hào)控制 // 改變短中斷(舵機(jī) 2)的定時(shí)器初值 { TH0
50、=TIM0H1; TL0=TIM0L1; PWM2=?PWM2; } TR0=0; } 〃舵機(jī)1再次翻轉(zhuǎn),形成脈沖信號(hào) // 舵機(jī)2的信號(hào)控制 //改變短中斷(舵機(jī) 2)的定時(shí)器初值 //舵機(jī)2再次翻轉(zhuǎn),形成脈沖信號(hào) //關(guān)閉短中斷,等待長(zhǎng)中斷打開(kāi) // 長(zhǎng)短中斷交替執(zhí)行,形成 2路脈沖信號(hào) ******************************************************* 鍵盤(pán)掃描函數(shù) ******************************************************** void key()
51、 { { un sig ned char key_code; P2=key_sca n[i]; if(P2!=key_sca n[ i]) { delay(20); key_code=P2; while(P2!=key_sca n[ i]); keyma nage(key_code); } i++; if(i>=4) i=0; } 〃臨時(shí)變量,存放被按下的按鍵信息 //首先進(jìn)行行掃描 //判斷是否有按鍵按下 //有按鍵按下進(jìn)入if
52、 //延遲,消除抖動(dòng) //將按鍵信息送給臨時(shí)變量做按鍵處理 //按鍵抬起有效 //進(jìn)入按鍵處理函數(shù) //掃描下一行 //如果掃描結(jié)束,返回第一行繼續(xù)掃描 { ******************************************************* 鍵盤(pán)處理函數(shù) **********************************************************/ //鍵盤(pán)處理函數(shù)包括兩個(gè)部分,分別是矩陣鍵盤(pán)地散列轉(zhuǎn)換和鍵盤(pán)的數(shù)據(jù)處理 〃鍵盤(pán)地散列轉(zhuǎn)換采用根據(jù) P2的值來(lái)進(jìn)行不同的鍵的功能定義(見(jiàn)表 4-3-1) } voi
53、d keyma nage( un sig ned char temp) { un sig ned char key=16; switch(temp) { case 0xed: key=O;break; case 0x77: key=1;break; case 0xb7: key=2;break; case 0xd7: key=3;break; case 0x7b: key=4;break; case 0xbb: key=5;break; case 0xdb: key=6;break; case 0x7d: key=7;break; case 0xbd: key=8;break; case
54、 0xdd: key=9;break; } if(temp==0xe7) { NUM仁NUM1 + 10; in t_To_char(); F1602_clear(); delay(200); flag_key=0; x=3; display_stri ng(a); } if(temp==0xeb) { NUM仁NUM1-10; in t_To_char(); F1602_clear(); delay(200); flag_key=0; x=3; display_stri ng(a); delay(20); } if(temp==0x7e) { NUM2=NU
55、M2+10; in t_To_char(); F1602_clear(); delay(200); 〃鍵盤(pán)散列轉(zhuǎn)換 // 舵機(jī) 1PWMt調(diào) +10 //將整形數(shù)據(jù)轉(zhuǎn)換為字符串 〃1602清屏 //標(biāo)志按下的不是0-9數(shù)字鍵 〃1602顯示 // 舵機(jī) 1PWMt調(diào) +10 // 舵機(jī) 2PWMt調(diào) +10 flag_key=0; display_stri ng(a);
56、 } if(temp==Oxbe) { NUM2=NUM2-10; in t_To_char(); F1602_clear(); delay(200); flag_key=O; x=3; display_stri ng(a); } if(key>=0&&key<=9) { if(flag_last==1||flag_ca ncel==1) { F1602_clear(); x=3; delay(100); display_stri ng(a); flag_last=0; flag_ca ncel=O; } fla
57、g_key=1; gotoxy(2,x); write_data(key+'O'); delay(200); // 舵機(jī) 2PWM微調(diào)-10 //當(dāng)按下是數(shù)字鍵時(shí)候,顯示數(shù)字并傳送 //給舵機(jī)信號(hào) //如果1602顯示到最后一位或者曾經(jīng)按 //下過(guò)取消鍵則將重新定位顯示位臵,則 //將這些標(biāo)志清0 〃1602清屏 //重新定位顯示位臵 //將顯示到最后一位標(biāo)志位清 0 //將取消鍵標(biāo)志清 0 //數(shù)字鍵被按下標(biāo)志 //將1602光標(biāo)移動(dòng)到顯示位臵 //在光標(biāo)處顯示按下的數(shù)字 switch(x) { //檢查當(dāng)前顯示所在位臵,根據(jù)按鍵位臵設(shè)臵舵機(jī)角度 case 3:
58、num1仁num11+key*10;break; // 舵機(jī) 1 角度的十位 case 4 :num11= num11+key;break; // 舵機(jī) 1 角度的個(gè)位 case 11 :num22=num22+key*10;break;〃 舵機(jī) 2 角度的十位 case 12 :num22=num22+key;break; // 舵機(jī) 2 角度的個(gè)位 } x++; if(x==5) x=11; //如果舵機(jī)1角度顯示位臵顯示完畢,則 //跳到舵機(jī)2顯示顯示舵機(jī)2的角度 if(x>12) flag_last=1; //顯示完畢,設(shè)臵最后標(biāo)志位
59、 } if(temp==Oxde) // K1 確認(rèn)鍵 { f1=(( nu m11+90)*1000)*1.1111+0.5555;〃 舵機(jī) 1 角度轉(zhuǎn)換為脈寬 f2=((num22+90)*1000)*1.1111+0.5555;〃 舵機(jī) 2 角度轉(zhuǎn)換為脈寬 num11=f1; //強(qiáng)制浮點(diǎn)型轉(zhuǎn)換為整形脈寬并賦值給 num22=f2; 〃臨時(shí)存貯脈寬變量 } if(n
60、um11>=1000&&n um11<=2000&&n um22>=1000&&nu m22<=2000&& flag_key==1 && flag」a st==1) { //舵機(jī)只能接受1000~2000的脈寬,并且 //保證2個(gè)舵機(jī)的角度輸入的是數(shù)字信 //息并且都輸入完畢 〃1602清屏 /將脈寬值賦值給 NUM1 /將脈寬值賦值給NUM2 //賦值完畢將脈寬臨時(shí)變量清 0 F1602_clear(); NUM仁n um11; NUM2=num22; in t_To_char(); nu m11=0; num22=0; x=3; delay(100); f
61、lag_key=0; display_stri ng(a); } else { x=3; num11=0; num22=0; F1602_clear(); delay(100); flag_ca ncel=1; display_stri ng(a); gotoxy(2,3); delay(100); display_stri ng("Error!"); } } if(temp==0xee) { F1602_clear(); x=3; delay(100); display_stri ng(a); flag_key=0; } //賦值完畢,將0-9按鍵標(biāo)識(shí)清0 〃1602顯示當(dāng)前舵機(jī)的角度 //舵機(jī)角度不符合條件,則顯示出錯(cuò) //重新定位顯示位臵 //舵機(jī)脈寬臨時(shí)變量清 0 //取消輸入的舵機(jī)角度信息 // 顯示"Error 〃K0取消鍵 〃1602清屏 //重新定位顯示位臵 〃將0-9按鍵清0
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版六年級(jí)數(shù)學(xué)上冊(cè)第三單元分?jǐn)?shù)除法-練習(xí)十課件
- 語(yǔ)文中考專題訓(xùn)練——對(duì)聯(lián)
- SIE_AR模塊業(yè)務(wù)與表結(jié)構(gòu)培訓(xùn)ppt課件
- 蘇教版物理九年級(jí)上冊(cè)第十二章《機(jī)械能和內(nèi)能》復(fù)習(xí)使用課件
- 156測(cè)量小燈泡的電功率課件
- 北師版一年級(jí)數(shù)學(xué)上冊(cè)第七單元——古人計(jì)數(shù)(2課時(shí))課件
- 中心靜脈導(dǎo)管CVC維護(hù)課件
- 《城市軌道交通客運(yùn)服務(wù)心理學(xué)》--第6章---個(gè)性課件
- 《文學(xué)部落》課件-實(shí)用優(yōu)秀
- 2022版《重力》課件-(特等獎(jiǎng))人教版八下物理-1
- 第4章出行的發(fā)生與吸引
- 25伯牙絕弦【課件2】剖析
- 加工貿(mào)易聯(lián)網(wǎng)電子賬冊(cè)簡(jiǎn)介概要ppt課件
- 企業(yè)診斷與策劃課件1
- 2023年四年級(jí)數(shù)學(xué)下冊(cè)7小數(shù)的加法和減法1小數(shù)的加法和減法第2課時(shí)小數(shù)的加法和減法2上課課件西師大版