三維伺服數(shù)控平臺(tái)設(shè)計(jì)_第1頁(yè)
三維伺服數(shù)控平臺(tái)設(shè)計(jì)_第2頁(yè)
三維伺服數(shù)控平臺(tái)設(shè)計(jì)_第3頁(yè)
三維伺服數(shù)控平臺(tái)設(shè)計(jì)_第4頁(yè)
三維伺服數(shù)控平臺(tái)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、三維伺服數(shù)控平臺(tái)設(shè)計(jì)學(xué) 院機(jī)電工程學(xué)院專 業(yè)班 級(jí)學(xué) 號(hào)姓 名指導(dǎo)教師負(fù)責(zé)教師摘 要由數(shù)字信息導(dǎo)向的控制程序?qū)C(jī)械運(yùn)動(dòng)和工作過(guò)程進(jìn)行操控的技術(shù),就是所謂的數(shù)控加工技術(shù)。這門技術(shù)概括使用了計(jì)算機(jī)技術(shù)、微電子技術(shù)、伺服驅(qū)動(dòng)、主動(dòng)控制和精密測(cè)繪等學(xué)科的集成應(yīng)用。數(shù)控銑床的核心在于控制系統(tǒng),控制系統(tǒng)實(shí)現(xiàn)了數(shù)字化的零件的輸入程序,完成輸入信息的存儲(chǔ)、數(shù)據(jù)的變換和插補(bǔ)的運(yùn)算等,從而實(shí)現(xiàn)各種控制功能。銑床控制系統(tǒng)的設(shè)計(jì)必須考慮軟硬件的匹配,其設(shè)計(jì)必須從經(jīng)濟(jì)、實(shí)用、可行等諸多方面考慮。本次畢設(shè)以AT89C51單片機(jī)為主體實(shí)現(xiàn)的控制系統(tǒng),在硬件設(shè)計(jì)上易于實(shí)現(xiàn)有效的控制功能,結(jié)構(gòu)相對(duì)簡(jiǎn)單;在軟件設(shè)計(jì)上,通過(guò)插補(bǔ)程

2、序的編制,相對(duì)容易地實(shí)現(xiàn)對(duì)銑床的運(yùn)行方向和運(yùn)行速度等方面的控制。起先用SolidWorks軟件畫(huà)出銑床,然后用單片機(jī)進(jìn)行控制。用Proteus進(jìn)行仿真模擬。電路仿真技術(shù)就是通過(guò)軟件來(lái)實(shí)現(xiàn)并檢驗(yàn)所設(shè)計(jì)電路功能的過(guò)程。Proteus不僅是模擬電路、數(shù)字電路、模擬混合電路的設(shè)計(jì)平臺(tái),更是世界上最先進(jìn)的單片機(jī)和嵌入式系統(tǒng)的設(shè)計(jì)與仿真平臺(tái)。關(guān)鍵詞:數(shù)控加工;單片機(jī);SolidWorks;ProteusDesign of 3D servo numerical control platformAbstractThe technology of controlling the mechanical movem

3、ent and working process by the digital information - oriented control program is the so-called numerical control technology.The technology of this technology is summarized in the application of computer technology, microelectronics technology, servo drive, active control and precision mapping and ot

4、her subjects.The core of the CNC milling machine lies in the control system, control system to realize the digital parts of the input program, complete the input information storage, data transform and interpolation operation, in order to achieve a variety of control functions.The design of the cont

5、rol system for milling machine must consider the matching of the hardware and software, and it must be considered from the aspects of economy, practicality and feasibility. The complete set of AT89C51 as the main control system. In the hardware design easy to achieve effective control function, stru

6、cture is relatively simple; in the software design, interpolation procedures through the preparation of, relatively easy to achieve running direction and speed of the milling machine control. At first, using SolidWorks software to draw a milling machine, and then use the microcontroller to control.

7、Simulation with Proteus. Circuit simulation technology is to achieve and test the function of the circuit by software. Proteus is not only the design platform of analog circuit, digital circuit and analog circuit, but also the most advanced MCU and embedded system in the world.Keywords:Single chip m

8、icrocomputer SolidWorks Proteus目 錄摘 要IDesign of 3D servo numerical control platformII1、緒 論11.1 引言11.2 數(shù)控技術(shù)的發(fā)展方向及本次畢設(shè)的主旨11.3 數(shù)控技術(shù)的國(guó)內(nèi)現(xiàn)狀及發(fā)展趨勢(shì)22、三維建模及二維工程圖42.1 SolidWorks軟件介紹42.2 三維實(shí)際建模過(guò)程42.3 二維工程圖63、單片機(jī)的介紹及程序說(shuō)明73.1 單片機(jī)的概述73.2 單片機(jī)控制系統(tǒng)設(shè)計(jì)83.3 程序說(shuō)明84、Proteus中電子電路建立及仿真模擬104.1 proteus仿真軟件的介紹104.2 仿真電路實(shí)現(xiàn)過(guò)程104

