2023年帆板控制系統(F 題)(含源程式)

2021-09-25 07:45:41 字數 2760 閱讀 1398

帆板控制系統要求

1 、基本要求

(1)用手轉動帆板時,能夠數字顯示帆板的轉角 θ 。顯示範圍為 0~60°,

分辨力為 2°,絕對誤差≤5°。

(2)當間距 d=10cm 時,通過操作鍵盤控制風力大小,使帆板轉角 θ 能夠

在 0~60°範圍內變化,並要求實時顯示 θ 。

(3)當間距 d=10cm 時,通過操作鍵盤控制風力大小,使帆板轉角 θ 穩定

d調節裝置轉速控制風力角度檢測訊號轉軸帆板風扇θ鍵盤數字顯示f-2在 45°±5°範圍內。要求控制過程在 10 秒內完成,實時顯示 θ ,並由聲光提示,以便進行測試。

2 、發揮部分

(1) 當間距 d=10cm 時,通過鍵盤設定帆板轉角,其範圍為 0~60°。要求

θ 在 5 秒內達到設定值,並實時顯示 θ 。最大誤差的絕對值不超過5°。

(2) 間距 d 在 7~15cm 範圍內任意選擇,通過鍵盤設定帆板轉角,範圍為0~60°。要求 θ 在 5 秒內達到設定值,並實時顯示 θ 。最大誤差的絕0對值不超過 5°。

(3) 其他。

源程式:

#include #include#define gpio_key p1 

#include<1602.h>

int z=0,pwm,a=0,keyvalue,k,q=0;

unsigned char model,ok,keydata,cancel,sure,keyvalue1;

unsigned int angle,setangle,count;

char increment_angle;

unsigned char code ascii[12]=;

bit dir,dir2;

sbit out=p2^0;

sbit led1=p2^1;

sbit led2=p2^2;

sbit aa=p3^6;

sbit bb=p3^7;

void delay(uint i)

void delay500ms()

while (--j);

} while (--i);

}struct

pid;

void lcddatepro()

int key_dispos()

q0=keydata;

i++;

}q=q1*10+q0;

lcdwritecom(0x80+0x40);

lcdwritedata(ascii[q/10%10]);

lcdwritecom(0x80+0x41);

lcdwritedata(ascii[q%10]);

return q;

}

int keydown()

//測試行

gpio_key=0xf0;

switch(gpio_key)

while((a<50)&&(gpio_key!=0xf0)) //檢測按鍵鬆手檢測

return keyvalue;

} }return 16;

}void dataprokeyvalue()

if(keyvalue1==7)

if(keyvalue1==11)

if(keyvalue1==15)

if(keyvalue1==14)

if(keyvalue1==13)

if(keyvalue1==12)

if(keyvalue1==10)

if(keyvalue1==9)

if(keyvalue1==8)

if(keyvalue1==6)

if(keyvalue1==5)

if(keyvalue1==4)

if(keyvalue1==2)

if(keyvalue1==1)

if(keyvalue1==0)

}keyvalue1=20;

}void int_all()

void timer1init()

void pid_init()

void pid_realise(float angle)//實現pid

else

}} increment_angle = pid.kp*pid.error+gex*pid.ki*pid.error_add+pid.kd*(pid.error-pid.error_next);//增量計算公式

pid.error_next = pid.error; }

void main()

if((pwm>=90)||(dir3==1))

if((pwm<=0)||(dir3==0))

}if(model==2)

if(pwm<0)

}if(model==3)

if(pwm<0)

}if(model==4)

if(cancel==1)

}cancel=0;

} }

} void timer0() interrupt 1

else

if(dir1!=dir2)

else

}if(dir1==0&&dir2==1)

else

}} dir2=dir1;

}void time1(void) interrupt 3

if(countelse

}

控制系統設計 非線性控制系統設計

控制設計的目標可以敘述如下 對於給定的被控物理系統和系統期望性態的規範,構造反饋控制規律,使得系統呈現出期望的性態。兩類基本的非線性控制問題 非線性調節和非線性跟蹤 非線性控制所期望的性態 構造非線性控制器的基本問題 可利用的非線性控制器設計方法。1.1.鎮定問題 漸近鎮定問題 給定由方程 描述的非...

交通控制系統

設計要求 用vhdl語言設計乙個由一條主幹道和一條支幹道的匯合點形成的十字交叉路口的交通燈控制器,要求如下 1 主 支幹道各設乙個紅 綠 黃指示燈,led顯示 2 主幹道處於常允許通行狀態,支幹道有車來的時候才允許通行 主幹道允許通行時亮綠燈,支幹道紅燈。支幹道允許通行時亮綠燈,主幹道亮紅燈 3 主...

版本控制系統

linux一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?1 集中式版本控制系統 代表 svn cvs 版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再...