|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <C8051F020.H>! T" L. Z5 X; |0 f+ h
#include <string.h>4 w& s. l9 s7 o5 I5 x; d; i4 K
#include <math.h>
% O2 S7 N; z1 R% \llvoid PIDInit(PID " P)]:
/ K2 o' u* `, y* L( s" t尸定义结构体和公用体1! a& y/ t- F2 u% R, J. Q
#define N8+ M p* q8 G/ U+ h
typedef struct PID{
! E+ Z! Y! e2 L2 u9 U+ @! D; t+ G( eunsigned int setpoint:" O0 o8 g- D( h& F6 n$ z' M
尸设定值1
1 H% B( R& I1 nunsigned int proportion:
1 \" H% ~9 w- u+ h. O$ ~1 II"比例系数1
% q0 w+ O" O! d% C6 w* gunsigned int integral;
/ @& H; }8 w6 K3 U+ ~! F# I1积分系数”1% w1 Q3 }% p7 W% v1 d: M
unsigned int derivative;9 h# |0 a6 g4 H/ ?4 F3 m
尸微分系数°1
0 I4 H S4 m/ N# N* p# Qunsigned int lasterror;/ e4 n3 I2 X, e* ^' V4 F
「前一"拍误差"1& T8 t5 ?/ J& d* h c* |* y
unsigned int preerror,' ?! d+ o/ {! T! y. e
P前两拍误差1
, L8 N" I7 ~' E: K/ l0 H+ M; C' g}PID;
) z6 e- e9 w( F" I5 F/ nunion stu{
9 W8 y' C" g Xunsigned int value;
5 H; P! w* y5 o% d" aunsigned char num[2];1 A+ [. y5 d! P+ @6 @! e& u' c
}laser;
2 O! i7 [9 j. Bunion dat{
) E! z, X' a9 f7 ?5 P7 c; Munsigned char dd[2]:- u% j7 T" V7 u* e- e0 T
unsigned int number,& Y' s. G- v# C1 E4 `- T
}collect% L) M6 x+ |3 g# u( A: V/ ?4 s* Y
P函数声明部分"I" i/ p- D# J$ B7 ?- ^
unsigned int PIDcal(PID "pp.int tiser):2 `, _7 I b8 m
void PIDInit(PID " P)]:
8 a; {. O0 p9 i, `5 Rvoid Portinit(void);
8 d5 Z2 ^9 m: ^: W- `unsigned int get ad(void);% [( ]8 M# e, ~5 ?) |
unsigned int flter valve(void).
! e% T+ n8 X- \; [; }+ \7 C; K' mvoid Delayms(void);6 ^8 C& ?, x5 }( Q `4 k
P"主函数部分”1* A: O4 } ]0 t# k- M7 |' d
void main(void)8 c/ x3 t6 e/ U/ i
PID vPID;% \6 T6 |) d( m6 \: P* f4 P. \8 D5 l
1"定义结构体变量名”1
( n8 X( d% f9 N; f& L2 F( ~unsigned int verror,4 }. s7 p0 H" e& W6 N' U* W0 `' u
unsigned int Error,- V7 M- ]) }" e, F2 ? d# Y
unsigned int tempi:+ a5 u0 e8 G! O+ x8 I- E
unsigned2 p, A- ^9 P% r
char LASERH,LASERL 误差的高低字节变量 “1; |; ]/ q* g F C+ }2 b# P
WDTCN=Oxde;+ e0 }# Y! {5 p/ E- b D
WDTCN=Oxad;
, K* @7 s- A7 n9 O7 xlporinit);:
& A+ C6 z% a+ Y9 n- rPIDInit(&vPID);
* D: t. |6 [$ a: w& l. B G. E% v* XvPID.proportion=10; P 设置PID 比例系数为10°/: {9 [- A+ U5 W
vPID.integral=10; 1 设定PID 积分系数为10*/: ?4 N, O0 p/ F
7 ~+ d% J" [1 ~ a' H8 P/ I9 d: O& R& o5 U
|
|