9、.3 程序?qū)崿F(xiàn)簡(jiǎn)述及其源程序15參考文獻(xiàn)11、緒 論1.1 引言近些年來(lái),計(jì)算機(jī)技術(shù)不斷發(fā)展,計(jì)算機(jī)圖形處理能力不斷增強(qiáng),以計(jì)算機(jī)為依托的仿真技術(shù)也快速發(fā)展起來(lái),并在短時(shí)間內(nèi)應(yīng)用于各工程領(lǐng)域。在計(jì)算機(jī)平臺(tái)上進(jìn)行機(jī)械零件的設(shè)計(jì)、校核,電子電路的設(shè)計(jì),軟件的編程,最終進(jìn)行系統(tǒng)運(yùn)動(dòng)仿真,己經(jīng)逐漸成為機(jī)電一體化設(shè)計(jì)的發(fā)展趨勢(shì)。設(shè)計(jì)與制造的傳統(tǒng)步驟,第一步是方案設(shè)計(jì)及論證,第二步進(jìn)行產(chǎn)品設(shè)計(jì)。在第二步完成后,為了驗(yàn)證第二步的設(shè)計(jì)有無(wú)問(wèn)題,通常要制造一臺(tái)母機(jī)進(jìn)行試驗(yàn),這些試驗(yàn)中常常出現(xiàn)破壞性的結(jié)果。當(dāng)試驗(yàn)顯現(xiàn)發(fā)現(xiàn)缺點(diǎn)不足時(shí),又要回頭修改第二步設(shè)計(jì)并再用樣機(jī)驗(yàn)證。這是一個(gè)周而復(fù)始、不斷循環(huán)的設(shè)計(jì)一試驗(yàn)一設(shè)計(jì)

10、過(guò)程,只有通過(guò)這種嚴(yán)苛而復(fù)雜的過(guò)程,產(chǎn)品才能達(dá)到所要求的性能。不過(guò)這一程序是冗長(zhǎng)的,尤其對(duì)于結(jié)構(gòu)繁復(fù)的系統(tǒng),設(shè)計(jì)周期更是無(wú)法縮短,哪還用談對(duì)市場(chǎng)的靈活反應(yīng)了。時(shí)下大多數(shù)的情況是,企業(yè)工程師們?yōu)榱舜_保產(chǎn)品按時(shí)投向市場(chǎng)而不得已中斷簡(jiǎn)化這一過(guò)程,使產(chǎn)品在上市后便出現(xiàn)這樣那樣的問(wèn)題,這也是許多人認(rèn)為國(guó)內(nèi)企業(yè)先天不足的由來(lái)。時(shí)下的大背景是激烈市場(chǎng)競(jìng)爭(zhēng),在實(shí)際樣機(jī)平臺(tái)上的設(shè)計(jì)驗(yàn)證程序嚴(yán)重地限制了其產(chǎn)品質(zhì)量、其成本及其對(duì)市場(chǎng)的占有。隨著全球化經(jīng)貿(mào)態(tài)勢(shì)的日漸顯現(xiàn),要想奪競(jìng)爭(zhēng)取趨激烈的市場(chǎng),并擴(kuò)大市場(chǎng)占有率。便應(yīng)運(yùn)出現(xiàn)了開(kāi)發(fā)周期短暫,產(chǎn)品質(zhì)量足夠保障,成本低廉以及對(duì)市場(chǎng)反應(yīng)靈活運(yùn)營(yíng)方式。哪個(gè)公司早推出產(chǎn)品,哪個(gè)

11、公司就占有市場(chǎng)。顯然傳統(tǒng)的設(shè)計(jì)與制造步驟根本無(wú)法滿足以上要求。1.2 數(shù)控技術(shù)的發(fā)展方向及本次畢設(shè)的主旨已經(jīng)問(wèn)世40多年的數(shù)控技術(shù)是基于諸多基礎(chǔ)學(xué)科而發(fā)展起來(lái)的,這是一門不算新興,但卻舉足輕重的跨越性科學(xué),是自動(dòng)化,機(jī)電一體化,簡(jiǎn)單化,居家化,小型化制造業(yè)的基石。在未來(lái),數(shù)控技術(shù),仿真模擬技術(shù)的不斷升級(jí)改良,普及大眾,基礎(chǔ)零件更容易獲得,企業(yè)源代碼的逐步放送,會(huì)使得有興趣,有志于此的人可以在家中,用簡(jiǎn)單的機(jī)床加工出自己設(shè)計(jì)的手機(jī),遙控器等數(shù)碼產(chǎn)品。也可以對(duì)各種買來(lái)的家用電子元件進(jìn)行個(gè)性化的魔改。就好像美國(guó)電影中,一個(gè)鄉(xiāng)下農(nóng)場(chǎng)中,個(gè)人的愛(ài)好小作坊居然也能發(fā)展,制造出改變世界的發(fā)明一樣。這些都是數(shù)

