|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/*****************************************************/; P) N8 [; @& s4 K$ L
/*采用AT89C51为主控制芯片*/ |( ^: ^7 ^# q4 E: L* F
/*P0口为数码管的段选口,P2.4~P2.7为位选口*/% Y: Q6 F, A7 E9 f( _% j7 j1 v+ J! Z
/*DS18B20的DQ接P2.3,12MHZ晶振*/
! i- o4 h# g& |8 ^/*P2^2,PWM控制脚*/0 D! l2 i0 G; [0 r
/*****************************************************/
3 K; s4 Q; x' k1 Q#include<reg51.h>- c% D5 ]# J! u6 x0 u
#define Kp 1 //比例系数 - A: v5 ?& D0 N5 F
#define Ki 0.25 //积分系数
' o f/ I$ z6 F p, s8 T#define Kd 1 //微分系数
; Q. u2 U' I1 E3 Z( X" N8 ?0 k' H- I" i, v$ q
unsigned char m,n,p; //温度的十位 个位 小数# M( z* H0 C5 {. n( x7 w5 ?6 F7 e( ?
unsigned char test_temp; //温度检定标志- A8 [5 M+ U% j
unsigned char key_set_flag; //按键设定进入标志
+ j2 |& ]0 n; b6 G2 C2 Eunsigned char key_hold; //按键保持标志6 R _ k* h/ z0 y& a* B
unsigned char Change_step=1; //温度设置步进 {0 N4 [! D" O1 P- D
int Real_temp; //实际温度值% W% o0 Q1 B- t0 D6 @* C
int Set_temp; //设置温度
|. f4 p6 D/ W5 z$ n1 Q: x [int Disp_temp; //显示温度
' H9 z2 `& M n, k0 L, gint last_error; //上次误差- J' W5 o- w& }- c* X2 E' m
float I_term; //前面温差和
1 t4 x% [' N* q- |6 P8 D& g
/ h w8 r4 s' b% g; m& |int PID_MAX;0 d1 t* s# A. a0 r7 _
unsigned int out,PWMT,counter;; G" V+ j, n# Q8 h) T/ K
int time; //可控硅脉冲触发时刻1 D5 \& y& |: L# Y
5 D2 J2 m# J- X( O/ [sbit DQ=P2^3; //定义DS18b20的管脚
0 p# Y# `) r% y# W2 Ysbit L1=P2^7; //定义控制数码管的管脚! i9 N' u& J- n$ t: Y
sbit L2=P2^6;
* V& L0 F: u% ?% S4 I2 l; ksbit L3=P2^5;
6 Z) l( V% p% x; u# hsbit L4=P2^4;% ~$ s* q' f; i& X( A$ o7 |. o
sbit PWM=P2^2; //PWM控制脚
1 N6 M, z# T6 t* m* w2 @# }8 l% H6 L0 w& b$ Y
unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,$ V1 ]1 d7 ~0 _1 f5 m: m
0x82,0xF8,0x80,0x90,0x7F,0xbF,0xC6};//0-9数字,后面为". - C"
8 S! O9 z g% _5 o3 e6 i1 d2 s: [2 |) m# b/ x; k$ z
# f9 H; {( D5 s |
|