|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <C8051F020.H>7 {6 n7 P6 B j* C) W' v, b' l5 U
#include <string.h>0 }! q( ?" @# o' c" k
#include <math.h>1 [, h$ q8 ^* ^$ }& w9 W
llvoid PIDInit(PID " P)]:
6 v K8 }1 S: b4 M# \' R( \* r尸定义结构体和公用体1+ p* [ M- B' X: ~* f+ y9 b2 @
#define N8
* `; d. `# l5 \. d8 ltypedef struct PID{# H/ H/ A+ T' C
unsigned int setpoint:
9 \* p; I1 X. c# [尸设定值1
/ k3 p- G, [8 v8 b9 Q2 }unsigned int proportion:
2 J( t: v0 f" r% R* }I"比例系数1
$ s1 t0 _8 P1 d0 s runsigned int integral;
% C& n X1 r) F$ ?' ^( Z) ~; Q1积分系数”1
+ Z- G' y/ t* J. q$ [% vunsigned int derivative;( E/ w9 B' w h# P. c5 w5 g+ @
尸微分系数°1+ {2 G6 M2 J4 b+ l N1 H' i' m
unsigned int lasterror;, H5 q6 a4 Y$ b5 Y" h
「前一"拍误差"1
1 Q$ L# {, E5 [' U- S' kunsigned int preerror," [7 P% F* R0 s$ i. u( A
P前两拍误差1
0 V# J1 n% m/ j( T: {5 p! A}PID;
t' Y4 V) \& w3 O7 @union stu{
' l' Y5 [/ ]% d4 R+ X4 Hunsigned int value;. ]1 O1 s; e {+ O
unsigned char num[2]; |' x6 R/ i7 C& W# u
}laser;
. T7 T5 r- L& e+ R8 }union dat{! V! I* y( y3 s [
unsigned char dd[2]:
7 s0 Q% O" Z) Eunsigned int number,
' c, |8 S: L* P0 Y# e& f}collect0 D( o9 C0 u5 s+ C& x
P函数声明部分"I
7 G4 n3 x' J8 O; R' B/ M5 [unsigned int PIDcal(PID "pp.int tiser):) A. n% u# C; v& e5 e
void PIDInit(PID " P)]:) C' V$ y8 N9 b4 n
void Portinit(void);* k5 Z6 V7 A0 ?& l* h! ~ q6 Z; |
unsigned int get ad(void);
( Q8 M$ F- l) ^. C( E/ Sunsigned int flter valve(void).& b# b: n) _- K- z* Z$ Y& e* H" E
void Delayms(void);
' a6 |3 q7 Y$ n* L5 R3 e' qP"主函数部分”1
8 ~# N" [0 k" s0 d0 @void main(void)
) d5 }4 h2 M" x3 L9 RPID vPID;
7 p: `$ n! K* ^) Z; ^1"定义结构体变量名”1. j1 o0 H6 x1 C2 _: n
unsigned int verror,# G; ^3 U0 @/ f, K1 \
unsigned int Error,2 k/ [* l/ C9 P3 o3 ~$ \6 H
unsigned int tempi:* D7 |& f% \9 X7 m2 d2 S' R: G
unsigned
' A7 I8 [3 _& e0 b G8 y) Tchar LASERH,LASERL 误差的高低字节变量 “1
* u# w( o( f/ z- m" d9 rWDTCN=Oxde;
# j* b1 e6 a% H, Y, KWDTCN=Oxad;/ Z8 S+ M# G5 y; r2 ?$ F; Z
lporinit);:' {$ w( f0 ]2 x; Z
PIDInit(&vPID);
! h+ W7 V8 z1 g& uvPID.proportion=10; P 设置PID 比例系数为10°/0 S) G# D! s2 v* l4 \
vPID.integral=10; 1 设定PID 积分系数为10*/$ N8 n/ D5 o" j
3 U6 i$ l6 P' }- d5 J5 ~4 @
; h6 X. L8 v Q9 o
|
|