- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机PID水温控制程序
#include
#include
#include
#include04.h
#defineZ55
sbitP27=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;//实际温度数字显示;uchar
q_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;i8;i++)
{
temp=0;
temp=dat0x01;
delay10us(10);
temp=1;
dat=1;//先写低位。
}
}
ucharreaddata()//从ds18b20读数据。
{
uchardat;
uchari;
for(i=0;i8;i++)
{
temp=0;
dat=1;//先读低位。
temp=1;
if(temp)
dat=dat|0x80;
delay10us(10);//延时136us;
temp=1;
}
return(dat);
}
voidreadtemperature()
{
uchartemperh,temperl;
rst18b20();
writedata(0xcc);//跳过读rom命令直接给器件发命令。
writedata(0x44);//启动ds18b20读取温度。
rst18b20();//必须二次复位。
writedata(0xcc);
writedata(0xbe);
temperl=readdata();//读取温度低字节。
temperh=readdata();//读取温度高字节。
tvalue=temperh;
tvalue=8;
tvalue=tvalue|temperl;//组成16位合成字。
if(tvalue0x0fff)//是否为正数。
w_fh=0;
else//负数转换程序。
{
w_fh=1;
tvalue=~tvalue+1;
}
temperature=tvalue*0.0625;
tvalue=(tvalue*6.25);//温度转换,强制转换成整形数。
w_shi=tvalue/1000;//十位
w_ge
文档评论(0)