找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14740|回复: 3
收起左侧

基于PROTEUS的SHT11单片机温湿度测量系统设计论文

[复制链接]
ID:161768 发表于 2017-7-30 03:23 | 显示全部楼层 |阅读模式
摘要
温度和湿度是两个最基本的环境参数,与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度和湿度进行测量和控制。准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要。因此研究温湿度的测量和控制方法具有重要的意义。
本设计实现的是单片机温湿度测量和控制系统,通过LCD显示所测量的温湿度。系统采用集温湿度传感器与A/D转换器于一体的SHT11芯片,通过单片机进行处理显示,其它模块包括了实时时钟/日期产生电路和超限报警处理电路,对测量的值进行实时显示和报警处理。文章介绍了基于ATMEL公司的AT89C51系列单片机的温湿度实时测量与控制系统和显示系统的设计,包括介绍了硬件结构原理,并分析了相应的软件的设计及其要点,包括软件设计流程及其程序的实现。系统结构简单、实用,提高了测量精度和效率。
目  录
摘  要
ABSTRACT
第1章 绪 论
1.1 研究的目的及意义
1.2 国内外研究情况
1.3 系统内容的设计
1.3.1 系统的主要性能指标
1.3.2 主要工作任务
1.4 方案论证
第2章 工具简介
2.1 C语言
2.1.1 C语言的优点
2.1.2 C语言的缺点
2.2 Proteus简介
2.3 Keil C51编译器简介
2.3.1 8051开发工具
2.3.2              uVision2集成开发环境
第3章 硬件设计
3.1 芯片介绍
3.1.1 单片机——AT89C51
3.1.2 LCD显示——LCD1604
3.1.3 DS1302原理及应用
3.1.4温湿度传感器SHT11
3.2 模块功能介绍
3.2.1 复位电路部分
3.2.2 DS1302时钟电路模块
3.2.3 SHT11传感器模块
3.2.4 显示电路模块              20
3.2.5 超限处理电路模块
3.3 整体电路图
第4章 软件设计              22
4.1 程序框图
4.1.1 主程序框图
4.1.2 温湿度采集及处理框图
4.1.3 LCD显示框图
4.2 主函数解析
第5章 仿真与调试
结  论
致  谢
参考文献
附录A 系统源程序
附录B 系统原理图              55

第1章 绪 论
1.1 研究的目的及意义
温度和湿度与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。准确测量温湿度在生物制药、食品加工、造纸等行业都是至关重要的。传统的温度计是用水银柱来显示的,它的精确度不高,不易读数。而采用单片机对温湿度进行控制,不仅具有控制方便、简单和灵活等优点,而且可以大幅度提高温湿度控制的技术指标。用LCD来显示温湿度的数字看起来更加直观。
采用SHT11数字温湿度传感器作为检测元件,能够同时测试温度和湿度。SHT11传感器可以直接读出被测的温湿度值。同时单片机可以把测量出的数据通过串口传到计算机上,来完成工业中的自动控制,给工业生产带来了极大的便利。用单片机控制的温湿度计不仅硬件电路简单,而且测量精度比较高。用液晶显示测量值看起来比较美观。
无论在日常生活中还是在工业、农业方面都离不开对周围环境进行温湿度的测量。因此,研究温湿度的测量具有非常重要的意义。

1.2 国内外研究情况
测量温湿度的关键是温湿度传感器。过去测量温度与湿度是分开的。随着技术的进步和人们生活的需要出现了温湿度共测的传感器。温度传感器的发展经历了3个阶段:传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、从集成化向智能化、网络化的方向发展。温度传感器也是经历了这样一个阶段逐渐走向数字智能化。
现今国内外用的最多的温湿度传感器是SHTXX系列。SHT11温湿度传感器应用于专利的工业COMS过程微加工技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D转换器以及串行接口电路在同一芯片上实现无缝链接,从而具有超快响应,抗干扰能力强,性价比极高等优点。
采用SHT11数字温湿度传感器与单片机AT89C51相连比较容易,而且电路比较简单,软件设计也比较简单。所以,本设计以SHT11数字温湿度传感器为例,介绍基于SHT11数字温湿度传感器的设计,该设计适用于人们的日常生活及工农业生产中用于温湿度的测量。


