




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
温度控制.c文档#include#includedelay.h#includeLCD_1602.h#includeds18b20.h#define uchar unsigned char#define uint unsigned intsbit kaitong=P20;int cc,dd=0,Er,Er0,Er1,Er2,SetPoint,PrevError=0,LastError=0,Error=0,dError=0;long int SumError;float Proportion=0.5,Integral=0.0003,Derivative=0.07;int Sv,Sv1=0,Sv2=0,Sv3=0,Sv4=0; int b0,b1,a,b,c;int j=0,i;/*= PID计算部分 =*/ int PIDCalc(int NextPoint) Error = SetPoint - NextPoint; / 偏差 if(Error=100)b=20;else if(Error=85)b=Error/7+5;else if(Error=55)b=Error/8+5;else if(Error=30)b=Error/7+2; elseif(NextPoint-SetPoint)20) b=20;elseb=a; if(NextPoint-SetPoint)5) b=0;return b;/*按键扫描*/void scan_key() P1=0XFF; if(P1=0XFE) /s7 delayl(7); if(P1=0XFE) Sv1+; if(Sv19) Sv2+; Sv1=0; else if(P1=0xDF) /s13 delayl(7); if(P1=0XDF) Sv1-; if(Sv10) Sv2-; Sv1=9; else if(Sv2=0) Sv2=0; Sv1=0; else if(P1=0XFD)/s9 delayl(7); if(P1=0XFD) Sv2+; else if(P1=0xFB)/s10 delayl(7); if(P1=0XFB) Sv2-; if(Sv2SetPoint) Er=i-SetPoint;else Er=SetPoint-i; Er0=Er/100+0; Er1=(Er/10)%10+0; Er2=Er%10+0;setPosition(1,9);prints(Er:);printc(Er0);printc(Er1);printc(.);printc(Er2); /*占空比显示*/void B_display() setPosition(2,10); b0=(b/10)%10+0; b1=b%10+0;prints(B:);printc(b0); printc(b1);setPosition(2,14);prints( );/*最大值显示*/void Pvmax_display() i=readtemp(); if(i=j) j=i; IntToStr(j,buffer,3);setPosition(2,10);prints(M:);printc(buffer0);printc(buffer1);printc(.);printc(buffer2);printc(0xDF);printc(C);/*按键处理*/void body() while(1) scan_key1();if(Sv3=1) while(1)LCD_init();setPosition(1,3); prints(setpoint!); delayl(2000); write_com(0x01);while(1)scan_key();LCD_display();scan_key1(); if(Sv3=0) while(1) dd+;if(dd20)dd=1;if(dd0;i-)for(j=114;j0;j-);void delays(uchar i)/短延时while(i-);#endifDS18B20.h 文档#ifndef ds18b20#define ds18b20#includesbit DQ =P22; /定义通信端口uchar Init_DS18B20(void) uchar x=0; DQ = 1; /DQ复位 delays(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delays(80); /精确延时大于480us DQ = 1; /拉高总线 delays(14); x=DQ; /稍做延时后如果x=0则初始化成功x=1则初始化失败 delays(20); return (x);ReadOneChar(void)uchar i=0;uchar dat=0;DQ=1;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1; DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delays(4); return(dat);WriteOneChar(uchar dat) uchar i=0; DQ=1; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delays(5); DQ = 1; dat=1; int readtemp()uchar a=0;uchar b=0;uint t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大10倍输出并四舍五入-此行没用return(t);#endifLCD1602.h文档#ifndef LCD_1602#define LCD_1602 #includedelay.h/*端口定义,可以修改*/sbit ledrs=P23;/读写控制字 sbit leden=P25;/使能端控制字sbit ledrw=P24;void write_com(uchar com) ledrw=0;ledrs=0;P0=com;delayl(5);leden=1;delayl(5);leden=0;void write_data(uchar date) ledrw=0;ledrs=1;P0=date;delayl(5);leden=1;delayl(5);leden=0;void LCD_init() leden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); void setPosition(uchar x,uchar y)uchar pos;switch(x%2)case 1:pos=0x80+y;break; /第一行case 0:pos=0xc0+y;break; /第二行write_com(pos); void printc(uchar a)write_data(a);void prints(uchar * str) uchar i = 0; while(stri != 0) write_data(stri+); uchar buffer5;void IntToStr(uint t, uchar *str, uchar n) uchar a5; char i, j; /取得整数值到数组 a0=t/100; /百位 a1=(t/10)%10;/十位 a2=t%10; /个位 for(i=0; i3; i+) /转成ASCII码 ai=ai+0; for(i=0; ai=0 & i=3; i+); for(j=3-n; ji; j+) /填充空格 *str= ; str+; for(; i3; i+) *str=ai; str+; /加入有效的数字 *str=0; #endifPID.h 文档#ifndef pid_adjust#define pid_adjust/*struct PID int SetPoint; / 设定目标Desired value float Proportion; / 比例常数Proportional Const float Integral; / 积分常数Integral Const float Derivative; / 微分常数Derivative Const int LastError; / Error-1 int PrevError; / Error-2 int SumError; / Sums of Errors ; struct PID pid; */SetPoint=800;Proportion=0.15;Integral=0.05;Derivative=0.0;SumError=0;PrevError=0;LastError=0; int Error,dError;/*= PID计算部分 =*/ int PIDCalc(int NextPoint) Error = SetPoint - NextPoint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训沟通能力课程
- 危险的工地课件
- 科学技术试题库及答案
- 交通银行2025白山市秋招笔试价值观测评题专练及答案
- 农业银行2025海南藏族自治州秋招无领导小组面试案例题库
- 2025年3D打印技术的个性化医疗器械
- 农业银行2025九江市秋招半结构化面试题库及参考答案
- 邮储银行2025长沙市笔试英文行测高频题含答案
- 邮储银行2025达州市秋招无领导小组面试案例题库
- 2025行业未来十年发展趋势预测
- 食为天:2024中国食品饮料行业白皮书
- 慢性肾脏病的用药指导
- 2024版《立体构成》全套课件完整版
- 九年级初中语文阅读理解专项训练及答案带解析
- 海外医疗旅游咨询与服务合同
- 智慧监狱大数据信息化系统建设方案
- 电子商务平台用户服务手册
- 家长进课堂-小学生建筑知识课件002230
- 儿童拍背排痰法课件
- 中国石油联营协议合同范本
- T-CNLIC 0113-2023 母婴洗碗机技术要求和试验方法
评论
0/150
提交评论