直流電機調速程序_第1頁
直流電機調速程序_第2頁
直流電機調速程序_第3頁
直流電機調速程序_第4頁
直流電機調速程序_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

#include<reg51.h>#include<absacc.h>//8254//8254//8254//電動機方向控制端口//8254//8254//8254//電動機方向控制端口//電動機1正轉//電動機1反轉//電動機1反轉//電動機2正轉//電動機2反轉//電動機2反轉//8254#defineCount1XBYTE[0x3fff]計數器1#defineCon_wordXBYTE[0x7fff]控制字#defineCon_MP3#definePos_M10x02#defineRe_M10x01#defineSto_M10x03#definePos_M20x08#defineRe_M20x04#defineSto_M20x0cuinttime1=10000,time2=10000;計數器0、計數器1初值ucharM1_flag=0,M2_flag=0;//電機運行標志位/************************函數聲明***********************/voiddelay(uintn); //延時函數voidinit_T0(void); //定時器T0初始化ucharM_turn(ucharn);//讀正反轉設置函數ucharkey_scan(void);//鍵盤掃描函數voidmotor_star(ucharnum);//電機啟動函數voidmotor_stop(ucharnum);//電機制動函數voidmotor_inc(ucharnum);//電機加速函數voidmotor_dec(ucharnum);//電機減速函數voidkey_manage(ucharnum);//鍵值處理函數/************************主程序*************************/main()ucharkeynum;init_T0();//按鍵監視程序//鍵盤處理程序}voiddelay(uintn){//按鍵監視程序//鍵盤處理程序}voiddelay(uintn){while(1){keynum=key_scan();key_manage(keynum);uchari,j;for(i=0;i<n;i++)for(j=19;j>0;j--);}/**********************定時器T0初始化*********************/voidinit_T0(void){TMOD=0x01; //工作方式1TH0=0x4c; //定時50msTL0=0x00;ET0=1;EA=1;TR0=1;}/********************定時器TO中斷服務程序****************/voidtimer0(void)interrupt1{TR0=0;//重載定時器TO//重載定時器TO初值//寫8254計數器0初值//寫8254計數器1初值TL0=0x00;Con_word=0x30;Count0=(uchar)(time1/256);Count0=(uchar)(time1%256);Con_word=0x70;Count0=(uchar)(time2/256);Count0=(uchar)(time2%256);TRO=1;}ucharM_turn(ucharn)TRO=1;}ucharM_turn(ucharn)uchartemp,turn;temp=(P3&Ox3O)>>4;if(n==1){temp&=0x01;switch(temp){case0x00:turn=Re_M1;break;case0x01:turn=Pos_M1;break;}}else{temp=(temp&0x02)>>1;switch(temp){case0x00:turn=Re_M2;break;case0x01:turn=Pos_M2;break;}}return(turn);}voidmotor_star(ucharnum){//讀電機控制狀態//讀電機控制狀態//電動機1未啟動//讀電機1設置//設定啟動速度//若電動機2未啟動//讀電機2設置uchartemp1,temp2;temp1=Con_M;if((num==1)&(M1_flag!=1)){M1_flag=1;temp2=M_turn(1);Con_M=(temp1&0xfc)|temp2;//送電機1控制time1=10000;}elseif((num==2)&(M2_flag!=1))M2_flag=1;temp2=M_turn(2);

Con_M=(temp1&0xfc)|temp2;//送電機1控制time2=10000;//設定啟動速度}}voidmotor_stop(ucharnum){}voidmotor_stop(ucharnum){//讀電機控制狀態//電動機1啟動//讀電機控制狀態//電動機1啟動//讀電機1設置//若電動機2啟動//讀電機2設置}voidmotor_inc(ucharnum){uchartemp1,temp2;temp1=Con_M;if((num==1)&(M1_flag==1)){M1_flag=0;temp2=Sto_M1;Con_M=(temp1&0xfc)|temp2;//送電機1控制}elseif((num==2)&(M2_flag==1)){M2_flag=0;temp2=Sto_M2;Con_M=(temp1&0xfc)|temp2;//送電機1控制}if((num==1)&(M1_flag==1))//電動機1啟動{if(time1>0)time1=time1-2000;}//若電動機2//若電動機2啟動{if(time2>0)time2=time2-2000;}}voidmotor_dec(ucharnum){if((num==1)&(M1_flag==1))//電動機1啟動{if(time1<20000)time1=time1+2000;}elseif((num==2)&(M2_flag==1)) //若電動機2啟動{if(time2<20000)time2=time2+2000;}}voidkey_manage(ucharnum){switch(num){case0:while(P1!=0xff);motor_star(2);break;case1:while(P1!=0xff);motor_stop(2);break;case2:while(P1!=0xff);motor_inc(2);break;case3:while(P1!=0xff);motor_dec(2);break;case4:while(P1!=0xff);motor_star(1);break;case5:while(P1!=0xff);motor_stop(1);break;case6:while(P1!=0xff);motor_inc(1);

break;case7:while(P1!=0xff);motor_dec(1);break;default:break;}}/**********************鍵盤掃描函數************************/ucharkey_scan(void){uchari,temp;temp=P1;if(temp!=0xff){delay(2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論