1.3 系统内容的设计
1.3.1 系统的主要性能指标
根据生活和一般工业环境,设计本产品的主要技术指标为:
·测温范围:20—+80℃;湿度测量范围为30—90%Rh
·温度测量精度:±0.5oC
·湿度测量误差:≤4%Rh                           
·可设置上、下限报警值,当湿度温度超限时,发出报警信号
·电源工作范围:DC4.5~5.5V
1.3.2 主要工作任务
根据本毕业设计实际的任务要求,选择合适的温湿度传感器,完成温湿度的测量,并设计显示电路模块、时钟电路模块、超限处理模块、复位电路模块的程序。系统开始工作后,根据初始条件读取湿度值和温度值,测量数据经处理后,将其与设定的温湿度值比较,如果发现当前的温湿度超限,则发出报警信号,未超限时,系统显示正常的湿温度度值。

1.4 方案论证
方案一:采用单总线的DS18B20的温度传感器和HS110X相对湿度传感器组成测量和控制系统。
方案二:采用集温湿度传感器和A/D转换器于一体的SHT11芯片构成温湿度的测量和控制系统。
由于传统的模拟式温湿度传感器一般不仅要设计信号调理电路,还要进行复杂的校准和标定过程,其测量精度难以保证,并且使用分立的温度传感器和湿度传感器测量电路比较麻烦。而SHT11是具有二线串行接口的单片全校准数字式新型相对湿度和温度传感器,集温湿度传感器和A/D转换器于一体,可用来测量相对湿度、温度和露点等参数,具有数字式输出、免调试、免标定、免外围电路及全互换的特点,使用起来比较方便,且电路简单。该传感器将CMOS芯片技术与传感器技术融合,为开发高集成度、高精度、高可靠性的温湿度测控系统提供了解决方案。因此本设计采用方案二。
本设计核心部件为AT89C51,信号采集及处理部分由SHT11构成,进入单片机经处理后通过LCD1604显示温湿度,信号显示采用的液晶屏为5×7点阵,一行可显示16字,四行。其他组成部分为实时时钟发生电路,产生与现在相同的时间和具体日期,通过LCD1604液晶模块显示。
在软件设计部分有对测量的温湿度进行上下值的设定,当测量超过限定值时,通过超限报警处理电路对其进行处理,分别显示不同的二极管灯亮,蜂鸣器产生长鸣。
硬件中包括一个开关,为复位开关。开机后,所有器件初始化,DS1302产生实时时间和日期,温湿度传感器SHT11开始进行温湿度测量和计算,最后通过两个LCD液晶显示器显示结果。在测量结果中有超过设定的温湿度上下限的,通过超限模块做出反应。
电路主要包括了AT89C51控制模块、SHT11温湿度测量模块、DS1302时间模块、LCD显示模块、超限处理模块。其他是一些附件,比如复位、晶振电路。

   

图1.1 整体电路框图

第2章 工具简介
系统单片机代码采用C语言编写,并用Keil软件检查程序有无错误,在Proteus仿真软件上进行仿真。
2.1 C语言
2.1.1 C语言的优点
C语言的运算符丰富,它包括的范围相当广泛,使得C语言的运算类型极其丰富,并且表达方式的类型多样化,能够实现在高级语言中不能实现的运算,它有32个关键字,9种控制语句。和汇编语言一样,它能够对位,字节和地址进行操作;数据类型很丰富,能实现各种复杂的数据类型,同时还加入了指针的概念,使得效率更高,同时支持图形编辑,以及多种显示器等;它所应用的结构式语言,这种方式会让程序有层次,一目了然,同时语法显示不严格,设计自由度高;C语言提供给用户的方式是一函数的形式,它们可以方便调用,使得程序完全结构化;地址的访问上,能够访问物理地址,对硬件进行直接操作;适用范围广,能够适用于多种操作,例如:DOS、UNIX等,同时适用于多种机型。
2.1.2 C语言的缺点
它的缺点主要是数据封装的安全性不高,因此这一点也成为了C语言和C++的最大的区别,另一方面由于语法以及变量的类型没有严格限制,也造成了较低的安全性,再者从应用角度来说,它比较其他的高级语言来说较为难以掌握。