12、字化技術(shù),數(shù)控技術(shù),仿真模擬技術(shù)大統(tǒng)一的必然結(jié)果。本次畢設(shè)就是對(duì)于數(shù)控銑床進(jìn)行一次簡(jiǎn)單的二次開(kāi)發(fā),通過(guò)畢設(shè)中設(shè)計(jì)出的4乘4矩陣鍵盤(pán),實(shí)現(xiàn)銑刀X軸,Y軸的控制走向。這個(gè)二次開(kāi)發(fā)可以連接已有的數(shù)控銑床,使工人們不必在使用銑床之前,背誦大量G17,G18,G90,G40等預(yù)存語(yǔ)言,可以通過(guò)簡(jiǎn)單的X軸,Y軸正傳反轉(zhuǎn)來(lái)控制。也可以連接普通的非數(shù)字化銑床,將其升級(jí)為半自動(dòng)化銑床,解放手工操作。當(dāng)然,本次畢設(shè)立意的確不凡,但筆者能力實(shí)在有限,所設(shè)計(jì)出的電子電路及操控軟件并不符合實(shí)際生產(chǎn)生活需要,但通過(guò)本次畢設(shè),讓筆者對(duì)于電子電路及單片機(jī)開(kāi)發(fā)應(yīng)用大感興趣,并親手調(diào)試程序,理解銑床控制的基本原理。1.3 數(shù)控技

13、術(shù)的國(guó)內(nèi)現(xiàn)狀及發(fā)展趨勢(shì)我國(guó)的數(shù)控技術(shù)起步較晚,雖然在學(xué)校精工實(shí)習(xí)時(shí)接觸了一些數(shù)字化機(jī)床,但大多是一代,二代,三代的老式機(jī)床,命令語(yǔ)句復(fù)雜,且不知能。精工實(shí)習(xí)過(guò)程中,在銑床實(shí)習(xí)時(shí),筆者曾編譯了一段程序,將蠟塊銑成摩托諾拉的某款經(jīng)典機(jī)型,當(dāng)然,現(xiàn)在的手機(jī)大多為平板觸屏手機(jī),簡(jiǎn)單的程序就可以銑出超薄的平面機(jī)型,似乎根本不用迫切發(fā)展數(shù)控技術(shù),當(dāng)然,此為笑言。筆者在假期實(shí)習(xí)時(shí),曾進(jìn)入一些工廠實(shí)習(xí)工作,這些工廠中還保留著大量非數(shù)控的銑床,車床等機(jī)床。一些老工人手藝精湛,根本不需要背誦繁復(fù)的數(shù)控指令,看幾眼零件,摸幾下就能加工出精美利落的成品。但未來(lái)的工業(yè)是大工業(yè)時(shí)代,大批量機(jī)加制成品依然占據(jù)著絕大部分市場(chǎng)

14、。我國(guó)也不再是當(dāng)年那個(gè)發(fā)射東方紅一號(hào)時(shí),有幾塊鋼板還是老師傅一錘子一錘子才敲打出弧形的國(guó)情了。在筆者看來(lái)數(shù)字技術(shù)必然如上文所說(shuō)一樣,逐漸簡(jiǎn)單化,平民化,全民有興趣之人都可以參與進(jìn)來(lái),都可以按照自己的個(gè)性加工出自己的零件,編寫(xiě)調(diào)試出帶有個(gè)人特點(diǎn)的程序,組裝自己心儀的產(chǎn)品,實(shí)現(xiàn)每個(gè)人不同的要求。2、三維建模及二維工程圖2.1 SolidWorks軟件介紹 目前流行的主流高、中端三維CAD軟件很多,如UG、II、CATIA、ProE、SolidEdge、SolidWorks等,選擇空間很大。所有方才所述的軟件中,都供應(yīng)了過(guò)程裝置以及運(yùn)動(dòng)干涉檢驗(yàn)、仿真模擬等功能,以及最重要的系統(tǒng)二次開(kāi)發(fā)接口。這使得熟

15、用上述軟件之人可以自行開(kāi)發(fā)出自己用著順手的應(yīng)用程序。SolidWorks是一套基于Windows的CADCAECAMPDM桌面集成系統(tǒng),是美國(guó)SolidWorks公司于1995年11月研制的。該軟件將二維制圖和三維構(gòu)型技術(shù)巧妙的雜糅為一體,操作便宜,上手極快,可以完成復(fù)雜的構(gòu)型設(shè)計(jì)、大型裝配、高級(jí)曲面設(shè)計(jì)造型和設(shè)計(jì)修改等。集構(gòu)型設(shè)計(jì)、應(yīng)力分析、仿真加工和數(shù)據(jù)管理于一款軟件,可以模擬動(dòng)態(tài)裝配過(guò)程,計(jì)算質(zhì)量特征,可將三維實(shí)體構(gòu)件轉(zhuǎn)化為二維平面工程圖。2.2 三維實(shí)際建模過(guò)程實(shí)際建模復(fù)雜艱辛,筆者以前學(xué)過(guò)CAD、CATIA等建模軟件,這次經(jīng)同學(xué)介紹學(xué)習(xí)使用SolidWorks這款軟件,單前期學(xué)習(xí)準(zhǔn)備

