|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; M/ o) M9 }+ k) X/ V9 I
+ O1 y9 K3 _! N% U: o9 C" q#include <C8051 F020.H> `, z2 x, i& p3 P
#include <string.h>
8 J2 }" R( W9 x7 a& ?$ T/ \#include <math.h>% x `- A* K& z+ G0 ]" m0 T
//void PIDInit(PID *PP);
0 y1 o4 p( Y& Z4 V) d, h- V7 B6 {/*定义结构体和公用体*/
+ R4 R& q6 J& ^9 H% \( H+ ]* ^1 f#define N 8
# W) t. N8 R, Y% {, r f% Utypedef struct PID{& I2 @" M" N: Z+ m
unsigned int setpoint; /* 设定值*/
" J' J, r) F0 r1 ~6 f8 a4 z: junsigned int proportion;/*比例系数*/$ P/ N3 s- t+ Q
unsigned int integral;/*积分系数*/
. {3 O! p4 Q3 U9 x# O( h& {' r; Bunsigned int derivative;|*微分系数*/
6 k: b; p9 W# bunsigned int lasterror;/*前一拍误差*/
/ y1 J( O! C# s1 }unsigned int preerror; .|*前两拍误差*/, J9 r2 G9 z4 A1 U! c% K
}PID;* q( O. n' a- F( m9 b
3 j7 l# g9 f9 L' Q8 x i0 h- B. o3 d6 L& G4 T+ Q1 g- J
6 i& m- B+ v7 R+ h/ [0 ?1 [8 b
union stu{
( H! u* G& v p! Y3 }unsigned int value;$ t+ T$ r* ?/ v
unsigned char num[2];( F* g' `0 w+ o" y/ J
}laser;, n6 l6 h4 P8 V" t
union dat{/ G: F h5 ]6 w) l4 C0 ^* N! x0 M! B
unsigned char dd[2];
* ` f1 q! |% `3 u' R- [3 Eunsigned int number;
- P5 ~" d1 L: x6 ?3 q}collect;
# H' b( e }: R2 O) b- s7 m5 k" x/*函数声明部分*/
$ j' i2 B/ V2 f) U: Z9 P; [ Q, Sunsigned int PIDcal(PID *pp,int thiserror);7 h- T4 U4 d" J. b
void PIDInit(PID *PP);
# x0 L9 }- e# ^! yvoid PortInit(void);. v4 @$ S$ A3 P4 r
unsigned int get_ _ad(void);! Q) @. O3 g3 l+ ~" ~& R$ c
unsigned int filter_ _valve(void);
% r8 `" T+ g6 d: V) T; @/ @' j; rvoid Delayms(void);
4 ?4 J' t6 K& A' z( O h6 D/*主函数部分*/6 ]0 x/ ^) T$ b3 E4 ~! T
void main(void): W9 ]+ |0 h9 N3 @1 i4 p2 q; ?5 {
7 r& `. h, C1 _- B8 o' G& d7 B
{- |) p( g; r, J/ j6 k
PID vPID;/*定义结构体变量名 */
& }, f; O- `- v7 u9 d& xunsigned int verror;, O2 W) W7 z) e" X% T* C, |1 v
unsigned int Error;
% E4 q; _; I9 uunsigned int tempi;
* V% d; R, I5 C4 p9 i+ \6 i3 vunsigned char L ASERH,L ASERL;/*误差的高低字节变量*/
7 c: K% \4 _, F! |0 lWDTCN=0xde; : k( y- ]( P& M" v% Y7 M( a% h$ ]
WDTCN=0xad;$ n8 g7 L* f5 ~( u' \# T
//portinit();- Y7 w4 S+ `5 n# k% T
PIDInit(&vPID);# p) G! M$ n, I2 r" {8 r e8 t; E' P
vPID.proportion= 10;/*设置PID比例系数为10*/4 j/ I: ]" _0 Y- x! t
vPlD.integral=10;/*设定PID积分系数 为10*/3 x0 q' i4 A3 V
$ Y7 C2 ~; b; u: M8 {, z& K0 U% _
3 j4 ]- ]9 `& g5 p# k, @# S. G1 m3 Q% r5 V F" D+ n @
/ ^) g' A5 e- B1 B: j2 }+ y) a0 p4 ?
6 C. h: v+ q6 z; u+ }% p5 R8 y3 }
8 j9 D; C& M" A( M
, o. g) W+ Z+ R2 T6 |
' j5 _9 `+ Z7 o- K8 ] |
|