2.2 Proteus简介
Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。
Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、
RS232终端等动态外设模型来对设计进行交互仿真。
其功能模块:一个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计。
PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开
关,按钮,LEDs甚至LCD显示CPU模型。
· 支持许多通用的微控制器,如PIC,AVR,HC11以及8051. 最新支持ARM
· 交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘,I2C,SPI器件
· 强大的调试工具,包括寄存器和存储器,断点和单步模式
· IAR C-SPY 和Keil uVision2等开发工具的源层调试
· 应用特殊模型的DLL界面-提供有关元件库的全部文件
最新版支持非常丰富仿真元件共7000多种,还有很多第三方模型。如MMC卡,以太网卡,ATA硬盘,麦克风,等等。
2.3 Keil C51编译器简介
2.3.1 8051开发工具
KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。
  • uVision2集成开发环境
① 项目管理
工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。
uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速器(math accelerator)的特性。
uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。
② 编辑器和调试器
uVision2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对C源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使得可以更快速地检查和修改程序。
③ C51编译器
KEIL C51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计。语言上的扩展能让用户使用应用中的所有资源。
  • 存储器和特殊功能寄存器的存取
C51编译器可以实现对8051系列所有资源的操作。SFR的存取由sfr和sbit两个关键字来提供。变量可旋转到任一个地址空间。用关键字-at-还能把变量放入固定的存储器存储模式(大,中,小)决定了变量的存储类型。连接定位器支持的代码区可达32个,这就允许用户在原有64K ROM的8015基础上扩展程序。在V2的编译器和许多高性能仿真器中,可以支持应用程序的调试。
2)中断功能
C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。
3)灵活的指针
C51提供了灵活高效的指针。
通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。
特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由
于地址的存储只需1-2字节,因此,指针存取非常迅速。
第3章 硬件设计
3.1 芯片介绍
3.1.1 单片机——AT89C51
AT89C51是一种带4k字节可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
① 主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
·数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路

② 管脚说明:
VCC:供电电压
GND:接地
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接
收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH
编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作
为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,
当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:
表3.1.1 P3口管脚备选功能
P3.0 RXD
串行输入口
P3.4 T0
计时器0外部输入
P3.1 TXD
串行输出口
P3.5 T1
计时器1外部输入
P3.2 /INT0
外部中断0
P3.6 /WR
外部数据存储器写选通
P3.3 /INT1
外部中断1
P3.7 /RD
外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的
低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不
变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外
部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,
将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE
只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果
微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信
号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),
不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当
/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于
施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
③ 振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2
应不接。输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的
脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
④ 芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器、串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
⑤ 结构特点:
· 8位CPU;
· 片内振荡器和时钟电路;
· 32根I/O线;
· 布尔处理器;
· 外部存贮器寻址范围ROM、RAM64K;
· 2个16位的定时器/计数器;
· 5个中断源,两个中断优先级;
· 全双工串行口;
3.1.2 LCD显示——LCD1604
① LCD1604原理
1604采用标准的16脚接口,其中:
1脚:VSS为地电源
2脚:VDD接5V正电源
3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令
7~14脚:D0~D7为8位双向数据线
15~16脚:空脚
1604液晶模块内部的控制器共有11条控制指令,如表3.1.2所示,