16、便花了兩周時(shí)間,畫(huà)出了七八個(gè)小零件,總算初步學(xué)會(huì)使用這款軟件。根據(jù)實(shí)際測(cè)量所得銑床尺寸,將此次三維構(gòu)件分解為三個(gè)零構(gòu)件,分別為銑床底座,可移動(dòng)固件平臺(tái),刀具裝置件。如下圖2.1,2.2便是其中刀具裝置件與可移動(dòng)固件平臺(tái)兩個(gè)零件。其中可移動(dòng)平臺(tái)的固定卡具很不好建模,孔多件難,還不好測(cè)量,特意接了一個(gè)卡尺反復(fù)測(cè)量,有照了很多照片對(duì)比建模,但最后還是反復(fù)跑了機(jī)械館數(shù)次,才測(cè)得準(zhǔn)確數(shù)字,勉強(qiáng)畫(huà)出了幾個(gè)零件。 圖 2.1刀具裝置件 圖2.2 可移動(dòng)固件平臺(tái) 下邊分別羅列了構(gòu)建的整體視覺(jué)圖以及正視圖,側(cè)視圖等。圖2.3 整體視覺(jué)圖從上圖的整體視覺(jué)圖中不難看出,可移動(dòng)固定平臺(tái)有X軸移動(dòng)行程,與Y軸移動(dòng)行程。

17、其工作范圍分別是X=120mm,Y=160mm;采用滾珠絲杠桿作為傳動(dòng)裝置,絲杠導(dǎo)程4mm。設(shè)計(jì)中伺服電機(jī)最大進(jìn)給速度2m/min。在軟件裝配時(shí),X軸Y軸的導(dǎo)軌安裝十分麻煩,因?yàn)闊o(wú)法將固定平臺(tái)拆卸下來(lái),自然不知道其中連接方式,上網(wǎng)查詢了很多銑床裝配圖,也無(wú)法完整的復(fù)制出移動(dòng)平臺(tái)的安裝方式,更無(wú)從在軟件中制作約束。 圖2.4 正視圖 圖2.5 側(cè)視圖2.3 二維工程圖3、單片機(jī)的介紹及程序說(shuō)明3.1 單片機(jī)的概述自1946年美國(guó)軍方定制的第一臺(tái)計(jì)算機(jī)現(xiàn)世以來(lái),計(jì)算機(jī)的微型化便從未停止過(guò)其腳步,最開(kāi)始的計(jì)算機(jī)機(jī)箱需要幾間屋子盛放,后來(lái)變成火車頭大小,再到八九十年代的臺(tái)式機(jī),筆記本,平板電腦。如今,

18、計(jì)算機(jī)已經(jīng)變成了指甲大小,這便是單片機(jī)。單片機(jī)全稱單片微型計(jì)算機(jī),又被稱為微控制器、單片機(jī),是微型計(jì)算機(jī)家族中的一個(gè)重要成員。單片機(jī)是將微處理器(計(jì)算機(jī)的中央處理單元CPU)CentralproeessingUnit)、一定容量的RAM和ROM以及I/O接口、定時(shí)等電路集成在一片芯片上。而不單單是完成某一個(gè)邏輯功能的芯片。概括的講:一塊芯片就是一臺(tái)計(jì)算機(jī),它的體積小、質(zhì)量輕、價(jià)格低、為學(xué)習(xí)應(yīng)用和開(kāi)發(fā)提供了便利條件。圖3.1 AT89C51單片機(jī)單片機(jī)是一塊集成芯片,除了具有集成芯片的特點(diǎn)外還有許多其他不同特點(diǎn),本次畢設(shè)選用的是AT89C51這塊單片機(jī)。這是一種帶閃存可編程只讀存儲(chǔ)器的單片機(jī)。A

19、T89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活價(jià)廉的方案。上圖3.1便是本次畢設(shè)選用的AT89C51單片機(jī),在proteus中的模型。3.2 單片機(jī)控制系統(tǒng)設(shè)計(jì)單片機(jī)編程之前需要規(guī)劃出整個(gè)系統(tǒng)的控制流程圖,通過(guò)流程圖指導(dǎo)程序編譯,電子電路連接等。下圖是本次畢設(shè)大體流程控制,分別從指令輸入,到單片機(jī)與電路互動(dòng),指導(dǎo)伺服系統(tǒng),電機(jī)轉(zhuǎn)動(dòng)帶動(dòng)銑床。下圖3.2為大體控制流程圖。圖3.2 控制系統(tǒng)流程圖3.3 程序說(shuō)明此次畢設(shè)的程序編譯部分,圖3.3的流程圖進(jìn)行編譯,首先進(jìn)行頭文件調(diào)用#include<reg52.h>,定義需要使用的各種編碼table=0x3f,0x06.

20、0x79,0x71,隨后各定義全局變量u11,u12,key1等,定義變量輸入sbit PWM1=P34。定義延遲函數(shù)void delay(uint x),定義初始化函數(shù)void init(),定義共陰極數(shù)碼管顯示函數(shù)void display(uchar segNo,uchar num),定義鍵盤(pán)掃描函數(shù)void keyScan(),定義主函數(shù)void main(void)。在主函數(shù)中分別調(diào)用初始化函數(shù),鍵盤(pán)掃描函數(shù),在顯示函數(shù)中顯示。最后編寫(xiě)中斷函數(shù),控制輸出波形。下圖圖3.3為指導(dǎo)本次編程的流程圖:圖3.3 編程流程圖在編程中,最為重要的便是鍵盤(pán)掃描函數(shù),在鍵盤(pán)掃描函數(shù)中使用switch函

21、數(shù),分別對(duì)矩陣鍵盤(pán)的每一行進(jìn)行詢問(wèn),待相應(yīng)之后分別對(duì)每一個(gè)回應(yīng),對(duì)應(yīng)的每一個(gè)鍵位進(jìn)行定義,以實(shí)現(xiàn)矩陣鍵盤(pán)的各種功能。4、Proteus中電子電路建立及仿真模擬4.1 proteus仿真軟件的介紹PROTEUS軟件是由英國(guó) Labcenter Electronics公司開(kāi)發(fā)的EDA工具軟件。它從1989年問(wèn)世至今,經(jīng)過(guò)了近20的使用、發(fā)展和完善,功能越來(lái)越強(qiáng)大,性能越來(lái)越好。PROTEUS安裝以后,主要由兩個(gè)程序組成:ARES和ISIS。前者主要用于PCB自動(dòng)或人工布線及其電路仿真,后者主要采用原理布圖的方法繪制電路并進(jìn)行相應(yīng)的仿真。除了上述基本應(yīng)用之外,PROTEUS 革命性的功能在于它的電路

22、仿真是互動(dòng)的,針對(duì)微處理器的應(yīng)用,可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源代碼級(jí)的調(diào)試,還可以直接實(shí)時(shí)動(dòng)態(tài)地模擬按鍵、鍵盤(pán)的輸入,LED、液晶顯示的輸出,同時(shí)配合虛擬工具如示波器、邏輯分析儀等進(jìn)行相應(yīng)的測(cè)量和觀測(cè)4.2 仿真電路實(shí)現(xiàn)過(guò)程以前學(xué)習(xí)proteus只是做了一些簡(jiǎn)單的如跑馬燈,定時(shí)器,靜態(tài)數(shù)字顯示等模擬,雖然知道這款軟件功能十分強(qiáng)大,但很少編寫(xiě)大程序。這次畢設(shè)一開(kāi)始雖然在心底構(gòu)思了一些方案,有簡(jiǎn)單的流程設(shè)計(jì),但一動(dòng)手開(kāi)始寫(xiě)程序,就給了筆者迎頭一棒將電路圖設(shè)計(jì)出來(lái)之后(如圖4.1),根本不知道從哪下手寫(xiě)程序,老師說(shuō)這個(gè)畢設(shè)并不困難,只需要一兩百行的程序就可以了??墒枪P者閉關(guān)三天

23、,才苦苦寫(xiě)出了二三十行程序,更讓筆者心涼的是,筆者的數(shù)碼管根本不顯示任何數(shù)字,連亂碼都沒(méi)有!更別說(shuō)控制伺服電機(jī)了,不好的時(shí)候電機(jī)根本不動(dòng),就算問(wèn)了同學(xué),調(diào)試了一下程序,電機(jī)居然很不給面子的直接轉(zhuǎn)到了頭。這要是實(shí)際工程應(yīng)用,筆者的程序恐怕會(huì)謀殺很大一批數(shù)控銑床。痛定思痛之下,筆者不得不認(rèn)清現(xiàn)實(shí),從頭開(kāi)始。先圖書(shū)館借了許多proteus相關(guān)的書(shū)籍,又從網(wǎng)上下載了一些編程視頻觀看學(xué)習(xí)。圖4.1,原電路圖從最簡(jiǎn)單的程序入手,將本次畢設(shè)的程序分三段調(diào)試,這里邊需要提一句,北京航空航天大學(xué)出版的proteus輔助的單片機(jī)原理實(shí)踐這本書(shū)對(duì)筆者幫助很大。筆者按照書(shū)上的教程,簡(jiǎn)單練習(xí)了幾個(gè)小程序熱手,之后將這次

24、的畢設(shè)題目分解成三個(gè)小題目。分別是:8位共陰極數(shù)碼管顯示,矩陣鍵盤(pán)輸入,伺服電機(jī)控制。首先是8位共陰極數(shù)碼管顯示,筆者更改之前圖1中使用的PG12864F顯示器,改用編碼為7SEG-MPX8-CC-BLUE的8位共陰極數(shù)碼管。八位共陰極數(shù)碼管的顯示并不困難,從0至F的十六位數(shù)字都有各自的代碼顯示,只要在主程序中調(diào)用顯示程序,并在對(duì)應(yīng)的位上輸入數(shù)值編碼,便可以完成顯示,程序簡(jiǎn)簡(jiǎn)單單的十?dāng)?shù)行,筆者便完成了生日的輸出,如圖4.2所示。圖4.2,生日截圖這里邊還有一個(gè)小插曲,為了連線方便,筆者將數(shù)碼管的數(shù)字接口接到了AT89C51單片機(jī)的P0口,將位選接口接到了單片機(jī)的P2口,可是屏幕根本不亮。當(dāng)時(shí)簡(jiǎn)

