资源描述
河南科技大学本科毕业设计(论文)基于ADuC812单片机的温湿度检测仪摘 要环境中的温湿度指标是两个重要的物理参数,在许多领域对温湿度测量要求高的场合,都需要精确测量温湿度。针对这一情况,设计一种可靠、实用的检测仪器显得非常重要。基于ADuC812单片机的湿度检测仪可以实时、准确的测量环境中的温度和相对湿度,并能通过键盘输入设置湿度上下限的值以及进行语音报警,其附有的通信接口可方便地实现与计算机的实时通信。 在整个设计过程中,我们综合参考了国内外同类产品的设计方法,结合用户的实际需求,经研究之后,硬件部分的设计采用了以带有A/D转换器的ADuC812单片机为核心控制器件,以高灵敏度AD590电流输出型二端式集成温度传感器为温度数据获取元件和湿度传感器THS11采集环境中的相对湿度,模拟输入接口接入键盘实现人机交换功能,并用LCD作为显示设备的硬件设计方案。此外,在通信方面使用RS-232串行数据接口与计算机进行数据传输。软件部分则采用采用模块化的方法将其分成几个部分,然后逐模块设计程序,用汇编语言来实现,最终使各部分结合起来协调工作。该温湿度检测仪的设计,能够完成的温湿度检测,实现主要的温湿度检测功能。关键词:ADuC812单片机,传感器,LCD,温湿度MEASURING INSTRUMENT FOR HUMIDITY BASEED ON ADuC812 MICROCONTROLLERABSTRACTThe temperature and relative humidity of environmental condition are two important physical parameters, in industry department as well as the laboratory and so on the petrification, metallurgy, electric power, drugs manufacture, cement requests the high situation to the temperature and relative humidity survey, it appears very important to develop a reliable and practical instrument that can examine the relative humidity of environment.Based on the ADuC812 microcontroller humidity instrument be able to accurate examine environment temperature and the relative humidity on real-time, and user can set the humidity examinants range, so it will give a when the real humidity beyond the limiting. It attaches the correspondence connection may conveniently the realization and the computer real-time communication. In the whole design process, we have synthesized referred to the domestic and foreign similar products design method, the union users demand, as well as high Xingjian compared to and so on target, after research, used take included A/D the switch the ADuC812 microcontroller as the core control component, take the high sensitivity warm sensor AD590 as the data gain part and take the humidity sensor THS11 as the data gain part, and took the graphic display device with LCD the hardware design proposal. In addition, has used the RS-232 serial data connection in the serial communication aspect. But software partial uses modular the design method, causes various segments the function even more to be clear about, the readability is stronger.The temperature and humidity detector circuit design , to complete a captial temperature and humidity testing , achieving basic functions of temperature and humidity testing . KEY WORDS:ADuC812 microcontroller , Sensor, LCD, Temperature and humidity4目录前言1第1章 温湿度检测仪总体技术方案21.1 温湿度检测仪的主要性能指标及其工作原理21.1.1 性能指标21.1.2 温湿度检测仪的工作原理21.2 温湿度检测仪的硬件设计总体结构方案31.3 温湿度检测仪应用软件系统的设计方案4第2章 温湿度检测仪的硬件电路设计62.1 温湿度检测仪ADuC812单片机电路的设计62.2 温湿度检测仪的硬件电路设计72.2.1 温度检测电路82.2.2 湿度检测电路82.2.3 其它模块电路设计9第3章 温湿度检测仪的软件设计133.1 主程序模块设计133.2 温湿度检测模块程序设计143.2.1 温度检测模块程序设计143.2.2 湿度检测模块程序设计153.3 键盘扫描和LCD显示模块程序设计203.3.1 键盘扫描203.3.2 LCD显示部分程序设计23结论28参考文献29致谢31附录32 前言日常生活中,档案馆、图书馆、精密仪器室、超净车间对等对环境温湿度都有严格的要求所以温湿度集散控制技术是最常见的应用技术。随着科技的进步,检测仪表也向着智能化、小型化、低功耗的方向发展。在这个发展过程中,单片机发挥了重要的作用,本文介绍的湿度检测仪就是以单片机作为核心控制器设计的。它具有体积小、操作简单、性能稳定、测量精度高和抗干扰能力强等优点,可广泛应用于需要对温湿度进行测控的领域中。本设计首先根据实际生产生活的需要提出温湿度检测仪的功能要求,然后由这些要求具体设计出了硬件原理图,再采用模块化的方法将其分成几个部分,然后逐模块设计程序,最使各部分结合起来协调工作。它是利用单片机的在控制方面的突出优点,并综合运用现代检测技术、微控制技术、数据处理和通信技术以及LCD显示技术而设计的。可以实时、准确的测量环境中的温度和相对湿度,通过键盘输入设置相对湿度上下限及进行报警,并且可以和PC机进行通信,作为温湿度记录仪使用。论文的第一章介绍了温湿度检测仪的主要性能指标及其工作原理,主要介绍了温湿度检测仪的硬件设计总体方案和温湿度检测仪的应用软件系统的设计方案;第二章主要介绍了温湿度检测仪的硬件电路设计,重点介绍了温度检测电路和湿度检测电路;第三章主要介绍了基于ADuC812单片机的湿度检测仪的软件设计,软件设计部分采用模块化设计,重点介绍了湿度检测模块程序设计中对湿度的频率的线性化处理和温度补偿。第1章 温湿度检测仪总体技术方案温湿度作为两项项环境参数,在很多方面都起着重要的作用。本文中的基于ADuC812单片机的湿度检测仪就是针对这一需求而设计的。它综合运用了现代检测技术、数据处理和通信技术以及LCD显示技术,可以实时、准确的测量环境中的温度和相对湿度和设置相对湿度上下限及进行报警,并且可以和PC机进行通信,作为温湿度记录仪使用。在此设计过程中,我们综合分析了不同用户在不同场合的不同需求,并且借鉴了国内外同类仪表设计的经验,经研究之后,采用了以含有A/D转换器的ADuC812单片机为核心控制器件,以高灵敏度温度传感器和湿度传感器为数据获取元件的方案。它的设计过程主要包含硬件设计和软件设计两大过程.以下是该温湿度检测仪设计的大概过程。1.1 温湿度检测仪的主要性能指标及其工作原理1.1.1 性能指标1. 相对湿度测量精度: 3RH,分辨力 0.1RH;2. 温度测量精度: 1,分辨力 0.1;3. 可有用户自行校准仪表的测量精度,无需硬件调整;4. 可直接与微机串行口连接,作环境相对湿度与温度的高精度记录仪使用;5. LCD显示;6. 用户可编程设定相对温度与湿度上、下限报警值,并可进行语音报警;7. 用户可编程设定手动或定时自动打印相对湿度与温度的测量结果;8. 可手动或自动记录测量的相对湿度与温度的结果;9. 电源:DC9V10%;10.工作环境温度60 ,工作环境湿度90%;1.1.2 温湿度检测仪的工作原理加载有相应程序的ADuC812单片机定时采集温度测量电路电压信号和相对湿度测量电路输出的频率信号,并对湿度的频率进行线性化处理和温度补偿,从而获得温度和相对湿度数据,分别将这些数据存储于数据存储器中, 然后送LCD显示屏显示。可通过键盘电路来设置相对湿度的上下限,当检测到的环境湿度超过限制设定值时,单片机控制报警电路发出语音警报。当仪表收到PC机发送的传送指令时,就把当前一段时间的测量数据打包传送给PC机。1.2 温湿度检测仪的硬件设计总体结构方案硬件部分是检测仪的重要部分,设计的好坏直接影响到整机的性能。该检测仪采用ADuC812单片机为核心,整个硬件系统分为以下几个部件,具体如图1-1所示:图1-1 硬件电路框图温度检测电路由半导体集成传感器AD590和电阻构成,AD590输出电流通过电阻进入模拟地,产生相应的电阻电压。电阻的电压输入到ADuC812单片机中,经ADC转换为数字量,有应用软件处理得到环境温度。相对湿度测量电路由NE555构成的振荡电路组成,湿度传感器THS11的电容随环境相对湿度的变化而变化,从而导致振荡器的振荡频率变化,ADuC812单片机通过测量振荡器输出的振荡频率,经过软件处理后,获得相对湿度值。键盘输入电路与LCD显示电路实现人机对话的功能。RS232接口电路与PC机的串行口联接,实现通信功能。1.3 温湿度检测仪应用软件系统的设计方案该仪表的系统程序设计采用模块化的程序设计方法,其结构见图1-2:图1-2 软件设计模块图检测仪的应用软件系统包括:主程序模块、温度检测模块、相对湿度检测模块、键盘和显示模块以及串行通信模块。主程序的内容包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序。温度检测模块主要是完成测温电路所得电压与实际温度的转换,和对温度数据的存储、显示;相对湿度检测模块除了要实现对湿度数据的存储 、显示外,还要对湿度信号进行温度补偿和线性化处理。键盘、显示模块完成检测仪控制和数据显示功能;通信模块包括初始化、发送及接收部分,可实现检测仪与PC机通信的功能。第2章 温湿度检测仪的硬件电路设计此系统采用了以含有A/D转换器的ADuC812单片机为核心控制器件,以高灵敏度传感器为获取元件,用LCD作为显示设备,并含有语音报警电路的方案。这个系统主要由ADuC812单片机、温度测量电路、相对湿度测量电路、语音报警电路、键盘输入电路与LCD显示电路。2.1 温湿度检测仪ADuC812单片机电路的设计该检测仪的设计是以ADuC812单片机为核心部件,ADuC812单片机是美国AD公司推出的与MCS51单片机兼容的ADuC812单片机,它包含了高性能的8路12位ADC、2路12位DAC、80C52MCU内核、8KB EEPROM程序存储器、640B EEPROM数据存储器和温度传感器等片内资源。ADuC812单片机的引脚排列如图2-1。利用ADuC812单片机的输入接口P1.7定时采集温度测量电路电压信号和输入/输出接口P3.5采集相对湿度测量电路输出的频率信号,并对湿度的频率进行线性化处理和补偿,从而获得温度和相对湿度数据,分别将这些数据存储于数据存储器中, 然后再通过P3.6和P3.7接口把芯片处理的数据送入显示模块电路,并可以用LCD显示屏显示出来。当温湿度检测仪检测到的相对湿度超过用户设定的上下限时,单片机通过P1.0口输出语音信号到报警电路。单片机通过模拟输入口ADC0ADC7连接键盘,用户可以通过键盘输入实现人机交换。ADuC812单片机的P3.0、P3.1端口与PC机相连实现串行通信,采用RS-232C串行接口。ADuC812单片机的时钟电路采用的是内部的时钟电路,利用单片机内部的振荡电路,并在XLAT1和XLAT2两引脚间外接石英晶体和电容构成的并联谐振电路,使内部振荡器产生自激振荡。石英晶体XT1频率是11.059M,C1和C2是33pf。图2-1 ADuC812单片机的引脚排列图ADuC812单片机的复位电路采用的开关复位电路,开关SW1未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使ADuC812内部复位。SW1按下时是按键手动复位电路,RST端通过R1与VCC电源接通,提供足够的时间的复位电平,使单片机复位。基于ADuC812单片机的温湿度检测仪的原理图见附录。2.2 温湿度检测仪的硬件电路设计该温湿度检测仪的硬件系统由以下部分组成:电源部分、相对湿度测量电路、温度测量电路、键盘扫描电路、LCD显示电路、语音报警电路、与PC机通信的RS232转换电路和存储器扩展部分,各部分设计如下。2.2.1 温度检测电路温度检测电路主要由AD590传感器、电阻和放大器组成,具体电路图如图1-2所示。AD590是一种电流输出型二端式集成温度传感器,其主要技术参数:测温范围55+150;工作电压+4V+30V;精度0.5;灵敏度1A/,温度每变化1,其输出电流变化1A;输出零点为热力学温标零点。即273时AD590的输出电流为0A,0时输出约为273A。温度检测电路如图2-2所示:图2-2 温度检测电路工作过程:因为流过AD590的电流与热力学温度成正比,电流经电阻R15转换为电压信号,所以电阻R15上的电压也将随环境中温度的变化而变化。电阻上的电压信号经放大器放大后输入到ADuC812单片机带有A/D转换器的端口P1.7,由单片机应用软件处理为环境中的实际温度数据。2.2.2 湿度检测电路相对湿度测量电路如图2-3所示,它由NE555构成的振荡器组成,湿度传感器THS11的电容随环境相对湿度的变化而变化,从而导致振荡器的振荡频率变化。湿度检测电路通过湿度传感器THS11采集环境中的相对湿度。THS11是一种电容式湿度传感器,它的电容值随环境湿度的变化而变化,它具有测量范围广(0100%)RH;适用性好,可在(40100)温度下工作;精度高(2%);响应速度快(5s),恢复时间短(10s);长期稳定好(年漂移量仅为1.5%RH)并且具有极好的线性输出等特性。图2-3 湿度检测电路湿度检测电路的工作过程为:环境相对湿度的变化导致湿度传感器THS11的电容变化,从而引起振荡器的输出频率的变化。单片机通过测量该频率的变化,经应用软件的温度补偿和线性化处理可获得环境相对湿度值。该测量电路的测量精度为 3RH,分辨力 0.1RH,使得相对湿度传感器THS11的测量范围大,长期稳定性好,响应时间短,温度系数低,线性度较好,体积小。不足之处是相对湿度传感器THS11及其它元件的离散性导致了调试困难,需进一步研究解决。2.2.3 其它模块电路设计键盘输入电路与LCD显示电路实现人机对话的功能。RS232C接口电路与PC机的串行口联接,实现通信功能。打印输出接口电路与打印机连接,实现打印功能。 以下重点简单介绍LCD显示电路、语音报警电路、串行通信模块1. LCD显示电路LCD显示电路用于实现中文窗口菜单和测量结果显示功能,可通过键盘扫描电路完成参数输入、菜单选择等操作。因此,键盘扫描电路和LCD显示电路可视为人机对话接口。显示模块电路如图2-4所示。图2-4 显示模块电路电路中的HS12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(16 16点阵)汉字。主要技术参数和性能:(1).电源:VDD:+5V; 模块内自带-10V负压,用于LCD的驱动电压。(2).显示内容:128(列)64(行)点(3).全屏幕点阵(4).七种指令(5).与CPU接口采用8位数据总线并行输入输出和8条控制线(6).占空比1/64(7).工作温度:-10+50,存储温度:-20+70在显示电路中,单片机的RD、WR、P1.2端口通过由“与非门”构成的辅助电路与HS12864的E端口相连,来控制显示模块对单片机送来数据的操作;而P0.1口控制显示器显示内容,即数据或指令;来自P0.2,P0.3的指令选择显示器左右半屏的信号。2. 语音报警电路图 2-5 语音报警电路报警电路主要由电源、放大器、滤波电路和扬声器组成。当温湿度检测仪检测到的相对湿度超过用户设定的上下限时,单片机通过P1.0口输出语音信号使报警电路发出警报。语音报警电路如图2-5。3. 串行通信模块图 2-6 与PC通信电路与PC通信电路如图2-6,检测仪与PC机通信采用RS-232串行接口。RS-232是PC机与通信工业中应用最广泛的一种串行接口,它被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k,所以RS-232适合本地设备之间的通信。RS-232是用正负电压来表示逻辑状态的,而TTL是用高低电平来表示逻辑状态的,因此,为了能够同PC机接口或终端的TTL器件连接,必须在RS-232与TTL电平之间进行电平转换.这里利用MAX232完成电平转换工作。 MAX232芯片是MAXIM公司生产、包行两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。MAX232芯片内部有一个电压变换器,可以把输入的+5V电源电压变换成为RS-232所输出电平所需的电压。所以,采用此芯片的串行通信系统只需单一的+5V电源就可以了。11河南科技大学本科毕业设计(论文)第3章 温湿度检测仪的软件设计3.1 主程序模块设计主程序是控制和管理的核心,主要完成在系统上电后进行定时和中断图3-1 主程序流程图处理操作的初始化。它的内容包括主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等。主程序设计框图如上图3-1。主程序初始化的具体内容包括:时间中断的初始化、外部中断源的初始化、单片机I/O口初始化、串行通信中断的初始化、RAM初始化,LCD初始化。然后对温度和湿度进行检测并将结果显示在LCD上。3.2 温湿度检测模块程序设计3.2.1 温度检测模块程序设计该检测仪的温度检测部分使用的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为需要测量的环境实际温度值,参数 V0为环境温度为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和V0 的值,并存储在单片机的EEPROM数据存储器中,既完成该仪表的温度测量精度的校正。仪表的应用软件系统配置有专用的服务子程序完成此项工作,仅仅需按仪表的LCD显示器的提示完成有关操作。图3-2温度检测模块程序流程图温度检测模块程序流程如图3-2,该模块程序最后将计算得到的温度值送入数据存储器,并调用LCD显示程序将环境温度显示出来,然后返回主程序继续下面的操作。3.2.2 湿度检测模块程序设计1. 程序欲解决问题分析湿度测量电路是由湿度传感器THS11和NE555构成的振荡电路组成。湿度传感器THS11的电容值随温度的变化导致振荡器的振荡频率发生变化,所以可以通过测量振荡器输出频率,获得相对湿度值。实验得出振荡电路的输出频率(f)与环境温度(T)的关系曲线,如图3-3所示:图3-3 振荡频率f与温度T的关系曲线由上图可知,在环境相对湿度不变的条件下,温度和振荡频率呈近似的线性关系,所以忽略非线性误差不影响测量的精度。当环境中的相对湿度不同时,相同温度条件下的振荡频率差异比较大,且这种差异是非线性的。要准确地测量湿度,必须对振荡频率作温度补偿。从图3-3可以看出,对于不同的环境湿度,振荡频率的温度补偿系数也是不同的。研究表明,相对湿度为X%RH时振荡频率的温度补偿系数(fRHX)与相对湿度为0%RH时振荡频率的温度补偿系数(f RH0)具有如下关系:fRHX=f RH0(fRH/fRH0)式中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)的关系显然,振荡频率受环境湿度的影响比较大。当相对湿度值升高时,振荡器输出频率会随之降低,而且它们之间的这种变化是非线性的。如果我们将检测到频率直接送给显示器显示的话,得到的结果将与环境中的实际湿度值存在很大差别,无法达到性能指标中所要求的测量精度和分辨力。但是由上面的关系,可以采用软件的方法进行温度补偿和线性化处理,来实现高精度地测量相对湿度。2. 程序设计方案经过以上分析可知,湿度检测模块程序需要完成将来自传感电路的湿度频率f转换为相对湿度的工作。由于振荡频率随环境相对湿度变化是非线性的,这给湿度转换带来了困难,因此需要对其进行线性化处理。同时,相对湿度受环境温度的影响比较大。不同温度条件下,在同一测量场合测得的湿度差异很大,所以还需要对测量频率作温度补偿。具体方案如图3-5。在湿度检测模块程序的开始,首先读取经过A/D转换的相对湿度的振荡频率fo,并把得到的相对湿度频率值存储于ADuC812的一个变量单元中。然后读取温湿度检测仪测得的环境温度值T,根据温度补偿系数计算出应该补偿的频率,补偿后的频率值为f =fo+(25-T)f RH0(fRH/ f RH0)线性化处理: 首先根据实验得出的相对湿度与振荡频率关系曲线,将测量范围内的湿度RH划分为N等份,每份为RH,每个湿度分隔点对应的频率值设为fn。然后把频率曲线上相邻的两点依次用直线相连,就得到一条新的湿度-频率曲线,它与实际曲线几乎重合在一起,所以可以使用该曲线产生进行线性化处理。图3-5 湿度检测模块程序流程图在线性化处理之前,需要在单片机的数据存储器里存储一个频率表,即由fn组成的数据表格。因为线性化处理的过程中需要将实测频率与fn进行多次比较。生成频率表之后就可以进行线性化处理了。线性化处理程序子程序流程图如3-6所示。程序首先从存储器中读取温度补偿过的频率f,把它赋给一个事先定义好的变量。同时取出RH,定义计数量n,分别存入不同变量。接下来就要对比较次数n赋初值(n=0),根据变量n去ADuC812的ROM中的频率表中取出频率值f0,然后将温度补偿过振荡频率f与从表中取得的表频率f0作减法运算,并检查相减结果是否大于0。如果差值大于0,则说明测得频率超出检测仪的测量范围,转入报告出错子程序,告诉用户出错。如果两者差值小于0,则将n 值加1,继续拿f与fn作比较。如果(f-f1)的值大于0,说明实测频率在湿度-频率曲线的第一段内,这时的环境湿度值:RH=RH (f- f0)/( f1- f0)。图3-6线性化处理程序流程图这里需要说明的是,f与f0的比较是非常必要的。因为这一比较涉及到,检测仪报错功能,更重要的是接下来的频率比较必须以第一次比较为参考。在设计之初,我们想跳过与f0的比较,这样程序也简单一点。但是后来分析发现如果不进行这一比较会影响到仪表的正常工作。当f落在f1之前时,检测仪会由于没有合适比较对象而出错。如果前面比较的结果值还是小于零,说明该振荡频率f不在该段,就把比较次数f加1后,从表中再次取值,继续进行的比较,直至比较结果大于零。可利用下式计算出环境的相对湿度:RH=RHn-1+RH然后把结果存到单片机的存储单元中,以供数据显示程序处理。 3.3 键盘扫描和LCD显示模块程序设计3.3.1 键盘扫描图3-7 键盘扫描子程序流程图该检测仪采用28矩阵式键盘,关于它的具体硬件组成电路这里就不多做介绍,在检测有无键按下方面主要用的是定时扫描方式,该方式是利用单片机内部定时器产生定时中断,即在初始化程序中对定时器/计数器进行编程,键盘扫描子程序流程图如图3-7所示。该子程序在时间中断服程序中被调用,定时扫描键盘,该程序首先判断有无键盘闭合,没有键盘闭合时置延时定时器位初值然后返回,有键盘闭合时延时定时器时间减少1,如果延时时间没到时返回,如果到了就逐行逐列的扫描键盘判断闭合键的键号,然后保存并给出对应键号的键值,之后置延时定时器位初值。延时定时器的延迟时间等于初值乘上时间判断间隔时间,通过确定延时定时器的延迟时间达到去除键盘抖动的对正常的影响,一般延时时间在30ms50ms之间,在实验中确定具体的延迟时间。键盘扫描去抖动的具体工作程序如下:Scan Key:;延时50ms去抖动 MOV P0, #00H SETB P2.4 ; OutPortCol1 SETB P2.5 ; OutPortCol2 MOV A, P2 ANL A, #00110000B ;与 XRL A, #00110000B ;异或 JZ No Key ;等于0 没有键按下;FindKeyNum=0 INC FindKeyNum MOV A, #DelayValue1; DelayValue1=9, T (5ms) X10 CLR C SUBB A, FindKeyNum JNC ScanKeyEnd ;不等于0 程序结束没有键按 MOV A, #DelayValue1+1 CLR C SUBB A, FindKeyNum JC No Key ; StartScanKey Get Key: MOV LocalValue2, #00H MOV A, #07FHGetKey1: SETB P2.4 ; OutPortCol1 SETB P2.5 ; OutPortCol2 MOV LocalValue1, A MOV P0, A; MOV A, P2 ANL A, #00110000B ;与 XRL A, #00110000B ;异或 JNZ GetKey2 MOV A, LocalValue1 RR A INC LocalValue2 JB ACC.7, GetKey1 LJMP No KeyGetKey2:MOV A, P2 ANL A, #00110000B ;与 XRL A, #00110000B ;异或 JB ACC.2, GetKey3 MOV A, #08H ADD A, LocalValue2 MOV LocalValue2, AGetKey3: MOV KeyColRowBuf, LocalValue2GetKeyValue: MOV DPTR, #KeyValue MOV A, KeyColRowBufGetKeyValue1: MOVC A, A+DPTR MOV KeyValueBuf1, A ;用于控制键 MOV KeyValueBuf2, A ;用于显示 LJMP ScanKeyEndNo Key: MOV FindKeyNum, #00HScanKeyEnd: RET3.3.2 LCD显示部分程序设计1. LCD显示器应用程序设计总体方案(1).汉字点阵数据提取LCD显示器应用程序设计的基本目标是实现中文显示界面。我们选用HS12864-1型图形点阵液晶显示模块:该LCD模块为不自带字库的12864点阵液晶显示器。可通过已由的常用子程序来添加汉字、字符的点阵数据表,供LCD在中文界面下显示汉字或字符。(2).LCD底层应用程序设计。添加点阵数据表之后,就可以开始设计LCD应用程序。在LCD显示器应用程序设计中,需要解决的一个重要问题就是消除显示屏的闪烁感。HS12864-1 型LCD显示模块只提供了一块显示数据寄存器DDRAM,并且与显示屏点阵是一一对应的。如果直接在DDRAM处理显示数据的,会因为同时进行处理和显示,而导致显示屏闪烁。通过LCD模块提供的显示开关指令DISPLAY ON/OFF 在数据处理之前关掉显示,待数据处理完后开显示,可以使显示屏闪烁得到一定控制。但是如果数据处理时间过长,超过人眼可辨别的最短时间20ms,显示屏就会因为反复开关显示而产生闪烁感。因此我们在片外数据存储器中开辟一个或多个与DDRAM大小一样的缓冲区,用于存放正在处理的显示数据,待数据处理完后,再将数据传送至LCD显示数据RAM。 通过以上分析,我们采用如下的LCD显示器应用程序设计总体方案:首先,添加汉字、字符点阵数据表。然后,编写LCD显示驱动程序。将指定Buf区中处理好的显示数据送LCD指定区显示。根据具体要求编写相应显示数据处理子程序。整个显示过程为:先将显示数据在片外数据存储器开辟的缓冲区中进行处理,待处理完后调用LCD驱动显示。最后,在LCD底层程序完成的基础上,设计人机交互界面,实现用户在菜单方式下进行交互。2. LCD适用字模信息提取程序的设计经研究,我们采用在单片机产品中经常用到的1616点阵的汉字库作为提取字模的母字库。 LCD在文本显示状态下,一屏最多显示4行8个汉字。在1616点阵汉字字库中,采用的是以行为主的存放结构,即一行上连续的8个点阵信息放在一个字节内,且左边的点对应字节的高位。每个汉字的字模信息占32个字节。汉字母库编码采用:计算机汉字字符代码中最常用一个是汉字编码字符集的基本集-GB2312。GB2312包括了汉字字符基本集,共收录汉字、图形符号等共7445个,依据其位置,分为94个区,每区共94位。其中第16区55区安排3755个常用汉字,依汉语拼音顺序排列。通过汉字的内码我们可以计算出与其点阵信息在字库中的偏移量。在生成点阵数据表的相应汉字中,采用自定义的编码。因为温湿度记录仪中只用到了少量汉字,所以我们决定采用ASCII代码中的 80HOFFH特殊字符代码区,用做生成点阵表的汉字编码,共可表示128个汉字。前20H7FH为常用字符的ASCII代码。由图形显示数据寄存器DDRAM地址和显示位置的对应关系可知:直接将提取的点阵数据送显,汉字不能正确显示。因此我们必须将提取的字模数据进行相应的转换,才能在LCD上正确显示。转换后的点阵信息格式如表3-2所示。表3-2 16点阵字模转换后排列格式d0d7第0字节12 341415d0d716171819203031 将转换后的点阵数据,按汇编语言中,定义存储单元伪指令“DB”的格式写入创建的文本文件中,就得到我们所需要生成的汉字点阵信息表。3. LCD显示驱动程序的设计所谓LCD驱动,即是通过连续的写显示数据(WRITE DISPLAY DATE)命令操作,将片外显示数据处理缓冲区内的数据,顺序写入相应的DDRAM单元。图3-8 LCD显示驱动源程序及流程图HS12864-1 型LCD显示模块,在硬件上通过左右半屏的片选信号引脚CS1/CS2,将LCD的显示数据DDRAM分为了左右两个半屏。在显示数据的处理和送显上,需要不断设置引脚CS1/CS2的信号,达到对指定DDRAM单元的控制和处理。这样对LCD模块控制极为不便。我们欲通过软件处理,使得LCD写显示数据操作结构化,整体化。将LCD显存DDRAM化分为8页,每页8行128列,128个数据存储单元。由软件驱动LCD显示屏上07页的任意页显示:顺序读出指定Buf区内图形或汉字的点阵数据,依次将显示数据写入指定页的128个数据存储单元。温湿度记录仪使用ADuC812单片机作为CPU,对其底层编写程序,我们选用了汇编语言作为编程语言,选用8051仿真器作为编程环境,以便程序的跟踪调试。软件将LCD显存DDRAM化分为8页,每页128个数据存储单元。通过R2控制写入左半屏或右半屏。先写显示数据到左半屏的64个单元;后通过R2自减1,控制写显示数据到右半屏的64个单元。一页写满后,如果没到写页次数,LCDPageX自加1,继续写下一页。其流程图如图3-8所示。4. LCD人机交互界面相关程序人机交互程序设计的重点在于窗口界面的显示、滚屏、光标的管理及参数的显示、修改和保存。现在我们只设计了窗口界面的显示部分,和菜单、对话框的简单控制切换。人机交互界面的显示主要包括菜单的显示、对话框的显示和提示信息显示。1. 提 示 信 息2. 对 话 框3. 菜 单 选 项图3-9窗口版面对应的通过前面对程序设计原理的分析,我们把窗口中具体条目(提示信息、菜单、对话框、参数等)显示涉及到的子程序进行封装处理,从而使得整个应用软件系统的设计简单明了。以菜单显示为例:我们把菜单编码对应汉字点阵数据的处理程序和显示驱动程序封装,调用时只需给出要送LCD显示的菜单序列号,则所菜单内容即可完成在指定位置(菜单区)的显示。对话框中参数的输入显示原理与菜单、对话框控制相同,都是通过读键,判断键值,功能处理来实现。27结论该检测仪适用于需要对温湿度实时检测的多种场合。由于采用了测量范围广、精度高、响应速度快的电容式湿度传感器来进行湿度采样,使用温度补偿、线性化处理的方法提高检测精度,因此该检测仪基本上达到技术指标中对相对湿度测量精度和分辨力的要求。该检测仪在湿度的线性化上用的时间可能会稍长一些。但是ADuC812单片机工作频率较高,并且只有环境湿度较高时才会出现处理时间延长现象,因此并不影响检测仪的实时检测指标。在这次设计中我们也遇到不少问题,也正是对这些问题的逐步解决该检测仪顺利设计完成。我们的设计主要面临着硬件设计和软件设计的两大问题,以及硬件和软件的结合。软件设计中面临的主要问题是环境温湿度数据的采集方法,相对湿度的温度补偿和线性化处理。在指导老师的悉心辅导下和查阅大量资料之后,然后采用了ADuC812数据采集芯片并配合其它一些元器件的硬件设计方案,使以上问题得到了很好解决 。由于这次设计的时间较短,该检测仪的主要功能已经实现,要达到实用,还需继续进一步进行研究设计。参考文献1 赵新民.智能仪器原理及设计.哈尔滨工业大学出版社,19892 戴义保.高精密温度测量的研究与实现J . 上海: 自动化仪表第2003,24(3):24-27 3 谢光忠、蒋亚东等. 温湿度智能数据采集控制系统的研制.传感器技术 2000,19(4):29-334 戴梅萼,史嘉.微型计算机技术及应用.北京:清华大学出版社,19955 丁元杰.单片微机原理及应用.北京:机械工业出版社,19936 何立民.MCS-51系列单片机应用设计、系统配置与接口技术.7 彭喜源,谭晓均,张毅刚.MCS-51单片机应用设计.8 陈宝江,翟涌,张幽彤.MCS单片机应用系统实用指南.9 胡健.单片机原理及接口技术实践教程.北京:机械工业出版社,200410 喻评,郭文川.单片机原理与接口技术.北京:化学工业出版社,200611 李刚.51系列单片机系统设计与应用技巧.北京:北京航空航天大学出版社。200412 杨景常.精密计量环境温度、相对湿度监测记录仪的研制J.沈阳:仪表技术与传感器。200313 何立民.单片机中级教程原理与应用.北京:北京航空航天大学出版社,199014 沙占友.单片机外围电路设计.北京:电子工业出版社,200315 刘君华.现代检测技术与测试系统设计M.西安:西安交通大学出版社,200016 余永权。MCS-51系列单片机应用技术.北京:北京航空航天出版社,200217 阎石.数字电子技术基础.北京:高等教育出版社,200218 刘书明、冯小平.数据采集系统芯片ADuC812原理与应用M .西安:西安电子科技大学出版社,2000.19 涂玲英肖俊武张宇智能型温湿度测控仪研究与实践湖北工学院学报200220 蔡美琴MCS一51系列单片机系统及其应用高等教育出版社199221 马忠梅单片机的C语言应用程序设计北京航空航天大学出版社,199717致谢本设计的题目是由韩刚导师根据实际工作和生产中的具体需要拟定的,花费了许多时间和精力查询资料,最终定出设计方案 。有多年单片机应用开发经验的韩刚老师给我们进行了深入而系统的指导。老师认真负责的工作态度,严谨的治学精神和扎实的、深厚的理论水平都使我受益匪浅。正是在韩刚老师的耐心引导和帮助下,解决了设计中的种种问题,最终使毕业设计圆满完成。在此我衷心的感谢韩老师对我这次毕业设计指导和帮助。在这次设计中也得到了周围同学的大力支持和热心帮助,他们对本检测仪的设计提出了许多有益的建议和意见,在此一并致谢。附录 温度、相对湿度检测仪的电路原理图外文资料原文ADuC812 MicroConverter1.GENERAL DESCRIPTIONThe ADuC812 is a fully integrated 12-bit data acquisition system incorporating a high performance self-calibrating multichannel ADC, two 12-bitDACs and programmable 8-bit (8051-compatible) MCU on a single chip. The programmable 8051-compatible core is supported by 8K bytes Flash/EE program memory, 640 bytes Flash/EE data memory and 256 bytes data SRAM on-chip. Additional MCU support functions include Watchdog Timer, Power Supply Monitor and ADC DMA functions. 32 Programmable I/O lines, I2C-compatible, SPI and Standard UART Serial Port I/O are provided for multiprocessor interfaces and I/O expansion. Normal, idle and power-down operating modes for both the MCU core and analog converters allow for flexible power management schemes suited to low power applications. The part is specified for 3 V and 5 V operation over the industrial temperature range and is available in a 52-lead, plastic quad flatpack package. 2.FEATURES ANALOG I/O8-Channel, High Accuracy 12-Bit ADCOn-Chip, 40 ppm/_C Voltage ReferenceHigh Speed 200 kSPSDMA Controller for High Speed ADC-to-RAM CaptureTwo 12-Bit Voltage Output DACsOn-Chip Temperature Sensor Function MEMORY8K Bytes On-Chip Flash/EE Program Memory640 Bytes On-Chip Flash/EE Data MemoryOn-Chip Charge Pump (No Ext. VPP Requirements)256 Bytes On-Chip Data RAM16M Bytes External Data Address Space64K Bytes External Program Address Space 8051-COMPATIBLE CORE12 MHz Nominal Operation (16 MHz Max)Three 16-Bit Timer/Counters32 Programmable I/O linesHigh Current Drive CapabilityPort 3Nine Interrupt Sources, Two Priority Levels POWERSpecified for 3 V and 5 V OperationNormal, Idle and Power-Down Modes ON-CHIP PERIP
展开阅读全文