表3.1.2 1604液晶指令表
指   令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清显示
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
*
置输入模式
0
0
0
0
0
0
0
1
I/D
S
显示开/关控制
0
0
0
0
0
0
1
D
C
B
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
置功能
0
0
0
0
1
DL
N
F
*
*
置字符发生存储器地址
0
0
0
1
字符发生存储器地址(AGG)
置数据存储器地址
0
0
1
显示数据存储器地址(ADD)
读忙标志或地址
0
1
BF
计数器地址(AC)
写数到CGRAM或DDRAM
1
0
要写的数
从CGRAM或DDRAM读数
1
1
读出的数据
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置
指令2:光标复位,光标返回到地址00H
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光
标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标
指令6:功能设置命令 DL:低电平时为4位总线,高电平时为8位总线 N:
低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
指令7:字符发生器RAM地址设置
指令8:DDRAM地址设置
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块
不能接收命令或者数据,如果为低电平表示不忙
指令10:写数据
指令11:读数据
② LCD1604初始化
延时15mS写指令38H(不检测忙信号)、延时5mS写指令38H(不检测忙信号)、延时5mS写指令38H(不检测忙信号);以后每次写指令、读/写数据操作均需要检测忙信号。
写指令38H:显示模式设置
写指令08H:显示关闭
写指令01H:显示清屏
写指令06H:显示光标移动设置
写指令0CH:显示开及光标设置
3.1.3 DS1302原理及应用
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒分时日、日期月年的信息。每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:RES复位、I/O数据线、 SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。
DS1302是由DS1202改进而来,增加了以下的特性:双电源管脚用于主电源和备份电源供应;Vcc1为可编程涓流充电电源;附加七个字节存储器;它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。下面将主要的性能指标作一综合:
· 实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力
·31×8位暂存数据存储RAM
·串行I/O口方式使得管脚数量最少
·宽范围工作电压2.0-5.5V
·工作电流2.0V时,小于300nA
·读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式
·8脚DIP封装或可选的8脚SOIC封装根据表面装配
·简单3线接口
·与TTL兼容(Vcc=5V)
·可选工业级温度范围-40~+85
·与DS1202兼容
·在DS1202基础上增加的特性
--对Vcc1有可选的涓流充电能力
--双电源管用于主电源和备份电源供应
--备份电源管脚可由电池或大容量电容输入
--附加的7 字节暂存存储器
① DS1302的基本组成和工作原理
DS1302的管脚排列(图3.1.1)及描述如下:
1)管脚描述:
X1、X2:32.768KHz晶振管脚
GND:地
RST:复位脚
I/O:数据输入/输出引脚
SCLK:串行时钟
Vcc1、Vcc2:电源供电管脚

图3.1.1 DS1302引脚图

2) DS1302内部寄存器
CH: 时钟停止位           寄存器2 的第7 位12/24 小时标志
CH=0 振荡器工作允许      bit7=1,12 小时模式
CH=1 振荡器停止          bit7=0,24 小时模式
WP: 写保护位             寄存器2 的第5 位:AM/PM 定义
WP=0 寄存器数据能够写入  AP=1 下午模式
WP=1 寄存器数据不能写入  AP=0 上午模式
TCS: 涓流充电选择        DS: 二极管选择位
TCS=1010 使能涓流充电    DS=01 选择一个二极管
TCS=其它 禁止涓流充电    DS=10 选择两个二极管
DS=00 或11, 即使TCS=1010, 充电功能也被禁止
② DS1302与微控制器的接口软件及功能应用举例
下面首先给出基本的接口软件然后举例说明各种功能的应用
1) 写保护寄存器操作
当写保护寄存器的最高位为0时,允许数据写入寄存器写保护,寄存器可以
通过命令字节8E、8F来规定禁止写入/读出写保护位不能在多字节传送模式下写
入。
Write_Enable:
MOV Command,#8Eh;命令字节为8E
MOV ByteCnt,#1;单字节传送模式
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#00h;数据内容为0 写入允许
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
当写保护寄存器的最高位为1时禁止数据写入寄存器
Write_Disable:
MOV Command,#8Eh;命令字节为8E
MOV ByteCnt,#1;单字节传送模式
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#80h;数据内容为80h 禁止写入
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
2) 时钟停止位操作
当把秒寄存器的第7位时钟停止位设置为0时起动时钟开始。
Osc_Enable:
MOV Command,#80h;命令字节为80
MOV ByteCnt,#1;单字节传送模式
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#00h;数据内容为0 振荡器工作允许
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
当把秒寄存器的第7位时钟停止位设置为1时,时钟振荡器停止HT1380进入低功耗方式。
Osc_Disable:
MOV Command,#80h;命令字节为80
MOV ByteCnt,#1;单字节传送模式
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#80h;数据内容为80h 振荡器停止
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
3) 多字节传送方式
当命令字节为BE或BF时,DS1302工作在多字节传送模式,8个时钟/日历寄存器从寄存器0地址开始连续读写从0位开始的数据。当命令字节为FE或FF时,DS1302工作在多字节RAM传送模式,31个RAM寄存器从0地址开始连续读写从0位开始的数据。例如写入00年6月21日星期三13时59分59秒程序,设置如下:
Write_Multiplebyte:
MOV Command,#0Beh;命令字节为BEh
MOV ByteCnt,#8;多字节写入模式此模块为8 个
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#59h;秒单元内容为59h
MOV XmtDat+1,#59h;分单元内容为59h
MOV XmtDat+2,#13h;时单元内容为13h
MOV XmtDat+3,#21h;日期单元内容为21h
MOV XmtDat+4,#06h;月单元内容为06h
MOV XmtDat+5,#03h;星期单元内容为03h
MOV XmtDat+6,#0;年单元内容为00h
MOV XmtDat+7,#0;写保护单元内容为00h
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
读出寄存器0-7的内容程序设置如下:
Read_Multiplebyte;
MOV Command,#0BFh;命令字节为BFh
MOV ByteCnt,#8;多字节读出模式此模块为8 个
MOV R1,#RcvDat;数据地址覆给R1
ACALL Receive_Byte;调用读出数据子程序
RET返回调用本子程序处
以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义,
其源程序清单在附录中给出下面的程序亦使用了这个模块。
4) 单字节传送方式
    例如写入8时12小时模式程序设置如下:
