【正文】
1模式3T0分為兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)AT89C52有6個(gè)固定的可屏蔽中斷源,它們分別是兩個(gè)外部中斷()和(),三個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器溢出中斷TF0、TF1和TF2,一個(gè)片內(nèi)串行口中斷TI或RI。TF0T/C0的溢出標(biāo)志,溢出時(shí)由硬件置1,進(jìn)入中斷后又由硬件自動(dòng)清0TR0T/C0的啟動(dòng)和停止位,由軟件控制。AT89C52單片機(jī)內(nèi)部設(shè)有兩個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1,以及一個(gè)可編程定時(shí)器/計(jì)數(shù)器2。I/O口的驅(qū)動(dòng)特性。無論是P0、P2口的總線復(fù)用功能,還是P3口的第二功能復(fù)用,單片機(jī)會(huì)自動(dòng)選擇,不需要指令選擇。AT89C52單片機(jī)的并行I/O接口有以下應(yīng)用特性:P0、PPP3作為通用I/O口使用時(shí),輸入操作是讀引腳狀態(tài);輸出操作是對(duì)口的鎖存器的寫入操作,鎖存器的狀態(tài)立即反映到引腳上。在程序設(shè)計(jì)中,可直接用寄存器名作為寄存器的符號(hào)地址使用。虛線框內(nèi)左側(cè)為片內(nèi)自帶的數(shù)據(jù)存儲(chǔ)器RAM,此256字節(jié)單元(00H~FFH)的低128字節(jié)(00H~7FH)單元為用戶使用去,高128字節(jié)(80H~FFH)單元為特殊功能寄存器SFR區(qū)。根據(jù)不同的指令協(xié)調(diào)單片機(jī)各個(gè)單元有序工作。用來指示累加其中內(nèi)容的奇偶性,該位始終跟蹤指示累加器中1的個(gè)數(shù),則P=0;否則P=。RSRS0工作寄存器組選擇位工作寄存器組選擇位。程序狀態(tài)字PSW各位的狀態(tài)標(biāo)志定義如圖32和表31所示;圖31 AT89C52單片機(jī)原理結(jié)構(gòu)圖圖32 PSW各位的狀態(tài)標(biāo)志表31 PSW各位的定義狀態(tài)標(biāo)志定義含義CY高位進(jìn)位標(biāo)志若當(dāng)前執(zhí)行指令的運(yùn)算結(jié)果產(chǎn)生進(jìn)位或借位,該標(biāo)志被置成CY=1;否則CY=0??煞譃樗拇蟛糠郑簝?nèi)核CPU部分、存儲(chǔ)器部分、I/O接口部分和特殊功能部分(如定時(shí)器/計(jì)數(shù)器、外中斷控制模塊等)。圖22 四相步進(jìn)電動(dòng)機(jī)三種工作方式下的工作波形圖3 XY數(shù)控工作臺(tái)硬件電路分析 控制系統(tǒng)微控制器AT89C52 AT89C52單片機(jī)的主要工作特性? 8031CPU(8051的內(nèi)核);? 8KB的快速擦寫Flash存儲(chǔ)器,用于程序存儲(chǔ)器,可擦寫次數(shù)為1000次;? 256字節(jié)的RAM,其中高128字節(jié)地址被特殊功能寄存器SFR占用;? 32跟可編程I/O端口:P0、PPP3;? 2個(gè)可編程16位定時(shí)器:P3口的第二功能;? 具有6個(gè)中斷源、5個(gè)中斷矢量、二級(jí)優(yōu)先權(quán)的中斷系統(tǒng);? 1個(gè)數(shù)據(jù)指針DPTR;? 1個(gè)可編程的全雙工串行通信:P3口的第二功能;? 具有“空閑”和“掉電”兩種低功耗工作方式;? 可編程的3級(jí)程序鎖定位;? 工作電源的電壓為(5177。本系統(tǒng)選用的步進(jìn)電動(dòng)機(jī)是四相八拍工作方式,四相步進(jìn)電機(jī)按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式。而0、3號(hào)齒和A、B相繞組產(chǎn)生錯(cuò)齒,5號(hào)齒就和A、D相繞組磁極產(chǎn)生錯(cuò)齒。要使步進(jìn)電動(dòng)機(jī)轉(zhuǎn)動(dòng),就必須對(duì)步進(jìn)電動(dòng)機(jī)定子的各項(xiàng)繞組以適當(dāng)?shù)臅r(shí)序進(jìn)行通電。步進(jìn)電動(dòng)機(jī)控制線路接受微機(jī)發(fā)來的指令脈沖,控制步進(jìn)電動(dòng)機(jī)作相應(yīng)地轉(zhuǎn)動(dòng),從而是步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)數(shù)控系統(tǒng)的工作臺(tái)。如果出現(xiàn)編譯連接錯(cuò)誤則返回第2步,修改源程序中的錯(cuò)誤后重新構(gòu)造整個(gè)項(xiàng)目。② 利用μVision2的文件編輯器編寫C語言(或匯編語言)源程序文件,并將文件添加到項(xiàng)目中去。④ 具有強(qiáng)大的原理圖繪制功能[1] :北京航空航天大學(xué)出版社[M],2009,第90頁.。② 支持主流單片機(jī)系統(tǒng)的仿真。1 XY數(shù)控工作臺(tái)設(shè)計(jì)簡介 XY數(shù)控工作臺(tái)總體方案分析總體方案圖如圖11所示:微控制器(MCU)I/O接口電路放大電路執(zhí)行器件機(jī)械傳動(dòng)機(jī) 構(gòu)機(jī)械執(zhí)行機(jī) 構(gòu)圖11 XY數(shù)控工作臺(tái)總體方案圖XY數(shù)控工作臺(tái)是實(shí)現(xiàn)平面X、Y坐標(biāo)運(yùn)動(dòng)的典型關(guān)鍵部件,能夠分別沿X向和Y向移動(dòng)。本設(shè)計(jì)用AT89C52組成專用單片機(jī)控制系統(tǒng),從鍵盤輸入G代碼后,能通過直線插補(bǔ)和圓弧插補(bǔ),完成平面輪廓加工。 on the basis of this, establish quadrant identification procedures so that XY table can work in four quadrants。在系統(tǒng)程序設(shè)計(jì)上運(yùn)用逐點(diǎn)比較法使步進(jìn)電機(jī)實(shí)現(xiàn)單坐標(biāo)定位、兩坐標(biāo)直線插補(bǔ)和圓弧插補(bǔ)的基本功能;在此功能基礎(chǔ)上通過建立象限判別程序,使XY工作臺(tái)達(dá)到四象限的工作要求;并編寫了代碼處理指令,使CPU能夠根據(jù)讀入的指令信息(G代碼與X軸和Y軸坐標(biāo)),分別向X軸和Y軸步進(jìn)電機(jī)輸出執(zhí)行指令所需的控制信號(hào),從而完成指定的工序。該設(shè)計(jì)選用KeilμVision2軟件進(jìn)行程序的編譯和調(diào)試,在Proteus環(huán)境下實(shí)現(xiàn)進(jìn)一步的調(diào)試并仿真得出程序的運(yùn)行結(jié)果。 and write the code handler,so CPU according to the information which have been read(G code and the Xaxis and Yaxis coordinates), output signals to two stepper motor separately for control the table how to move on Xaxis and Yaxis to finish the specified process. The design of the software programs used KeilμVision2 pile and debug, debugging at the Proteus and get the results of simulation. the results of the design of the program in the simulation by Proteus is wonderful, when simulation the program, just need input G code by the keyboard, stepper motor can control the table through linear interpolation and circular interpolation to finish plane contour machining.Key words: Interpolation XY NC Worktable Stepping Motor MicrocontrollerI目 錄摘 要 IABSTRACT II前言 11 XY數(shù)控工作臺(tái)設(shè)計(jì)簡介 2 XY數(shù)控工作臺(tái)總體方案分析 2 仿真開發(fā)環(huán)境Proteus簡介 2 程序開發(fā)環(huán)境KeilμVision2簡介 22 XY數(shù)控工作臺(tái)機(jī)械部件功能分析 4 步進(jìn)電動(dòng)機(jī)的工作原理 4 步進(jìn)電動(dòng)機(jī)的工作方式 43 XY數(shù)控工作臺(tái)硬件電路分析 6 控制系統(tǒng)微控制器AT89C52 6 AT89C52單片機(jī)的主要工作特性 6 AT89C52單片機(jī)的內(nèi)部結(jié)構(gòu) 6 AT89C52單片機(jī)的各引腳功能 15 可編程并行接口芯片8255A 16 8255A的內(nèi)部結(jié)構(gòu) 16 8255A的引腳功能 17 8255A的工作方式 18 8255A控制字 194 基于PROTEUS仿真電路分析 21 XY數(shù)控工作臺(tái)控制系統(tǒng)仿真電路圖 21 XY數(shù)控工作臺(tái)控制系統(tǒng)硬件資源及其分配 21 電路模塊圖分析 22 XY向步進(jìn)電機(jī)控制電路分析 22 四行四列矩陣式鍵盤控制電路分析 23 XY數(shù)控工作臺(tái)顯示電路分析 24 程序在仿真電路圖中實(shí)現(xiàn)的功能 255 XY數(shù)控工作臺(tái)總程序軟件設(shè)計(jì) 26 程序總流程分析 26 Main 函數(shù)功能解釋 26 逐點(diǎn)比較法的插補(bǔ)原理 27 逐點(diǎn)比較法插補(bǔ)的優(yōu)點(diǎn) 27 插補(bǔ)總流程分析 276 XY數(shù)控工作臺(tái)快速進(jìn)給軟件設(shè)計(jì) 28 快速進(jìn)給程序分析 287 XY數(shù)控工作臺(tái)直線插補(bǔ)軟件設(shè)計(jì) 30 逐點(diǎn)比較法的直線插補(bǔ)的數(shù)學(xué)原理 30 逐點(diǎn)比較法的直線查補(bǔ)的偏差判別機(jī)制 30 直線插補(bǔ)中的終點(diǎn)判別機(jī)制 31 直線插補(bǔ)計(jì)算過程 31 直線插補(bǔ)中的進(jìn)給判別機(jī)制 31 直線插補(bǔ)程序分析 328 XY數(shù)控工作臺(tái)圓弧插補(bǔ)軟件設(shè)計(jì) 34 逐點(diǎn)比較法的圓弧插補(bǔ)的數(shù)學(xué)原理 34 逐點(diǎn)比較法的圓弧查補(bǔ)的偏差判別機(jī)制 34 圓弧插補(bǔ)中的終點(diǎn)判別機(jī)制 35 圓弧插補(bǔ)計(jì)算過程 35 4個(gè)象限的圓弧插補(bǔ) 35 順圓插補(bǔ)程序分析 37 逆圓插補(bǔ)程序分析 399 XY數(shù)控工作臺(tái)代碼處理軟件設(shè)計(jì) 41 代碼處理程序分析 4110 XY數(shù)控工作臺(tái)象限判別軟件設(shè)計(jì) 43 象限判斷總程序分析 43 G0與G1情況象限判斷程序分析 43 G2情況象限判斷程序分析 45 G3情況象限判斷程序分析 4511 中斷程序設(shè)計(jì)方法 47 定時(shí)器中斷程序解釋 47 外部中斷程序解釋 47結(jié)論與展望 48參考文獻(xiàn) 49附錄A 總程序: 50附錄B 文獻(xiàn)翻譯原文 75附錄C 文獻(xiàn)翻譯譯文 83謝 辭 90前言本次畢業(yè)設(shè)計(jì)的選題為基于單片機(jī)控制的數(shù)控XY工作臺(tái)系統(tǒng)設(shè)計(jì)——插補(bǔ)部分。通過正確的運(yùn)用大學(xué)四年學(xué)到的知識(shí)完成本次畢業(yè)設(shè)計(jì),可以更好的掌握有關(guān)機(jī)電一體化系統(tǒng)的設(shè)計(jì)過程和單片機(jī)的編程思想。本次設(shè)計(jì)的XY數(shù)控工作臺(tái)選用的是微機(jī)控制系統(tǒng)(AT89C52單片機(jī)),在基于AT89C52單片機(jī)的原理上設(shè)計(jì)了一個(gè)小型的微機(jī)控制系統(tǒng),運(yùn)用C51編程將控制信號(hào)送到執(zhí)行器件(X和Y向步進(jìn)電動(dòng)機(jī)),通過機(jī)械傳動(dòng)機(jī)構(gòu)(齒輪減速和絲桿傳動(dòng)),帶動(dòng)機(jī)械執(zhí)行機(jī)構(gòu)(工作臺(tái))做X向和Y向的運(yùn)動(dòng);實(shí)現(xiàn)四象限單坐標(biāo)快速定位,雙坐標(biāo)直線、圓弧插補(bǔ)等功能;最終選擇通過Proteus與Keil聯(lián)機(jī)對(duì)設(shè)計(jì)的電路以及程序進(jìn)行仿真、 仿真開發(fā)環(huán)境Proteus簡介Proteus ISIS是美國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。 程序開發(fā)環(huán)境KeilμVision2簡介μVision2是一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序,支持長文件名操作,其界面類似于MS Visual C++,可以再Windows95/98/2000/XP平臺(tái)上運(yùn)行,功能十分強(qiáng)大。一個(gè)項(xiàng)目可以包含多個(gè)文件,除源程序文件外還可以有庫文件或文本說明文件。⑤ 將沒有錯(cuò)誤的絕對(duì)目標(biāo)代碼裝入μVision2調(diào)試器進(jìn)行仿真調(diào)試,調(diào)試成功后將HEX文件寫入到單片機(jī)應(yīng)用系統(tǒng)的EPROM中[2] 周潤景,張麗娜,[M].北京:機(jī)械工業(yè)出版社,2007,第82頁.。很明顯,指令脈沖的總數(shù)就決定了數(shù)控系統(tǒng)的工作臺(tái)的總移動(dòng)量,指令脈沖的頻率就決定了移動(dòng)的速度[3] [M].北京:機(jī)械工業(yè)出版社,2007,第58頁.。圖21 四相步進(jìn)電機(jī)步進(jìn)示意圖圖21為四相步進(jìn)電動(dòng)機(jī)步進(jìn)示意圖。依次類推,A、B、C、D四相繞組輪流供電,則轉(zhuǎn)子會(huì)沿著A、B、C、D方向轉(zhuǎn)動(dòng)。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動(dòng)力矩小。)V;? 振蕩器最高頻率為24 MHz;? 編程頻率3~24 MHz,編程電流1 mA,編程電壓Vpp為5 V或12 V。(1)AT89C52單片機(jī)的CPUAT89C52單片機(jī)的CPU是8位字長,主要包括運(yùn)算器和控制器兩部分。AC輔助進(jìn)位標(biāo)志位又稱為半字節(jié)進(jìn)位標(biāo)志位,在執(zhí)行加減指令時(shí),如果低半字節(jié)向高半字節(jié)產(chǎn)生進(jìn)位或借位,則AC=1,否則AC=0。00時(shí)為工作寄存器0組,01時(shí)為工作寄存器1組,10時(shí)為工作寄存器2組,11時(shí)為工作寄存器3組OV溢出標(biāo)志位所謂溢出是指運(yùn)算結(jié)果數(shù)值的絕對(duì)值超過了允許表示的最大值,執(zhí)行運(yùn)算指令時(shí),如果運(yùn)算結(jié)果超出了目的寄存器A所能夠表示的符號(hào)數(shù)的范圍(128~+127),硬件自動(dòng)置位溢出標(biāo)志位,即OV=1;否則OV=0。CPU中控制器是控制讀取指令,識(shí)別指令并根據(jù)指令的性質(zhì)協(xié)調(diào)、控制單片機(jī)個(gè)組成部件有序工作的重要部件,是CPU乃至整個(gè)單片機(jī)的中樞神經(jīng)。圖33 存儲(chǔ)器空間分布圖(2)AT89C52單片機(jī)的存儲(chǔ)器AT89C52單片機(jī)芯片內(nèi)配置有8KB(0000H~1FFFH)的Flash程序存儲(chǔ)器ROM和256字節(jié)(00H~FFH)的數(shù)據(jù)存儲(chǔ)器RAM,根據(jù)需要可外擴(kuò)到最大64KB的程序存儲(chǔ)器和64KB的數(shù)據(jù)存儲(chǔ)器,因此AT89C52的存儲(chǔ)器結(jié)構(gòu)可分為4部分:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器(見圖33)。片內(nèi)寄存器的00H~7FH區(qū)又劃分成3塊:00H~1FH塊是工作寄存器所用;20H~2FH塊石有位尋址功能的單元區(qū);30H~7FH是普通RAM區(qū)。圖34 片內(nèi)數(shù)據(jù)寄存器的結(jié)構(gòu)表32 工作寄存器激活地址表組 號(hào)RS1 () RS1 () R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108H09H0AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH