4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc

上传人:小小飞 文档编号:5089133 上传时间:2020-02-01 格式:DOC 页数:55 大小:1.89MB
返回 下载 相关 举报
4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc_第1页
第1页 / 共55页
4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc_第2页
第2页 / 共55页
4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc_第3页
第3页 / 共55页
4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc_第4页
第4页 / 共55页
4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc》由会员分享,可在线阅读,更多相关《4573&amp#46;基于STC12C5410AD单片机的温湿度检测仪.doc(55页珍藏版)》请在三一文库上搜索。

1、基于STC12C5410AD单片机的温湿度检测仪摘 要随着社会的发展,人们对环境中的温度和湿度的要求也越来越高,尤其是在医学、电子电力、航天航空、食品发酵等领域中对温湿度的要求尤其严格,鉴于如此设计出一个能够精确、稳定、实时测量出环境中温湿度的实用型温湿度检测仪显得尤为重要。本温湿度检测仪是以STC12C540AD单片机的为核心控制芯片,该单片机自带A/D转换器、有很好的抗干扰能力、响应速度快。基于此单片机的温湿度检测仪可以实时、准确的测量环境中的温度和相对湿度。本检测仪的硬件部分的设计采用了以带有A/D转换器的STC12C5410AD单片机为核心控制器件,以高灵敏度AD590电流输出型的二端

2、式集成温度传感器为温度数据获取元件和湿度传感器THS11采集环境中的相对湿度,模拟输入接口接入键盘实现人机交换功能,并用LED作为显示设备的硬件设计方案。软件部分则采用采用模块化的方法将其分成几个部分,然后逐模块设计程序,用汇编语言来实现,使各部分结合起来协调工作,最终实现对环境中温湿度的实时检测。该温湿度检测仪能够基本完成的温湿度检测,但由于个人经验不足等因素,本设计还有一些不足之处,离产品实用还有一定的差距,还有一些方面需要进一步完善。关键词:STC12C5410AD单片机,传感器,LED,温湿度MEASURING INSTRUMENT FOR HUMIDITY BASEED ON STC

3、12C5410AD MICROCONTROLLERABSTRACTWith the development of society, people on the environment of temperature and humidity requirements are also increasing, especially in the medical, electronic power, aerospace, food fermentation, such as temperature and humidity in the field of the harsh demands in p

4、articular, in view of such a design that Can be precise, stable, real-time measurement of temperature and humidity environment to the practical temperature and humidity detector it is particularly important. The temperature and humidity detector is STC12C540AD SCM as the core chip, the microcontroll

5、er comes with A/D converter, a very good anti-disturbance capacity, fast response. Based on this MCU temperature and humidity detector can be real-time, accurate measurement of environmental temperature and relative humidity. The detector part of the design of the hardware used to with A/D converter

6、 STC12C5410AD microcontroller as the core of the control devices, with high sensitivity AD590 current output of the end-integrated temperature sensor data acquisition components for temperature and humidity sensor THS11 Acquisition relative humidity in the environment, access to analog input keyboar

7、d to achieve human-computer interface exchange function and used as an LED display hardware design. The software part is divided into several parts, and then each module design process, with assembly language to achieve, to combine the various parts of coordination, and eventually realize the enviro

8、nmental temperature and humidity in the real-time detection. The instrument can basically complete the temperature and humidity testing, but because of personal factors such as lack of experience, the design of some deficiencies, there are certain practical products from the gap, there are some aspe

9、cts need to be improved.KEY WORDS:STC12C5410AD MCU, Sensor, LED, Temperature and humidityV目录前言1第1章 温湿度检测仪总体技术方案21.1 温湿度检测仪的主要性能指标及其工作原理21.1.1 性能指标21.1.2 温湿度检测仪的工作原理21.2 温湿度检测仪的硬件设计总体结构方案31.3 温湿度检测仪应用软件系统的设计方案31.4 温湿度检测仪STC12C5410AD单片机电路的设计51.5 温湿度检测仪的硬件电路设计71.5.1 温度检测电路71.5.2 湿度检测电路71.5.3 其它模块电路设计9第

10、2章 温湿度检测仪的软件设计112.1 主程序模块设计112.2 温湿度检测模块程序设计122.2.1 温度检测模块程序设计122.2.2 湿度检测模块程序设计152.3 键盘扫描和LED显示模块程序设计202.3.1 键盘扫描202.3.2 LED显示部分程序设计24结论27参考文献28致谢31附录32 河南科技大学本科毕业设计(论文)PCB下载站 前言在日常实际生产生活中,科研、农业、暖通、纺织、机房、航空航天、电力等工业部门对产品质量的要求越来越高,对环境温、湿度的控制以及对工业材料的水分值的监测与分析都已成为比较普遍的技术条件之一。随着科技的进步,检测仪表也向着智能化、小型化、低功耗的

11、方向发展。在这个发展过程中,以单片机为核心控制器的温湿度检测以体积小、操作简单、性能稳定、测量精度高等诸多有点正逐步进入生产生活的各个方面。本文介绍的湿度检测仪就是以STV12C5410AD单片机作为核心控制器设计的,它具有体积小、操作简单、性能稳定、测量精度高和抗干扰能力强等优点,可广泛应用于需要对温湿度进行测控的领域中。先根据实际生产生活的需要提出温湿度检测仪的设计功能要求,然后由这些具体要求和现有的设计条件设计出了适合的硬件原理图,尽量采用模块化的方法将其分成几个部分,然后分模块设计程序,最使各部分结合起来协调工作,实现功能要求。它是以单片机的在控制方面的突出优势,并综合运用现代检测技术

12、、微控制技术、数据处理和通信技术以及LED显示技术而设计的数字温湿度检测系统,可以实时、准确的测量环境中的温度和相对湿度,对生产生活有较好的知道意义。论文的第一章介绍了温湿度检测仪的主要性能指标及其工作原理,主要介绍了温湿度检测仪的硬件设计总体方案和温湿度检测仪的应用软件系统的总体设计方案;第二章主要介绍了温湿度检测仪的硬件电路设计,重点介绍了温度检测电路、键盘LED显示电路和湿度检测电路;第三章主要介绍了基于STC12C5410AD单片机的湿度检测仪的软件设计,软件设计部分采用模块化设计,重点介绍了湿度检测模块程序设计中键盘扫描、LED显示以及对湿度的频率的线性化处理和温度补偿。第1章 温湿

13、度检测仪总体技术方案温湿度作为环境中的两项重要参数,在很多方面都起着重要的作用。本文中的基于STC12C5410AD单片机的湿度检测仪就是针对这一需求而设计的。它综合运用了现代检测技术、数据处理和通信技术以及LED显示技术,可以实时、准确、稳定的测量环境中的温度和相对湿度。在此设计过程中,本设计综合分析了不同用户在不同场合的不同需求,经研究之后,采用了以含有A/D转换器的STC12C5410AD单片机为核心控制器件,以高灵敏度温度传感器和湿度传感器为数据获取元件的方案。该设计主要分为硬件设计和软件部分的设计,下面先总体介绍设计的性能指标和软硬件的总体设计方案。1.1 温湿度检测仪的主要性能指标

14、及其工作原理1.1.1 性能指标1. 相对湿度测量精度和范围: 5%,检测范围0100%;2. 温度测量精度: 1,检测范围050;3. 可有用户自行校准仪表的测量精度,无需硬件调整;4. LED实时显示;5. 可手动记录测量的相对湿度与温度的结果;6. 电源:DC12V10%;7. 工作环境温度60 ,工作环境湿度90%;1.1.2 温湿度检测仪的工作原理加载有相应程序的STC12C5410AD单片机定时采集温度测量电路电压信号和相对湿度测量电路输出的频率信号,并对湿度的频率进行线性化处理和温度补偿,从而获得温度和相对湿度数据,分别将这些数据存储于数据存储器中, 然后送LED显示屏显示。可通

15、过键盘电路来选择检测湿度或者检测温度,也可以自动检测温度和湿度。 1.2 温湿度检测仪的硬件设计总体结构方案该检测仪采用STC12C5410AD单片机为核心,整个硬件系统分为以下几个部件,具体如图1-1所示:图1-1 硬件电路框图温度检测电路由半导体集成传感器AD590和电阻构成,AD590输出电流通过电阻进入模拟地,产生相应的电阻电压。电阻的电压输入到STC12C5410AD单片机中,经ADC转换为数字量,有应用软件处理得到环境温度。相对湿度测量电路由NE555构成的振荡电路组成,湿度传感器THS11的电容随环境相对湿度的变化而变化,从而导致振荡器的振荡频率变化,STC12C5410AD单片

16、机通过测量振荡器输出的振荡频率,经过软件处理后,获得相对湿度值。键盘输入电路与LED显示电路实现人机对话的功能。RS232接口电路与PC机的串行口联接,实现下载程序等通讯功能。1.3 温湿度检测仪应用软件系统的设计方案该仪表的系统程序设计采用模块化的程序设计方法,其结构见图1-2:图1-2 软件设计模块图检测仪的应用软件系统包括:主程序模块、温度检测模块、相对湿度检测模块、键盘和显示模块等。主程序的内容包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序相互调用,主程序是整个程序的框架,决定了检测仪的工作性能。温度检测模块主要是完成测温电路所得电压与实际温

17、度的转换,和对温度数据的存储、显示;相对湿度检测模块除了要实现对湿度数据的存储 、显示外,还要对湿度信号进行温度补偿和线性化处理。键盘、显示模块完成检测仪的检测数据的显示功能,反映出要检测的的数据。此系统采用了以含有A/D转换器的STC12C5410AD单片机为核心控制器件,以高灵敏度传感器为温湿度的获取元件,用LED作为显示设备的方案。这个系统主要由STC12C5410AD单片机、温度测量电路、相对湿度测量电路、键盘输入电路与LED显示电路。1.4 温湿度检测仪STC12C5410AD单片机电路的设计该检测仪的设计是以STC12C5410AD单片机为核心部件,STC12C5410AD单片机是

18、与MCS51单片机完全兼容的高速单片机,它包含了高性能的8路10位或8位ADC、80C51MCU内核、10KB EEPROM程序存储器、512B EEPROM数据存储器、等片内资源,同时还具有PWM波形输出的功能,它可以说是传统51单片机的升级版,在与传统51的兼容的前提下加入了更多的功能,这些硬件资源大大简化了本设计的电路设计。STC12C5410AD单片机的引脚排列如图2-1。利用STC12C5410AD单片机的输入接口P1.7定时采集温度测量电路电压信号和输入/输出接口P3.5采集相对湿度测量电路输出的频率信号,并对湿度的频率进行线性化处理和补偿,从而获得温度和相对湿度数据,分别将这些数

19、据存储于数据存储器中, 然后再通过P1.1和P1.2接口把芯片处理的数据送入显示模块电路,并可以用LED显示屏显示出来。STC12C5410AD 单片机采用增强型 8051 CPU,1T,单时钟/ 机器周期,指令代码完全兼容传统8051的高速单片机。工作电压:5.5V 3.8V(5V 单片机)、具有通用I/O 口(27/23 个),复位后为: 准双向口/ 弱上拉(普通8051 传统I/O 口) 分别可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏,同时每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA;STC12C5410AD 单片机I S P

20、(在系统可编程)/ I A P (在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;时钟源:外部高精度晶体/ 时钟,内部R/C 振荡器,用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟,常温下内部R/C 振荡器频率为:5.2MHz 6.8MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,应认为是4MHz 8MHz。 STC12C5410AD 单片机内部共2 个16 位定时器/ 计数器,但可用PCA 模块再产生4 个定时器;还具有PWM(4 路)/ P C A(可编程计数器阵列);10 /

21、 8位精度ADC,共8 路。STC12C5410AD单片机的时钟电路采用的是内部的时钟电路,利用单片机内部的振荡电路,并在XLAT1和XLAT2两引脚间外接石英晶体和电容构成的并联谐振电路,使内部振荡器产生自激振荡。石英晶体XT1频率是11.0592M,C1和C2是30pf。图2-1 STC12C5410AD单片机的引脚排列和基本外围电路图STC12C5410AD单片机的复位电路采用的开关复位电路,开关S9未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常

22、数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使STC12C5410AD内部复位。开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位。基于STC12C5410AD单片机的温湿度检测仪的原理图见附录。1.5 温湿度检测仪的硬件电路设计该温湿度检测仪的硬件系统由以下部分组成:电源部分、相对湿度测量电路、温度测量电路、键盘扫描电路、LED显示电路、与PC机通信的RS232转换电路,各部分设计如下。1.5.1 温度检测电路温度检测电路主要由AD590传感器、电阻和放大器组成,具体电路图如图1-2所示。AD590是一种电流输出型二端式集

23、成温度传感器,其主要技术参数:测温范围55+150;工作电压+4V+30V;精度0.5;灵敏度1A/,温度每变化1,其输出电流变化1A;输出零点为热力学温标零点。即273时AD590的输出电流为0A,0时输出约为273A。通过AD590的参数可以看出,它完全适合本设计的需要,同时AD590性能稳定,即便经过很长一段时间它的漂移量也很小,而且工作电路简单直观。温度检测电路如图2-2所示:图2-2 温度检测电路工作过程:因为流过AD590的电流与热力学温度成正比,电流经电阻R43转换为电压信号,所以电阻R43上的电压也将随环境中温度的变化而变化。电阻上的电压信号经放大器放大后输入到STC12C54

24、10AD单片机带有A/D转换器的端口P1.4,单片机通过采集这个端脚的电压,然后根据电压值,通过软件处理修订后就可以得出实际的温度值。1.5.2 湿度检测电路相对湿度测量电路如图2-3所示,它由NE555构成的振荡器组成,湿度传感器THS11的电容随环境相对湿度的变化而变化,从而导致振荡器的振荡频率变化。湿度检测电路通过湿度传感器THS11采集环境中的相对湿度。THS11是一种电容式湿度传感器,它的电容值随环境湿度的变化而变化,它具有:测量范围广(0100%)RH;适用性好,可在(40100)温度下工作;精度高(2%);响应速度快(5s),恢复时间短(10s);长期稳定好(年漂移量仅为1.5%

25、RH);具有极好的线性输出等特性。综合以上优点本设计采用次传感器作为湿度检测的传感器。应用电路如下图所示:图2-3 湿度检测电路湿度检测电路的工作过程为:环境相对湿度的变化导致湿度传感器THS11的电容变化,从而引起RC振荡回路的震荡频率的变化,由于THS11的容值的变化和环境中相对湿度的变化接近线性关系,那么在震荡回路中R的阻值固定的情况下,振荡频率也就和相对湿度有一个近似的线性关系,震荡回路的频率通过NE555后形成一个稳定的、频率跟相对湿度由近似线性关系的波,单片机通过测量该频率的变化,经应用软件的温度补偿和线性化处理可获得环境相对湿度值。该测量电路的测量精度为 3RH,分辨力 0.1R

26、H,使得相对湿度传感器THS11的测量范围大,长期稳定性好,响应时间短,温度系数低,线性度较好,体积小。不足之处是相对湿度传感器THS11及其它元件的离散性导致了调试困难,需进一步研究解决。1.5.3 其它模块电路设计键盘模块采用动态扫描的方式,键盘扫描电路输出端和LED显示器段码控制端口共用74HC164的输出Q0Q7。本设计中采用五个数码管进行静态显示,所以要用五个74HC164分别控制五个数码管的显示和选通,前一个74HC164的QH与后一个74HC164的输入端相连,74HC164的输出端QAQH通过电阻连到数码管上,控制数码管选通的信号为P1。2口通过电阻、三极管与数码管的共阳极连接

27、; P1。1口控制CLOCK脉冲信号。74HC164的CLEAR端都始终接高电平,74HC164的A、B两输入端共同连接到P1.0口上。用LED 显示器显示十六进制数和空白及小数点的显示段码。从LED 显示器的显示原理可知,为了显示字母数字,必须最终转换成相应段选码。这种转换可以通过硬件译码器或软件进行译码。其中的共阳极接法在设计中得以应用,单片机信号通过移位寄存器74HC164输出,经过八个电阻在LED数码管上显示出来。LED显示电路图如图2-12所示。图2-12 LED显示电路图由于设计中用到AD转化器,AD转化器的参考电压的稳定对于采集数据的准确性有着直接的关系,本设计采用了从USB接口

28、取电和通过变压器供电两种方式,前者是为了在下程序和做一些基本测试的方便,但USB接口的电压不是很稳定,所以如果仅用这一种供电方式是不够的,再加上温度传感器AD590的工作电压必须要超过5V的要求,本设计还采用了后者通过变压电源供电。 通过简单变压器输出的电压首先经过C1、C2的滤波后,再经过集成稳压块7805的电压变换后又滤波一下,形成稳定的5V电源,可以共单片机使用,经过7805之前的部分可以接到AD590的正端就可以使AD590正常的工作,从而实现了本设计的用电需求。26第2章 温湿度检测仪的软件设计2.1 主程序模块设计主程序是控制和管理的核心,主要完成在系统上电后进行定时和中断图3-1

29、 主程序流程图处理操作的初始化。它的内容包括主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等。主程序设计框图如上图3-1。主程序初始化的具体内容包括:时间中断的初始化、外部中断源的初始化、单片机I/O口初始化、RAM初始化、LED初始化、对各个子程序的调用,然后对温度和湿度进行检测并将结果显示在LED上。初始化对单片机的工作非常重要,因为单片机经过复位以后一些状态字,寄存器的初值可能是随机分配的值也可能是全置0或置1,程序在运行过程中,程序状态字起着重要的作用,为了不影响程序的正常运行初始化是十分必要的。2.2 温湿度检测模块程序设计2.2.1 温度

30、检测模块程序设计该检测仪的温度检测部分使用的AD590是一种由所在环境温度决定的恒流输出器件,其输出特性为:I=Ktt式中I为AD590输出电流信号,单位为1uA电流。t为绝对温度,单位为K。Kt为转换系数,单位为1uA/K。AD590输出电流信号经电阻R转换为电压信号,其电压为:VR = KtRtVR从ADC口输入到单片机中,进行A/D转换,成为数字量VT。温度检测模块程序如图3-2,首先读取测量电路的温度电压VT,并将这一电压信号作为温度转换参数进行电压温度转换,具体转换方法为:把经过A/D的所得的数字电压值VT作如下计算T = KT(VT-V0)式中T为需要测量的环境实际温度值,参数 V

31、0为环境温度为0时A/D转换的数字量电压值,参数KT为环境温度与A/D转换的数字量电压的转换系数:KT = 1/( KtR15)。它们均作为常量存储在单片机的片内数据EEPROM中。由于V0、KT准确与否直接影响温度测量的精度,可通过以下方法进行校正:用其它高精度的测温仪测量环境温度T1,输入本仪表,单片机同时记录下相应的A/D转换的数字量V1。当环境温度从T1变化到T2时,重复以上过程,单片机同时记录下相应的A/D转换的数字量V2。为保证校准精度,环境温度应在25左右变化,并且变化的范围尽可能大一些。仪表的应用软件根据KT=(T1-T2)/(V1-V2)和V0=VT1-T1/KT计算出KT和

32、V0 的值,并存储在单片机的EEPROM数据存储器中,既完成该仪表的温度测量精度的校正。仪表的应用软件系统配置有专用的服务子程序完成此项工作,仅仅需按仪表的LED显示器的提示完成有关操作。 本设计中所用的单片机自带AD转换器,无需再另加转换器。只需按照手册中所说明的ADC的用法即可完成AD转换功能。由于本单片机可以提供8位和10位两种AD转化,但是在本设计中为求检测结果的精确性本设计选用了10位AD转换器,其转化精度要比8位高出数倍,同时又采用稳定的5V电源为单片机供电,进一步确保了检测的准确性。模拟/ 数字转换结果计算公式如下:结果 ( ADC_DATA7:0,ADC_LOW21:0 ) =

33、 1024 x Vin / VccVin 为模拟输入通道输入电压,Vcc 为单片机实际工作电压,用单片机工作电压作为模拟参考电压。取ADC_DATA 的8 位为ADC 转换的高8 位,取ADC_LOW2 的低2 位为ADC 转换的低2 位,则为10 位精度。如果舍弃ADC_LOW2 的低2 位,只用ADC_DATA 寄存器的8 位,则A/D 转换结果为8 位精度。结果 ADC_DATA7:0 = 256 x Vin / Vcc。STC12C5410AD 系列带A/D 转换的单片机在P1 口,有8 路10 位高速A/D 转换器, 速度可达100KHz。P1.7 - P1.0 共8 路电压输入型A

34、/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1 口为弱上拉型I/O 口,用户可以通过软件设置将8 路中的任何一路设置为A/D 转换,不需作为A/D 使用的口可继续作为I/O 口使用。需作为A/D 使用的口需先将其设置为高阻输入或开漏模式。在P1M0、P1M1中对相应的位进行设置。由于单片机对数据的采集只能是电压或者频率,AD590对温度的检测是电路的大小来反映的,要将这个电流值读到单片机里面来就必须先把这个电流转变成电压,本设计中是通过一个电阻将这个值变成电压的,而单片机的AD采样范围必须是它的工作电压范围内,即05V,所以通过计算就可以确定电阻的值,这个过程是经过反复

35、的实验确定的,如果阻值过小就使得采样值不精确,如果阻值过大则完全不能进行采样过程后面的数据处理就更没法进行。 本设计中为了使编程尽量简洁所选取的阻值非常特殊:AD590变化的电流通过这个特定阻值的电阻时,转变为一个变化的电压,这个电压变化一个毫安对应温度变化一度,这样大大化简了程序中对的温度的算法。当AD转换器将采样的电压值转变为数字值后,单片机将这个数字值进行简单的处理就可以得到要检测的温度值,本设计将温度对电压的变化大体堪为近似的线性关系,把采集到的数字量是将5V的电压分成1024个等分,则每变化一个温度就可以对应一个数字电压量的变化,就可以通过这个数字量直接对应出环境温度。单片机中数据的

36、处理全部是用二进制数表示的,这种表示方法不适合我们平时的读数习惯,还得先将十六进制数转变为对应的十进制数来显示,此时一次温度检测才算完成,程序返回进行重复检测来实现实时检测环境温度。图3-2温度检测模块程序流程图温度检测模块程序流程如图3-2,该模块程序最后将计算得到的温度值送入数据存储器,并调用LED显示程序将环境温度显示出来,然后返回主程序继续下面的操作。2.2.2 湿度检测模块程序设计1. 程序欲解决问题分析湿度测量电路是由湿度传感器THS11和NE555构成的振荡电路组成。湿度传感器THS11的电容值随温度的变化导致振荡器的振荡频率发生变化,所以可以通过测量振荡器输出频率,获得相对湿度

37、值。实验得出振荡电路的输出频率(f)与环境温度(T)的关系曲线,如图3-3所示:图3-3 振荡频率f与温度T的关系曲线由上图可知,在环境相对湿度不变的条件下,温度和振荡频率呈近似的线性关系,所以忽略非线性误差不影响测量的精度。当环境中的相对湿度不同时,相同温度条件下的振荡频率差异比较大,且这种差异是非线性的。要准确地测量湿度,必须对振荡频率作温度补偿。从图3-3可以看出,对于不同的环境湿度,振荡频率的温度补偿系数也是不同的。研究表明,相对湿度为X%RH时振荡频率的温度补偿系数(fRHX)与相对湿度为0%RH时振荡频率的温度补偿系数(f RH0)具有如下关系:fRHX=f RH0(fRH/fRH

38、0)式中f RH0的值为297/65(Hz/);fRH0是温度为0时相对湿度为0%RH的振荡频率,其值为7588(Hz);fRHX是温度为0时相对湿度为X%RH的振荡频率。 实验得出相对湿度(RH)与湿度传感电路输出的振荡频率(f)在环境温度为25时的关系曲线,如图3-4所示:图3-4 在25时相对湿度RH与振荡率f的关系曲线表3-1给出了该关系曲线上的10个点的数据。从图3可以看出,相对湿度在20%RH80%RH范围内线性度较好,两端的线性较差。表3-1 在25环境温度时相对湿度(RH)与振荡频率(f)的关系显然,振荡频率受环境湿度的影响比较大。当相对湿度值升高时,振荡器输出频率会随之降低,

39、而且它们之间的这种变化是非线性的。如果本设计将检测到频率直接送给显示器显示的话,得到的结果将与环境中的实际湿度值存在很大差别,无法达到性能指标中所要求的测量精度和分辨力。但是由上面的关系,可以采用软件的方法进行温度补偿和线性化处理,来实现高精度地测量相对湿度。2. 程序设计方案经过以上分析可知,湿度检测模块程序需要完成将来自传感电路的湿度频率f转换为相对湿度的工作。由于振荡频率随环境相对湿度变化是非线性的,这给湿度转换带来了困难,因此需要对其进行线性化处理。同时,相对湿度受环境温度的影响比较大。不同温度条件下,在同一测量场合测得的湿度差异很大,所以还需要对测量频率作温度补偿。具体方案如图3-5

40、。对于频率的测量,单片机由多种测量方法,大体由中断测量和定时计数两大方式。对于定时计数是将单片机的定时器一个设为定时状态来确定要计数的时间,把另外一个定时器设为计数状态,在它的输入口接待检测的波形频率的输出端,而工作在边沿触发状态,这样就可以个对这个端口输入的波形频率进行技术,定时器可以通过设定时间来确定度波形个数的时长,本设计中要用波形的频率,所以最好是读一秒中波形的个数,但单片机的计数器最多是十六位的,达不到计数一秒的要求,这时就得把若干个定时叠加起来,就是每定时中断若干次采读一个波形频率,试验证明能够实行本设计的要求,单片机计数的波形的周期必须大于单片机工作的机械周期,通过查阅资料知道,

41、设计中用的传感器的波形周期远大于单片机的机械周期,故能这样来检测频率。 中断计数是将波源输入到单片机的中断入口中去,通过检测一段时间内中都的次数也能够检测出波形的频率,具体工作原理入下,先用一个定时器来实现计时功能,然后开中断,让中断工作在边沿触发状态,这样中断就可以对高低变换的频率波形进行计数,本设计中是来检测波形频率的所以最好的计一秒钟采样一次,同样的问题,单片机必须的计若干次数才采集一个中断次数,这样才可以实现一秒采集数据。综合上述两种方法,本设计中选用第二钟方法,因为定时器还得用到键盘扫描中去,为了避免冲突选用第二中方法。在湿度检测模块程序的开始,首先读取经过A/D转换的相对湿度的振荡

42、频率fo,并把得到的相对湿度频率值存储于STC12C5410AD的一个变量单元中。然后读取温湿度检测仪测得的环境温度值T,根据温度补偿系数计算出应该补偿的频率,补偿后的频率值为f =fo+(25-T)f RH0(fRH/ f RH0)线性化处理: 首先根据实验得出的相对湿度与振荡频率关系曲线,将测量范围内的湿度RH划分为N等份,每份为RH,每个湿度分隔点对应的频率值设为fn。然后把频率曲线上相邻的两点依次用直线相连,就得到一条新的湿度-频率曲线,它与实际曲线几乎重合在一起,所以可以使用该曲线产生进行线性化处理。图3-5 湿度检测模块程序流程图在线性化处理之前,需要在单片机的数据存储器里存储一个

43、频率表,即由fn组成的数据表格。因为线性化处理的过程中需要将实测频率与fn进行多次比较。生成频率表之后就可以进行线性化处理了。线性化处理程序子程序流程图如3-6所示。程序首先从存储器中读取温度补偿过的频率f,把它赋给一个事先定义好的变量。同时取出RH,定义计数量n,分别存入不同变量。接下来就要对比较次数n赋初值(n=0),根据变量n去STC12C5410AD的ROM中的频率表中取出频率值f0,然后将温度补偿过振荡频率f与从表中取得的表频率f0作减法运算,并检查相减结果是否大于0。如果差值大于0,则说明测得频率超出检测仪的测量范围,转入报告出错子程序,告诉用户出错。如果两者差值小于0,则将n 值

44、加1,继续拿f与fn作比较。如果(f-f1)的值大于0,说明实测频率在湿度-频率曲线的第一段内,这时的环境湿度值:RH=RH (f- f0)/( f1- f0)。图3-6线性化处理程序流程图这里需要说明的是,f与f0的比较是非常必要的。因为这一比较涉及到,检测仪报错功能,更重要的是接下来的频率比较必须以第一次比较为参考。在设计之初,本设计想跳过与f0的比较,这样程序也简单一点。但是后来分析发现如果不进行这一比较会影响到仪表的正常工作。当f落在f1之前时,检测仪会由于没有合适比较对象而出错。如果前面比较的结果值还是小于零,说明该振荡频率f不在该段,就把比较次数f加1后,从表中再次取值,继续进行的

45、比较,直至比较结果大于零。可利用下式计算出环境的相对湿度:RH=RHn-1+RH然后把结果存到单片机的存储单元中,以供数据显示程序处理。 2.3 键盘扫描和LED显示模块程序设计2.3.1 键盘扫描键盘是人机交换的桥梁,一个好的键盘能够让用户方便的使用仪表。本设计的键盘就在此基础上设计的,同时也为了节约单片机的硬件资源,具体流程如下:该检测仪采用18矩阵式键盘,关于它的具体硬件组成电路这里就不多做介绍,在检测有无键按下方面主要用的是开机自动扫描方式,该方式是利用单片机运行程序初始化后自动扫描键盘,如果没有键按下则继续扫描,若有键按下即可出对应的键值,再由键值跳转到相应的子程序,从而实现键盘扫描

46、,键盘扫描子程序流程图如图3-7所示。图3-7 键盘扫描子程序流程图由于本设计为了节约I/O口,只用一根数据线来实现键盘的列扫描,是通过8位并行输出串行移位寄存器74HC164来实现的。具体是用单片机的一个I/O口连接到该芯片的时钟输入端,作为该芯片的工作时钟,用另一根数据接到74HC164的数据端口A、B两端。由于74HC164是工作在上升沿,所以本设计可以在其数据端输入一个等待送出的数字,然后通过在其时钟输入端送入一个上升沿,就可以实现把等待送出的数字发送出去。又因为该芯片是8位并行输出串行移位寄存器,所以这个送数过程要连续重复8次才能够实现一个单元的数据完全送出。SAOMIAO: MOV

47、 A,R1 MOV R2,#08HXS: JB ACC.0,XS1 CLR P1.0 AJMP CLKXS1: SETB P1.0CLK: CLR P1.1 NOP SETB P1.1 RR A DJNZ R2,XSRET本段程序就是将一个单元8位二进制数送出的子程序,P1.0端接到74HC164的数据端,P1.1端接到74HC164的时钟端,通过P1.1口的先置0再置1来形成一个上升沿脉冲。本设计用的键盘是18矩阵式键盘,在键盘扫描之前,先在键盘的行线上输出一个1,再在74HC164是输出8个0,然后再读入行线到单片机,如果行线是1,则表示没有键按下,就返回到键盘扫描状态重新扫描,反之如果行线为0,则有键按下。然后本设计再一列一列的扫描键值,具体过程如下:首先通过164输出一个11111110B后,读入键盘的行,如果为0,则表示是第一个键按下,如果不为0,则表示不是第一个键按

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

当前位置:首页 > 绩效管理


经营许可证编号:宁ICP备18001539号-1