Write_Singlebyte:
MOV Command,#84h;命令字节为84h
MOV ByteCnt,#1;单字节传送模式
MOV R0,#XmtDat;数据地址覆给R0
MOV XmtDat,#88h;数据内容为88h
ACALL Send_Byte;调用写入数据子程序
RET 返回调用本子程序处
    上面所列出的程序模块Write_Enable、 Write_Disable 、Osc_Enable 、
Osc_Disable与单字节写入模块Write_Singlebyte的程序架构完全相同,仅只是几个入口参数不同。此介绍是为了强调功能使用的不同才将其分为不同模块,另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,用户在使用中可灵活简略。下面模块举例说明如何单字节读出小时单元的内容:
    Read_Singlebyte:                  
MOV Command,#85h; 命令字节为85h
MOV ByteCnt,#1;单字节传送模式
MOV R1,#RcvDat;数据地址覆给R1
ACALL Receive_Byte;调用读出数据子程序
RET 返回调用本子程序处
3.1.4温湿度传感器SHT11
① SHT11简介
SHT11 是瑞士Scnsirion 公司推出的一款数字温湿度传感器芯片。它集温度传感器和湿度传感器于一体,因此采用SHT11 进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;另外SHT11 芯片内部集成了14位A/D 转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。该芯片在温湿度监测、自动控制等领域均已得到广泛应用。其主要特点如下:
·高度集成,将温度感测、湿度感测、信号变换、A/D 转换和加热器等功能集成到一个芯片上;
·提供二线数字串行接口SCK和DATA,接口简单,支持CRC 传输校验,传输可靠性高;
·测量精度可编程调节,内置A/D 转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程选择);
·测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;
·封装尺寸超小(7.62 mm×5.08mm×2.5 mm),测量和通信结束后,自动转入低功耗模式;
·高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。
② SHT11引脚功能
SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,接口非常简单,引脚
名称及排列顺序如图3.1.2所示。

图3.1.2 SHT11引脚图

各引脚的功能如下:
·脚1和4--信号地和电源,其工作电压范围是2.4~5.5 V;
·脚2和脚3--二线串行数字接口,其中DA-TA为数据线,SCK为时钟线;
·脚5~8--未连接。
③ SHT11的内部结构和工作原理
温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图3.1.3所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D 转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHT11 的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHT11温度升高、相对湿度降低,较加热前,测量值会略有差异。            

              图3.1.3 SHT内部结构

微处理器是通过二线串行数字接口与SHT11进行通信的。微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表3.1.3所列。
表3.1.3 SHT11控制命令代码
命令代码
含     义
00011
测量温度
00101
测量湿度
00111
读内部状态寄存器
00110
写内部状态寄存器
11110
复位命令,使内部寄存器恢复默认值。下一次命令前至少等待11ms
其他
保留

④ SHT11传输特性
1)湿度值输出
SHT11可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:= ××
式中:为经过线性补偿后的湿度值,为相对湿度测量值,C1、C2、C3 为线性补偿系数,取值如表3.1.4所列。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
= (T-25)×(×)+
式中:为经过线性补偿和温度补偿后的湿度值,为测试湿度值时的温度(℃),为温度补偿系数,取值如表3.1.5所列。
表3.1.4 湿度线性补偿系数                    表3.1.5 湿度值温度补偿系数                           

