基于51的温度控制系统设计.docx

上传人:王** 文档编号:1033096 上传时间:2024-03-16 格式:DOCX 页数:13 大小:79.29KB
下载 相关 举报
基于51的温度控制系统设计.docx_第1页
第1页 / 共13页
基于51的温度控制系统设计.docx_第2页
第2页 / 共13页
基于51的温度控制系统设计.docx_第3页
第3页 / 共13页
基于51的温度控制系统设计.docx_第4页
第4页 / 共13页
基于51的温度控制系统设计.docx_第5页
第5页 / 共13页
基于51的温度控制系统设计.docx_第6页
第6页 / 共13页
基于51的温度控制系统设计.docx_第7页
第7页 / 共13页
基于51的温度控制系统设计.docx_第8页
第8页 / 共13页
基于51的温度控制系统设计.docx_第9页
第9页 / 共13页
基于51的温度控制系统设计.docx_第10页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于51的温度控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于51的温度控制系统设计.docx(13页珍藏版)》请在优知文库上搜索。

1、/*/*/*程序名称:温度监控系统/*程序功能:利用89C52单片机和DS18B20温度传感器实现环境*/*温度的实时测量和高、低温报警*/*程序版本:vl.0*/*作者:*/*编写时间:*/#includc#includc含_nop_()延时函数定义数据类型#defineucharunsignedchar#defineuintunsignedint定义端口#defineLEDPOsbitDQ=P32;段码输出口传感器数据口sbitSMG_q=PMO;定义数码管阳级控制脚(千位)sbitSMGj)=P。;定义数码管阳级控制脚(百位)sbitSMG-s=Pl2;定义数码管阳级控制脚(十位)sbi

2、tSMG_g=PD3;定义数码管阳级控制脚(个位)sbitbuzzer=P15;sbitIedJow=P26;sbitlcd_high=P27;蜂鸣器低温指示灯高温指示灯sbitlcd_ok=P25;温度正常指示灯sbitlcd_work=P24;sbitset=P37;sbitadd=P34;sbitdec=P35;定义变量和常量intcount=0;inth;uinttemp;ucharr;ucharhigh=35,low=20;共阳LED段码表工作指示灯设置按键加一按键减一按键按键次数存放器主函数用循环计数器温度值温度值整数形式上下限初值110IlIIl2”3456,yg“9”1”Ilu

3、charcodeLED_code12=OxcO,0xf9,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90;ucharcodeLED_codel=0x40,0x79,0x24,0x30,0x19,Ox12,0x02,0x78,0x(X),0x10);ucharcodeditabl6=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;小数局部转换码表uchardatatemp_data2=0x00,0x00;存储从传感器读出的温度值uchardatadp5=

4、0x00,0x00,0x00,0x00,0x00;显示单元数据,共4个数据和一个运算子函数声明voidds_reset();/DS18B20初始化函数voidds_write(uchards_wrdata);/DS18B20写数据函数uchards_read();read_temp();/DS18B20读数据函数读取温度函数voidchange_temp(uinttern);温度数据处理void void void void voidxianshi(int horl);display();keyscan();Warned();dclay(uint t);温度显示转换数码管显示函数按键查询函数超

5、限报警延时函数,单次25US/*主函数*/voidmain()(1.ED=OxOO;初始化显示端口Icdl=O;led2=0;led3=0;led4=0;for(h=0;h4;h+)dph=8;Iwhile(l)循环执行显示和温度读取(uchari;for(i=0;i0;i-)DQ=I;-11op-0;-110P-();DQ=O;_nop_();_nop_();_nop_();_nop_();DQ=ds_wrdata&0x01;最低位移出delay(6);ds_wrdata=ds_wrdata/2;右移1位DQ=I;delay(l);/*/*函数名称:ds_read()*/*函数功能:从DS1

6、8B20读数据*/*入口参数:无*/*输出参数:value*/*调用函数:delay();_nop_();*/*全局变量:*/*局部变量:i;ValUe;*/*木木*木*木*/uchards_read(void)uchari;ucharvalue=O;for(i=8;i0;i-)DQ=l;_nop_();_nop_();value=l;DQ=O;_nop_0;_nop_();_nop_();-nop-0;DQ=I;_nop_();-11op-0;_nop_0;_nop_();if(DQ)value=0x80;delay(6);DQ=I;return(value);)/*/*函数名称: *函数功

7、能: /*入口参数: /*输出参数: /*调用函数: /*/*全局变量: /*局部变量:read_temp()读温度数据数据无yempds_reset();ds_write();ds_read(); */delay。;temptemp-data;*/*/*/*/*/*/*/* */rcad_temp()(ds_reset();delay(200);ds_write(Oxcc);ds_write(0x44);ds_reset();delay(l);ds_write(Oxcc); ds_write(Oxbe);temp_dataO=ds_rcad(); temp-data 1 =ds_read()

8、; temp=tcmp_datal 1 ;temp6348)(tem=65536-tem;n=l;Idp4=tem&0x0f;dpO=ditabdp4;dp4=em4;dp3=dp4100;dpl=dp4%100;dp2=dpl10;dpl=dpl%10;r=dpl+dpf21*10+dpf3*100;if(!dp3)dp3=0x0a;if(!dp )(dp2=0x0a;I)if(n)dp3=0x0b;/温度值正负判断/负温度求补码标志位置1/取小数局部的值/存入小数局部显示值/取中间八位,即整数局部的值/取百位数据/取后两位数据/取十位数据/个位/实际温度值(十进制)符号位显示判断最高位为0时不显示次高位为0时不显示负温度时最高位显示”/*木*:*木*木*木*/*函数名称:xianshi()*/*函数功能:温度数据转换成显示所需LED段码*/*入口参数:horl*/*输出参数:dpj*/*调用函数:无*/*全局变量:dp;/*局部变量:n;*/voidxianshi(inthorl)intn=0;if(horl128)(horl=256-horl;n=l;Idp3=horl100;dp3=dp3fexf;dp=horl%10010;dpl=horl%10;d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 论文 > 毕业论文

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!