無刷直流電機(jī)調(diào)速--C語言源程序-_第1頁
無刷直流電機(jī)調(diào)速--C語言源程序-_第2頁
無刷直流電機(jī)調(diào)速--C語言源程序-_第3頁
無刷直流電機(jī)調(diào)速--C語言源程序-_第4頁
無刷直流電機(jī)調(diào)速--C語言源程序-_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、附錄1. C語言源程序:#include"stdio.h"#include"myapp.h"#include"ICETEK-VC5502-EDU.h"#include"scancode.h"#include"lcd.h"#define CTRSTATUS (*(unsigned int * 0x608000 /port8000#define CTRLED (*(unsigned int * 0x608004 /port8004#define MCTRKEY (*(unsigned int * 0

2、x608005 /port8005#define CTRCLKEY (*(unsigned int * 0x608006 /port8006#define CTRMOTORBSPEED (*(unsigned int * 0x608003void InitMcBSP(;void INTR_init( void ;void InitForMotorB( void ;void showparameters(;void LCDPutString(unsigned int * pData,int x,int y,unsigned int nCharNumber,unsigned color;void

3、PIDControl(int rk,int yk;void PrintParameters(;/定時器分頻參數(shù)#define T100 99 / 100個時鐘周期中斷一次#define T2Hz 20000 / 20000個時鐘周期讀取速度一次/工作變量usigned int uWork,uN,nCount,nCount1,nCount2,nCount3,nCount4;int nSSS,nJSSpeed,pwm1;int md,wc;unsigned int nScreenBuffer30*128;float a=0.6f,b=0.2f,c=0.1f,duk;int ek,ek1,ek2,t

4、z;int nInput;unsigned int *www=(unsigned int *0x608003;Int m_nSpeed,m_bPCSet;/ 主函數(shù)main(unsigned char ccc;int speed100,sp,lj;float ljh;int i,w1,w2,w3;unsigned int uWork1;unsigned int bWork1,*pWork;int breakflage;/ 初始化工作變量for ( sp=0;sp<100;sp+ speedsp=0;for ( sp=0;sp<1024;sp+ nScreenBuffersp=0;s

5、p=nSSS=nCount=nCount1=nCount2=nCount3=nCount4=nJSSpeed=0;nInput=tz=wc =0;ek=ek1=ek2=0;uN=40;md=70;pwm1=60;m_nSpeed=70;m_bPCSet=0;inputspeed=0;uWork1=0;breakflage=0;initemif(;CLK_init(;*(int*0x400001=1;CREG=1; /使能外部總線接口InitCTR(;CTRGR=0x80;CTRGR=0;CTRGR=0x80;LCDTurnoff(;/ 設(shè)置顯示參數(shù)和內(nèi)容LCDSetDelay(1; /設(shè)置延時

6、等待參數(shù)LCDSetScreenBuffer(nScreenBuffer; / 顯示緩沖區(qū)for (bWork=0,pWork=nScreenBuffer;bWork<30*128;bWork+,pWork+ (*pWork=0LCDTurnOn(;/打開顯示LCDCLS(;/清除顯示內(nèi)存LCDPutCString(str1,0,127,8,0;LCDPutCString(str2,0,111,2,1;LCDPutCString(str3,68,111,2,1;LCDPutCString(str4,68,79,2,1;LCDPutCString(str5,68,95,2,1;LCDPut

7、CString(str6,0,95,2,1;LCDPutCString(str7,0,79,3,1;ShowParamctors(;/參數(shù)顯示InitMcBSP(;INTR-init(;InitForMotorB(;While(!breakflageif(nCount=0 /讀取鍵盤標(biāo)志uWork=MCTRKEY;CTRCLKEY=0;Switch(uWork1Casc 128;if(inputspecd!=0Md=inputspecd;Inputspecd=0;LCDPutCString(numbers+104,104,79,1,1;LCDPutCString(numbers+104,112

8、,79,1,1;LCDPutCString(numbers+104,120,79,1,1;LCDRefreshScreen(;break;case 64;breakflage=1;case 1;inputspeed=inputspeed+1break;case 2;inputspeed=inputspeed-1;break;case 4;inputspeed=inputspeed+10;break;case 8;inputspeed=inputspeed-10;break;if(inputspeed>90inputspeed=90;if(inputspeed<0inputspeed

9、=0;w1=inputspeed%1000/100;w2=inputspeed%100/10;w3=inputspeed%10; LCDPutString(numbers+w1*8,104,79,1,1;LCDPutString(numbers+w2*8,112,79,1,1;LCDPutString(numbers+w3*8,120,79,1,1;LCDRefreshScreen(;if(m-bPCSetm-bPCSst=0;if (m-nSpeed>=0&&m-nSpeed<256md=m-nSpeed;LCDPutCString(numbers+104,104

10、,79,1,1; LCDPutCString(numbers+104,112,79,1,1; LCDPutCString(numbers+104,120,79,1,1; LCDRefreshScreen(;printparameters(;if(nJSSpeed=0 /讀取速度標(biāo)志LED=1;nJSSpeed=0;ccc=CTRMOTORBSPEED; /讀取端口速度計數(shù)ccc=ccc&0xff;nSSS=ccc;if(nSSS>=0 && nSSS<400 /合法性檢測speed(sp=Nssssp+;sp%=33;if(sp=0 /讀取實際速度lj=0;

11、ljh=0;for(i=0;i<33;i+if(speed(i>=0&&speed(i<400ljh+=speed(i;lj+;nCount3+;nCount3%=3;if(nCount3=2 PIDControl(md,wc; uN=100-pwml; CloseCTR(; exit(0; /PID 算法控制子程序 void PIDControl(int rk,int yk ek=rk-yk; duk=a*ek+b*ek1+c*ek2; ek2=ek1; ek1=ek; tz=(intduk; pwm1+=tz; /計算當(dāng)前占空比 if(pwml<0

12、pwml=0; else if(pwml>99 pwml=99; void interrupt Timer( uWork=PCR1; if(nCont1>u N uWork=4; else uWork&=0x0fffb; PCR1=uWork; /設(shè)置中斷控制寄存器 void INTR-init(void /根據(jù)占空比設(shè)置 FSR 狀態(tài) /pwml 輸出 /計算控制輸出 /調(diào)用 PID 算法控制程序 /利用占空比調(diào)整控制 Showparameters(; /顯示各參數(shù)到 LCD asm(“BSET INTM”; IVPD=0x01; IVPH=0x01; IERO=0x10

13、; DBIERO=0x10; IFRO=0xffff; asm(“BCLR INTM”; void InitForMotorB(void ioport unsigned int *GPTCTL1-0; ioport unsigned int *GPTPRD1-0; ioport unsigned int *GPTGCTL1-0; *GPTCTL1-0=0; *GPTPRD1-0=0x1d8; *GPTGCTL1-0=0x3; /顯示參數(shù)到 LCD void ShowParameters( int w1,w2,w3; w1=md%1000/100;w2=md%100/10,w3=md%10; LCDPutString(numbers+w1*8,36,111,1,1; LCDPutString(numbers+w2*8,44,111,1,1; LCDPutString(numbers+w3*8,52,111,1,1; if (ek>=0 LCDPutString(numbers+88,36,95,1,1; w3=(intek%100; else LCDPutString(numbers+96,36,95,1,1; w3=(int(-ek%100; for (j=0;j<16;j+,k<<=1 if (color=2 mcolor=2; else mcol

溫馨提示

  • 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

提交評論