温度控制的PID算法的C语言程序(共10页).doc
《温度控制的PID算法的C语言程序(共10页).doc》由会员分享,可在线阅读,更多相关《温度控制的PID算法的C语言程序(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上我的题目是:基于PID算法的温度控制系统 89C51单片机,通过键盘输入预设值,与DS18B20测得的实际值做比较,然后驱动制冷或加热电路。用keil C语言来实现PID的控制。 最佳答案/PID算法温控C语言2008-08-17 18:58#include #include #include #include struct PI unsigned int SetPoint; / 设定目标 Desired Value unsigned int Proportion; / 比例常数 Proportional Const unsigned int Integral; /
2、积分常数 Integral Const unsigned int LastError; / Error-1 unsigned int PrevError; / Error-2 unsigned int SumError; / Sums of Errors ; struct PI spid; / PI Control Structure unsigned int rout; / PIResponse (Output) unsigned int rin; / PI Feedback (Input) sbit data1=P10; sbit clk=P11; sbit plus=P20; sbit
3、subs=P21; sbit stop=P22; sbit output=P34; sbit DQ=P33; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;/占空比调节参数 unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s; /* 延时子程序,延时时间以12M晶振为准,延时时间为30ustime */ void delay(unsigned char
4、 time) unsigned char m,n; for(n=0;ntime;n+) for(m=0;m2;m+) /* 写一位数据子程序 */ void write_bit(unsigned char bitval) EA=0; DQ=0; /*拉低DQ以开始一个写时序*/ if(bitval=1) _nop_(); DQ=1; /*如要写1,则将总线置高*/ delay(5); /*延时90us供DA18B20采样*/ DQ=1; /*释放DQ总线*/ _nop_(); _nop_(); EA=1; /* 写一字节数据子程序 */ void write_byte(unsigned cha
5、r val) unsigned char i; unsigned char temp; EA=0; /*关中断*/TR0=0; for(i=0;ii; /*移位操作,将本次要写的位移到最低位*/ temp=temp&1; write_bit(temp); /*向总线写该位*/ delay(7); /*延时120us后*/ / TR0=1; EA=1; /*开中断*/ /* 读一位数据子程序 */ unsigned char read_bit() unsigned char i,value_bit; EA=0; DQ=0; /*拉低DQ,开始读时序*/ _nop_(); _nop_(); DQ=
6、1; /*释放总线*/ for(i=0;i2;i+) value_bit=DQ; EA=1; return(value_bit); /* 读一字节数据子程序 */ unsigned char read_byte() unsigned char i,value=0; EA=0; for(i=0;i8;i+) if(read_bit() /*读一字节数据,一个时序中读一次,并作移位处理*/ value|=0x01i; delay(4); /*延时80us以完成此次都时序,之后再读下一数据*/ EA=1; return(value); /* 复位子程序 */ unsigned char reset(
7、) unsigned char presence; EA=0; DQ=0; /*拉低DQ总线开始复位*/ delay(30); /*保持低电平480us*/ DQ=1; /*释放总线*/ delay(3); presence=DQ; /*获取应答信号*/ delay(28); /*延时以完成整个时序*/ EA=1; return(presence); /*返回应答信号,有芯片应答返回0,无芯片则返回1*/ /* 获取温度子程序 */ void get_temper() unsigned char i,j; do i=reset(); /*复位*/ while(i!=0); /*1为无反馈信号*
8、/ i=0xcc; /*发送设备定位命令*/ write_byte(i); i=0x44; /*发送开始转换命令*/ write_byte(i); delay(180); /*延时*/ do i=reset(); /*复位*/ while(i!=0); i=0xcc; /*设备定位*/ write_byte(i); i=0xbe; /*读出缓冲区内容*/ write_byte(i); j=read_byte(); i=read_byte(); i=(i4; temper=i|j; /*获取的温度放在temper中*/ /*= Initialize PI Structure =*/ void P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 控制 PID 算法 语言 程序 10
限制150内