高級組三等獎_第1頁
高級組三等獎_第2頁
高級組三等獎_第3頁
高級組三等獎_第4頁
高級組三等獎_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

智能控制設(shè)計大乒乓球吹風(fēng)定位 所在單南理工大自動化學(xué)院07(3)作者:自動羅家自動黎振自動……………一、方案論證與比 44555溫度補(bǔ)償部分 電機(jī)驅(qū)動部分 二、系統(tǒng)的具體設(shè)計及實 系統(tǒng)總框圖 硬件設(shè)計 128*64液晶屏顯示設(shè)計 4*4鍵盤及獨(dú)立鍵盤設(shè)計 電機(jī)及其驅(qū)動設(shè) 超聲波測量設(shè)計 溫度測量設(shè)計 語音播報設(shè)計 軟件設(shè)計 主程序流 鍵盤程序流程 液晶顯示及通信 測溫程序流程 語音播報程序流程 三、測試、結(jié)果及分 基本功能 發(fā)揮功能部分 其他發(fā)揮部分 詳細(xì)的測試數(shù)據(jù) 四、總 附錄一完整的系統(tǒng)原理 附錄二完整的系統(tǒng)源代 乒乓球吹風(fēng):atmega1612864液晶顯示器,加上鼓風(fēng)機(jī)、電源、超聲波等模塊,實現(xiàn)了在鍵盤上控12864饋信號,單片機(jī)通過反饋綜合采用PID算法等方法對乒乓球高度進(jìn)行調(diào)整,以達(dá)到最佳的效果,此外還有溫度補(bǔ)償,語音提示,LED燈提示,紅外鍵盤等功:雙機(jī),PID設(shè)計任務(wù)與要一、設(shè)計任設(shè)計一個乒乓球吹風(fēng)。在高為1m,半徑略大于4cm的透明圓筒里二、設(shè)計要1.5cm1cm5mm一、方案論證與比控制器部方案ATmega16作為控制器。AVR51的升級版,具有速度(RISC可編程flash大,多種模式的波形輸出,級信號好的特點(diǎn),滿足AVR,還不太熟悉,價格比較方案二AT89S52作為控制器。優(yōu)點(diǎn):普遍使用,價格便宜;缺要控制電機(jī)電壓占空比,經(jīng)過比較,我們選用方案一。顯示部方案一LED顯示。優(yōu)點(diǎn):可視角度寬,價格便宜;缺點(diǎn):方案二1602液晶顯示。優(yōu)點(diǎn):價格一般,比較熟悉;缺點(diǎn):顯方案128*64液晶顯示模塊。128*64液晶可視面積大,界面美觀,能力強(qiáng),調(diào)用方便簡單,顯示內(nèi)容豐富;缺點(diǎn):并不熟悉,價鍵盤部 利用I/O口直接連接的獨(dú)立式鍵盤,每鍵都有相應(yīng)的I/O口方案二利用P1口接成4*4鍵盤。優(yōu)點(diǎn):利用8IO口得到16方案三2超聲波測距部方案一74ls04、cx20106aR、T方案二使用超聲波集成模塊。優(yōu)點(diǎn):性能穩(wěn)定,集成,體積小,精度可達(dá)到mm級,測量范圍適合;缺點(diǎn):對其內(nèi)部原理缺少了解,通過實驗驗證,方案一系統(tǒng)設(shè)計要求,故采用方案二溫度補(bǔ)償部線連接,節(jié)省I/O口,可測范圍包括日常溫度變化區(qū)間,且本系統(tǒng)設(shè)計對語音播報部我們選用應(yīng)用廣泛的ISD1700系列語音。該系列語音是一種該可以工作于獨(dú)立按鍵模式和SPI控制模式。內(nèi)部包含有自動增電機(jī)部 采用24V直流可調(diào)速鼓風(fēng)機(jī),該風(fēng)機(jī)風(fēng)力大,功率高,但其24V的電壓過高,所以電機(jī)工作電壓相距額定電壓較大; 電機(jī)驅(qū)動部方案一采用ULN2803管來驅(qū)動直流電機(jī),電路簡單易實現(xiàn),方案二采用L298N驅(qū)動集成電路,屬于H橋集成電路,與L293D的差別是其輸出電流增大,功率增強(qiáng)。其輸出電流為2A,最高電流4A,最50V,可以驅(qū)動感性負(fù)載,如大功率直流電機(jī),步進(jìn)電機(jī),減二、系統(tǒng)的具體設(shè)計及實系統(tǒng)總框1286412864Isd1700本乒乓球吹風(fēng)以mega16單片機(jī)為系統(tǒng)配合128*64液晶硬件設(shè)128*64液晶屏顯示設(shè)本系統(tǒng)采用電子公司出產(chǎn)的OCMJ4X8C128*64中文液晶模塊作2-2-22-2-2128*644*4鍵盤設(shè)8IO(P1)162-2-3圖2-2- 4*4鍵盤連接3.2.3機(jī)驅(qū)動模塊設(shè)L298N邏輯電平。如圖所示,IN1、IN2和IN3、IN4分別有四路光耦后,可以PA1與IN1、IN2連接控制電機(jī)的轉(zhuǎn)向,通過單片機(jī)產(chǎn)生相位修正加EN-A端對電機(jī)速度進(jìn)行控制。2.2.4聲波測距電在本系統(tǒng)中,我們使用超聲波集成模塊進(jìn)距。其工作原理如下:IO10us模塊自動發(fā)送8個40khz的自動檢測是否有信號IO溫度測量設(shè)在本系統(tǒng)中,我們還實現(xiàn)了溫度顯示的額外發(fā)揮部分。我們采用DS18B20DS18B20bDS18B20都有唯一的產(chǎn)品號(64位。d120.0625?C。eDS18B202-2-6所示。2-2-5DS18B20語音播報設(shè)ISD1700系列是Winbond推出的單片優(yōu)質(zhì)語音錄放電路,該提供多項新功能,包括內(nèi)置專利的多信息管理系統(tǒng),新信息提示。雙運(yùn)作模式(獨(dú)立&嵌入式以及可定制的信息操作指示音效內(nèi)部包的全方位整合系統(tǒng)功能。ISD17602-2-8所示。2-2-6ISD1760軟件設(shè)主程序流NNYN高度PIDN主單片機(jī)有數(shù)Y顯示測量高度及歷史曲Y曲線已到達(dá)最右NNY2-3-1鍵盤程序流程2-3-22-3-3NNY2-3-2測溫程序流DS18B202-3-ROMROMROM發(fā) 溫度命2-3-6DS18B20語音播報程序流ISD17602-3-72-3-7ISD1760三、測試、結(jié)果及分1.5CM1.5CM10實現(xiàn),乒乓球的高度在液晶顯示器描繪乒乓球高度變化歷史曲實現(xiàn),乒乓球的高度在液晶顯示器描繪乒乓球高度變化歷史曲線乒乓球高度控制精度達(dá)到5MM超聲波通過測量溫度液晶顯示器的歡迎界面和不同顯示模式切液晶顯示器開機(jī)時顯 E字樣的歡迎換測量高度和曲線以及全屏顯示歷史曲線之間切詳細(xì)的測試數(shù) 500mm500mm510mm500mm500mm500mm四、總本系統(tǒng)完成乒乓球吹風(fēng)的基本功能和發(fā)揮功能,采用128*64經(jīng)過本次設(shè)計,對mega功能以及其設(shè)備有了更次的理解。附錄12864附錄主程序:#include<iom16v.h>#include<macros.h>#defineucharunsignedchar#defineuint unsignedint #pragmainterrupt_handleruart_rx:12#pragmainterrupt_handlerzhongduanT2:4#pragmainterrupt_handlervoidvoiduart_sendB(uchardata);voidcompare_height(); 8 getpoint=0,setpoint,t=0,high_time,structPIDuintSetpoint;//設(shè)定目標(biāo)DesireduintProportion;ProportionalConstuintIntegral;//積分常數(shù)IntegralConstuintDerivative;//微分常數(shù)DerivativeuintLastError;//Error[-1]uintPrevError;//Error[-2]uintSumError;//SumsofErrorsstructPIDsPID;PIDControlStructureuintrout;//PIDResponse(Output)InitializePIDvoidPIDInit(structPID{memset(pp,0,sizeof(struct}PIDuintPIDCalc(structPID*pp,uintNextpoint{uintError=pp->Setpoint-Nextpoint;pp->SumError+=Error;dError=pp->LastError-pp->PrevError;pp->PrevError=pp->LastError;pp->LastError=Error;return(pp->Proportion*Error//+pp->Integral*pp- +pp->Derivative*dError); }//Timer2比較匹配中斷服務(wù),2msvoid LEDif(++key_stime_counter{key_stime_counter=key_stime_ok= //10ms}}//Timer0比較匹配中斷服務(wù),1msvoid{}}12304560789000#define char{staticcharkey_state=0,key_value,key_line;charkey_return=No_key,i;switch{casekey_line= for(i=1;i<=4; {PORTC= PORTC= 2(key_value=Key_mask& if(key_value==key_line<<= { }}case1:if(key_value==(Key_mask& {

switch(key_line| 0 case0b key_return=K1_1;case0b key_return=K1_2;case0b key_return=K1_3;case0b key_return=K1_4;case0b key_return=K2_1;case0b key_return=K2_2;case0b key_return=K2_3;case0b key_return=K2_4;case0b key_return=K3_1;case0b key_return=K3_2;case0b key_return=K3_3;case0b key_return=K3_4;case0b key_return=K4_1;case0b key_return=K4_2;case key_return=K4_3;case0b key_return=K4_4;} }抖處理

key_state 0(case2: //等待按鍵釋放狀態(tài)PORTC=0b //行線全部輸出低電平PORTC=0b //重復(fù)送一次if((Key_mask&PINC)== 0}return}voiddelay(uint{uinti,j;}}voiduart_init(uint{ 異步模式,止位,8baud=mclk/16/baud-1;

TX(很重要}voiduart_sendB(uchar{while(!(UCSRA&(1<<UDRE)))}void{}void{{if(sPID.Setpoint-{}elseif(sPID.Setpoint-{}elseif(sPID.Setpoint-{} if(sPID.Setpoint-{}elseif(sPID.Setpoint-{}elseif(sPID.Setpoint-{}elseif(sPID.Setpoint-{}elseif(sPID.Setpoint-{}elseif(sPID.Setpoint-{rout=PIDCalc(&sPID,getpoint);//PerformPIDInterationif(high_time<=27)}}else{//if(getpoint-if(getpoint-{}elseif(getpoint-{}elseif(getpoint-{}elseif(getpoint-{}elseif(getpoint-{}}}void{ PORTB= I/ODDRB=PORTA=DDRA=PORTC=DDRC=//T/C2(8M/128=62.5KHzCTCOCR0=//T/C0 (8M/64=125KHzCTC //OCR0= T/C2 //開放全局中斷TCCR1B=0X11;//片內(nèi)晶振8M,1分頻,頻率為10kHZ,存入OCR1A=400;//TOPPD5OCR1B=0;//PIDInit(&sPID);//InitializeStructuresPID.Proportion=0.8;//SetPIDCoefficientssPID.Integral=0.7;sPID.Derivative=sPID.Setpoint0;SetPIDSetpointSPI_inti();//spiwhile{if{key_stime_ok= //10mskey_temp= //盤if(key_temp!= if(key_temp==10)//{ T/C0SetPLAY(0x10,0x1F);//“開始”}else{TIMSK=0xC0;//T/C0比較匹配中斷setpointz[0]= //LEDsetpointz[1]=setpointz[2]=setpointz[3]=}{

setpointz[0]=setpointz[1];//左移一位setpointz[1]=setpointz[2];//左移一位setpointz[2]=setpointz[3]; //左移一位setpointz[3]=key_temp; //最右顯示新按下鍵}}}}{if(m==1)//接收到第二個八位二進(jìn)制數(shù)(超聲波測出的高度{getzone[0]=getzone[1];getzone[1]=rdata;}else//{getzone[1]=rdata;}}}}SPISPCRBIT7:SPIE_SPIBIT6:SPE_SPIBIT5:DORD數(shù)據(jù)次序(0-LSB,1-BIT4:MSTRBIT3:CPOL時鐘極性(起始:0-上升,1-下降)BIT2:CPHA(起始沿:0-采樣,1-設(shè)置)BIT0:SPR0時鐘速率選擇(00-1/4,01-1/16,10-1/64,11-BIT7:SPIF中斷標(biāo)志BIT0:SPI2XSPI(1-速度加倍#include"ISD1760.h"#defineucharunsignedchar#defineuintunsignedintucharSR0_L;ucharSR0_H;ucharSR1;voiddelay_ms(uinttt)//{unsignedcharj;}} 函數(shù)原型:void功能:ATmega128_SPIvoidSPI_inti(void){DDRB=0XB0;//SCKMOSISSMISO(AVRMOSIISD1700MOSI,AVRMISOISD1700SPCR=0x79;SPI,低位先出,SCKf/16SPSR=0X00;//不加速并且被用來同步MOSI和MISO端各自的數(shù)據(jù)輸入和輸出此管腳空閑時應(yīng)拉}函數(shù)原型:ucharISD_SendData(uchar*_ucharISD_SendData(ucharcom){PORTB&=~BIT(4);//SS;returnSPDR;//ISD1760}主函數(shù)voidmain()測試放/*void{SPI_inti();//spi//DDRB=0x07;PORTB=0x03;spi//SetPLAY(0x10,0x1F);//SetPLAY(0x1F,0x3D);////SetPLAY(0x3D,0x4D);//函數(shù)原型:voidvoid{ISD_SendData(0x52);ISD_SendData(0x00);}函數(shù)原型:voidvoid{ISD_SendData(0x58);}函數(shù)原型:voidvoid{}函數(shù)原型:void功能:void{ucharAPCH,APCL;delay_ms(10);10msSR0_L=ISD_SendData(RD_APC);SR0_H=ISD_SendData(0x00);APCL=ISD_SendData(0x00);APCH=ISD_SendData(0x00);delay_ms(10);}函數(shù)原型:ucharuchar{ucharID;delay_ms(10);10msSR0_L=ISD_SendData(RD_DEVID);SR0_H=ISD_SendData(0x00);ID=ISD_SendData(0x00);}函數(shù)原型:voidvoid{delay_ms(50)}函數(shù)原型:voidvoid{delay_ms(10);}函數(shù)原型:voidvoid{ //SBUF=RD_DevID();// 1760為}函數(shù)原型:voidSetREC(uchar功能:定點(diǎn)/*void{ucharAdd_ST_H,Add_ST_L,Add_ED_H,Add_ED_L;ISD_SendData(Add_ST_L);//S7:S0ISD_SendData(Add_ST_H);//S10:S8ISD_SendData(Add_ED_L);//E7:E0ISD_SendData(Add_ED_H);//E10:E8delay_ms(10);函數(shù)原型:voidSetPLAY(uchar功能:定點(diǎn)voidSetPLAY(ucharAdd_ST_L,ucharAdd_ED_L){ucharAdd_ST_H,Add_ED_H;ISD_SendData(Add_ST_L);//S7:S0開始地址ISD_SendData(Add_ST_H);//S10:S8ISD_SendData(Add_ED_L);//E7:E0結(jié)束地址ISD_SendData(Add_ED_H);//E10:E8delay_ms(10);}*函數(shù)類型:void*從當(dāng)前開始void{}*函數(shù)類型:void*APCvoid{}*函數(shù)類型:void*當(dāng)前端語void{}函數(shù)原型:voidvoid{}函數(shù)原型:voidvoid{}函數(shù)原型:void功能:狀void{delay_ms(10);SR0_L=ISD_SendData(RD_STATUS);SR0_H=ISD_SendData(0x00);SR1=ISD_SendData(0x00);}函數(shù)原型:void功能:狀態(tài)寄存器,當(dāng)前地址和指針void{uchar}函數(shù)原型:voidvoid{delay_ms(10);}函數(shù)原型:voidvoid{delay_ms(10);}#defineucharunsignedchar#defineuintunsignedint#definePU0x01#defineSTOP0x02 PLAY0x40 #defineRESET0x03#defineCLI_INT0x04#defineRD_STATUS0x05#defineRD_PLAY_PTR0x06#definePD0x07#defineRD_REC_PTR#defineRD_DEVID0x09#defineG_ERASE0x43#defineRD_APC0x44#defineWR_APC10x45#defineWR_APC20x65#defineWR_NVCFG0x46#defineCHK_MEM0x49#defineSET_PLAY0x80#defineSET_REC0x81#defineSET_ERASE0x82voidErase_All(void);voidClrInt(void);voidISD_RD_PLAY_PTR(void);voidRdStatus(void);voidISD_PD(void);voidISD_PU(void);voidISD_PLAY(void);voidISD_WR_APC2(void);voidISD_REC(void);voidSetPLAY(ucharAdd_ST_L,ucharAdd_ED_L);voidSetREC(void);voidISD_Init(void);voidISD_WR_NVCFG(void);voidISD_Reset(void);ucharRD_DevID(void);voidRdAPC(void);voidISD_STOP(void);voidISD_FWD(void);voidISD_ERASE(void);超聲波與液晶顯示模塊(從單片機(jī)#defineuintunsignedint#defineucharunsignedchar //CLCDI/O#defineLCD_DATA_DDR #defineLCD_DATA_PIN #define PORTD//DLCD#define 45E645E67//#define //按鍵輸//#definekey_state_0//#definekey_state_1//#definekey_state_2#define#define//LCD:R/S=//LCD:=#define//LCD:R/W1#define //R/W=#defineSET_LCD_E //LCD:E=1#defineCLR_LCD_E //LCD:E=0#define //LCD:=#define //LCD:= #pragmainterrupt_handleruart_rx:12ucharrdata,flag=0;uchar//uchargetpointz[4]={0,0,0,0};uchargetpointz[2]={0,0};uint//uint//ucharvoidCheckbusy(void);voidLCD_init(void); mond(unsignedcharscmd);voidSend_Data(unsignedcharDData);voidWriteTextLCD(uchar*TxtData);voidlocate(ucharh,ucharvoidST7920_ClearGDRAM(void);ucharRead_data(void);voidsu void#pragmainterrupt_handler//#pragma ucharname1[]給定高度ucharname2[]測定高度//ucharname3[]= //ucharname4[]現(xiàn)切換至全//ucharname5[]屏波形顯示void //1us{}void_delay_us(unsignedint //Nus{unsignedinti=0;for}voiddelay(uint //{uinti,j;}}void //{uinti;}void //{uchar //PB0 {}{} //再次溫da=1073-/*if(da>=0)}void{ //8MHz}void{}void{mond(0x30);功能設(shè)定 mond(0x06);進(jìn)入模式設(shè)置,光標(biāo)右移mond(0x01);}voidCheckbusy(void)//{ {} mond(unsignedcharscmd)//{ }voidSend_Data(unsignedcharDData)//{ }ucharRead_data(void)//{uchar //D/I=1 // //當(dāng)前顯示的數(shù)return}voidlcd_set_dot(ucharx,uchary)//{ucharx_byte,x_bit;uchary_byte,y_bit;uchartmph,tmpl;mond(0x80+y_bit);mond(0x80+x_byte+8* //tmph=Read_data(); //讀tmpl=Read_data();mond(0x80+mond(0x80+x_byte+8*if(x_bit //x_bit{Send_Data(tmph|(0x01<<(7- //而GDRAM //}{ Send_Data(tmpl|(0x01<<(15-x_bit)));} // //ST7920的}voidlcd_set_line(ucharx0,uchary0,ucharx1,uchary1)//{intintdx,dy; ints1,s2,status,i;dx=x1-x0;if(dx>= //Xs1= //Xs1=-dy=y1- //Yif(dy>=s2=s2=-Dx=abs(x1-x0); Dy=abs(y1-y0);if(Dy> //45Ystatus=1,temp=Dx=Dy=status=}status=subDyDy //1for(i=0;i<Dx;i{ if(sub>=0){if(status==1) //Y軸區(qū),x1x0+=s1; //X軸區(qū),y1y0+=s2;subDx //}if(status==y0+=x0+=sub+=Dy+}}voidlocate(ucharh,ucharv)//{{casecase2:case3:case4:

//V //Vmond(0x88+v-1);//Vmond(0x98+v-1);//V}}{ //{Send_Data(*TxtData);8}}void //{uchar //i={{}}i={{}} //}voiddis_data(uintk)//{uinti,j,l,m;{}{}{}{}}voidport_int(void)//IO{LCD_DATA_DDR=0xFF;//A口輸出 //A口輸出高電平LCD_CONTROL_DDR=0xF9;//D口輸出}voiddisplay_int(void)//{}voiduart_init(uint{ 異步模式,止位,8baud=mclk/16/baud-1

校驗,1接收、發(fā)送使 //TX為輸出(很重要}voiduart_sendB(uchar{while(!(UCSRA&(1<<UDRE)))}void{/*setpointz[0]=setpointz[1];//左移一setpointz[1]= //左移一setpointz[2]= //左移一setpointz[3]=rdata; //setpointz[3]}/*void{

TCCR0 //(8M/64=125KHzCTCTCNT0=OCR0= //OCR0=TIMSK= //T/C0 {

/*uchar{staticcharkey_state=charkey_press,key_return=key_press //I/Oswitch{case /

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論