




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 電子發(fā)燒友 電子技術(shù)論壇畢業(yè)實習(xí) 畢業(yè)設(shè)計 畢業(yè)論文 題 目: 基于AVR單片機的 步進電機控制器設(shè)計 年 級: 2005級 專 業(yè): 機電一體化技術(shù) 姓 名: 學(xué) 號: 指導(dǎo)教師: 日 期: 黑龍江大學(xué)職業(yè)技術(shù)學(xué)院制摘 要介紹了步進電動機的發(fā)展史,及國內(nèi)的現(xiàn)狀和步進電動機未來的應(yīng)用前景。并且闡述了步進電動機轉(zhuǎn)速、角度、轉(zhuǎn)矩的控制原理。本文闡述了一種步進電機控制器的設(shè)計方案,并繪制了原理圖和PCB板圖,撰寫了程序源代碼。實現(xiàn)了對步進電動機轉(zhuǎn)速、角度的控制,并完成了實物的制作。這期間主要使用protel99se軟件繪制原理圖和制板,使用proteus7.1軟件進行程序代碼的仿真和功能的理論驗證
2、。最后通過硬件的調(diào)試驗證程序代碼的實際功能,完成對控制器的設(shè)計。關(guān)鍵詞AVR單片機;步進電動機;控制器。AbstractIntroduction step enter electric motor of development history, and local present condition and step enter electric motor future of application foreground.And elaborated a step to enter electric motor to turn soon, angle, turn Ju of control
3、principle.This text elaborated a kind of step enter electrical engineering controller of design project, and drew principle diagram and PCB plank diagram, composed a procedure source a code.Realization to step enter the electric motor turn soon, angle of control, and completion real object of creati
4、on.This period main usage the protel 99 se the software draw principle diagram and make plank, usage proteus 7.1 softwares carry on an imitate of procedure code true with the theories of the function verification.The end experiment certificate procedure a code through an adjust of hardware of actual
5、 function, completion design controller.Key wordsAVR MCU; Stepper Motor; Controller. II目 錄摘要Abstract第一章、引言11.1步進電機發(fā)展史11.2我國步進電機發(fā)展11.3步進電機應(yīng)用的前景1第二章、步進電機控制系統(tǒng)22.1步進電機控制系統(tǒng)22.2控制單元22.3驅(qū)動電路22.4通信端口32.5其它3第三章、Atmega16L單片機43.1 Atmega16L主要功能43.2 Atmega16L引腳功能4第四章、控制器電路圖6第五章、步進電動機原理與控制85.1步進電動機的結(jié)構(gòu)85.2步進電動機的控制
6、原理85.3 L297/L298 85.3.1 L297芯片簡介 85.3.2 L298芯片簡介 95.3.3 L297298步進電機控制95.3.4控制機制 10第六章、實現(xiàn) 116.1 main主程序流程圖116.2程序代碼 12第七章、結(jié)構(gòu)圖30結(jié)論31參考文獻32致謝33附錄34基于AVR單片機的步進電機控制器第一章、引 言1.1步進電機發(fā)展史步進電機又稱電動機或階躍電動機,國外一般稱為 Step motor或Stepping motor 等。步進電機的機理是基于最基本的電磁鐵作用,其原始模型起源于1830年至1860年間。1870年前后開始以控制為目的的嘗試,應(yīng)用于氬弧燈的電極輸送機
7、構(gòu)中。這被認為是最初的步進電動。此后,在電話自動交換機中廣泛使用了步進電動機。不久又在缺乏交流電源的船舶和飛機等獨立系統(tǒng)中廣泛使用。20世紀60年代后期,隨著永磁性材料的發(fā)展,各種實用性步進電動機應(yīng)運而生,而半導(dǎo)體技術(shù)的發(fā)展則推進了步進電動機在眾多領(lǐng)域的應(yīng)用。在近30年間,步進電動機迅速地發(fā)展并成熟起來。從發(fā)展趨向來講,步進電動機已經(jīng)能與直流電動機、異步電動機,以及同步電動機并列,從而成為電動機的一種基本類型。1.2我國步進電機發(fā)展我國步進電動機的研究及制造起始于本世紀50年代后期。從50年代后期到60年代后期,主要是高等院校和科研機構(gòu)為研究一些裝置而使用或開發(fā)少量產(chǎn)品。這些產(chǎn)品以多段結(jié)構(gòu)三相
8、反應(yīng)式步進電動機為主。70年代初期,步進電動機的生產(chǎn)和研究有所突破。除反映在驅(qū)動器設(shè)計方面的長足進步外,對反應(yīng)式步進電動機本體的設(shè)計研究發(fā)展到一個較高水平。70年代中期至80年代中期為成品發(fā)展階段,新品種高性能電動機不斷被開發(fā)。自80年代中期以來,由于對步進電動機精確模型做了大量研究工作,各種混合式步進電動機及驅(qū)動器作為產(chǎn)品廣泛利用。13步進電機的應(yīng)用前景目前,隨著電子技術(shù)、控制技術(shù)以及電動機本體的發(fā)展和變化,傳統(tǒng)電機分類間的界面越來越模糊。步進電機必然會成為機電一體化元件組件的必然趨勢。由于步進電機具有控制方便、體積小等特點,所以在數(shù)控系統(tǒng)、自動生產(chǎn)線、自動化儀表、繪圖機和計算機外圍設(shè)備中得
9、到廣泛應(yīng)用。微電子學(xué)的迅速發(fā)展和微型計算機的普及與應(yīng)用,為步進電動機的應(yīng)用開辟了廣闊前景,使得以往用硬件電路構(gòu)成的龐大復(fù)雜的控制器得以用軟件實現(xiàn),既降低了硬件成本又提高了控制的靈活性,可靠性及多功能性。市場上有很多現(xiàn)成的步進電機控制機構(gòu),但價格都偏高。應(yīng)用SGS公司推出的L297和L298兩芯片可方便的組成步進電機驅(qū)動器,并結(jié)合Atmega16L單片機可以構(gòu)成很好的步進電機控制系統(tǒng)。 第二章、步進電機控制系統(tǒng)2.1步進電動機控制系統(tǒng)步進電動機本體、步進電動機驅(qū)動電路和控制單元構(gòu)成步進電動機系統(tǒng)不可分割的三大部分。系統(tǒng)框圖見下圖2-1:圖2-1步進電動機系統(tǒng)框圖22 控制單元控制單元 、驅(qū)動電路
10、為控制系統(tǒng)的核心部分??刂茊卧钦麄€系統(tǒng)最核心的部分,是系統(tǒng)的指揮中心。用于協(xié)調(diào)各部分的運行,主要負責(zé)接收通信端口或輸入電路送來的信息,并對其進行識別,譯碼,并做出相應(yīng)的動作,發(fā)出控制信號用以控制步進電動機??刂茊卧獙嵸|(zhì)上是具有處理能力的微處理器芯片??刂茊卧梢杂桑簡纹瑱C、DSP、PLC等充當(dāng)。本文選用由ATEML公司生產(chǎn)的Atmega16l單片機。23驅(qū)動電路 驅(qū)動電路是負責(zé)將控制單元送來的微電流信號進行放大用以驅(qū)動步進電動機運轉(zhuǎn),驅(qū)動電路實質(zhì)上是功率放大器。 常見的驅(qū)動電路:單電壓型功放電路、高低壓切換型功放電路、斬波恒流功放電路等再就是采用專用的集成芯片。本文采用L297/L298芯片
11、,由這兩種芯片構(gòu)成的驅(qū)動電路具有控制方便、精度高、并且不需要外圍擴展。 24通信端口 通信端口是步進電機控制器與上位機(主要是指計算機)進行通信的接口,PC機串口采用的通信標準RS-232標準。使用單片機的USART端口與計算機的串口(9芯)相連進行通信。25其它顯示屏:人機交互的窗口,使用JHD162A液晶屏。輸入電路:用于輸入控制信息,告訴控制器如何運轉(zhuǎn)。第三章、Atmega16L單片機Atmega16L是由ATMEL公司生產(chǎn)的高性能、低功耗的 8 位AVR® 微處理器芯片,具有16KB 系統(tǒng)內(nèi)可編程 Flash。3.1 Atmega16L主要功能Atmega16L單片機的功能及
12、特點簡述如下: 1、16KB的系統(tǒng)內(nèi)編程flash、512B的EEPROM、1KB的SRAM; 2、四通道的PWM; 3、兩個可編程串行USART; 4、可工作于主機/從機模式的SPI; 5、具有獨立片內(nèi)振蕩器的可編程看門狗定時器; 6、片內(nèi)/片外中斷源; 7、32個雙向I/O端口,可單獨控制; 8、TWI模塊;9、3個定時計數(shù)器等。3.2 Atmega16L引腳功能Atmega16L雙列直插式(PDIP)引腳如圖3-1:圖3-1 Atmega16L(PDIP)圖引腳功能簡述如下:A/VCC: 模擬/數(shù)字電源;AREF: A/D轉(zhuǎn)換參考電壓;XTAL1/2:晶振;RESET: 復(fù)位;AREF:
13、 A/D轉(zhuǎn)換參考電壓;PAPD: 雙向I/O口;TXD: USART輸出引腳;RXD: USART輸入引腳;OC1A: PWM波形輸出端;注:USART,是一個高度靈活的串行通訊設(shè)備,通用同步和異步串行接收器和轉(zhuǎn)發(fā)器的英文縮寫。第四章、控制器電路圖原理圖說明:本原理圖,用Protel99se繪制。以總路線和網(wǎng)絡(luò)標號連接,即相同的的網(wǎng)絡(luò)標號具有電氣連接。Jrs-RS-232串口;Rp-Vref調(diào)節(jié)電阻;LM2575-穩(wěn)壓片;JVCC-電源接入口(俗稱火牛頭);Jlcd-JHD162A液晶屏接口;JM-步進電機接線口;JTAG-仿真下載器連接口;LED_B-電源指示;MAX-202-電平轉(zhuǎn)換芯片;
14、L297/298-構(gòu)成相序產(chǎn)生電路和驅(qū)動電路;放大圖見附錄。第五章、步進電動機原理與控制從廣義上講,步進電動機的類型分為機械式、電磁式和組合式三大類型。5.1 步進電動機的結(jié)構(gòu)(圖5-1)圖5-1 HB型步進電動機結(jié)構(gòu)示意圖5.2 步進電動機的控制原理步進電機是一種將電脈沖信號變?yōu)橄鄳?yīng)的直流位移的數(shù)字/模擬變換器。每當(dāng)電機繞組接收一個脈沖時,轉(zhuǎn)子就轉(zhuǎn)過一個相應(yīng)的角度(步距)。步進電機的角位移量和輸入脈沖的個數(shù)嚴格成正比。在時間上與輸入脈沖同步,因而只要控制輸入脈沖的數(shù)量、頻率和電機繞組的相序,即可獲得所需要的轉(zhuǎn)速和轉(zhuǎn)動方向。5.3 L297/L2985.3.1 L297芯片簡介 L297芯片是
15、一種硬件環(huán)分集成芯片,它可產(chǎn)生四相驅(qū)動信號,用于兩相雙極或四相單極步進電動機的控制。它的心臟部分是一組譯碼器它能產(chǎn)生各種所需的相序,這一部分是由兩種輸入模式控制,方向控制(CW/CCW)和HALF/FULL,步進式時鐘CLOCK將譯碼器從一階梯推進至另一階梯。譯碼器有四個輸出點連接到輸出邏輯部分,提供抑制和斬波功能所需的相序。L297能產(chǎn)生三種相序信號,對應(yīng)于三種不同的工作方式:即半步方式(HALF STEP);基本步距(FULL STEP)一相激勵方式;基本步距兩相激勵方式。L297另一個重要組成是由兩個PWM斬波器來控制相繞組電流,實現(xiàn)恒流斬波控制以獲得良好的矩頻特性。5.3.2 L298
16、芯片簡介 L298芯片是一種高壓、大電流雙全橋式驅(qū)動器,其設(shè)計是為接受標準TTL邏輯電平信號和驅(qū)動電感負載的,例如繼電器、圓筒形線圈、直流電機和步進電機,具有兩抑制輸入來使器件不受輸入信號影響。每橋的三級管的射極是連接在一起的,相應(yīng)外接線端可用來連接外設(shè)傳感電阻??砂仓昧硪惠斎腚娫?,使邏輯能在低壓下工作。L298芯片是具有15個引出腳的多瓦數(shù)直插封閉的集成芯片。5.3.3 L297/298步進電機的控制L297/298的連接如下圖5-2:圖5-2 L297/298連接圖這里我只使用:半步工作方式和兩相激勵的基本步距工作方式。兩種工作方式見下表5-1:工作方式半步工作方式兩相激勵基本步距引腳狀態(tài)
17、HALF/FULL=1,CONTROL=1HALF/FULL=0,CONTROL=1輸出波形表5-1 L297半步/兩相激勵基本步距工作方式注:采用基本步距一相激勵,存在一個缺點,在電流切換過程即通電狀態(tài)改變過程中,有一瞬間可能所有的定子控制繞組都不通電,電磁轉(zhuǎn)矩瞬間為零,這就使得電磁轉(zhuǎn)距在電機運行中波動很大。所以我不采用這種工作模式。5.3.4 控制機制L297/298組成的完整系統(tǒng),通過不同的連接可以驅(qū)動兩相步進電動和驅(qū)動四相步進電機(可承受的最高電壓為45V,每相電流可達2A)。單片機(簡稱mcu)發(fā)出時鐘信號、正反轉(zhuǎn)信號、工作模式信號、復(fù)位信號、使能信號及控制信號。CW/CCW控制電機
18、的轉(zhuǎn)向,取1和取0時轉(zhuǎn)向相反。CLOCK為步進脈沖信號輸入端,在每一個脈沖的下降沿,電機產(chǎn)生一步步進。HALF/FULL為半步或基本步距模式設(shè)置,為1時是半步模式,為0時是基本步距。(具體組合方式見表5-1)CONTORL斬波控制,當(dāng)為0時,控制INH1和INH2;當(dāng)為1時控制ABCD。ENABLE使能輸入,當(dāng)為0時,INH1、INH2、A,B,C和D都為0。RESET輸入,當(dāng)為0時,脈沖分配器回到初狀態(tài)(HOME)。L297通過控制L298雙H集成電路,來驅(qū)動步進電機。電路中,L297的15引腳上的兩個電阻用來調(diào)節(jié)斬波器電路的參考電壓。該電壓通過管腳13、14所反饋的電位的大小比較,來確定是
19、否進行斬波控制,以達到控制電機繞組電流峰值、保護步進電機的目的。綜上所述:步進電機的轉(zhuǎn)速取決于CLOCK的脈沖頻率,角位移取決于CLOCK的脈沖個數(shù),轉(zhuǎn)矩大小則取決于參考電壓Vref的大小。第六章、實現(xiàn)6.1 main主程序流程圖6.2 程序代碼/*head.h*#ifndef _HEAD_H#define _HEAD_H #include<avr/io.h>#include<util/delay.h>#include<avr/interrupt.h>#include<avr/signal.h>#include<math.h>#def
20、ine TOP OCR1A#define PWMCONREG1 TCCR1A#define PWMCONREG2 TCCR1B#define PWM_IO DDRD|=_BV(PD5)#define L297_DIR PORTD#define L297_OUT DDRD|=0xfc#define RESET 0X40#define HF 0X08#define CC 0X10#define CONTROL 0X80#define S_RESET L297_DIR|=RESET#define C_RESET L297_DIR&=RESET#define HALF L297_DIR|=HF
21、#define FULL L297_DIR&=HF#define CW L297_DIR|=CC#define CCW L297_DIR&=CC#define S_CONTROL L297_DIR|=CONTROL#define C_CONTROL L297_DIR&=CONTROL#define ADC_OUT DDRA /ADC模數(shù)轉(zhuǎn)換寄存器宏#define ADCWAYREG ADMUX #define ADCCONREG ADCSRA#define ADCIOSFR SFIOR#define ADCDATL ADCL#define ADCDATH ADCH#de
22、fine ADCDAT ADC#define AD_EN ADEN#define AD_SC ADSC#define MODE1 1 /半步工作#define MODE2 2 /基本步距#define HALFMODESTR "HALF STEP MODE?" /工作方式字符串宏#define NORMALSTR "NORMAL MODE?"#define CORRECTSTR "correct?"#define MINUSTR "minus?"#define STRWAY1 "1.on-off mode
23、"#define STRWAY2 "2.dot-place mode"#define CORRECT '+'#define MINUS '-'#define SEI sei()#define CLI cli()#define OPEN_CMP1A TIMSK|=_BV(OCIE1A)#define CLOSE_CMP1A TIMSK&=_BV(OCIE1A)#define STEP 500#define N 50#define KEY_IN DDRC&=0X3C /KEY初始化宏定義#define KEY_PIN P
24、INC#define K1 KEY_PIN&0X01#define K2 KEY_PIN&0X02#define K3 KEY_PIN&0X40#define K4 KEY_PIN&0X80#define SET1 "1.Set frequency!"#define SET2 "2.Set mode!"#include"whole_variable.c"#include"key.c"#include"JHD162A.c"#include"ADC.c&qu
25、ot;#include"pwm.c"#include"L297.c"#include"interrupt_def.c"#endif/*head.h(結(jié)束)*/*whole_variable.c*unsigned long n,counter,topfix,vn,n1,n2,fre=1000,ps;unsigned char mode=1,direction='+',key_value,ch='1',key1_temp,key2_temp;unsigned char str_mode20="1.
26、wave_mode?",str_mode120="HALF STEP MODE?",str_mode220="correct?"unsigned char str_way20="1.on-off mode",pulse10="000000000",cursor_i,pulse_i,ky,adc_str5;/*whole_variable.c(結(jié)束)*/*key.c*#include"head.h"unsigned char key(void) unsigned char key_val
27、ue; key_value=(KEY_PIN&0XC3)0xc3; if(key_value) /是否有鍵按下,無返回'0',有進入 switch(key_value) case 0x01 : while(KEY_PIN&0XC3)0xc3) ; return '1' ; case 0x02 : while(KEY_PIN&0XC3)0xc3) ; return '2' ;case 0x40 : while(KEY_PIN&0XC3)0xc3) ; return '3' ;case 0x80 : w
28、hile(KEY_PIN&0XC3)0xc3) ; return '4' ; else return(0);/*key.c(結(jié)束)*/*JHD162A.c*#include"head.h"#define LCD_DIR DDRB /方向寄存器#define LCD_DAR PORTB /數(shù)據(jù)寄存器#define RS_H LCD_DAR|=0x04 /RS-PB2#define RS_L LCD_DAR&=0xfa #define E_H LCD_DAR|=0x08 /E-PB3#define E_L LCD_DAR&=0xf7voi
29、d e_h2l(void) E_H; /產(chǎn)生一個下降沿 _delay_us(2); /必須>=2us E_L;void lcd_send(unsigned char temp) LCD_DAR&=0X0F; /清高四位 LCD_DAR|=(temp&0XF0); /發(fā)送高四位 temp<<=4; e_h2l(); /產(chǎn)生下降沿 _delay_us(4); LCD_DAR&=0X0F; LCD_DAR|=temp; /發(fā)送低四位 e_h2l();void lcd_com(unsigned char comm) RS_L; /選擇指令寄存器 _delay_
30、us(20); lcd_send(comm);void lcd_data(unsigned char dat) RS_H; _delay_us(20); lcd_send(dat);void cursor_on(void) /開光標 lcd_com(0x0f) ;void cursor_off(void) lcd_com(0x0c);void cursor_control(unsigned char x,unsigned char y) unsigned char addr; addr=y>0?(0x80+0x40+x):(0x80+x) ; lcd_com(addr);void jhd
31、_init(void) LCD_DIR=0XFF; _delay_ms(16); /延時>=15ms lcd_com(0x22); _delay_ms(4.1); />=4.1ms e_h2l();_delay_us(100); />=100us e_h2l(); e_h2l(); lcd_com(0x28); lcd_com(0x0c); void display_char(unsigned char x,unsigned char y,unsigned char dat) unsigned char addr; addr=y>0?(0x80+0x40+x):(0x8
32、0+x) ; lcd_com(addr); lcd_data(dat);void display_str(unsigned char x,unsigned char y,unsigned char *dat) unsigned char addr; addr=y>0?(0x80+0x40+x):(0x80+x) ; lcd_com(addr); while(lcd_data(*dat+),*dat) ;void clear(void) /清屏子函數(shù) display_str(0,0," ");/*JHD162A.c(結(jié)束)*/*PWM.c*#include"h
33、ead.h"void PWM(unsigned pps) /脈沖控制函數(shù) counter=0; vn=0; topfix=1000000/pps; n1=(10000-topfix)/STEP+2)*(2*N) ; if(n<2*n1) display_str(0,0,"error! ") ; return ; n2=n-n1; TOP=10000; PWMCONREG1=0X41; /設(shè)置PWM模式 PWM_IO ; /置 PWM口為輸出(PD5) SEI; /使能全局中斷 OPEN_CMP1A; /使能輸出比較匹配A中斷 PWMCONREG2=0X11;
34、 /設(shè)置PWM模式 while(1) if(key_value=key()='4')&&!ky) PWMCONREG2=0; CLI; return ; else if(counter<n1) display_str(0,0,"move up.! ") ; else if(counter=n) display_str(0,0,"stop.! ") ; else if(counter>n2) display_str(0,0,"move down.! ") ; else display_str(
35、0,0,"isopluse.!") ; adcdisplay(); /*PWM.c(結(jié)束)*/*L297.c*#include"head.h"void double_half_mode1(void) /半步工作方式 HALF; S_CONTROL;void double_full_mode2(void) /兩相激磁基本步距 FULL; S_CONTROL;/on-off mode模式執(zhí)行子函數(shù)void L297_1(unsigned char mode ,char direction,unsigned pps) ky=0;n=0xffffffff;L29
36、7_OUT; S_RESET; switch(mode) /L297工作模式選擇 case 1: double_half_mode1(); break; case 2: double_full_mode2(); break; default : display_str(0,0,"mode error!"); switch(direction) /正反方向選擇 case '+': CW; break; case '-': CCW; break; default : display_str(0,0,"direction error!&q
37、uot;); PWM(pps);display_str(0,0," Stop! ");/ dot-place mode 模式執(zhí)行子函數(shù)void L297_2(unsigned char mode ,char direction,unsigned pps) ky=1; L297_OUT; S_RESET; switch(mode) /L297工作模式選擇 case 1: double_half_mode1(); break; case 2: double_full_mode2(); break; default : display_str(0,0,"mode err
38、or!"); switch(direction) /正反方向選擇 case '+': CW; break; case '-': CCW; break;default : display_str(0,0,"direction error!"); n=n*2; PWM(pps); /調(diào)用PWM函數(shù)/*L297.c(結(jié)束)*/*interrupt_def.c*#include"head.h"/*輸出比較匹配A中斷服務(wù)子程序*/SIGNAL(SIG_OUTPUT_COMPARE1A) /中斷服務(wù)程序 ,脈沖數(shù)、頻率控制)
39、 counter+; /脈沖計數(shù)器 vn+; /加速間隔 if(counter>=n)&&ky) PWMCONREG2=0; CLI; CLOSE_CMP1A; /是否達到/脈沖數(shù),是關(guān)閉TC、中斷 else if(counter<n1) /加速階段。 if(vn>2*N) TOP=(TOP-STEP)<=topfix)? topfix : TOP-STEP ; vn=0; else if(counter>n2)&&ky) /減速階段 if(vn>2*N) TOP=(TOP+STEP)>=10000)? 10000 :
40、TOP+STEP ; vn=0; /恒速階段/*interrupt_def.c(結(jié)束)*/*main.c*#include"head.h"void set_fre(void) /頻率設(shè)定子函數(shù) clear(); /清屏 display_str(0,0,"1000pps"); while(1) do key_value=key(); if(key_value='4') return ; while(!key_value) ;if(key_value='2') ch=(ch+1>=58)?'1':(ch+
41、1) ; fre=(fre+1000>=10000)?1000:(fre+1000); else if(key_value='3') ch=(ch-1<=48)?'9':(ch-1) ; fre=(fre-1000<=0)?9000:(fre-1000) ; display_char(0,0,ch); void change_mode(void) /模式選擇子函數(shù) clear(); /清屏 display_str(0,0,str_mode); while(1) do key_value=key(); if(key_value='4
42、9;) return; while(!key_value) ; if(key_value='2')|(key_value='3') if(!strcmp(str_mode,"1.wave_mode?") strcpy(str_mode,"2.direction?"); else if(!strcmp(str_mode,"2.direction?") strcpy(str_mode,"1.wave_mode?"); clear(); display_str(0,0,str_mode);
43、 void set_mode(void) /模式設(shè)定子函數(shù) if(!strcmp(str_mode,"1.wave_mode?") /"wave_mode"模式則進入,程序體執(zhí)行 clear(); display_str(0,0,str_mode1); while(1) do key_value=key(); if(key_value='4')key1_temp=0; return ; while(!key_value) ; if(key_value='2')|(key_value='3') if(!str
44、cmp(str_mode1,NORMALSTR) strcpy(str_mode1,HALFMODESTR); mode=MODE1; else if(!strcmp(str_mode1,HALFMODESTR) strcpy(str_mode1,NORMALSTR); mode=MODE2; clear(); display_str(0,0,str_mode1); else if(!strcmp(str_mode,"2.direction?") /否則,進入/ "direction"語句體執(zhí)行(接上注釋) clear(); display_str(0,
45、0,str_mode2); while(1) do key_value=key(); if(key_value='4') key2_temp=0; return ; while(!key_value) ; if(key_value='2')|(key_value='3') if(!strcmp(str_mode2,CORRECTSTR) strcpy(str_mode2,MINUSTR); direction=MINUS; else if(!strcmp(str_mode2,MINUSTR) strcpy(str_mode2,CORRECTSTR
46、); direction=CORRECT; clear(); display_str(0,0,str_mode2); void work_way(void) /工作方式選擇 clear(); display_str(0,0,"3.work_way?") ; while(key_value=key()!='4') ; /k4按下否,否等待按下,是向下運行 display_str(0,0,str_way); /"開關(guān)模式" while(1) do key_value=key(); if(key_value='4') return; while(!key_value) ; if(key_value='2')|(key_value='3') if(!strcmp(str_way,STRWAY1) strc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年山東省泰安市高二下學(xué)期7月期末數(shù)學(xué)試題(解析版)
- 2025屆貴州省銅仁市高三三模(4月模擬檢測)語文試題(解析版)
- 江蘇佳璽塑業(yè)有限公司年產(chǎn)50萬個防味止逆閥、10萬只鋁箔風(fēng)管項目環(huán)評資料環(huán)境影響
- 2025年秋三年級上冊語文同步教案 15 金色的草地
- 電瓶充電通知函
- 食堂中的飲食多樣性
- 作業(yè)范圍變更管理制度
- 例行核酸日常管理制度
- 供方年度評價管理制度
- 供暖維修人員管理制度
- 植物拓染教學(xué)課件
- 2025-2030年中國微電網(wǎng)行業(yè)市場深度調(diào)研及發(fā)展前景與投資研究報告
- 訪談保密協(xié)議書范本
- 通信故障應(yīng)急處理及恢復(fù)流程
- 網(wǎng)絡(luò)通信技術(shù)應(yīng)用 課件 2.11 DHCP協(xié)議與應(yīng)用
- 2023年5月全國事業(yè)單位考試聯(lián)考D類中學(xué)綜合應(yīng)用能力真題試題試卷答案解析
- 成人體外心肺復(fù)蘇專家共識更新(2023版)解讀
- 山東開放大學(xué)招聘筆試真題2024
- 集資買房協(xié)議書范本
- 蘭州大學(xué)《中國經(jīng)濟史》2023-2024學(xué)年第二學(xué)期期末試卷
- 【中興通訊】2025年AI RAN白皮書
評論
0/150
提交評論