数字温湿度计的设计.docx

上传人:b****3 文档编号:4006007 上传时间:2022-11-27 格式:DOCX 页数:29 大小:129.12KB
下载 相关 举报
数字温湿度计的设计.docx_第1页
第1页 / 共29页
数字温湿度计的设计.docx_第2页
第2页 / 共29页
数字温湿度计的设计.docx_第3页
第3页 / 共29页
数字温湿度计的设计.docx_第4页
第4页 / 共29页
数字温湿度计的设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数字温湿度计的设计.docx

《数字温湿度计的设计.docx》由会员分享,可在线阅读,更多相关《数字温湿度计的设计.docx(29页珍藏版)》请在冰豆网上搜索。

数字温湿度计的设计.docx

数字温湿度计的设计

智能仪器仪表

课程设计

 

题目SHT10数字温湿度计的设计

学院(部)机械工程学院

专业测控技术与仪器

学生姓名刘娅丽

学号201210114122年级2012级

指导教师莫莉职称讲师 

2015年6月8日

 

 

摘要

温湿度是一种最基本的环境参数,温湿度的测量方法和装置对现在的生活、生产具有重要的意义。

此温湿度测量系统是基于温湿度传感器SHT10、单片机STC89C52对温度湿度分别测量并通过液晶1602显示屏经行显示。

使用新式智能的温湿度传感器STH10来实现对温度、湿度的监测,该传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D 转换器以及串行接口电路实现无缝连接。

因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高,本系统具有可读性高,稳定性高,反应速度快,测量值准确的特点。

关键词:

单片机;SHT10温湿度传感器;LCD1602显示

 

目录

第一章绪论1

1.1课题的研究背景1

1.2课题的研究内容及目标1

第二章系统方案设计2

2.1设计目的及要求2

2.2器件选择2

第三章系统的硬件设计与实现4

3.1单片机部分4

3.1.1AT89C52单片机概况4

3.1.2最小系统原理图4

3.2传感器部分4

3.2.1SHT10产品概述4

3.2.2管脚说明5

3.2.3传感器模块电路图5

3.3显示模块6

3.3.11602LCD的基本参数及引脚功能6

3.3.21602LCD主要技术参数:

6

3.3.3引脚功能说明6

3.3.41602LCD的指令说明7

第四章软件设计8

4.1主程序流程图8

4.2SHT10传感器程序设计9

4.2.1启动传输9

4.2.2连接复位9

4.3液晶程序设计12

总结13

参考文献14

附录一电路图15

附录二程序代码16

 

第一章绪论

1.1课题的研究背景

温度与湿度与人们的生活息息相关。

尤其是在工农业生产、气象、国防、科研等部门,必须经常、精确的对环境温度进行监测和控制。

此外,在制药,造纸准及温湿度测量,食品加工和其他行业是必要的。

比较传统的温度计使用水银制作显示,构造简单、价格低廉,缺憾是精确度不高,不宜读数。

传统的干湿球温度计的显示方法,不仅复杂,测量精度不高。

而选用单片机对温湿度实施监控和测量,不单单具有节制便利,单一灵活的特点,而且可以大大提高温度控制的灵活性的优点。

用LED数码管显示温度和湿度值,看起来更直观。

测量温度和湿度最重要的就是传感器。

温度和湿度的测量过去是分离的。

传感器的成长历经了三个阶段:

传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。

目前,从模拟到数字温度传感器的模型的方向,从集成化向智能化,网络化的发展。

温度传感器也经历过这样的阶段走向数字化、智能化。

1.2课题的研究内容及目标

温度和湿度探测器是以AT89C52单片机为核心控制芯片,该芯片具有良好的抗干扰能力,快速响应。

使用此单片机构成的温湿度检测仪能够定时、无误的监测周围的温度和相对湿度。

使用高灵敏度收集湿敏电阻阻值变化,然后经由单片机从而得到相应湿度,这就是本检测仪的硬件部份的设计;DHT11数字温度传感器对温度的实时采集和直接控制监测。

并用LCD显示屏作为显示设备的硬件设计方案。

软件部分选用模块化的方式分成几个个体,一个个进行程序设计,最后连接各部分一起协调工作,从而实现实时监测周围温湿度的目的。