25、直要瘋了,砸電腦的心思都有,心說(shuō)連一個(gè)顯示程序都寫(xiě)不出來(lái),還能不能畢業(yè)了。后來(lái)按照書(shū)上的電路圖,將位選接口接到了單片機(jī)的P1口。模擬開(kāi)始之后,屏幕居然顯示了筆者的生日,當(dāng)時(shí)成就感立刻就來(lái)了。位選接口必須接到P1口,就好像外部中斷控制最好接到P32到P35口一樣。然后是矩陣鍵盤(pán)輸入,最開(kāi)始筆者學(xué)習(xí)書(shū)上使用for循環(huán),調(diào)用16位矩陣鍵盤(pán)編碼實(shí)現(xiàn)矩陣鍵盤(pán)輸入,可是悲劇的發(fā)現(xiàn),筆者對(duì)for循環(huán)并沒(méi)有天賦,尤其是矩陣鍵盤(pán)要實(shí)現(xiàn)數(shù)字,正反轉(zhuǎn),復(fù)位,啟停等不同功能。很快筆者就改用if循環(huán),在if循環(huán)中嵌套switch語(yǔ)句,雖然不如for循環(huán)簡(jiǎn)單明了,需要對(duì)矩陣鍵盤(pán)的四個(gè)橫行詢問(wèn),并對(duì)每一個(gè)縱行代碼進(jìn)行編譯,

26、但恰好滿足筆者對(duì)每個(gè)鍵值的定義。如圖3所示,筆者定義了一個(gè)矩陣鍵盤(pán),并將矩陣鍵盤(pán)每一個(gè)對(duì)應(yīng)值都顯示在數(shù)碼管中。圖4.3,矩陣鍵盤(pán)伺服電機(jī)的控制算是三個(gè)分題目中最困難的,如圖4.4所示筆者選用了編號(hào)為MOTOR-PWMSERVO的伺服電機(jī),要控制伺服電機(jī)的速度與偏轉(zhuǎn)角度(銑刀的位置),需要對(duì)PWM端口輸入不同頻率的方形波,這就涉及到中斷控制的定時(shí)器與計(jì)數(shù)器了。Proteus的編程書(shū)籍中介紹了很多中斷方面的知識(shí),但說(shuō)實(shí)話,筆者到現(xiàn)在也并沒(méi)有完全學(xué)明白,很多中斷都是憑著感覺(jué),一點(diǎn)一點(diǎn)將程序調(diào)試出來(lái)的。定時(shí)器/計(jì)數(shù)器控制寄存器TCON的中斷請(qǐng)求標(biāo)志格式為:TCONTF1TR1TF0TR0IE1IT1I

27、E0IT0位地址8FH8EH8DH8CH8BH8AH89H88H其中關(guān)于中斷的就有6位,中斷方式又有數(shù)種,對(duì)于書(shū)上的初始化函數(shù)中,ET0=1,TR0=1,與EX0=1,IT0=1,有什么具體區(qū)別根本搞不懂。按照書(shū)上將伺服電機(jī)的控制電路連接出來(lái),程序也抄寫(xiě)在KEIL軟件中,編譯運(yùn)行后伺服電機(jī)也如愿控制,但只要進(jìn)行微調(diào),比如說(shuō)書(shū)上的程序電機(jī)每一次轉(zhuǎn)動(dòng)15度,但要控制銑床,就算對(duì)自己的要求再低,怎么也要把精度保持在1mm一下,如果電機(jī)每一步都轉(zhuǎn)動(dòng)15度,那需要使用的電傳和齒輪系統(tǒng)筆者根本無(wú)法想象。足足花了數(shù)天時(shí)間,筆者在調(diào)試伺服電機(jī)的程序,逐行理解程序的含義,對(duì)每一行的程序都進(jìn)行標(biāo)注,逐行改變程序賦

28、值,希望能有奇跡出現(xiàn)。最后經(jīng)由老師點(diǎn)撥,筆者更改了定時(shí)器初值,每1um便進(jìn)行一次中斷,又調(diào)節(jié)了頻率與占空比,終于輸出了比較滿意的方形波,讓伺服電機(jī)每一次轉(zhuǎn)動(dòng)的范圍下降到了3度,比原來(lái)足足放大了5倍,節(jié)省了許多齒輪。但這又導(dǎo)致后來(lái)合成程序中出現(xiàn)了一個(gè)問(wèn)題,筆者的延遲函數(shù)也只能延遲更少的時(shí)間,如果延遲時(shí)間過(guò)長(zhǎng),數(shù)碼管的屏幕會(huì)不斷閃爍,甚至出現(xiàn)亂碼。圖4.4,伺服電機(jī)前后用了數(shù)周的時(shí)間,終于做出了零零碎碎將近10個(gè)仿真電路及其對(duì)應(yīng)的程序,眼看著其他同學(xué)已經(jīng)開(kāi)始調(diào)試大程序,但筆者心中卻頗有成就,因?yàn)楣P者的大程序中,大部分語(yǔ)句都是親手編譯調(diào)試,筆者知道每一行語(yǔ)句的意義,編譯出現(xiàn)錯(cuò)誤筆者能夠很快的更改,數(shù)

