下载此文档

单片机PID水温控制程序.doc


文档分类:通信/电子 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
#include<>#include<>#include<>#defineZ55sbitP27=P2^7;sbittemp=P2^0;sbitP21=P2^1;sbitP22=P2^2;uintnnn;uchart_min,t_minf,t_sec,t_ge,shii,gee,shiff;ucharuk_qian,uk_bai,uk_shi,uk_ge;//uk显示位uinttime;uintz_uk;ucharw_shi,w_ge,w_shif,w_baif;//实际温度数字显示;ucharq_ge,q_shif,q_baif;//占空比显示位ucharidatabai,shi,ge;//预设温度数字显示;bitw_fh;//实际值符号位;uinttvalue;//10倍实际温度。uintp=20000;uintf,g;//floatidatabfb;//占空比设定。ucharset_temp=60;floatidatatemperature;ucharidatacount=1;ucharidatacont=500;ucharidataxx;voidrst18b20(){ temp=1; delay10us(1); temp=0;delay10us(70);//延时916us。temp=1; delay10us(20);//延时266us。}voidwritedata(uchardat)//向ds18b20写数据。{uchari;for(i=0;i<8;i++){ temp=0; temp=dat&0x01; delay10us(10);temp=1; dat>>=1;//先写低位。 }}ucharreaddata()//从ds18b20读数据。{uchardat;uchari;for(i=0;i<8;i++){ temp=0; dat>>=1;//先读低位。 temp=1; if(temp) dat=dat|0x80; delay10us(10);//延时136us; temp=1; } return(dat);}voidreadtemperature(){ uchartemperh,temperl;rst18b20();writedata();//跳过读rom命令直接给器件发命令。writedata(0x44);//启动ds18b20读取温度。rst18b20(); //必须二次复位。writedata();writedata(0xbe);temperl=readdata();//读取温度低字节。temperh=readdata();//读取温度高字节。tvalue=temperh; tvalue<<=8; tvalue=tvalue|temperl;//组成16位合成字。 if(tvalue<0x0fff)//是否为正数。 w_fh=0; else //负数转换程序。 { w_fh=1; tvalue=~tvalue+1; } temperature=tvalue*; tvalue=(tvalue*);//温度转换,强制转换成整形数。 w_shi=tvalue/1000;//十位w_ge=tvalue%1000/100;//个位w_shif=tvalue%100/10;//shifen位w_baif=tvalue%10;//baifenwei}voidinit(){P27=1;TMOD=0x11;TH0=0x3c; //50ms采样一次;TL0=0xb0;//TH1=0x9c;//TL1=0x9c;TH1=(65536-1000)/256;TL1=(65536-1000)%256;EX0=1;IT0=1;ET0=1;TR0=1;ET1=1;TR1=1;}voidrupttime1()interrupt3{/*if(--f==0) { P27=0; }if(--p==0){ P27=1; p=20000; f=g; }*/TH1=(65536-1000)/256;TL1=(65536-1000)%256;nnn++;if(nnn==g){P27=0;}if(nnn==1000){P27=1;nnn=0;} }voidrupttime0()interrupt1{ucharmin,sec; TH0=0x3c; //50ms采样一次;TL0=0xb0; readtemperature();if(--count==0) { time++; //执行时间 t_min=time/60;//分 min=t_min;//保持 t_min=t_min/10;//分十位 t_minf=min%10;//分个位 t_sec=time%60;//秒 sec=t_sec;//保持t_sec=

单片机PID水温控制程序 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人tmm958758
  • 文件大小43 KB
  • 时间2019-05-22