资源简介
基于STC单片机的PID温度控制程序,KEILC编译器,可以运行。

代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit wireless_1 = P3^0;
sbit wireless_2 = P3^1;
sbit wireless_3 = P3^2;
sbit wireless_4 = P3^3;
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
void show_time(); //液晶显示程序
#define tim0 65536-1000
#define tim1 65536-20000
uchar tm=1tx=0; //记数两个定时中断的
enum{YURTsKdKp};//Y采集量 U控制量 R 设定量 Ts 采样时间 Kd 微分 Kp比例
int para[6]ptrout; //out 是从PID()得到的控制量
int wdwd1rkpkdtse2e1e0u; //wd 是从DS18B20采到的数据
bit dealCS=0;
sbit EN1=P2^2;
sbit IN1=P2^1;
sbit PWM=P2^0;
sbit DQ = P2^4; //温度传送数据IO口
char donecounttempflagup_flagdown_flag;
uchar temp_value; //温度值
uchar TempBuffer[15] week_value[2];
uchar TempBuffer1[7];
uchar Ctrltab[20]={815204050607080100120140160180200};
char T=23;
char disp;
void show_time1(void);
void debouncer(void); //去键盘抖动延时函数
void shezhiwendu(void); //设定温度函数
void scanner(void);
void PID(); //键盘扫描函数
#define rowkey()(~P1)&0x0f //读取端口宏定义
/**************去抖动延时函数***************/
void debouncer(void)
{ int i;
for(i=0;i<2400;i++);
}
/*******************************************/
/**************设置温度函数***************/
void shezhiwendu(void)
{
while(1)
{
scanner();
show_time1();
if(disp==2) { T++; disp=0; }
if(disp==3) { T--; disp=0; }
if(disp==4) break;
}
}
/*******************************************/
/***********键盘扫描函数********************/
void scanner(void)
{ char colrow;
char scankeyin;
scan=0xef;
for(col=0;col<4;col++)
{ P1=scan;
keyin=rowkey();
if(keyin!=0)
{ for(row=0;row<4;row++)
{ if(keyin==(0x01<
{ disp=row+4*col;
break;
}
if(row==4)
disp=0;
}
while(rowkey());
debouncer();
}
scan=(scan<<1)|0x01;
}
}
/*****************************************************/
void initTimer0_Timer1() //初始化定时器0,定时器1
{
TMOD=0x01;
TH0=tim0>>8; TL0=tim0;
TR0=1;
ET0=1;
EA=1;
}
void initPID() //初始化PID函参数
{
para[Kp]=100;
para[Kd]=3;
para[Ts]=10;
}
void PID() //PID服务程序
{
TR0=0;
ET0=0;
EA=0; //检测的温度
//wd设定的温度
e0=e1;e1=e2;e2=wd-T;
kp=para[Kp]; kd=para[Kd]; ts=para[Ts];
u=wd+kp*(e2+kd*(e2-e1));
if(u<0) u=0;
if(u>500) u=500;
out=u/10; //控制量
TR0=1;
ET0=1;
EA=1;
}
void PWM_timer0() interrupt 1 //定时器0中断服务子程序
{
TH0=tim0>>8; TL0=tim0;
if(tm++>=out)
PWM=0; //通过变量out控制PWM脉冲宽度
else PWM=1;
if(tm>=50)
{
PID();
tm=1; //通过变量tm控制PWM的周期
}
}
/*
void timer1() interrupt 3 //定时器1中断服务子程序
{
TH1=tim1>>8; TL1=tim1;
if(dealCS==0) ///模糊控制
{
wdCtrl=para[R];
if((wdCtrl-wd/10)>
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6376 2009-03-06 20:41 57578847PIDwenkong\PIDwenkong\STARTUP.A51
文件 14049 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\STARTUP.LST
文件 749 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\STARTUP.OBJ
文件 19331 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制
文件 9417 2009-03-11 16:21 57578847PIDwenkong\PIDwenkong\温度控制.c
文件 4161 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.hex
文件 49 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.lnp
文件 19666 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.LST
文件 26671 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.M51
文件 22278 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.OBJ
文件 1039 2009-09-15 12:51 57578847PIDwenkong\PIDwenkong\温度控制.Opt
文件 596 2009-09-15 12:41 57578847PIDwenkong\PIDwenkong\温度控制.plg
文件 1998 2009-09-15 12:51 57578847PIDwenkong\PIDwenkong\温度控制.Uv2
文件 998 2009-03-11 16:21 57578847PIDwenkong\PIDwenkong\温度控制_Opt.Bak
文件 1711 2009-03-09 10:34 57578847PIDwenkong\PIDwenkong\温度控制_Uv2.Bak
目录 0 2009-09-15 12:52 57578847PIDwenkong\PIDwenkong
目录 0 2009-09-15 12:52 57578847PIDwenkong
----------- --------- ---------- ----- ----
129089 17
- 上一篇:FPGA设计16进制加减计数器
- 下一篇:TCL语言包
相关资源
- PID_AutoTune_v0.rar
- FPGA实现PID.v
- DV泵加罗茨泵独立控制系统PID.smart
- 模糊PID控制 c
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- (温度PID)实验指导书(三菱)
- PLCS7-1200PID参数自整定
- PLCS7-1200PID闭环控制
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- BLDC电机PID算法
- 基于双闭环模糊PID控制器的开关电源
- pid 模拟测试软件
- 基于RBF神经网络在线辨识的永磁同步
-
Lipase-catalyzed synthesis and the lipid me
- 中微子双β衰变的CUPID-Mo实验:性能
- 温度控制直流电机转速
- 智能车模糊控制
- LabVIEW实现Fuzzy_PID的补充资源
- 四轴飞控源码 PID参考apm 采用了dmp自带
- 平衡小车之家全套资料
- 基于PLC和组态软件的加热炉温度控制
- 基于ARM的高精度PID温度控制器_张军
- 基于STM32F07单片机风洞程序
- EBJ120TP型掘进机液压系统温度控制的研
- t12白光电烙铁温度控制电路图
- 基于51单片机的直流电机PID控制
评论
共有 条评论