|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/*****************************************************/
1 H9 H8 T1 O* E0 l/*采用AT89C51为主控制芯片*/+ v6 m& K3 `% k; v7 R
/*P0口为数码管的段选口,P2.4~P2.7为位选口*/
) j, ~0 X c+ W9 Q/ O9 e. W/*DS18B20的DQ接P2.3,12MHZ晶振*/
6 h/ d' U+ l8 z% |; S o/*P2^2,PWM控制脚*/
# I2 k, ]0 |) [/*****************************************************/
; n1 r# u, F% v4 W" R+ @#include<reg51.h>
! V" T# u& \! |#define Kp 1 //比例系数
: z* w( @+ g u$ d% J3 E2 d! ?3 E#define Ki 0.25 //积分系数+ D0 `1 p. n7 Q( ^; ^
#define Kd 1 //微分系数
0 ^3 T" {2 _% v q$ p( J0 _1 ?1 b
unsigned char m,n,p; //温度的十位 个位 小数
- j: U6 L" S9 e9 F/ \. a9 yunsigned char test_temp; //温度检定标志
2 N) t; e: [, G$ ^unsigned char key_set_flag; //按键设定进入标志
4 P# [9 s; R$ u' }2 ^3 M4 @, j% |9 lunsigned char key_hold; //按键保持标志2 U$ H( [/ o: W$ y( ]- a
unsigned char Change_step=1; //温度设置步进
; d& O# t( C) a9 v0 G6 R4 _int Real_temp; //实际温度值6 F3 O, U- c' E4 o
int Set_temp; //设置温度9 h; c5 U* i, U, Y( [$ n$ C
int Disp_temp; //显示温度
: [. i E- C5 E% \1 D6 M6 x9 Dint last_error; //上次误差3 Y' @1 X8 Y5 [0 z( D
float I_term; //前面温差和# W0 ]0 @( `' ]: [( b. G
7 V8 F3 V3 `; a& P+ E$ u
int PID_MAX;7 D8 P$ b1 P2 ^8 i" F+ @$ e2 U
unsigned int out,PWMT,counter;
5 t7 }1 a2 b: X( Iint time; //可控硅脉冲触发时刻3 T c4 D7 U. B1 ? O
6 @- N; v* I5 y6 W& ksbit DQ=P2^3; //定义DS18b20的管脚
& K+ J5 P" u, m* I, o0 E4 [, ]) Isbit L1=P2^7; //定义控制数码管的管脚
+ D# W2 z u$ B/ w& wsbit L2=P2^6;7 ^2 ? N9 j/ d- | U$ O, Z7 s
sbit L3=P2^5;# G/ y& @( A% `: r. c: r
sbit L4=P2^4;3 j1 R$ a$ c# _* s! h6 c
sbit PWM=P2^2; //PWM控制脚" c( F: Z/ H: t# |
. Y. v' U7 P: D# Yunsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,% ]+ U4 M1 Y9 |
0x82,0xF8,0x80,0x90,0x7F,0xbF,0xC6};//0-9数字,后面为". - C"; i+ |) |( S- V
$ C: F2 b, T, N$ m
2 r: O( _9 ~4 G |
|