|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
//PID算法温控C语言2008-08-17 18:580 T" \. h( ^ U, M5 v! N
#include<w77e58.h>
3 f8 d* S# G$ U+ W#include<intrins.h>
, c4 ?0 t2 V4 n8 e o#include<math.h> ( K' D7 X6 |+ G$ {6 _" q! _. H6 d
#include<string.h>
; B4 Q' y9 M y% F* Gstruct PID { z( h2 L# Q' f0 L7 a7 Q
unsigned int SetPoint; // 设定目标 Desired Value S, A) M6 N/ E& O! V' q: Q: m* A
unsigned int Proportion; // 比例常数 Proportional Const 6 a1 _$ `6 ~! s9 u2 p* K! s
unsigned int Integral; // 积分常数 Integral Const
1 x+ R% ~. h$ l5 Yunsigned int Derivative; // 微分常数 Derivative Const
- B2 G/ C1 N$ \1 M# [unsigned int LastError; // Error[-1]
5 ^& `+ \. t( t. Funsigned int PrevError; // Error[-2]
7 A0 g% ]/ d9 V5 w( I* Funsigned int SumError; // Sums of Errors
8 i- [4 c1 j5 t1 H L. A. q J}; : z; Y6 s5 B: C/ I. ~2 l
struct PID spid; // PID Control Structure
6 m! H; h6 ~4 gunsigned int rout; // PID Response (Output)
& O: w; f7 T% U: E3 P) wunsigned int rin; // PID Feedback (Input) 0 Z. X' Y- g/ R& S& k3 @0 k( h$ @
sbit data1=P1^0;
" _4 o; \ e; _" l, c6 Asbit clk=P1^1; # q5 h" U7 A; L' Z: ~
sbit plus=P2^0;
; w9 z \5 g0 F% E; e" Qsbit subs=P2^1; " S5 C7 g2 {+ \2 c1 g+ ]
sbit stop=P2^2; % w4 A' M0 v6 Z4 X
sbit output=P3^4; 4 ^7 V* ~8 Z4 z
sbit DQ=P3^3; ; o% K1 v- F- i0 Y. |- ?7 s
unsigned char flag,flag_1=0; ( g3 V' N2 F3 p$ S4 e6 ?
unsigned char high_time,low_time,count=0;//占空比调节参数 " W R: x! v2 g1 ~0 O0 Q- r' i( j
unsigned char set_temper=35; / ]( P' y4 E, T9 Y. i6 ~
unsigned char temper; " Q) ?$ i1 G/ S5 n! F& \. k1 z' i
unsigned char i;
0 O4 R5 t8 c4 O$ R1 i3 Q. ^unsigned char j=0;
/ n) \% q$ Q- q/ a6 p9 @0 Hunsigned int s;
$ ~3 j+ W& D9 ~9 E4 f5 c1 g/ `/*********************************************************** 2 k: _8 G" W }1 u& E! z; @8 @
1 n5 b. [$ D$ q4 O4 B! F. r6 l5 T/ K1 L- L
|
|