C1
C2
C3
12位
-4
0.0405
-2.8×
8位
-4
0.648
-7.2×
2)温度值输出
12位
0.01
0.00008
8位
0.01
0.00128

由于SHT11是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:     Temperature=d1+d2×SOT
式中:d1和d2为特定系数,d1取值与SHT11工作电压有关,d2的取值则与SHT11内部A/D转换器采用的分辨率有关,其对应关系分别如表3.1.6和表3.1.7。
表3.1.6 d1与工作电压的对应关系            

5
-40.00
-40.00
4
-39.75
-39.50
3.5
-39.65
-39.35
3
-39.60
-39.28
2.5
-39.55
-39.23
表3.1.7 d2与分辨率的对应关系
S0
14位
0.01
0.018
12位
0.04
0.072
3)露点计算
露点是一个特殊的温度值,是空气保持某一定湿度必须达到的最低温度。当空气的温度低于露点时,空气容纳不了过多的水分,这些水分会变成雾、露水或霜。露点可以根据当前相对湿度值和温度值计算得出,具体的计算公式如下:
LogEW=0.66077+7.5×T/(237.3+T)+log10()-2
Dp=((0.66077-logEW)×237.3)/(logEW-8.16077)
式中:T为当前温度值,SORH为相对湿度值,Dp为露点。
3.2 模块功能介绍
3.2.1 复位电路部分
这种复位电路的工作原理是:单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两
端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。

图3.2.1 手动复位及晶振电路
3.2.2 DS1302时钟电路模块
此模块是系统时间的实时显示而设计的,主要由芯片DS1302构成,其中引脚RST、CLK、I/O分别接单片机P3.0、P3.1、P3.2口,属于控制引脚。此模块是产生实时的系统时间和日历,能对某个确定环境的实时温湿度控制起到一定的作用。芯片连接电路简单,时间日期准确。

图3.2.2 DS1302时钟电路模块
3.2.3 SHT11传感器模块
此模块是整个电路设计的信号采集及初步处理的模块,由温湿度传感器芯片SHT11构成,主要的功能结构在前面的芯片介绍中已有,这里不重新介绍。

图3.2.3 SHT11传感器模块
3.2.4 显示电路模块
此模块分为两个显示部分,一个部分是由LCD1604芯片组成的日期时间和实时温湿度显示的电路部分,另一部分是由LCD128×64液晶显示模块组成的电路部分。LCD1604是一个四行每行16字的液晶显示屏,D0-D7接P0口,RS、RW、E 接P3.5、P3.6、P3.7起控制作用。LCD128×64组成部分是用来显示“温度和湿度的控制与测量”的,其作用是让人了解此实验的目的,作用不明显,这里不做
重点介绍。

图3.2.4 LCD1604(左)和LCD128×64(右)显示及其连接电路

3.2.5 超限处理电路模块
此部分电路是由5个发光二极管和一个蜂鸣报警器构成,分别是D1、D2、D3、D4和D5,蜂鸣器接单片机的P1.0口,发光二极管与单片机的连接部分如图3.2.5所示。D1、D2、D3、D4、D5分别代表着发光、降温、加热、干燥和加湿,一旦传感器测定的温湿度超过设定的限额,就会产生不同的发光反应,起警示作用,同时蜂鸣报警器连续发出“滴” 的声音。

图3.2.5 超限处理电路模块

3.3 整体电路图

图3.3.1 整体电路图

第4章 软件设计
编程软件采用的是Keil uvision3软件,程序采用C语言编程。软件部分在Keil上运行后,能正确显示结果。具体模块由一个C主函数文件和9个H文件构成。
H文件如下所示:

reg51.h;(8051的相关参数初始化)
absacc.h;
intrins.h;(伪本征函数)
math.h;(数学公式函数)
12864.h;(128×64液晶显示函数)LCD1604.h;(1604液晶显示函数)
DS1302.h;(实时时间/日期产生函数)
SHT11.h;(温湿度采集计算函数)
set_key.h;(限额报警函数)


4.1 程序框图
4.1.1 主程序框图:

图4.1.1 主程序框图
4.1.2 温湿度采集及处理框图:

图4.1.2 温湿度采集及处理框图

4.1.3 LCD显示框图:

图4.1.3 LCD显示框图


