资源简介
基于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语言包
相关资源
- 基于BP神经网络的机械臂模糊自适应
- 二自由度机械臂模糊PID控制.zip
- 使用遗传算法PID整定寻优 代码和仿真
- 基于人工鱼群算法的PID参数优化设计
- PID精准控制电机转到指定位置.zip
- 基于单片机的数字PID控制直流电机P
- pid设计
- PID控制阶跃响应源程序
- PID参数整定 遗传算法
- 水温的恒温控制程序——PID控制
- 基于DS18B20的温度控制系统
- PID控制直流电机调速含proteus仿真
- 乐高pid巡线程序 mindstorms
- 一种基于模糊控制的智能车转向控制
- 基于SOA神经网络的PID参数自整定程序
- 位置式数字PID仿真程序
- 获取USB设备的PID跟VID
- 一种非线性PID控制器建模与仿真
- 电阻炉温度控制系统的设计
- PID符号图应用
- 微机控制课程设计 温度控制系统
- STM32_PID算法源码
- 基于LabVIEW的模拟PID控制程序
- 用labview演示PID控制规律225921
- 给予模糊控制单片机温度控制
- Arduino的PID库
- pid单纯形法
- USB设备状态监控插拔事件响应等。
- 几种PID控制器参数整定方法的比较研
- 采用STC12C5A60S2单片机作为主控芯片实
评论
共有 条评论