附录之程序表和原理图.doc

32基于单片机和DS18B20的空调温控系统设计(硬件)

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:6161935    类型:共享资源    大小:525.07KB    格式:RAR    上传时间:2017-12-01 上传人:加Q294****549海量... IP属地:湖南
39
积分
关 键 词:
32 基于 单片机 以及 ds18b20 空调 温控 系统 设计 硬件
资源描述:
32基于单片机和DS18B20的空调温控系统设计(硬件),32,基于,单片机,以及,ds18b20,空调,温控,系统,设计,硬件
内容简介:
附录一 程序表/*/*卢涛的毕业设计 */*基于单片机和DS1820的空调温控系统设计程序*/ /*目标器件:AT89S51 */*晶振:11.0592MHZ */*编译环境:Keil 7.50A */*/*包含头文件*/#include #define uchar unsigned char#define uint unsigned int /*端口定义*/sbit DQ=P33; /数据传输线接单片机的相应的引脚sbit lcdrw = P21;sbit lcdep = P22;sbit right = P26;sbit lcdrs=P23;sbit lt=P15;sbit ut=P16;sbit sz=P17;/*定义全局变量*/uchar tempL=0; /临时变量低位uchar tempH=0; /临时变量高位float temperature; /温度值uchar code table=*TEMP*;uchar code table1= 00 C;uchar code table2=*SET TEMP*;int th,tl,num,a,set,k,sth,stl,ssth,sstl;int stemp,I,Pmax, Pmin;float deltaPn,delta,Pi,PsumCopy,PID1,PID2;float Kp,Kd,E_12,E_22,E_0,Emax;/*函数功能:延时子程序入口参数:k出口参数:*/void delay(unsigned int k) unsigned int n; n=0; while(n 480ms) DQ=1; /拉高数据线 delay(14); /等待(1560ms) /*函数功能:向DS18B20读一字节数据入口参数:出口参数:dat*/ReadOneChar(void) unsigned char i=0; unsigned char dat=0; for (i=8;i0;i-) DQ=1; delay(1); DQ=0; dat=1; DQ=1; if(DQ) dat|=0x80; delay(4); return(dat);/*函数功能:向DS18B20写一字节数据入口参数:dat出口参数:*/WriteOneChar(unsigned char dat) unsigned char i=0; for(i=8;i0;i-) DQ=0; DQ=dat&0x01;delay(5);DQ=1;dat=1;delay(4);/*函数功能:向DS18B20读温度值入口参数:出口参数:temperature*/ReadTemperature(void) Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0x44); /启动温度转换delay(125); /转换需要一点时间,延时Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0xbe); /读温度寄存器(头两个值分别为温度的低位和高位)tempL=ReadOneChar(); /读出温度的低位LSBtempH=ReadOneChar(); /读出温度的高位MSB /温度转换,把高低位做相应的运算转化为实际温度temperature=(tempH*256)+tempL)*0.0625; delay(200);return(temperature);/*函数功能:独立按键扫描子程序入口参数:出口参数:*/void scan()sz=1;yw=1; if(sz=0) if(sz=1)/如果按了设置或确定键set=set;/跳出循环 /*函数功能:1602液晶显示设置温度子程序入口参数:出口参数:*/void displaystep(int k)write_com(0x0f); /光标闪烁write_com(0xc6+a);write_data(0x30+k);/*函数功能:液晶显示控制子程序入口参数:出口参数:*/void tr()if(a=0)th=k;displaystep(k);a+;if(a=1)tl=k;displaystep(k);a-;/*函数功能:矩阵键盘扫描子程序入口参数:出口参数:*/void keyscan(void)unsigned char n;/扫描第一行P1=0xfe;n=P1;n&=0xf0;if(n!=0xf0) delay(); P1=0xfe; n=P1; n&=0xf0; if(n!=0xf0) switch(n) case(0xe0):k=3;tr();break; case(0xd0):k=2;tr();break; case(0xb0):k=1;tr();break; case(0x70):k=0;tr();break; /扫描第二行P1=0xfd;n=P1;n&=0xf0;if(n!=0xf0) delay(); P1=0xfd; n=P1; n&=0xf0; if(n!=0xf0) switch(n)case(0xe0):k=7;tr();break; case(0xd0):k=6;tr();break; case(0xb0):k=5;tr();break; case(0x70):k=4;tr();break; /扫描第三行P1=0xfb;n=P1;n&=0xf0;if(n!=0xf0) delay(); P1=0xfb; n=P1; n&=0xf0; if(n!=0xf0) switch(n) case(0xe0):k+;tr();break; case(0xd0):k-;tr();break; case(0xb0):k=9;tr();break; case(0x70):k=8;tr();break; if (sz=0)If(sz=1)set=!set;/如果按下了设置键,退出温度设置子程序/*函数功能:设置温度子程序入口参数:出口参数:*/void setemp()set=1;a=0;P1=0xff;write_com(0x80); /在第一行写标题for(num=0;num30)stemp=30;if(stemp16)stemp=16;sth=stemp%100/10;stl=stemp%10;/*函数功能:独立按键扫描子程序入口参数:出口参数:*/void keyscan1(void)unsigned char n;P0=0xff;if (sz=0)If(sz=1)set=1;if (lt=0)if(lt=1)stemp-;if (ut=0)if(ut=1)stemp+;/*函数功能:1602液晶显示实际温度子程序入口参数:出口参数:*/void displaytemp(int w) init();write_com(0x80);/在第一行写标题for(num=0;numEmax) deltaPp=(float)Kp*(E_0-E_11); deltaPd=(float)Kd*(E_0-2*E_11+E_21);if(deltaPd=dPdmax) deltaPd=0; deltaPn=deltaPp+deltaPd; else if(abs(E_0)E0) deltaPi=(float)Ki*E_0*(Emax-abs(E_0)/(Emax-E0); else /小误差时的处理 deltaPi=(float)Ki*E_0; if(fabs(deltaPi)=dPdmax) deltaPd=0; deltaPn=deltaPp+deltaPi+deltaPd; if(fabs(deltaPn)dPmax) if(deltaPn0) deltaPn=dPmax; else deltaPn=-dPmax; Psum1+=deltaPn; PsumCopy=Psum1; if(PsumCopyPmax) PsumCopy=Pmax;if(PsumCopyEmax) deltaPn=(float)Kp*(E_0-E_12)+(float)Kd*(E_0-2*E_12+E_22); else if(abs(E_0)E0) deltaPi=(float)Ki*E_0*(Emax-abs(E_0)/(Emax-E0); else /小误差时的处理 deltaPi=(float)Ki*E_0; deltaPn=(float)Kp*(E_0-E_12)+deltaPi+(float)Kd*(E_0-2*E_12+E_22); if(fabs(deltaPn)dPmax) if(deltaPn0) deltaPn=dPmax;else deltaPn=-dPmax; Psum2+=deltaPn;PsumCopy=Psum2; if(PsumCopyPmax) PsumCopy=Pmax; if(PsumCopyPmin) PsumCopy=Pmin; E_22=E_12; E_12=E_0; return(PsumCopy);/*函数功能:PID控制子程序入口参数:出口参数:*/void pidcontrol()PID1=PIDprocess1();PID2=PIDprocess2();/根据具体的控制电路设
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:32基于单片机和DS18B20的空调温控系统设计(硬件)
链接地址:https://www.renrendoc.com/p-6161935.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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