4.2 主函数解析
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#include<math.h>
#include<12864.h>
#include<LCD1604.h>
#include<DS1302.h>
#include<SHT11.h>
#include<set_key.h>
void Delay1ms(unsigned int count)    //延时函数
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
main()
{
SYSTEMTIME CurrentTime;  //定义时间日期结构体
SHT_dat aa;         //定义温湿度测量处理结构体
Init_12864();     //12864的显示*/
Initial_DS1302();   //DS1302初始化*/
LCD_Initial();     //LCD初始化
GotoXY(0,0);          //LCD显示函数
Print("Date:");
GotoXY(16,0);
Print("Temper:");
GotoXY(0,1);
Print("Time:");
GotoXY(16,1);
Print("Humidi:");

while(1)
{
convert_SHT(&aa,TEMP);     //温度转换
  convert_SHT(&aa,HUMI);     //湿度转换
  caculation_SHT(&aa);       //温度和湿度的补偿
  float_convert(&aa);        //将浮点数转换成整型,各个位的数分别保存
  doing_temp(&aa);     //检测温度是否超限
  doing_humi(&aa);     //检测湿度是否超限
  DS1302_GetTime(&CurrentTime);
  DateToStr(&CurrentTime);
  TimeToStr(&CurrentTime);
  GotoXY(5,0);      //第一行显示日期
  Print(CurrentTime.DateString);
  GotoXY(23,0);      //第三行显示温度
  Print(aa.num_temp);
  GotoXY(28,0);
  Print("    ");
  GotoXY(5,1);      //第二行显示时间
  Print(CurrentTime.TimeString);
  GotoXY(23,1);       //第四行显示湿度
  Print(aa.num_humi);
GotoXY(28,1);
  Print("    ");
  Delay1ms(300);     //延时
  }
}


第5章 仿真与调试
整个软件通过C语言编程,先在Keil C51集成开发环境下将编好的程序进行
编译、调试,调试通过后会生成.HEX文件。具体过程如下:
新建一个项目文件,然后新建一个C语言程序,并把新建的C语言程序加
到项目中,然后编译项目。
建立第一个C项目:
① 点击 Project 菜单,选择弹出的下拉式菜单中的 New Project,如图。

图5.1 新建项目文件
② 选择所要的单片机,本设计选择常用的 Ateml 公司的 AT89C51。
③ 在项目中创建新的程序文件。执行File->New新建一个文件,然后在文件中进行程序的编写。
④ 执行File-->Save将编写的程序进行保存。将第一个程序命名为main.c,将文件保存在项目所在的目录中。选“Add File to Group ‘Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按 ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在 Source Group1文件夹图标左边出现了一个小+号,说明
文件组中有了文件,点击它可以展开查看。

图5.2 添加文件
⑤ 文件加载到项目之后,开始进行编译运行,生成.hex文件。编译结果如下图:

图5.3 生成.hex文件
编译显示没有错误,说明编译顺利通过,已经生成了所需要的.hex文件。接下来在PROTEUS中进行仿真。打开已经绘制好的仿真电路原理图,选中单片机AT89C51,右键单击AT89C51,出现相应的对话框,找到编译好的“*.HEX”文件,然后单击“OK”就可以进行仿真。在下边的图形中,给出了不同的温湿度的显示值,实际温湿度与理论温湿度的差值在误差允许范围之内(图5.4,温度和湿度分别为60℃和80﹪,显示为60.03℃和82.37﹪;图5.5,温度和湿度分别为68℃和70﹪,显示为68.06℃和74.35﹪;图5.6,温度和湿度分别为48℃和31﹪,显示为48.65℃和32.66﹪),说明设计成功。仿真结果如图所示。

图5.4 温湿度显示一

图5.5 温湿度显示二

图5.6 整体显示