第二章系统方案设计

2.1设计目的及要求

温度、湿度是工业和农业生产的主要环境参数。

是否能够及时、准确地测量很重要。

如果单片机来对温度进行控制,利用高精度的温度,湿度控制,强湿功能,体积小,价格低,简单灵活,很好的满足工艺要求。

要求如下:

1、实现温度和湿度的测量;

2、按电源键进行测量;

3、温度测量要求:

,具有8路模拟输入通道,每一通道每秒检测100次

4、温度的测量范围、精度:

0℃~200℃,测量精度为±1℃。

系统测量环境温度为20℃。

5、湿度测量要求:

具有8路模拟输入通道,每一通道每秒检测100次

6、湿度测量范围、精度:

0~100%RH,测量精度为±1%RH。

系统测量环境温度为20℃。

7、在LCD显示屏上显示数据和结果;

2.2器件选择

2.2.1传感器选择

使用数字温湿度传感器SHT10。

湿度测量范围:

0%~100%RH;温度测量范围:

40~+85℃;湿度测量精度:

±2%相对湿度±0.2℃温度测量精度。

该传感器价格很便宜。

温度和湿度都达到或超过了标题的精度要求,属于低功率传感器。

2.2.2显示器选择

使用LCD1602液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

它具有体积小、低功耗、显示丰富等优点。

电路连接简单,价格也便宜。

2.2,3单片机选择

采用AT89C52单片机,AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

它既经济又有较大的内存,能很好的达到设计要求。

2.3系统总体方案

1方案一

用湿敏传感器和温度传感器采集环境温湿度数据,经放大滤波、A/D转换后,数据送入单片机进行处理,再用数码管显示。

此方案电路较复杂,也不便于调试。

2方案二

采用数字温湿度传感器SHT10采集温湿度信号,AT89C52单片机作为处理器,温度、湿度显示在LCD1602上。

此方案电路简单,易于调试,抗干扰能力强。

综合考虑,选择方案二作为系统总体方案。

图2-1系统结构框图

第三章系统的硬件设计与实现

3.1单片机部分

3.1.1AT89C52单片机概况

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

3.1.2最小系统原理图

图3-1单片机最小系统

3.2传感器部分

3.2.1SHT10产品概述

SHT10数字温湿度传感器是一种复合传感器,它包含已校准数字信号输出。

通过特殊的数字模块采集技术和温湿度传感技术,以确保产品拥有相当高的可靠性和卓越的长期稳定性。

传感器由一个电阻式感湿元件与一个NTC测温元件组成,跟一个高性能的8位单片机相连接。

因此,产品品质优良,响应速度快,抗干扰能力强,性价比很高。

而且它的每次校准都在及其标准的温湿度实验室中进行。

将所测的校准系数用程序存储在OTP内存中,当需要处理检测到的信号时,传感器会自动调用这些标准系数。

单线串行接口,很容易和快速的系统集成。

它的优点是体积小、低功耗、最高20米以上的远距离信号传递,使它能够在最为严格的场合使用。

3.2.2管脚说明

1:

电源负极,电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。

2:

串行数据,DATA三态门用于数据的读取。

DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。

数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。

为避免信号冲突,微处理器应驱动DATA在低电平。

需要一个外部的上拉电阻(例如:

10kΩ)将信号提拉至高电平(参见图2)。

上拉电阻通常已包含在微处理器的I/O电路中。

3:

串行时钟输入,SCK用于微处理器与SHTxx之间的通讯同步。

由于接口包含了完全静态逻辑,因此不存在最小SCK频率。

4:

SHTxx的供电电压为2.4~5.5V。

传感器上电后,要等待11ms以越过“休眠”状态。

在此期间无需发送任何指令。

3.2.3传感器模块电路图

图3-2传感器电路图

3.3显示模块

3.3.11602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图4-5所示:

图3-3LCD尺寸图

3.3.21602LCD主要技术参数:

★显示容量:

16×2个字符

★芯片工作电压:

4.5—5.5V

★工作电流:

2.0mA(5.0V)

★模块最佳工作电压:

5.0V

★字符尺寸:

2.95×4.35(W×H)mm

3.3.3引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3-1所示:

表3-1引脚功能

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

3.3.41602LCD的指令说明

1602液晶模块内部的控制器共有11条控制指令,如表3-2所示:

表3-2指令说明

序号

指令

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

置输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

置功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生存贮器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志或地址

0

1

BF

计数器地址

10

写数到CGRAM或DDRAM)

1

0

要写的数据内容

11

从CGRAM或DDRAM读数

1

1

读出的数据内容

 

第四章软件设计

4.1主程序流程图

N

Y

温湿度修正

显示

图4-1程序流程图

4.2SHT10传感器程序设计

4.2.1启动传输

图4-2启动传输时序

程序:

DATA=1;SCK=0;

_nop_();SCK=1;

_nop_();DATA=0;

_nop_();SCK=0;

_nop_();_nop_();_nop_();SCK=1;

_nop_();DATA=1;

_nop_();SCK=0;

4.2.2连接复位

图4-3连接复位时序

程序:

unsignedchari;

DATA=1;SCK=0;

for(i=0;i<9;i++)

{

SCK=1;

SCK=0;

}

s_transstart();//开始传输函数

4.2.3读写函数

写函数:

chars_write_byte(unsignedcharvalue)

{

unsignedchari,error=0;

for(i=0x80;i>0;i/=2)

{

if(i&value)DATA=1;

elseDATA=0;

SCK=1;_nop_();_nop_();_nop_();

SCK=0;

}

DATA=1;SCK=1;error=DATA;

_nop_();_nop_();_nop_();

SCK=0;DATA=1;

returnerror;//返回:

0成功,1失败

}

读函数:

chars_read_byte(unsignedcharack)

{

unsignedchari,val=0;

DATA=1;

for(i=0x80;i>0;i/=2)

{

SCK=1;

if(DATA)val=(val|i);

_nop_();_nop_();_nop_();SCK=0;

}

if(ack==1)DATA=0;

elseDATA=1;

_nop_();_nop_();_nop_();SCK=1;

_nop_();_nop_();_nop_();SCK=0;

_nop_();_nop_();_nop_();DATA=1;

returnval;

}

 

4.3液晶程序设计

4.3.1LCD1602部分时序说明

表4-1液晶时序说明

读状态

输入

RS=L,R/W=H,E=H

输出

D0—D7=状态字

写指令

输入

RS=L,R/W=L,D0—D7=指令码,E=高脉冲

输出

读数据

输入

RS=H,R/W=H,E=H

输出

D0—D7=数据

写数据

输入

RS=H,R/W=L,D0—D7=数据,E=高脉冲

输出

4.3.21602LCD的一般初始化(复位)过程

★写指令38H:

显示模式设置

★写指令08H:

显示关闭

★写指令01H:

显示清屏

★写指令06H:

显示光标移动设置

★写指令0CH:

显示开及光标设置

 

总结

此次课程设计中,难点在于SHT10温湿度传感器的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。

一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能很快上手了。

利用温度传感器获取被控对象指标,通过温度传感器将需要测量的温度信号转化为数字电信号,再经单片机转换成显示器可以识别的信息,最后显示输出。

起初,我制订了合理的规划,绘制了与课题相关的硬件原理图,分析了单片机的各I/O端口。

然后进行程序设计的分析,设计绘制流程图,并按照流程图,进行程序段的编写。

接下来把所有的程序段组合在一起综合分析,最后烧录到单片机上进行硬件调试。

在这整个过程当中,我遇到了重重困难。

如程序里括号及分号的错误;编程中共用体的语句的使用;18B20上电温度误判;由于没有合理的考虑到字节的长度的问题导致一系列的错误等问题。

通过多次分析和调试,查阅互联网资料最终成功解决。

单片机不是只要学好怎样写程序就够了,还要对硬件有所了解,要把软件与硬件相结合才,期间还要经过多次的失败,需要相当的耐心和细致的思考来排除一切困难,一步一步地解决问题。

总的来说,自己从这次独立的课程设计中收获了一些知识与经验,一些从书本中学之不来的东西,不是说理论无用,而这恰恰是在理论的土壤中开出的花朵,是在理论的肩膀望见的更宽广的道路!

自主动手动脑实践,成功来之不易!

 

参考文献

[1]谢光忠、蒋亚东等.温湿度智能数据采集控制系统的研制:

传感器技术20004.

[2]丁元杰.单片微机原理及应用.北京:

机械工业出版社.1993.

[3]余永权.MCS-51系列单片机应用技术.北京:

北京航空航天出版社.2002.

[4] 刘勇.数字电路.北京电:

子工业出版社.2004.

[5] 王法能.单片机原理及应用(简明修订版).北京:

科学出版社.2001.

[6] 赵伟军.PROTEL99SE教程.北京:

人民邮电出版社.2004.

[7] 黄 强.模拟电子技术》北京:

科学出版社.2003.  

[8] 陈晓文.电子电路课程设计.北京:

北京电子工业出版社.2004.

附录一电路图

图一电路仿真图

附录二程序代码

#include

#include

#include//Keillibrary

#include//Keillibrary

#defineLCD_DBP0

sbitLCD_RS=P2^0;

sbitLCD_RW=P2^1;

sbitLCD_E=P2^2;

sbitSCK=P2^6;//定义通讯时钟端口

SbitDATA=P2^7;//定义通讯数据端口

typedefunion

{unsignedinti;//定义了两个共用体

floatf;

}value;

enum{TEMP,HUMI};//TEMP=0,HUMI=1

#definenoACK0//用于判断是否结束通讯

#defineACK1//结束数据传输

#defineSTATUS_REG_W0x06//00000110

#defineSTATUS_REG_R0x07//00000111

#defineMEASURE_TEMP0x03//00000011

#defineMEASURE_HUMI0x05//00000101

#defineRESET0x1e//00011110

#defineucharunsignedchar

#defineuintunsignedint

voidLCD_init(void);//初始化函数

voidLCD_write_command(ucharcommand);//写指令函数

voidLCD_write_data(uchardat);//写数据函数

voidLCD_disp_char(ucharx,uchary,uchardat);//显示字符,X(0-15),y(1-2)

voidLCD_disp_str(ucharx,uchary,uchar*str);//LCD1602显示字符串函数

voiddelay_n10us(uintn);//延时函数

//初始化LCD1602

voidLCD_init(void)

{

delay_n10us(10);

LCD_write_command(0x38);

delay_n10us(10);

LCD_write_command(0x0c);

delay_n10us(10);

LCD_write_command(0x06);

delay_n10us(10);

LCD_write_command(0x01);

delay_n10us(100);

}

//LCD写指令

voidLCD_write_command(uchardat)

{

delay_n10us(10);

LCD_RS=0;//指令

LCD_RW=0;//写入

LCD_E=1;//允许

LCD_DB=dat;

delay_n10us(10);

LCD_E=0;

delay_n10us(10);

}

//LCD写数据

voidLCD_write_data(uchardat)

{

delay_n10us(10);

LCD_RS=1;//数据

LCD_RW=0;//写入

LCD_E=1;//允许

LCD_DB=dat;

delay_n10us(10);

LCD_E=0;

delay_n10us(10);

}

//LCD1602显示一个字符函数

voidLCD_disp_char(ucharx,uchary,uchardat)

{

ucharaddress;

if(y==1)

address=0x80+x;

else

address=0xc0+x;

LCD_write_command(address);

LCD_write_data(dat);

}

//LCD1602显示字符串函数

voidLCD_disp_str(ucharx,uchary,uchar*str)

{

ucharaddress;

if(y==1)

address=0x80+x;

else

address=0xc0+x;

LCD_write_command(address);

while(*str!

='\0')

{

LCD_write_data(*str);

str++;

}

}

voiddelay_n10us(uintn)

{

uinti;

for(i=n;i>0;i--)

{

_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();//延时10us@12M晶振

}

}

/****************定义函数****************/

voids_transstart(void);//启动传输函数

voids_connectionreset(void);//连接复位函数

chars_write_byte(unsignedcharvalue);//DHT90写函数

chars_read_byte(unsignedcharack);//DHT90读函数

chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);//测量温湿度函数

voidcalc_dht90(float*p_humidity,float*p_temperature);//温湿度补偿

//启动传输函数

voids_transstart(void)

//generatesatransmissionstart

//__

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1