29、碼管顯示出現(xiàn)不合心意的時(shí)候,筆者也能定位到相應(yīng)的語(yǔ)句。終于,筆者帶著將近一個(gè)月的積累,開(kāi)始合成大程序,筆者將更改之后的三個(gè)子程序嵌入到大程序中,并用主函數(shù)分別調(diào)用初始化函數(shù),鍵盤(pán)掃描函數(shù),顯示函數(shù),筆者以為準(zhǔn)備工作做得充足,主函數(shù)只要區(qū)區(qū)數(shù)行就可以完成這次畢設(shè),結(jié)果仿真出來(lái)的結(jié)果讓筆者哭笑不得。第一次仿真,8位數(shù)碼管只亮了6個(gè),調(diào)試之后,正轉(zhuǎn)(E)反轉(zhuǎn)(F)的顯示代碼隨時(shí)改變,位移顯示部分更是奇葩,輸入數(shù)字之后,只顯示11,22,33,44等數(shù)字,根本無(wú)法輸入正常的數(shù)值,更別說(shuō)舵機(jī)了,舵機(jī)也跟著亂轉(zhuǎn),就連現(xiàn)在,筆者調(diào)出來(lái)的程序,復(fù)位鍵還無(wú)法讓舵機(jī)復(fù)位。圖4.5 最終電路實(shí)現(xiàn)4.3 程序?qū)崿F(xiàn)簡(jiǎn)述

30、及其源程序全部源程序及其說(shuō)明 #include<reg52.h> /調(diào)用頭文件 #define uchar unsigned char /簡(jiǎn)化定義語(yǔ)句 #define uint unsigned int/共陰極數(shù)碼管,數(shù)字編碼 uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共陰極數(shù)碼管,位選編碼 uchar code seg=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; uchar u11,u12,

31、u21,u22,u31,u32,a,b,c,d,u41,u42,key21,key22,key1;/x軸,u11=9,Y軸u12=10,正轉(zhuǎn)反轉(zhuǎn),正轉(zhuǎn)E,u21=14,反轉(zhuǎn)F,u22=15,位置,u31=,u32sbit PWM1=P34;/X軸電機(jī)控制sbit PWM2=P35;/Y軸電機(jī)控制sbit XZHOU=P32;/X軸鍵值輸入sbit YZHOU=P33;/Y軸鍵值輸入uchar DutyCycle1=43;/28,56,占空比變量uchar DutyCycle2=43;uchar dida1=0;/軟件計(jì)數(shù)變量uchar dida2=0;/延時(shí)函數(shù)void delay(uint

32、x) uchar i; while(x-) for(i=0;i<110;i+); / 初始化函數(shù)void init() TMOD=0x02; /設(shè)置定時(shí)器0工作方式在2 TH0=(256-1); /定時(shí)器初值設(shè)定 TL0=(256-1); /定時(shí)器初值設(shè)定 ET0=1; /使能定時(shí)器0中斷 TR0=1; /開(kāi)啟定時(shí)器 EA=1; /使能總中斷 PWM1=1; /初始化PWM1,開(kāi)始輸出高電平 PWM2=1;/8位共陰極數(shù)碼管顯示函數(shù) void display(uchar segNo,uchar num) P0=segsegNo;/通過(guò)P0端口選擇顯示的位 P1=tablenum;/通過(guò)P

33、1端口顯示數(shù)字 delay(0.5);/按鍵掃描函數(shù),X軸控制void keyScan() uchar t; /定義局部變量 delay(0.5);u11=10,u12=11;/X軸顯示代碼A,Y軸顯示代碼b P2=0xfe; /第一行閉合,1,2,3,X軸正轉(zhuǎn)四個(gè)位置 t=P2; t=t&0xf0; if(t!=0xf0) delay(0.5); t=P2; t=t&0xf0; if(t!=0xf0) /第一行閉合的情況下 t=P2; switch(t) case 0xee : /第一列閉合(鍵盤(pán)1位置) key1=1; break; case 0xde : /第二列閉合(鍵

34、盤(pán)2位置) key1=2; break; case 0xbe :/第三列閉合(鍵盤(pán)3位置) key1=3; break; case 0x7e :/第四列閉合(x軸正轉(zhuǎn),e,14) u21=14; break;while(t!=0xf0) /松手檢測(cè) t=P2; t=t&0xf0; /第二行閉合,4,5,6,X軸反轉(zhuǎn)四個(gè)位置 P2=0xfd; t=P2; t=t&0xf0; if(t!=0xf0) delay(0.5); t=P2; t=t&0xf0; if(t!=0xf0) /第二行閉合的情況下 t=P2; switch(t) case 0xed : /第一列閉合(鍵盤(pán)

35、4位置) key1=4; break; case 0xdd :/第二列閉合(鍵盤(pán)5位置) key1=5; break; case 0xbd :/第三列閉合(鍵盤(pán)6位置) key1=6; break; case 0x7d :/第四列閉合(x軸反轉(zhuǎn)f) u21=15;/f=15 break;while(t!=0xf0) /松手檢測(cè) t=P2; t=t&0xf0; /第三行閉合,7,8,9,Y軸正轉(zhuǎn)四個(gè)位置 P2=0xfb; t=P2; t=t&0xf0; if(t!=0xf0) delay(0.5); t=P2; t=t&0xf0; if(t!=0xf0) /第三行閉合的情

