基于IIC总线的温湿度测量系统的设计_第1页
基于IIC总线的温湿度测量系统的设计_第2页
基于IIC总线的温湿度测量系统的设计_第3页
基于IIC总线的温湿度测量系统的设计_第4页
基于IIC总线的温湿度测量系统的设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

福 建 师 范 大 学 应 用 科 技 学 院学 生 论 文论文题目:基于IIC总线的温湿度测量系统指导教师: 王毅 学 号: 120352010063 姓 名: 郑颖 年 级: 2010级 专 业: 电子信息工程 2014 年 5 月 5 日基于IIC总线的温湿度测量系统福建师范应用科技学院 电子信息工程专业120352010063 郑颖 指导老师:王毅【摘要】本设计采用单片机构建I2C总线,实现对SHT11的控制,达到了测量温湿度的目的.本课题设计的温湿度测量系统结构简单实用,系统自动采集环境的温湿度,有很高的可靠性,有很大的发展前景。文中还给了硬件电路的原理图、系统流程图等。 【关键词】单片机、SHT11温湿度传感器、液晶显示器The temperature and humiditymeasurement system based on the IIC bus Science and Technology Practising College Fujian Normal UniversityElectronic Information Engineering 120352010063 Zheng ying Tutor: wang yiAbstract This design USES the single chip microcomputer to construct the I2C bus, the control system for the SHT11, achieve the goal of the measuring temperature and humidity. This topic design of temperature and humidity measurement system structure is simple and practical, the system automatically collect the temperature and humidity of the environment, has high reliability, has great prospects for development. This paper also gives the hardware circuit schematic diagram, system flow chart, etc.Key Words SCM and SHT11 temperature and humidity sensor, liquid crystal display目录1绪论11.1课题的背景与意义11.2系统的主要性能指标11.3主要工作任务12方案选择12.1传感器的选择12.2整体电路的设计23硬件电路的设计23.1单片机电路33.1.1单片机概述33.1.2 MCS-51的硬件结构33.1.3 89C52单片机的引脚43.2时钟电路53.3复位操作53.4温湿度采集与传输模块63.4.1 SHT11温湿度传感器63.4.2 SHT11与单片机的接口电路设计63.5 显示模块 LCD160273.5.1 选用1602字符型LCD的原因73.5.2 LCD1602液晶显示73.6按键电路设计74系统的工作原理85软件程序设计85.1主程序的设计85.2主要代码及解释95.3 IC总线读写程序256总结257致谢26参考文献26附录1 系统原理图27附录2 系统PCB图28 1绪论1.1课题的背景与意义湿度与温度是测量领域中两个十分重要的环境参数,如今温度和湿度在具体的环境测量过程当中已经是相互关联的参数了。不仅是在工业生产,农业生产以及军事等领域对温湿度的测量随处可见。准确的测量温湿度对于食品、制药、造纸等行业更是尤为重要。随着电子技术、计算机技术、传感器等科技行业的高速发展,温湿度的测量也取得了跨越式的发展。可以这么说,对温湿度的测量影响着各行各业的安全健康,直接影响着人类的所有活动。如今,温湿度技术不断的发展、完善,对温湿度的测量也要求越来越智能,便捷。随着人们对温湿度测量要求的提高,温湿度传感器也采用了一些新的项目,如线性化的处理,自动的补偿温度,自动的校准湿度等,其特点也从分立元件向智能化、集成化、系统化的方向发展。因为随着温湿度测量系统的便捷,高效,成本低,且能满足各种环境对温湿度的测量,使之有较高的推广价值以及广阔的运用前景。本次课题的要求就是采用单片机和数字式温湿度传感器SHT11,由1602字符型LCD显示设计一种温湿度测量系统。为人们在日常生活中对空气的温湿度测量提供一种便捷高效、低成本的测量工具1。1.2系统的主要性能指标1、实时检测当前的温度和湿度;2、当整系统提供的人工修正值,修正值范围温度为5、湿度5%,并保证湿度最低不会低于0%;3、采用LCD作为显示;4、据精确至小数点后一位,温度误差控制在23,湿度误差控制在5%,采集周期=500ms。1.3主要工作任务根据课题要求,设计的是基于IIC总线的温湿度测量系统,首先所传感器的选择采用的是SHT11芯片,其内部功能强大,能满足本设计的要求。其次本设计采用单片机MCU51最小系统,选择STC89C52芯片,利用单片机通用的I/O口线来虚拟IC总线,最后用带背光的LCD1602液晶,使测量的温湿度数据在LCD上显示,结合这些设计硬件电路与软件程序,。使设计的系统开始工作后,根据初始条件实时读取当前环境的湿度值和温度值。2方案选择2.1传感器的选择SHT11芯片是在硬件电路的基础上通过软件程序来实现对环境的实时测量的功能的,它能输出所测量的温湿度的数据,配合其他器件,就可以以最简单的方式搭配出智能化、高性能的温湿度测量系统。课题的要求就是要采用IIC总线,SHT11就有二线数字输出,结合单片机通过通用的I/O口线来虚拟的IC总线,完成温湿度数据的采集输出,并且SHT11其功能强大,内部自带温度感测、湿度感测、校准寄存器、A/D转换电路等(具体看图2-1),加其免调试、全互换、免标定等特点都为完成一个高集成度、高精度、高可靠性的温湿度测量系统提供了解决方案2。图2-1 SHT11温湿度传感器2.2整体电路的设计本课题的要求就是完成对温湿度的采集,信号的采集及处理部分由SHT11构成,数据进入单片机后经过处理(本设计选用的是STC89C52芯片),后通过LCD1602液晶显示温湿度。硬件中包括一个开关,为复位开关,还有三个开关为调整键、加键、减键,可以调整系统,提供的人工修正值。接入9V电源后,电路初始化,SHT11温湿度传感器开始进行对当前环境的温湿度测量和计算,进入单片机系统处理后通过LCD1602液晶显示结果3。整体的电路方框图如下:单片 机温湿度传感器按键控制显示电路图2-2温湿度测量系统电路方框图3硬件电路的设计本课题所设计的电路结构非常简单,主要构成此温湿度测量系统的器件就是数字温湿度传感器SHT11、STC89C52单片机和1602字符型LCD(具体器件清单看图3-1)让电路自动完成对测量环境的温湿度的数据采集、处理与显示,也就是SHT11芯片主导着温湿度采集与传输模块,STC89C52单片机主导着控制模块,1602字符型LCD主导着显示模块。由于系统存在温湿度测量误差,还设计了三个按键进行人工修复4。序 号名 称型 号数 量1单片机STC89C5212瓷片电容0.1uF13瓷片电容30pF24按键45晶振12M16电源芯片LM780517电阻10K18排阻10K19电位器50K110电解电容10uF111电解电容100uF212温湿度传感器SHT11113液晶显示器LCD16021 图3-1 电路元件清单3.1单片机电路3.1.1单片机概述1.单片机的产生与发展伴随着1971年11月第一台MCS-4微处理器(配有2000只晶体管、四位微处理器、RAM、ROM、移位寄存器)的诞生,拉开了人们研制这一新科技单片机序幕,这是单片机发展的初级阶段;低性能的单片机阶段代表作是MCS-48系列,将RAM、ROM、8位定时器电路、8位并行I/O接口和8位CPU等集中于一个半导体的芯片中,这种让CPU与PC外围电路集成在一起的技术为进一步发展单片机指明了道路;1980年推出的MCS-51系列使单片机进入了高性能阶段,8位单片机一般都带有串口、多个16位定时器/计数器、多级中断处理系统。片内RAM、ROM的容量加大,且寻址范围可达64KB。迄今为止,还是单片机市场的主流,大家都在不断改进发展它;1983年有了16位的单片机,16位CPU、两个16位定时器、8个中断源等等,功能更加强大;90年代后单片机就在速度、功能、集成度、可靠性、应用等全方面高水平发展。2单片机的应用单片机主要分为两种应用:单机与多机。单机应用也就是只用到一片单片机,目前应用最广,在智能接口、智能仪表、测控系统等都有广泛应用;多机应用系统局部网络系统、功能集散系统及并行多机处理。 综上所述,可知单片机发展之迅猛,在短短的几十年间就涉及到了各个领域,因其价格低廉体积小,功能强大,还有很大的发展前景5。3.1.2 MCS-51的硬件结构1.MCS-51系列的内部结构下面我们就结合图3-2来了解它的功能组成:一个时钟电路与一个内振荡器;一个串口I/O接口,主要负责将让数据在计算机与外围电路间一位一位的传递;4个8位并行I/O接口(PO、P1、P2、P3),主要用来让数据并行传输(输入与输出);中断系统,可接收串行口中断申请、定时器/计数器中断申请和外部中断申请,出现故障是自动处理,单片机中有五个中断源,可以编辑两个中断系统;1个八位CPU,CPU是单片机的核心,决定着这个单片机的主要功能与特性;两个16位定时器/计数器,有四种工作方式(计数方式、定时方式等),其范围有软件程序锁所设定;RAM,也就是数据存储器,此单片机的片址范围是64KB可读写数据,主要用于存放数据;ROM,也就是程序存储器。容量最大为64KB主要是存放软件程序、表格等;特殊功能寄存器SFR。特殊功能寄存器共有21个,用于控制和管理内部接口工作 6。图3-2 MCS-51系列单片机内部结构框图3.1.3 89C52单片机的引脚下面我们就来介绍89C52单片机芯片的各个引脚的功能。图3-3 89C52单片机引脚示意图 主电源引脚(2根)VCC:接9V电源VSS:接地线外接晶振引脚(2根)XTAL1:片内振荡电路的输入端XTAL2:片内振荡电路的输出端控制引脚(4根)RST:复位引脚。ALE/PROG:地址锁存允许信号PSEN:外部存储器读选通信号EA:程序存储器的内外部选通。可编程的输入/输出引脚(32根)8位双向I/O口线,P0P43.2时钟电路STC89C52有一个振荡器,是由其内部的高增益反相放大器构成的。时钟有两种方式产生,分别是内部或外部。图3-4(a)为内部方式的时钟电路,在RXD和TXD引脚上外接由电容与石英晶,并联组成定时元件,振荡器就会产生自激振荡,电容值的大小会对频率有细微的影响。图3-4(b)所示为外部方式的时钟电路,RXD接地,TXD接外部振荡器。外部振荡信号只要求能保证脉冲宽度,一般采用频率低于12MHz的方波信号7。(a)内部方式时钟电路 (b)外部方式时钟电路图3-4时钟电路3.3复位操作复位是单片机的初始化操作。本课题中所设计的系统就有用到复位,主要是将电路中的器件从原始状态进入执行程序,系统中有复位按键,就可在程序运作错误或者操作失误使系统死机时,按下复位键重新启动,除此之外,复位操作还对一些寄存器有影响8,如图3-5寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H图3-5一些寄存器的复位状态3.4温湿度采集与传输模块3.4.1 SHT11温湿度传感器(1)SHT11简介SHT11是一款数字温湿度传感器芯片。其主要特点为:1、高度集成,集A/D转换、信号交换、温湿度感测和加热器等功能与一体;2、二线数字串行接口SCK和DATA,传输可靠性强,支持CRC传输校验,接口简单。3、由于内部同时拥有集温度感测与湿度感测,可以提供温度补偿的湿度测量值和高质量的露点计算功能,所以测量的精确度可以很高;4、内置A/D转换器,测量的精度可根据自己编写的软件程序来自由定义;5、封装尺寸超小;6、高可靠性。因为SHT11芯片的功能如此强大,使它广泛应用于各个领域9。(2)SHT11的引脚功能SHT11温湿度传感器如图3-6所示:图3-6 SHT11引脚图VSS信号地和VDD电源二线串行数字接口为DATA与SCK,分别代表数据线与时钟线;NC为空脚。(3)SHT11芯片工作原理上面我们在介绍选择SHT11的原因时简单的介绍了它的组成部分,下面我们就来看看SHT11芯片的工作原理:SHT11芯片有温度与湿度两个敏感元件,可以将我们所测量的温度与湿度转换成信号,而后进入放大器进行放大,进入A/D转换器,最后由二线串行数字接口输出信号。单片机就是通过传感器的二线串行数字接口与SHT11进行数据的传输的。单片机就要利用I/O口模拟IIC总线,单片机对SHT11的控制是通过5个以下5位命令代码来实现的,如图3-7所示9:命令代码 含义00011测量温度00101测量湿度00111读内部状态寄存器00110写内部状态寄存器11110复位命令其他保留图3-7 SHT11控制命令代码3.4.2 SHT11与单片机的接口电路设计由于SHT11是一个串行器件,而SCT89C52不具备IC总线接口,故需要用单片机通用I/O口线来虚拟IC总线,本设计利用P0.0口线来模拟时钟线,P0.1口线来模拟数据线。SHT11有三个地址位,由于目前只支持“000”,4个NC引脚悬空。SHT11与单片机的接口电路如图3-8所示:图3-8 SHT11与单片机接口电路3.5 显示模块 LCD16023.5.1 选用1602字符型LCD的原因本设计采用的是LCD液晶显示器,因为LCD液晶显示器比LED数码管质量更高,功耗更低。课题要求是测量温湿度,就有两个数据,所以选用有双行显示的带背光的1602字符型LCD。它的显示容量为162个字符;模块的最佳工作电压为5.0V,工作电流为2.0mA;1602字符型LCD是一种专门用于显示字母、数字、符号等点阵式液晶显示模块,很符合我们的设计要求10。3.5.2 LCD1602液晶显示(1)1602LCD液晶显示主要技术参数:显示容量:162个字符;芯片工作电压:4.55.5V;模块最佳工作电压:5.0V;字符尺寸:2.954.35(WH)mm;(2)引脚功能说明本课题所采用的是1602LCD 16脚(带背光)接口,下面我们结合图3-9来介绍各引脚:GND接地电源;VCC接电源正极;VO为液晶显示器对比度调整端,接地比接VCC对比度高,为防止对比度过高,我们在这里接入了一个50K的电位器,调整对比度;RS为寄存器选择;R/W为读写信号线,低电平时进行写操作,高电平时进行读操作;E端为使能端,当E端从高电平跳变成低电平时,液晶模块执行命令;DB0DB7为8位双向数据线;BG VCC为背光源正极;BG GND为背光源负极11。图3-9 LCD1602液晶显示3.6按键电路设计由于我在电路中加了三个按键,可以调整温湿度测量系统的人工修正值,修正值范围温度为5、湿度5%,并保证湿度最低不会低于0%。按键分布从上至下分别为调整键、加键、减键,在正常采集工作时加键、减键,无效,调整键,短按时无效,长按时进入调整状态,调整状态下加减键有效12。按键电路如图3-10所示:图3-10按键电路4系统的工作原理温湿度测量系统的电路原理图见附录1,通过完整的电路图可以知道系统的电路工作原理为:电路接上9V电源,通电之后,通过所编写的软件程序进入LCD1602液晶测试程序,点亮LCD1602显示器,此时电路开始实时测量当前环境的温湿度;电路中的按复位开关可以使程序复位,保证对LCD1602显示器初始化以及对温湿度传感器(SHT11)实时检测,使电路正常的运行。本课题中设计的温湿度测量系统温度数据精确至小数点后一位,温度误差控制在23,湿度误差控制在5%。在电路中我们通过3个按键完成对温湿度人工修复。温湿度传感器(SHT11),采用的是串行通信,传输线只需要单片机的P0.0与P0.1引脚就可完成数据传输。单片机只需要实时检测P0.0与P0.1引脚,就可以完成对当前环境的温湿度的数据的采集,通过单片机处理,再通过LCD1602显示器的子程序就可实现实时显示当前环境的温湿度情况了13。5软件程序设计为了让系统拥有自动化的功能,硬件设计只是整个系统设计的基础部分,让系统智能化还是得靠软件的设计来实。在温湿度测量系统中硬件的重要性与软件都一样的重要。硬件就好比是设计的躯体,软件则就是设计的灵魂,当所设计的系统的硬件电路完成后,就要设计软件程序了,因为要完成对温湿度的测量还是得靠软件来实现,而且软件程序的好坏很大程度上影响着系统的能力。所以我们在编写软件程序时一般都要符合以下的基本要求:一、实时性。近年来,硬件器件集成度与运作速度的提高实时性还是比较满足设计的需要的。实时性是电子测量系统基本的要求,如本课题中所设计的温湿度测量系统就是要求对环境进行实时测量,通过LCD1602液晶显示结果。二、准确性。准确性对电子测量的系统有着重要的意义。数据的准确性将影响这整个系统的好坏,所以在设计是计算的精度都会有所要求,在本课题所设计的系统中温度误差控制在23,湿度误差控制在5%,还有改善的空间。三、易理解性、易维护性。在软件的设计方法中结构化设计是其中最好的一种方法,把所要实现的整个系统的最终功能确立,将它看作一个大任务,而后步步的分化成小任务,逐步实现,就相当于从整体到局部,再由局部到细节的实现。让自己所写的软件程序在阅读者看时达到易理解,出错时易维护等指标14。5.1主程序的设计STC89C52单片机上电复位后,就进入到了主程序。首先对SHT11下达相关命令,如温度检测命令、湿度检测命令等,设置SHT11的工作精度为8位湿度,12位温度,然后对SHT11测量开始命令等的初始化,其余部分是个循环圈,如何工作得看当时的条件了。主程序所起的作用就是实时完成对当前环境的温湿度的测量,并将测量的结果通过LED1602显示出来。主程序的流图如图5-1所示。 计数清零 计数是否超时是否为工作模式 采集数据并显示 开 始 初始化 延时,计数,按键扫描图5-1 系统流程图5.2主要代码及解释项目 :基于SHT11的温湿度采集装置功能 :完成温湿度测量及显示说明 :通过SHT11模块采集数据*/#include reg52.h#include main.h#define TEMP 0x03/温度检测命令#define HUMI 0x05/湿度检测命令#define REG_READ 0x07/读寄存器#define REG_WRITE 0x06/写寄存器#define FUNCTION_SET0x01/设置SHT11的工作精度为8位/湿度 12位温度#define nop _nop_();_nop_();_nop_();_nop_();_nop_();#define Wait while(DAT = 1);float Temp = 0;float Humi = 0;unsigned char Mode = 0;int RevTemp = 0;int RevHumi = 0;int Revise = 0;float Temp;float Humi;/*/ 函数 :Delay(int dela) / / 参数 : dela/ 返回 : NONE/ 说明 :延时函数*/void Delay(int dela)while(dela-)int a=114;while(a-);/*/ 函数 :Start() / / 参数 : NONE/ 返回 : NONE/ 说明 :SHT11模块启动函数*/void Start()SCK=1;DAT=1;nop;DAT=0;nop;SCK=0;nop;SCK=1;nop;DAT=1;/*/ 函数 :Send(unsigned char dat) / / 参数 : unsigned char dat/ 返回 : NONE/ 说明 :SHT11模块数据写入函数*/void Send(unsigned char dat)unsigned char i;SCK=0;nop;for(i=0;i8;i+)if(dat&0x80)DAT=1;nop;elseDAT=0;nop;dat=dat1;SCK=1;nop;SCK=0;/*/ 函数 :Answer() / / 参数 : NONE/ 返回 : NONE/ 说明 :SHT11模块应答函数*/void Answer()SCK=1;nop;while(DAT=1);SCK=0;DAT=1;/*/ 函数 :unsigned char Receive() / / 参数 : NONE/ 返回 : NONE/ 说明 :测量结果接收函数*/unsigned char Receive() unsigned char i;unsigned char dat;SCK=0;nop;for(i=0;i8;i+)SCK=1;nop;dat=dat1;if(DAT)dat=dat|0x01;nop;elsedat=dat&0xfe;nop; SCK=0;nop;DAT=1; /释放数据总线return(dat);/*/ 函数 :NextData() / / 参数 : NONE/ 返回 : NONE/ 说明 :低8位数据预接收函数*/void NextData()SCK=0;nop;DAT=0;nop;SCK=1;nop;SCK=0;nop;DAT=1; /释放数据总线。这条指令非常重要,不加的话会导致单片机不能读取低8位/*/ 函数 :End() / / 参数 : NONE/ 返回 : NONE/ 说明 :SHT11模块初始化结束函数*/void End()DAT=1;SCK=1;nop;SCK=0;nop;/*/ 函数 :SHT11_Init() / / 参数 : NONE/ 返回 : NONE/ 说明 :SHT11模块初始化函数*/void SHT11_Init()Start();/启动模块Send(REG_WRITE);/送写寄存器指令Answer();/SHT11模块应答Send(FUNCTION_SET);/送SHT11模块参数设置信息Answer();/SHT11模块应答End();/初始化结束/*/ 函数 :Measure(unsigned char com) / / 参数 : unsigned char com/ 返回 : NONE/ 说明 :SHT11模块测量函数*/float Measure(unsigned char com)int high = 0,low = 0;float a;Start();Send(com);/送测量指令:温度测量或湿度测量Answer();Delay(25);Wait;high = Receive();/接收高8位数据NextData();/预接收低8位数据low = Receive();/接收低8位数据End();high = (high8)+low;if (com = TEMP)/温度测量的数据处理a = -40 + 0.04*high;return (a);else if (com = HUMI)/湿度测量的数据处理float RHline,RHtrue;RHline=-4+0.648*high-0.00072*high*high;RHtrue=(Temp-25)*(0.01+0.00128*high)+RHline;RHtrue-=(Temp-15)*0.16667;return(RHtrue);return 0;/*/ 函数 :busy() / / 参数 : NONE/ 返回 : NONE/ 说明 :LCD忙信号检测函数*/bit busy()bit a;Lcd_data=0xff;rs=0;rw=1;e=1;e=1;a=bf;e=0;return a;/*/ 函数 :wr_cm(bit c,unsigned char a) / / 参数 : bit c,unsigned char a/ 返回 : NONE/ 说明 :写指令函数*/void wr_cm(bit c,unsigned char a)while(busy();/LCD忙时等待rs=c;rw=0;Lcd_data=a;/传指令e=1;e=0;/*/ 函数 :Init_1602() / / 参数 : NONE/ 返回 : NONE/ 说明 :LCD1602液晶初始化函数*/void Init_1602()wr_cm(cm,0x38);/显示模数设置:4位总线,双行显示wr_cm(cm,0x0c);/开显示wr_cm(cm,0x06);/光标移动设置:右移,无光标wr_cm(cm,0x01);/显示清屏:复位光标/*/ 函数 :Lcd_str(unsigned char h,unsigned char l,unsigned char *s) / / 参数 : unsigned char h,unsigned char l,unsigned char *s/ 返回 : NONE/ 说明 :字符串写入函数*/void Lcd_str(unsigned char h,unsigned char l,unsigned char *s)wr_cm(cm,0x80+0x40*h+l);/设置写入地址while(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论