《2022年水温控制系统设计c程序 .pdf》由会员分享,可在线阅读,更多相关《2022年水温控制系统设计c程序 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序清单以下是水温控制系统的主程序,由于按键扫描和数码显示电路比较简单故没有单独列出来,可以参考语句后面的注释。#include unsigned char display_code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x67;unsigned char display_buffer4;bit set=0;bit pid_allow=0;sbit eoc=P33;sbit oe=P32;sbit st=P34;sbit k1=P24;sbit k2=P25;sbit k3=P26;sbit k4=P27;sbit
2、light=P36;sbit heal=P37;unsigned char i=0;float t,t_now,tout=100,t_diff=0,t_target=60,temp=0;unsigned int k=5000;int ttemp1=0;unsigned char ttemp2=0,ttemp3=1;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -float KP=28,KI=2.5;void display(void);/数码管显示void adc0809(void);/AD 转换void pid(void);/pid控制量计算void p_out(vo
3、id);/输出控制void main()TMOD=0 x11;TL0=(65536-3000)%256;TH0=(65536-3000)/256;TL1=(65536-40000)%256;TH1=(65536-40000)/256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;light=0;heal=1;while(1)display_buffer0=(unsigned char)t_now/10;/刷新显示 display_buffer1=(unsigned char)t_now%10;display_buffer2=(unsigned char)t_target/10;di
4、splay_buffer3=(unsigned char)t_target%10;if(set=0)/按键扫描 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -if(k1=0)/复位 while(k-);if(k1=0)t_target=40;if(k2=0)/目标温度+1 while(k-);if(k2=0)if(t_target+)=90)t_target=90;if(k3=0)/目标温度-1 while(k-);if(k3=0)if(t_target-)=40)t_target=40;if(k4=0)/开始工作 while(k-);if(k4=0)pid_allo
5、w=1;set=1;light=1;else if(set=1)if(k1=0)/停止,复位 while(k-);if(k1=0)t_target=40;light=0;set=0;heal=1;tout=0;temp=0;tout=100;t_diff=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -/*函数:定时器0 中断程序功能:3000uS中断一回,对数码管进行显示*/void time0()interrupt 1 using 0 TL0=(65536-3000)%256;TH0=(65536-3000)/256;display();/*函数:定时器1 中断
6、程序功能:40000uS中断一回,进行AD 转换,控制输出量*/void time1()interrupt 3 using 0 TL1=(65536-40000)%256;TH1=(65536-40000)/256;adc0809();/if(pid_allow=1)if(pid_allow=1)&(t_target-t_now3)i=0;/*函数:中断中AD 转换函数名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -*/void adc0809(void)oe=0;st=0;st=1;st=0;while(!eoc);oe=1;t=P1;t_now=100*t/256;oe=0;/*函数:中断中控制输出函数*/void p_out(void)int j;j=(int)tout;if(ttemp3100)ttemp3=1;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -/*函数:进行 pid 计算,得出控制量函数*/void pid()temp=t_diff;adc0809();t_diff=t_target-t_now;tout+=KP*(t_diff-temp)+KI*t_diff;if(tout=100)tout=100;名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -