地稅局自動蓋章系統(tǒng)設(shè)計
地稅局自動蓋章系統(tǒng)設(shè)計 地稅局自動蓋章系統(tǒng)是一種集自動蓋章和頁碼打印于一體的辦公設(shè)備,它能夠自動實現(xiàn)收費票據(jù)的蓋章,收費票據(jù)的頁碼打印功能。系統(tǒng)設(shè)計的主要任務(wù)圍繞步進電機的控制展開。 步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。通俗一點講:當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(即步進角)。您可以通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時您還可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。 隨著運動控制系統(tǒng)中數(shù)字化技術(shù)的發(fā)展與成熟,步進電機在自動化控制中得到廣泛的應用。 1 系統(tǒng)功能說明地稅局自動蓋章系統(tǒng)根據(jù)其使用的不同環(huán)境,具有以下的幾種功能,以滿足不同客戶的使用要求。1.1票據(jù)進/出倉功能該功能主要用于操作人員把票據(jù)送入或者取出打印設(shè)備,其工作原理與電腦的光驅(qū)設(shè)備的進出倉原理相同。首次按下“進/出倉”鍵,設(shè)備的票據(jù)倉在步進電機的驅(qū)動下伸出來,以便操作人員放入票據(jù),再次按下“進/出倉”鍵,設(shè)備的票據(jù)倉在步進電機的驅(qū)動下收回,準備進行下一步的操作。1.2蓋章功能 當操作人員放入票據(jù)以后,再按下“蓋章”鍵,設(shè)備在檢測到票據(jù)倉有紙的情況下,進行票據(jù)的自動蓋章,同時蓋章指示燈亮,表明設(shè)備正在進行蓋章操作;當把所有的票據(jù)頁蓋章完畢后,蓋章結(jié)束的指示燈亮,表明蓋章結(jié)束。1.3打印頁碼功能 當操作人員放入票據(jù)以后,再按下“打印頁碼”鍵,設(shè)備在檢測到票據(jù)倉有紙的情況下,進行票據(jù)的頁碼打印,同時頁碼打印指示燈亮,表明設(shè)備正在進行票據(jù)的頁碼打印操作;當把所有票據(jù)的頁碼完畢后,頁碼打印結(jié)束的指示燈亮,表明票據(jù)頁碼打印結(jié)束。1.4取消功能當操作人員按下“取消”鍵,設(shè)備取消正在進行的操作,并進入復位后的等待狀態(tài)。1.5復位功能當操作人員按下“復位”鍵,設(shè)備進行系統(tǒng)的復位操作。并隨后進入等待狀態(tài)。2 應用系統(tǒng)設(shè)計2.1應用系統(tǒng)結(jié)構(gòu)設(shè)計根據(jù)1.1節(jié)所述的地稅局自動蓋章系統(tǒng)的功能,該系統(tǒng)需要完成步進電機的驅(qū)動,蓋章電磁鐵的擊打,打印電磁鐵的擊打,票據(jù)進/出倉的位置傳感器、紙張有/無的傳感器的信號檢測,指示燈的驅(qū)動,票據(jù)翻頁的機械手步進電機的驅(qū)動等操作,系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。2.2設(shè)備及器件選型本設(shè)計采用Atmel公司的AT90S8535高性能低功耗的AVR單片機作為設(shè)備的核心控制器。根據(jù)圖81所設(shè)計的系統(tǒng)結(jié)構(gòu),選擇合適功能器件,以完成完整的系統(tǒng)控制電路設(shè)計??刂葡到y(tǒng)需要選擇穩(wěn)壓電源單元,步進電機及電機驅(qū)動器單元,功能鍵盤單元,位置傳感器單元和驅(qū)動電磁擊打錘的固態(tài)繼電器單元。2.2.1 穩(wěn)壓電源1.穩(wěn)壓電源的分類常用的穩(wěn)壓電源有開關(guān)穩(wěn)壓電源、輸出電壓值固定的穩(wěn)壓電源和輸出電壓值可以調(diào)節(jié)的穩(wěn)壓電源。開關(guān)穩(wěn)壓電源:開關(guān)電源的特點如下:價格低、可靠性高;適用AC輸入電源;效率高、工作溫度低;軟啟動電流、能有效降低AC輸入沖擊;有短路保護、過載保護;體積小、重量輕;內(nèi)有EMI濾波器、紋波極小。開關(guān)型穩(wěn)壓電源通常由輸入濾波電路、工頻整流電路、功率因數(shù)校正電路、直流變換器和輸出濾波器等部分組成,如圖2所示。 輸入濾波器的主要作用是衰減電網(wǎng)中的高頻諧波分量,同時也可防止開關(guān)電源產(chǎn)生的高頻諧波分量進入電網(wǎng),影響其他用電設(shè)備,輸入濾波器通常采用LC低通濾波器,為了更大地衰減高次諧波分量,也可以采用幾個單級濾波器組成的多級濾波器;工頻整流器的主要作用是將交流輸入電壓變換成直流電壓,該整流器通常采用單相或者三相橋式整流電路,為了使輸入電壓比較平穩(wěn),輸出端還必須加入濾波電容;功率因數(shù)校正電路的主要作用是:通過升高整流器輸出的直流電壓,迫使交流輸入電流與交流輸入電壓的波形及相位基本相同,從而使功率因數(shù)接近1,該電路通常采用直流升壓變換器;直流變換器的主要作用是將功率因數(shù)校正電路輸出的直流高壓變換成設(shè)備所需的電壓值,通常采用的變換器有單端變換器、推挽變換器和橋式變換器;輸出濾波器的主要作用是衰減直流變換器輸出電壓中的高頻分量,降低輸出電壓的紋波,從而滿足電子設(shè)備的要求,輸出濾波器也采用LC濾波電路。 在簡單了結(jié)了開關(guān)型穩(wěn)壓電源的基礎(chǔ)上,同時考慮了電源的性能、價格和系統(tǒng)本身對電源功率的要求等因素。本系統(tǒng)選擇了復旦大學科教實業(yè)有限公司的S-350-36(36V/5A)型開關(guān)型穩(wěn)壓電源。輸出電壓值固定的穩(wěn)壓電源:輸出電壓值固定的穩(wěn)壓電源的結(jié)構(gòu)相對比較簡單,通常使用輸出電壓固定的集成穩(wěn)壓器件來實現(xiàn),由于它只有輸入、輸出和公共引出端,故稱之為三端式穩(wěn)壓器。三端式穩(wěn)壓器的型號很多,本系統(tǒng)選用的三端式穩(wěn)壓器是具有正電壓輸出的78M05。具體的電路圖如圖3所示。圖3 5V穩(wěn)壓電源電路圖輸出電壓值可以調(diào)節(jié)的穩(wěn)壓電源輸出電壓值可以調(diào)節(jié)的穩(wěn)壓電源通常使用三端可調(diào)式集成穩(wěn)壓器,以LM317為例,其電路結(jié)構(gòu)和常用的外接元件如圖4所示。LM317的內(nèi)部有比較放大器、偏置電路(圖中未畫出)、恒流電路和帶隙基準電壓VREF等,它的公共端改接到輸出端,器件本身無接地端。所以消耗的電流都從輸出端流出,內(nèi)部的基準電壓(約1.2V)接至比較放大器的同相端和調(diào)整端之間。若接上外部的調(diào)整電阻R1、R2后,輸出電壓為: (1)。LM317的VREF1.2V,IADJ=50A,由于調(diào)整端電流IADJ<<I1 ,故可以忽略,式8.1可以簡化為: (2)。 2.2.2 步進電機及驅(qū)動器1. 步進電機的分類步進電機分通常兩種:反應式步進電機,感應子式步進電機。反應式步進電機由于反應式步進電機工作原理比較簡單。下面是三相反應式步進電機的工作原理。 電機轉(zhuǎn)子均勻分布著很多小齒,定子齒有三個勵磁繞阻,其幾何軸線依次分別與轉(zhuǎn)子齒軸線錯開。0、1/3、2/3,(相鄰兩轉(zhuǎn)子齒軸線間的距離為齒距以表示),即A與齒1相對齊,B與齒2向右錯開1/3,C與齒3向右錯開2/3,A與齒5相對齊,(A就是A,齒5就是齒1)定轉(zhuǎn)子的展開圖如圖85所示。圖5定轉(zhuǎn)子的展開圖如A相通電,B,C相不通電時,由于磁場作用,齒1與A對齊,(轉(zhuǎn)子不受任何力以下均同)。如B相通電,A,C相不通電時,齒2應與B對齊,此時轉(zhuǎn)子向右移過1/3,此時齒3與C偏移為1/3,齒4與A偏移(-1/3)=2/3。如C相通電,A,B相不通電,齒3應與C對齊,此時轉(zhuǎn)子又向右移過1/3,此時齒4與A偏移為1/3對齊。 如A相通電,B,C相不通電,齒4與A對齊,轉(zhuǎn)子又向右移過1/3。這樣經(jīng)過A、B、C、A分別通電狀態(tài),齒4(即齒1前一齒)移到A相,電機轉(zhuǎn)子向右轉(zhuǎn)過一個齒距,如果不斷地按A,B,C,A通電,電機就每步(每脈沖)1/3,向右旋轉(zhuǎn)。如按A,C,B,A通電,電機就反轉(zhuǎn)。 由此可見:電機的位置和速度由導電次數(shù)(脈沖數(shù))和頻率成一一對應關(guān)系。而方向由導電順序決定。感應子式步進電機感應子式步進電機與傳統(tǒng)的反應式步進電機相比,結(jié)構(gòu)上轉(zhuǎn)子加有永磁體,以提供軟磁材料的工作點,而定子激磁只需提供變化的磁場而不必提供磁材料工作點的耗能,因此該電機效率高,電流小,發(fā)熱低。因永磁體的存在,該電機具有較強的反電勢,其自身阻尼作用比較好,使其在運轉(zhuǎn)過程中比較平穩(wěn)、噪音低、低頻振動小。 感應子式步進電機某種程度上可以看作是低速同步電機。一個四相電機可以作四相運行,也可以作二相運行。(必須采用雙極電壓驅(qū)動),而反應式電機則不能如此。例如:四相,八相運行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍運行方式。不難發(fā)現(xiàn)其條件為C=,D=. 一個二相電機的內(nèi)部繞組與四相電機完全一致,小功率電機一般直接連接為二相,而功率大一點的電機,為了方便使用,靈活改變電機的動態(tài)特點,往往將其外部接線為八根引線(四相),這樣使用時,既可以作四相電機使用,可以作為二相電機繞組串聯(lián)或并聯(lián)使用。本系統(tǒng)選用的是三相反應式步進電機。步進電機驅(qū)動器步進電機驅(qū)動器是能夠?qū)崿F(xiàn)使用、控制步進電機必須的環(huán)形脈沖,功率放大等功能組成的控制器。其結(jié)構(gòu)框圖如圖86所示。其中各個接線端子的具體功能如下:CP 接CPU脈沖信號(負信號,低電平有效);OPTO接CPU+5V;FREE脫機,與CPU地線相接,驅(qū)動電源不工作;DIR方向控制,與CPU地線相接,電機反轉(zhuǎn);VCC 直流電源正端;GND直流電源負端; A接電機引出線紅線; 接電機引出線綠線; B接電機引出線黃線; 接電機引出線藍線;2.2.3 功能鍵盤本系統(tǒng)的功能鍵盤采用了獨立式動態(tài)掃描鍵盤,該鍵盤的結(jié)構(gòu)及功能在12章中有詳細的介紹,這里不再過多介紹了。2.2.4 位置傳感器本系統(tǒng)的位置傳感器采用由發(fā)光二極管和光敏二極管組成的電路來實現(xiàn),在下一節(jié)中將結(jié)合電路原理圖進行說明。2.2.5 固體繼電器固體繼電器(亦稱固態(tài)繼電器)英文名稱為Solid State Relay,簡稱SSR。它是用半導體器件代替?zhèn)鹘y(tǒng)電接點作為切換裝置的具有繼電器特性的無觸點開關(guān)器件,單相SSR為四端有源器件,其中兩個輸入控制端,兩個輸出端,輸入輸出間為光隔離,輸入端加上直流或脈沖信號到一定電流值后,輸出端就能從斷態(tài)轉(zhuǎn)變成通態(tài)。固體繼電器工作可靠,壽命長,無噪聲,無火花,無電磁干擾,開關(guān)速度快,抗干擾能力強,且體積小,耐沖擊,耐振蕩,防爆、防潮、防腐蝕、能與TTL、DTL、HTL等邏輯電路兼容,以微小的控制信號達到直接驅(qū)動大電流負載。主要不足是存在通態(tài)壓降(需相應散熱措施),有斷態(tài)漏電流,交直流不能通用,觸點組數(shù)少,另外過電流、過電壓及電壓上升率、電流上升率等指標差。固體繼電器目前已廣泛應用于計算機外圍接口裝置,電爐加熱恒溫系統(tǒng),數(shù)控機械,遙控系統(tǒng)、工業(yè)自動化裝置;信號燈、閃爍器、照明舞臺燈光控制系統(tǒng);儀器儀表、醫(yī)療器械、復印機、自動洗衣機;自動消防,保安系統(tǒng),以及作為電網(wǎng)功率因素補償?shù)碾娏﹄娙莸那袚Q開關(guān)等等,另外在化工、煤礦等需防爆、防潮、防腐蝕場合中都有大量使用。本系統(tǒng)驅(qū)動電磁擊打錘和抓紙機械手是通過AVR單片機的輸出控制直流固體繼電器來實現(xiàn)的。直流固體繼電器的輸出量程既能夠滿足驅(qū)動電磁擊打錘所需要的較大的電流,又可以起到隔離作用,防止電磁擊打錘的線圈的在通斷電時產(chǎn)生的脈沖尖峰對系統(tǒng)的干擾,提高控制系統(tǒng)的抗干擾能力。3 硬件設(shè)計地稅局自動蓋章系統(tǒng)的控制電路原理如圖7所示,下面對各單元電路進行說明。圖8 自動蓋章系統(tǒng)的控制電路原理圖 3.1電源設(shè)計本系統(tǒng)的電源共有36V、 12V、5V三種。其中36V電源由開關(guān)電源輸出,用來作為電機及系統(tǒng)其它電源的輸入。系統(tǒng)的12V電源用于擊打電磁和抓紙機械手的供電,它由可調(diào)三端穩(wěn)壓電源器件LM350將36V降壓得到,LM350和LM317為同一系列的可調(diào)三端穩(wěn)壓器件,工作原理完全相同,只在具體的參數(shù)上有所差別??刂葡到y(tǒng)的5V電源由固定值三端穩(wěn)壓電源器件78M05對12V電壓進行降壓得到,它為單片機及其接口系統(tǒng)提供電源。其中電阻R2和發(fā)光二極管D7組成電源工作指示燈。系統(tǒng)電源設(shè)計的電路原理圖如圖9所示。圖9系統(tǒng)電源的電路原理圖8.3.2步進電機接口電路設(shè)計本系統(tǒng)共有三個獨立工作的步進電機,分別是控制進/出倉的步進電機,控制翻票據(jù)的步進電機和控制頁碼字輪旋轉(zhuǎn)的步進電機,各個步進電機的功率不同,因此選用了三個步進電機控制器。但是三個步進電機不同時工作,因此可以共用一個方向控制線。其具體電路圖如圖10所示。圖10步進電機控制電路圖3.3功能鍵盤接口電路設(shè)計本系統(tǒng)的功能鍵盤設(shè)計采用的是獨立式鍵盤結(jié)構(gòu),并設(shè)計了蓋章和打印頁碼的工作指示燈,具體電路如圖11所示。 圖11系統(tǒng)功能鍵盤電路圖其中S1為進/出倉功能鍵,S2為蓋章功能鍵,S3為打印頁碼功能鍵,S4為取消功能鍵,S5為復位功能鍵。綠色發(fā)光二極管D5為蓋章工作指示燈,紅色發(fā)光二極管D6為蓋章結(jié)束指示,綠色燈發(fā)光二極管D7為打印頁碼工作指示燈,紅色發(fā)光二極管D8為打印頁碼結(jié)束指示燈。3.4位置傳感器接口電路設(shè)計本設(shè)計的位置傳感器采用了由發(fā)光二極管和光敏二極管組成的電路來實現(xiàn),它們分別位于被探測的物體的兩側(cè)。其工作原理框圖如圖812所示。 圖12 傳感器工作原理框圖光敏二極管是利用硅結(jié)受光照后產(chǎn)生光電流的一種光電器件,光敏二極管使用時要反向接入電路中,即正極接電源負極,負極接電源正極。系統(tǒng)工作時,發(fā)光二極管通電發(fā)出可見光,當沒有物體遮擋時,高靈敏度光敏二極管接收可見光,使得自身阻值變小,電路輸出邏輯低電平到AVR單片機;當有物體遮擋時,高靈敏度光敏二極管無法接收可見光,使得自身阻值增大,電路輸出邏輯高電平到AVR單片機。單片機通過高低電平來判斷有無遮擋物,進而判斷物體的位置。其具體的電路圖如圖13所示。 圖 13 傳感器的電路原理圖其中發(fā)光二極管D2和電阻R1組成發(fā)光電路,為傳感器提供光源;電阻R5和光敏二極管D3組成光電接收和邏輯轉(zhuǎn)換電路,為AVR單片機提供邏輯電平的輸入。其它的6個 傳感器的構(gòu)成和工作原理與該電路完全相同,在圖8和圖10中進行了省略,實際系統(tǒng)中共有7個這種傳感器。3.5固態(tài)繼電器接口電路設(shè)計本系統(tǒng)的三個固體繼電器接口電路有兩種用途,其中的兩個分別用來驅(qū)動蓋章和打印頁碼的電磁擊打錘,另外一個用來驅(qū)動抓票據(jù)所用的機械手。其接口電路如圖814所示。不同型號的固體繼電器的輸入驅(qū)動電流不同,為了保護單片機,減少其功耗,在單片機輸出引腳增加了功率放大的74LS04,用它的輸出來驅(qū)動固體繼電器。4 系統(tǒng)程序系統(tǒng)程序給出了地稅局自動蓋章系統(tǒng)的軟件,包含頭文件及各種變量的定義,鍵盤掃描函數(shù),蓋章函數(shù),打印頁碼函數(shù),以及中斷復位函數(shù),初始化函數(shù)和主程序。4.1 頭文件及全局變量定義#include <io8535v.h>#include <macros.h>#define unsigned int uint#define unsigned char uchar/管腳功能#define SIGN_ON PD0 /PD0 蓋章工作指示燈輸出管腳#define SIGN_OFF PD1 /PC7 蓋章結(jié)束指示燈輸出管腳#define PRINT_ON PD3 /PD3 打印頁碼工作指示燈輸出管腳#define PD4 PRINT_OFF /PD4 打印頁碼結(jié)束指示燈輸出管腳#define PC7 M1_pulse /PC7 裝票電機脈沖輸出管腳#define PC6 M2_pulse /PC6 行走電機脈沖輸出管腳#define PC5 M3_pulse /PC5 字輪電機脈沖輸出管腳#define PC4 M_DIR /PC4 電機方向輸出管腳#define PC3 SIGN_ACT /PC3 蓋章?lián)舸螂姶盆F輸出管腳#define PC2 PRINT_ACT /PC2 字輪擊打電磁鐵輸出管腳#define PC1 GRASP_ACT /PC1 抓紙機械手輸出管腳#define PB6 SONSOR_6 /PB6 行走右傳感器#define PB5 SONSOR_5 /PB5 行走左傳感器#define PB4 SONSOR_4 /PB4 字輪傳感器#define PB3 SONSOR_3 /PB3 紙傳感器#define PB2 SONSOR_2 /PB2 后傳感器#define PB1 SONSOR_1 /PB1 中傳感器#define PB0 SONSOR_0 /PB0 前傳感器#define PA2 KEY_2 /PA2 打印頁碼鍵#define PA1 KEY_1 /PA1 蓋章鍵#define PA0 KEY_0 /PA0 裝票鍵bit keydown, cancelflag;unsigned int u;;unsigned char i,j, x,y,k,m,n,funkeynum,r_step,b,c, void cancel() interrupt 0 cancelflag=1; /功能鍵掃描void funkeyscan() keydown=0; funkeynum=3; if(KEY_0=0) Delayl(10); if(KEY_0=0) funkeynum=0; keydown=1; /PA0 裝票 if(KEY_1=0) Delayl(10); if(KEY_1=0) funkeynum=1; keydown=1; /PA1 蓋章 if(KEY_2=0) Delayl(10); if(KEY_2=0) funkeynum=2; keydown=1; /PA2 打碼void delays(uint j) uint i; for(i=0;i<j;i+) ; void delay1(unsigned int j) uint i; for(i=0;i<j;i+) uint l;for(l=0;l<1000;l+); void pulsezhuangpiao() /裝票頻率 delays(45); /裝票周期45 M1_pulse=1; /Pc7=1 delays(45); /裝票周期45 M1_pulse=0; /Pc7=0void pulsexingzou() delays(35); /行走周期35 M2_pulse=1; /Pc6=1 delays(35); /行走周期35 M2_pulse=0; /Pc6=0void pulsezilun() /字輪電機脈沖 delays(55); /字輪電機周期35 M3_pulse=0; /Pc5=0 delays(55); /字輪電機周期35 M3_pulse=1; /Pc5=1 void print_act() PRINT_ACT=1; delay1(5); /打字電磁鐵打下時間延時20(*1000) PRINT_ACT=0; delay1(20); /打字電磁鐵上升時間延時20(*1000)void sign_act() SIGN_ACT=1; delay1(20); /蓋章電磁鐵打下時間延時20(*1000) SIGN_ACT=0; delay1(20); /蓋章電磁鐵上升時間延時20(*1000)void num_step() M_DIR=0; /反轉(zhuǎn) for(u=0;u<40;u+) /行走電機距離即字間距40 pulsexingzou(); void reverse_step() unsigned int i; for(i=0;i<350;i+) /居中以后再走100吸紙 M_DIR=0; /反轉(zhuǎn) pulsexingzou(); GRASP_ACT=1; /吸紙 while(SONSOR_5=0) /等待開關(guān) M_DIR=0; /反轉(zhuǎn) pulsexingzou(); void forward_step() GRASP_ACT=0; /不吸紙 while(SONSOR_6=0) /等待開關(guān) M_DIR=1; /正轉(zhuǎn) pulsexingzou(); M_DIR=0; /反轉(zhuǎn) for(u=0;u<400;u+) /行走電機居中 pulsexingzou(); GRASP_ACT=0; /放紙void judge1() /判斷字輪正反轉(zhuǎn) if(b>10)r_step=(20-b)*12; M_DIR=1; else r_step=b*12; M_DIR=0; void judge2() /判斷字輪正反轉(zhuǎn) if(b>10)r_step=(20-b)*12; M_DIR=0; else r_step=b*12; M_DIR=1; void motorxizhi() reverse_step(); u=0; delay1(5); /吸紙延時10*(1000) while(SONSOR_6=0) /等待開關(guān) M_DIR=1; /往右轉(zhuǎn) u+; pulsexingzou(); if(u=380) GRASP_ACT=0; /抓紙機械手往右走380步放紙 void motor3qianzou() M_DIR=1; /方向 while(SONSOR_0=0) /前傳感器 pulsezhuangpiao(); /承票板往前走 void motor3houzhong() uchar e; while(SONSOR_1=0) /中傳感器 M_DIR=0; /方向 pulsezhuangpiao(); /承票板往hou走 for(e=0;e<55;e+) /修正位置誤差55 M_DIR=0; /方向 pulsezhuangpiao(); /承票板往hou走 void motor3houzou() M_DIR=0; /方向while(SONSOR_2=0) /后傳感器 pulsezhuangpiao(); /承票板往hou走void motor30()motor3qianzou();motor3houzhong();void motor3qianzhong() M_DIR=1; /方向 while(SONSOR_1=0) /中傳感器 pulsezhuangpiao(); /承票板往前走 for(i=0;i<20;i+) pulsezhuangpiao();void motor1_fuwei() reverse_step(); COM8255=0x03; /正空蹦不動作 delay1(5); while(SONSOR_6=0) /等待開關(guān) M_DIR=1; /正轉(zhuǎn) pulsexingzou(); M_DIR=0; /反轉(zhuǎn) /以上程序初始定位void motor2_fuwei() M_DIR=0; while(SONSOR_4=0) /字輪光電傳感器 pulsezilun(); void motor12_dama()unsigned char k=0,p;/n,while(SONSOR_3=0) /紙張結(jié)束標志位為0時循環(huán)執(zhí)行 for(u=0;u<150;u+) M_DIR=0; pulsexingzou(); /電機進入打印位置 motor2_fuwei(); /字輪復位 p=0; if(k<10) b=k+k; judge1(); for(u=0;u<r_step;u+) /字輪電機轉(zhuǎn)到打印位置 pulsezilun(); print_act(); else b=k/10+k/10; /取整的yushu judge1(); for(u=0;u<r_step;u+) /字輪電機轉(zhuǎn)到打印位置 pulsezilun(); print_act(); num_step(); p=2*(k%10); /取整的值 if(p>b) b=p-b; judge1(); else b=b-p; judge2(); for(u=0;u<r_step;u+) /字輪電機轉(zhuǎn)到打印位置 pulsezilun(); print_act(); k+; motorxizhi(); if(cancelflag=1) goto OUT2; OUT2: cancelflag=0; for(u=0;u<450;u+) M_DIR=0; pulsexingzou(); void motor30()uint i;for(i=0;i<350;i+) /居中以后再往左走100吸紙 M_DIR=0; /反轉(zhuǎn) pulsexingzou(); GRASP_ACT=1; /吸紙 while(SONSOR_5=0) /等待開關(guān) M_DIR=0; /反轉(zhuǎn) pulsexingzou(); M_DIR=1; /往右轉(zhuǎn) for(u=0;u<500;u+) /往右走的脈沖個數(shù)500 pulsexingzou(); GRASP_ACT=1; /行走電機居中 motor3qianzou();void motorjuzhong() for(u=0;u<450;u+) M_DIR=0; pulsexingzou(); void motorgaizhang() while(SONSOR_3=0) /紙張結(jié)束標志位為1時循環(huán)執(zhí)行 motor3houzou(); sign_act(); motor3qianzhong(); motorxizhi(); motorjuzhong(); if(cancelflag=1) goto OUT3; OUT3: cancelflag=0;void main(void)begin: cancelflag=0; SIGN_ACT0; /蓋章?lián)舸螂姶盆F1吸起 PRINT_ACT0; /打印頁碼擊打電磁鐵2吸起 GRASP_ACT0; /抓紙機械手不動作forward_step(); /翻頁步進電機復位motor3houzou(); /承票板往后走 motor3qianzhong(); /承票板往中間走進行復位IT1 = 0; /設(shè)外部中斷1為低電平觸發(fā)EA = 1; /開中斷EX1 = 1; /開中斷1do do funkeyscan(); while(keydown=0); switch(funkeynum)case 1 : /裝票操作 motor3(); break; case 3 : /蓋章motor30(); /裝票 wait1: while(KEY_1!=0); while(KEY_1=0) DelayMs(50); if(KEY_1=0) motor3houzhong(); else goto wait1; SIGN_ON0; SIGN_OFF1; /蓋章進行中指示燈亮 motor3houzou();motorgaizhang(); / 蓋章 motor3qianzhong(); SIGN_ON1; SIGN_OFF0; /蓋章結(jié)束指示燈亮break;case 3 : /打印頁碼 motor30(); /裝票wait2: while(KEY_2!=0); while(KEY_2=0) DelayMs(50); if(KEY_2=0) motor3houzhong(); else goto wait2; PRINT_ON0; PRINT_OFF1; /打印頁碼進行指示燈亮 motor1_fuwei(); motor12_dama(); /打印頁碼 PRINT_ON1; PRINT_OFF0;/打印頁結(jié)束指示燈亮break;while(1);5系統(tǒng)集成與調(diào)試地稅局自動蓋章系統(tǒng)的測試主要有以下幾部分:電源的測試、傳感器電路的測試、電機驅(qū)動電路的測試、電磁擊打錘電路的測試和鍵盤電路的測試。對電機驅(qū)動電路的測試應編寫相應的測試程序,其它電路單元的測試應該以硬件電路調(diào)試為主。5.1.電機驅(qū)動電路的測試根據(jù)圖710所設(shè)計的步進電機驅(qū)動電路,在硬件電路焊接完成之后,可以編制如下的測試程序,對步進電機單元進行測試。測試的目的是為了調(diào)試電機的轉(zhuǎn)速以符合實際工作狀況的需要。#include <io8535v.h>void delay( int j ) int i; for(i=0;i<j;i+) /步進電機轉(zhuǎn)速周期j ; void pulse() delay(35);Pc6=1; /Pc5=1;/Pc4=1; delay(35);Pc6=0; /Pc5=0;/Pc4=0;main() int i;while(1) Pc3=1; /正轉(zhuǎn) for(i=0;i<200;i+) /正轉(zhuǎn)200個脈沖 pulse(); Pc3=0; /反轉(zhuǎn) for(u=0;u<200;u+) /反轉(zhuǎn)200個脈沖 pulse();