51单片机dht11温湿度检测

基于单片机的仓库温湿度监测系统设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于单片机的仓库温湿度监测系统设计
&&基于单片机的仓库温湿度监测系统设计毕业论文
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩28页未读,
定制HR最喜欢的简历
你可能喜欢下载费用:8 积分 &
—基于单片机的温湿度检测与控制系统研究.doc 摘要:单片机在检测和控制系统中得到广泛的应用,温、湿度则是系统常需要测量、控制和保持的量。文 中介绍了一种基于 ATA9C51 的单片机的温度和湿度检测与控制的方案,针对被测对象的温度与湿度在不同 变化范围需要不同的 PID 参数的特点,根据检测温度和湿度自动选择合适的一组 PID 参数进行控制的方 案,整个设计简明、清晰。 关键词:单片机 AT89C51; DS18B20 温度传感器; 检测与控制; PID; 看门狗 引言 温、湿度是工业生产中常见的被控参数,温度和湿度己不再是相互独立的量,而应在系统集成中综合考虑。 利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的 满足了工艺要求。本文介绍了利用 AT89C51 单片机进行温度和湿度的检测及其控制的智能化方法。 1 系统的硬件结构及工作原理 工业中很多装置温度和湿度需要保持在一个既定的温度和湿度值上,本文针对实际需要,设计了一套温度、 湿度闭环检测与控制系统,系统整个硬件结构如图 1: 图 1 系统硬件结构图 系统的工作中,经过温度、湿度检测及变换电路把被测对象的温度、湿度转换成电压信号,该电压信号经 A/D 变换器转换为数字信号后送入单片机中,与给定的对应所要控制的多组温度、湿度值进行比较,找出 现温度、湿度值所在范围,根据单片机 AT89C51 中设置的 PID 参数,输出相应温度、湿度初值对应的受 控对象电机的转速初值,经 D/A 转换器转换为模拟电压,通过信号转化为变频器的频率,控制变频调速 装置,带动被控对象,并且把被控对象的转速经变换电路和 A/D 转换器反馈到单片机中,与输出的转速 初值进行比较,其偏差被 PID 程序计算出后重新输出,在规定的时间内循环,从而实现对温度、湿度的控 制[1] ,直到达到在误差允许的范围内输出的转速值与转速初值相等。对于欠温度,控制加热功率;对于过 温度,控制吹风冷却装置,对于湿度则控制一个加湿、去湿装置 [2] 。 2 硬件系统的组成 2.1 温度传感器的选择 [3] 本系统采用美国 DALLAS 公司生产的单总线数字式温度传感器 DS18B20,由于具有结构简单不需要外接 电路,可用一根 I/0 数据线既供电又传输数据,并且具有体积小,分辨率高,转换快等优点,被广泛用于 测量和控制温度的地方。2.2 湿度传感器的选择 本系统采用的是电容式湿敏传感器 HS1101,电容式湿度传感器的感湿机理是当基于电极间的感湿材料吸 附环境中的水分时,其介电常数也随之变化,其电容量与环境中水蒸汽相对压(PV/P}关系可由下式表示: 电容式湿度传感器实用化程度高,工艺成熟,性能稳定,普遍用于各种情况下湿度测量。 2.3 主控模块单片机的选择 [4] 本系统单片机选用 ATMEL 公司的闪速存储器(flash ROM) 型单片机芯片 AT89C51。AT89C51 是 ATMEL 公司的新一代 8 位的一片机产品,带有 4KROM、128BRAM,最大工作频率 24MHZ,同时,具有 32 条输 入输出线,16 位定时/计数器,5 个中断源,一个串行口;它具有集成度高、系统结构简单,体积小可靠 性高,处理功能强,速度快等特点。 2.4A/D 芯片的选择 本系统采用 Ti 公司的串行 A/D 芯片 TLC2543,A/D 转换电路作为 TLC2543 与单片机的接口电路,它是一 种利用 12 位开关电容逐次逼近模拟信号的模数转换器,片内有 14 位通道。具有 12 位分辨率 A/D 转换口, 在标定转换温度范围内转换时间为 10us,输出数据长度可编程,TLC2543 自带采样、保持电路。所以输 出引脚可以直接与单片机的并行 I/0 口连接。 2.5D/A 芯片的选择 本系统采用带有缓冲基准输入的 10 位电压输出数据的模拟转换器 TLC5615,D/A 转换电路作为 TLC5615 与单片机的接口电路,它具有基准电压两倍的输出电压范围。通过 3 线串行总线和工业标准的微处理器和 微控制器接口,接收 16 位数据字以产生模拟输出。 2.6 报警电路简介 本设计的报警电路由一个自我震荡刑的蜂鸣器,只要在蜂鸣器两端加上超过 3v 的电压,蜂鸣器就会叫个 不停和一个发光二极管组成。设计中蜂鸣器是通过 ULN 2003 达林顿管芯片电流放大 IC 来控制。在要求 的温度、湿度达到一定的上界或者下界时,报警电路开始工作。 2.7 温度、湿度显示电路 本设计中用 4 个 LED 组成显示单元,采用静态显示方式。如图 2 所示, 图 2 温、湿度显示模块图 AT89C51 通过 2-4 译码器对 4 只 MC14495 芯片进行控制。MC14495 的输出端与 LED 数码管的 7 段 a,b,c,d,e,f,g 相连。MC14495 芯片的作用是输入被显示字符的二进制码(或 BCD 码) ,井把他自动转换成相 应的字形码,送给 LED 显示。 图 2 中,4 个输出端口用于输出显示字符的二进制码 (或 BCD 码) 。1 个输出端口用于控制 2-4 译码器工作, 还有 2 个输出口经译码器输出后控制哪一片 MC14495 显示输出,从而直观的看出温度、湿度经过闭环调 节之后的效果值。如我们假定温度上限、下限为 50,0,湿度为 70,30。我们可根据现场检测直观的显示 温、湿度值,超出系统将做报警处理。程序简单思路如下 [5] : #include Void main( ){ int a,b,c,d,e,f,g,g;//设置检测点 a,b 用来检测温度上下限,c,d 检测湿度上下限,e,f,g,h 对应显 示温度与湿度的测量值。 If(a>0b=f;c=g;d=h;//把检测对应连接显示接口,显示温度、湿度值。 else报警} 3 系统软件设计 3.1 数据采集 温度数据的采集经过 DS18B20 独特的功能,直接将采集的数据自动转化为数字量传入单片机,湿度数据 是由传感器测得现场湿度信号经变送器转换成 0~5V 的直流信号,送到 A/D 模数转换器转换成数字量后, 再送入单片机进行数据处理,处理后的数据进入 PID 算法比较做出控制量的选择。3.2 数字滤波当采样过程完成后,要对采样所得的数据进行数字滤波。数字滤波程序用于滤去来自控制现场对采样 值的干扰,数字滤波的算法很多,这里采用中值滤波。中值滤波原理很简单,就是对采样过程中的 n 个 (一般是 3 个)采样值进行比较,取中间值放入指定的存储单元。 3.3 单片机抗干扰电路的设计 在抗干扰方面的许多技术,如设计软件陷阱、加硬件看门狗电路等。若失控的程序进入“死循环”,通常采 用“看门狗” 技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循 环运行时间,则认为系统陷入“死循环” ,需进行出错处理。“看门狗” 技术大大提高了系统可靠性,本系统 “看门狗”让系统运行更加稳定可靠。 3.4 系统的 PID 控制算法 [6] 控制算法是控制系统的核心部分,是控制系统能否稳定和调节品质是否优良的关键。本系统是一个闭环控 制的单片机直接控制系统(DDC) ,它的工作原理是按照一定的采样周期 T 去
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。
文档加载中……请稍候!
下载文档到电脑,查找使用更方便
8 积分 &&0人已下载
还剩页未读,继续阅读
<a href="UserManage/CopyrightAppeal.aspx?bid=1747125" title="版权申诉" class="fLeft works-manage-item works-manage-report" target="_blank"
关&键&词: 基于单片机的温湿度检测 监测控制 基于单片机 基于单片机的温湿度 基于单片机的温湿度控制系统 基于单片机的温度测量系统 测试与 温湿度 单片机 系统的研究 测量与控制 基于单片机的温湿度测试系统
& 蚂蚁文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:—基于单片机的温湿度检测与控制系统研究.doc 链接地址:
当前资源信息
类型: 共享资源
格式: DOC
大小: 147.00KB
上传时间:
&& 广告或垃圾信息
&& 色情、淫秽、低俗信息
&& 反政府、反人类、反社会等反动信息
&& 散布赌博、暴力、凶杀、恐怖或者教唆犯罪等信息
&& 侮辱、诽谤等人身攻击信息
&& 散布谣言、扰乱社会秩序,破坏社会稳定等信息5、基于51单片机温湿度检测的设计
说明:&&能检测空气温度和湿度,实时显示,包括论文,原理图,元器件清单。(Can detect air temperature and humidity, display in real time, including paper, schematic diagram, list of components)
文件列表:
1、源程序, 0 ,
1、源程序\001, 11447 ,
1、源程序\001.c, 17700 ,
1、源程序\001.hex, 12926 ,
1、源程序\001.lnp, 38 ,
1、源程序\001.LST, 34074 ,
1、源程序\001.M51, 35435 ,
1、源程序\001.OBJ, 16556 ,
1、源程序\001.plg, 192 ,
1、源程序\001.PWI, 935 ,
1、源程序\001.uvopt, 55691 ,
1、源程序\001.uvproj, 13179 ,
1、源程序\001_uvopt.bak, 55685 ,
2、仿真图, 0 ,
2、仿真图\001.DSN, 183807 ,
2、仿真图\001.PWI, 935 ,
2、仿真图\Last Loaded 001.DBK, 183807 ,
3、原理图, 0 ,
3、原理图\PCB图.PCB, 137978 ,
3、原理图\原理图.ddb, 5085184 ,
3、原理图\原理图.Sch, 22389 ,
4、原理图与仿真图PDF文件, 0 ,
4、原理图与仿真图PDF文件\温湿度测量仿真图.pdf, 17790 ,
4、原理图与仿真图PDF文件\温湿度测量元件清单.pdf, 13723 ,
4、原理图与仿真图PDF文件\温湿度测量原理图.pdf, 17983 ,
4、原理图与仿真图PDF文件\温湿度测量设计框图.pdf, 12103 ,
5、论文, 0 ,
5、论文\基于51单片机温湿度检测的设计.doc, 975452 ,
近期下载者:
相关文件:基于51单片机SHT11温湿度传感器检测程序(含电路图)
> 基于51单片机SHT11温湿度传感器检测程序(含电路图)
基于51单片机SHT11温湿度传感器检测程序(含电路图)
下面是原理图:本文引用地址:下面是SHT11与MCU连接的典型电路:下面是源代码:#include #include /********************************************************宏定义********************************************************/#define uint unsigned int#define uchar unsigned char#define noACK 0#define ACK 1#define STATUS_REG_W 0x06#define STATUS_REG_R 0x07#define MEASURE_TEMP 0x03#define MEASURE_HUMI 0x05#define RESET 0x1eenum {TEMP,HUMI};typedef union //定义共用同类型{}/********************************************************位定义********************************************************/sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcden=P2^2;sbit SCK = P1^0;sbit DATA = P1^1;/********************************************************变量定义********************************************************/uchar table2[]="SHT11 温湿度检测";uchar table3[]="温度为: ℃";uchar table4[]="湿度为:";uchar table5[]=".";uchar wendu[6];uchar shidu[6];/********************************************************1ms延时函数********************************************************/void delay(int z){int x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}/********************************************************50us延时函数********************************************************/void delay_50us(uint t){for(;t>0;t--)for(j=19;j>0;j--);}/********************************************************50ms延时函数********************************************************/void delay_50ms(uint t){for(;t>0;t--)for(j=6245;j>0;j--);}/********************************************************12864液晶写指令********************************************************/void write_12864com(uchar com){lcdrs=0;lcdrw=0;delay_50us(1);P0=lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/********************************************************12864液晶写数据********************************************************/void write_dat(uchar dat){lcdrs=1;lcdrw=0;delay_50us(1);P0=lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/********************************************************12864液晶初始化********************************************************/void init12864lcd(void){delay_50ms(2);write_12864com(0x30);delay_50us(4);write_12864com(0x30);delay_50us(4);write_12864com(0x0f);delay_50us(4);write_12864com(0x01);delay_50us(240);write_12864com(0x06);delay_50us(10);write_12864com(0x0c);delay_50us(10);}/********************************************************12864液晶显示函数********************************************************/void display1(void){write_12864com(0x80);for(i=0;i<18;i++){write_dat(table2[i]);delay_50us(1);}}/********************************************************12864液晶显示函数********************************************************/void display2(void){write_12864com(0x90);for(i=0;i<18;i++){write_dat(table3[i]);delay_50us(1);}}/********************************************************12864液晶显示函数********************************************************/void display3(void){write_12864com(0x88);for(i=0;i<8;i++){write_dat(table4[i]);delay_50us(1);}}/********************************************************12864液晶显示函数********************************************************/void displaywendu(void){write_12864com(0x94);for(i=0;i<3;i++){write_dat(wendu[i]);delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(wendu[i]);delay_50us(1);}}/********************************************************12864液晶显示函数********************************************************/void displayshidu(void){write_12864com(0x8C);for(i=0;i<3;i++){write_dat(shidu[i]);delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(shidu[i]);delay_50us(1);}}/********************************************************SHT11写字节程序********************************************************/char s_write_byte(unsigned char value){unsigned char i,error=0;for (i=0x80;i>0;i>>=1) //高位为1,循环右移{if (i&value) DATA=1; //和要发送的数相与,结果为发送的位else DATA=0;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;}DATA=1; //释放数据线SCK=1;error=DATA; //检查应答信号,确认通讯正常_nop_();_nop_();_nop_();SCK=0;DATA=1; //error=1 通讯错误}/********************************************************SHT11读字节程序********************************************************/char s_read_byte(unsigned char ack){unsigned char i,val=0;DATA=1; //释放数据线for(i=0x80;i>0;i>>=1) //高位为1,循环右移{SCK=1;if(DATA) val=(val|i); //读一位数据线的值SCK=0;}DATA=! //如果是校验,读取完后结束通讯;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;_nop_();_nop_();_nop_();DATA=1; //释放数据线}/********************************************************SHT11启动传输********************************************************/void s_transstart(void){DATA=1; SCK=0; //准备_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}/********************************************************SHT11连接复位********************************************************/void s_connectionreset(void){DATA=1; SCK=0; //准备for(i=0;i<9;i++) //DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{SCK=1;SCK=0;}s_transstart(); //启动传输}/********************************************************SHT11温湿度检测********************************************************/char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode){unsigned error=0;s_transstart(); //启动传输switch(mode) //选择发送命令{case TEMP : error+=s_write_byte(MEASURE_TEMP); //测量温度case HUMI : error+=s_write_byte(MEASURE_HUMI); //测量湿度default :}for (i=0;i<65535;i++) if(DATA==0) //等待测量结束if(DATA) error+=1; // 如果长时间数据线没有拉低,说明测量错误*(p_value) =s_read_byte(ACK); //读第一个字节,高字节 (MSB)*(p_value+1)=s_read_byte(ACK); //读第二个字节,低字节 (LSB)*p_checksum =s_read_byte(noACK); //read CRC校验码 // error=1 通讯错误}/********************************************************SHT11温湿度值标度变换及温度补偿********************************************************/void calc_sth10(float *p_humidity ,float *p_temperature){const float C1=-4.0; // 12位湿度精度 修正公式const float C2=+0.0405; // 12位湿度精度 修正公式const float C3=-0.0000028; // 12位湿度精度 修正公式const float T1=+0.01; // 14位温度精度 5V条件 修正公式const float T2=+0.00008; // 14位温度精度 5V条件 修正公式float rh=*p_ // rh: 12位 湿度float t=*p_ // t: 14位 温度float rh_ // rh_lin: 湿度 linear值float rh_ // rh_true: 湿度 ture值float t_C; // t_C : 温度 ℃t_C=t*0.01 - 40; //补偿温度rh_lin=C3*rh*rh + C2*rh + C1; //相对湿度非线性补偿rh_true=(t_C-25)*(T1+T2*rh)+rh_ //相对湿度对于温度依赖性补偿if(rh_true>100)rh_true=100; //湿度最大修正if(rh_true<0.1)rh_true=0.1; //湿度最小修正*p_temperature=t_C; //返回温度结果*p_humidity=rh_ //返回湿度结果}/********************************************************主函数********************************************************/void main(void){unsigned int temp,value humi_val,temp_ //定义两个共同体,一个用于湿度,一个用于温度 //用于检验是否出现错误un //CRCinit12864lcd();display1();display2();display3();s_connectionreset(); //启动连接复位while(1){error=0; //初始化error=0,即没有错误error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); //温度测量error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量if(error!=0) s_connectionreset(); ////如果发生错误,系统复位else{humi_val.f=(float)humi_val.i; //转换为浮点数temp_val.f=(float)temp_val.i; //转换为浮点数calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度temp=temp_val.f*10;humi=humi_val.f*10;wendu[0]=temp/1000+0; //温度百位wendu[1]=temp%; //温度十位wendu[2]=temp%100/10+0; //温度个位wendu[3]=0x2E; //小数点wendu[4]=temp%10+0; //温度小数点后第一位displaywendu();shidu[0]=humi/1000+0; //湿度百位shidu[1]=humi%; //湿度十位shidu[2]=humi%100/10+0; //湿度个位shidu[3]=0x2E; //小数点shidu[4]=humi%10+0; //湿度小数点后第一位displayshidu();}delay(800); //等待足够长的时间,以现行下一次转换}}
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一基于单片机的温湿度检测(完稿)_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于单片机的温湿度检测(完稿)
&&毕业设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩29页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 单片机数字时钟设计 的文章

 

随机推荐