|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ S+ m9 k9 G: [3 g& c
, D+ `* J; q5 Q {
#include <C8051 F020.H> u( R" w) U. j; h' d
#include <string.h>
& _6 K' L. y! |% y1 \#include <math.h>' p5 D$ I3 G' g3 {
//void PIDInit(PID *PP);
7 s( _4 i% h1 m0 s7 @# [/ ^% X. P/*定义结构体和公用体*/" b" S2 I" f& r2 Z) X. d# r) Q
#define N 81 E7 ]! E) i8 a, Y) ^/ m2 U
typedef struct PID{
8 ]2 w! j* P% Q+ y* O2 xunsigned int setpoint; /* 设定值*/1 s3 O1 ]8 L" n; l; t% F
unsigned int proportion;/*比例系数*/5 q3 n: u+ |5 i' N
unsigned int integral;/*积分系数*/- M' i, Z2 v: ]; S9 n, M9 E
unsigned int derivative;|*微分系数*/
& W! j" f3 x$ q, X& W7 L/ gunsigned int lasterror;/*前一拍误差*/
3 s L0 I0 k% Q8 T- k7 Y9 ?( }unsigned int preerror; .|*前两拍误差*/
! t) [: n: Y; N+ S0 S5 Z}PID;: s2 H, z* q s- l' K# x
" Y. @3 B v0 f; i, t9 K
: J% F2 s* U1 \0 R: J$ u" P: j
6 S8 l& P# E" Funion stu{
) A X. d& _& B$ G+ h6 e% E4 Funsigned int value;
# w# q: x! [$ vunsigned char num[2];. h7 S# p& l; r8 o' C
}laser;
4 S2 F" G) @7 P# R' H# a: o& b+ Nunion dat{
( f$ y2 E" s. N9 ^unsigned char dd[2];
* @$ W) \) r( K V; I' Iunsigned int number;1 y# m3 K+ ]; m) o3 W, o( k
}collect;( g+ \$ F# ~/ w2 F% `
/*函数声明部分*/- t9 D- q& I) {/ g1 D3 t3 N2 K
unsigned int PIDcal(PID *pp,int thiserror);
2 Z5 ^5 y8 p( Ovoid PIDInit(PID *PP);
% E/ n- v: C; p# qvoid PortInit(void);
& T$ X" {" M5 I8 Gunsigned int get_ _ad(void);
7 p/ z! ]2 J. a4 A% aunsigned int filter_ _valve(void);
- `4 U) I4 O u' lvoid Delayms(void);$ O7 ~& R, P$ `$ W
/*主函数部分*/! a. z4 n7 i& n& d/ {" c
void main(void)# @! m D' a$ D; ?! ~5 i" x2 J
- ]" H) T7 h: X* K5 p( K7 X# K
{
0 B9 t% e+ }+ I/ a. kPID vPID;/*定义结构体变量名 */$ j: Y3 U/ [& t, ~( Q# g3 k5 L8 `
unsigned int verror;
/ d1 s7 @5 J- T: j Yunsigned int Error;' N' Q& |6 w0 B
unsigned int tempi;/ [2 d; k* J5 n4 ?. E
unsigned char L ASERH,L ASERL;/*误差的高低字节变量*/* S9 I2 X4 s/ v" [7 t
WDTCN=0xde; 7 e$ n; j% g4 q& H/ k
WDTCN=0xad;
# u* Q# E9 o6 @/ v' P2 G8 o//portinit();- s0 _: J* T3 q
PIDInit(&vPID);
Q5 [9 X, K& d' NvPID.proportion= 10;/*设置PID比例系数为10*/
* O* |2 a. h3 o2 JvPlD.integral=10;/*设定PID积分系数 为10*/, _3 o4 x) r. v+ m! V& [6 C
+ S$ A/ n- {& N. L; i3 M
, U& f$ I5 g4 A$ d, {8 J+ J
- f1 _* e& d: z" [% Z6 @, d& r/ s2 k+ q, l O; I# R# L) O
+ ?6 w' R7 z& W0 h, w7 `; T1 p& }+ Q/ B3 W- c& O. o2 G6 v
) p( `) _3 D3 w# f3 J+ |3 H
" x# ?6 C/ V- W( S. ~+ g
4 m& _- I, M+ Q7 {+ o5 I! S* U |
|