36、況下 t=P2; switch(t) case 0xeb :/第一列閉合(鍵盤(pán)7位置) key1=7; break; case 0xdb:/第二列閉合(鍵盤(pán)8位置) key1=8; break; case 0xbb :/第三列閉合(鍵盤(pán)9位置) key1=9; break; case 0x7b :/第四列閉合(y軸正轉(zhuǎn)) u22=14; break;while(t!=0xf0) /松手檢測(cè) t=P2; t=t&0xf0; /第四行閉合,復(fù)位,0,啟停,Y軸反轉(zhuǎn)四個(gè)位置 P2=0xf7; t=P2; t=t&0xf0; if(t!=0xf0) delay(0.5); t=P2;

37、t=t&0xf0; if(t!=0xf0) /第四行閉合的情況下 t=P2; switch(t) case 0xe7 :/第一列閉合(鍵盤(pán)復(fù)位位置) key1=0,key21=0,key22=0,u21=0,u22=0,u31=0,u32=0,u41=0,u42=0,DutyCycle1=43,DutyCycle2=43,c=0,d=0; break; case 0xd7 :/第二列閉合(鍵盤(pán)0位置) key1=0; break; case 0xb7 :/第三列閉合(鍵盤(pán)啟停位置)/x軸數(shù)字為c,DutyCycle1 x軸伺服電機(jī)占空比,控制電機(jī)轉(zhuǎn)動(dòng)角度 /y軸數(shù)字為d, DutyCy

38、cle2 y軸伺服電機(jī)占空比,控制電機(jī)轉(zhuǎn)動(dòng)角度 c=u31*10+u41;/c d=u32*10+u42;/d break; case 0x77 :/第四列閉合(y軸反轉(zhuǎn)) u22=15; break;while(t!=0xf0) /松手檢測(cè) t=P2; t=t&0xf0; delay(0.5); /主函數(shù)void main(void) init();/調(diào)用初始化函數(shù) while(1) /不按顯示(!XZHOU=0) ,點(diǎn)擊顯示(!XZHOU) 按下顯示 (YZHOU=0) keyScan(); /調(diào)用鍵盤(pán)掃描函數(shù) if(!XZHOU)|(!YZHOU) /向XY軸分別輸入數(shù)字 if(

39、!XZHOU) /如果電機(jī)X軸按鈕,鍵入數(shù)值 /將數(shù)值分別存入u31,u41 delay(1); a=key1; if(a!=key1) u41=a; if(u31=u41) u31=a; if(u31!=u41) u31=u41; u41=a; delay(1); if(!YZHOU)/如果電機(jī)X軸按鈕,鍵入數(shù)值 /將數(shù)值分別存入u32,u42 delay(1); b=key1; if(b!=key1) u42=b; if(u32=u42) u32=b; if(u32!=u42) u32=u42; u42=b; delay(1); while(!XZHOU)|(!YZHOU); /松手檢測(cè)

40、/調(diào)用顯示函數(shù),第一至第八位 display(7,u11);/X軸 (A)10 display(6,u21); /正轉(zhuǎn)(e)/反轉(zhuǎn)(F) 14,15 display(5,u31);/位置 display(4,u41); display(3,u12);/y軸 (b)11 display(2,u22); /正轉(zhuǎn)(E)/反轉(zhuǎn)(F) display(1,u32); /位置 display(0,u42); delay(0.5); /x軸數(shù)字為c,DutyCycle1 x軸伺服電機(jī)占空比,控制電機(jī)轉(zhuǎn)動(dòng)角度 /y軸數(shù)字為d, DutyCycle2 y軸伺服電機(jī)占空比,控制電機(jī)轉(zhuǎn)動(dòng)角度 /根據(jù)正轉(zhuǎn)反轉(zhuǎn)顯示,控

41、制舵機(jī)轉(zhuǎn)向 if(u21<=14) DutyCycle1=c+43; if(u21>=15) DutyCycle1=43-c; if(u22<=14) DutyCycle2=d+43; if(u22>=15) DutyCycle2=43-d; if(u21<=0) DutyCycle1=43; if(u22<=0) DutyCycle2=43; /定時(shí)器0中斷服務(wù)函數(shù)void time0()interrupt 1 dida1+; if(dida1>=DutyCycle1) PWM1=0;/低電平 else /改變PWM口的電平,獲得PWM波形 PWM1=1;/高電平 if(dida1=100) dida1=0; /一個(gè)PWM周期(1*100us=0.1ms)完成后,軟件計(jì)數(shù)變量清零 dida2+; if(dida2&

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論