单片机的应用如今已经在工业、电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围的简单电路再加上优化程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计增加更多精彩。
本次设计是基于PROTEUS的数字温湿度的设计,包括硬件电路和软件两部分。设计采用的是高效单片机作为核心,集温度传感器和湿度传感器于一体的SHT11作为主要的采集与测量系统,其中它自带的A/D转换器,使得温湿度测量具有精度高、成本低、体积小、接口简单等优点,还具有良好抗干扰能力。加上优化程序,使得本系统具有很高的实用性。由AT89C51单片机、晶振等组成的最小系统,可以使整个系统正常稳定的工作起来。由LCD为核心的显示电路可以直观的显示测量结果。报警电路的设计采用了声光并用的方式。为了实现系统的智能化,系统采用模块设计,在软件上设计了系统主程序,温湿度采集和处理电路子程序,报警电路子程序,液晶显示子程序,实时的时间日期子程序。
由于学习的知识有限,加上时间的仓促和经验的缺乏,本设计整体上的性能还不是十分完善,设计中存在一些需要改进和优化的地方。测量精度有待进一步提高,软件设计也存在不合理之处。但从设计过程中,学到了几种芯片的使用,如:DS1302时钟芯片,LCD1604,SHT11等。对于单片机也有了更进一步的认识,对用于单片机仿真的软件操作能力也明显提高,通过此设计,本人受益颇丰。





致  谢
经过近两个多月的努力,在陈英老师的悉心指导下我顺利的完成了毕业设计。此次的毕业设计使我受益匪浅。做毕业设计不仅是对我所学知识的一次检验,更是对我能力的一个挑战。从接触到毕业设计题目的那一刻起,我就开始仔细认真的查找相关资料和文献,我一直都在尽自己最大的努力去完成它。完成毕业设计后,我发现自己不仅拓宽了专业理论知识,而且专业外的知识也丰富了不少,实际动手能力更是提高了很多。
在做毕业设计的过程中,陈英老师不仅给我提了许多指导性的意见,还倾注了大量的心血。她兢兢业业的工作作风、科学严谨的治学态度和宽以待人、认真负责的优秀品质给我留下了非常深刻的印象。没有陈英老师方向性的指导和帮助,我是不可能按时完成毕业设计的。感谢陈英老师在百忙之中给予我的精心指导和帮助。在做毕业设计的过程中,陈英老师帮助我解决了许多新的疑点和难点,使我顺利的完成了毕业设计。除此之外从陈老师那里,我还学到了严谨的工作态度和科学的学习方法,也学会了如何做人的道理,所有这些对我今后的成长成才都将产生深远的影响。在此,我要向我的导师陈英老师表示最衷心的感谢!另外,本设计也得到了其他老师、同学的支持和帮助,谨在此一并感谢!

1




河南城建学院本科毕业设计(论文)                                       参考文献     
参考文献
[1]刘文涛.单片机语言C51典型应用设计[M].北京:人民邮电出版社,2001,12:25-29
[2]周灵彬.基于Proteus的电路与PCB设计[M].北京:电子工业出版社,2010.8
[3]张毅刚主编.单片机原理及应用[M].北京:高等教育出版社,2009
[4]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004,105-125
[5]凌玉华.单片机原理及应用系统设计[M].长沙:中南大学出版社,2006,222-228
[6]钱显毅.传感器原理与应用[M].东南大学出版社,2008.7
[7]冯建华,赵亮.单片机应用系统设计与产品开发[M].北京:人民邮电出版社,  2004.11
[8]谭浩强.C程序设计[M]. 北京:清华大学出版社,2005.7
[9]常喜茂,孔英会,付小宁.C51基础与应用实例[M].北京:电子工业出版社 2009.
[10]孙余凯,吴鸣山,项绮明.传感器应用电路300例[M].北京:电子工业出版社,2008.3
[11]康华光,陈大钦.模拟电子电路[M].北京:高教育出版社,2004:335-336.
[12]赵茂泰.智能仪器原理及应用[M].北京:电子工业出版社,2006:130-132.
[13]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004,105-125
[14]佟玲,杨玉芬,张本华.智能温湿度监控系统的组成与发展[J].沈阳农业大学工程学院学报.2006,23(4);25-30
[15]Pual Horowitz and Winfield.The Art of Electronics.2nd ed[M].Cambridge University Press,1999:1-1125.
[16]Allan R.Hambley.Electronics.2nd ed[M].Prentice Hall Inc.2000:1-461.
[17]hnson D E, Johnson J R. Moore H P.A handbook of active filters[M].New Jersry,1980:1-72.



  附录B 系统原理图     
附录B 系统原理图

完整论文下载(word格式 可编辑 带全部源码):
http://www.51hei.com/bbs/dpj-82614-1.html






回复

使用道具 举报

ID:599734 发表于 2019-9-9 11:30 | 显示全部楼层
实用好资料了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表