湿度传感器HS1101c语言的程序

合集下载

HS1100_HS1101电容式湿度传感器及其应用

HS1100_HS1101电容式湿度传感器及其应用

收稿日期:2001 03 08 修改稿日期:2001 05 14HS1100/HS1101电容式湿度传感器及其应用林 敏 于忠得大连轻工业学院 辽宁省大连市 116034侯秉涛大连工业学校 辽宁省大连市 116033摘要 介绍了一种新型的电容式湿度传感器的湿敏特性及其测量显示仪表的工作原理、电路组成与优良性能。

关键词:湿度 测量 电路中图分类号:TH 8371 引言测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气中吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。

电容式、电阻式和湿涨式湿敏元件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。

下面介绍H S1100/HS1101湿度传感器及其应用。

2 特点不需校准的完全互换性,高可靠性和长期稳定性,快速响应时间,专利设计的固态聚合物结构,有顶端接触(H S1100)和侧面接触(H S1101)两种封装产品,适用于线性电压输出和频率输出两种电路,适宜于制造流水线上的自动插件和自动装配过程等。

图1为湿敏电容工作的温、湿度范围。

图2为湿度-电容响应曲线。

图1 HS11 湿敏电容工作的温湿度范围相对湿度在0%~100%RH 范围内;电容量由162pF 变到200pF,其误差不大于 2%RH;响应时间小于5s;温度系数为0.04pF/ 。

可见精度是较高的。

3 湿度测量电路HS1100/HS1101电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。

如何将电容的变化量准确地转变为计算机易于接受的信号,常用两种方法:一是将该湿敏电容置于运放与阻容组成的桥式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再A/D 转换为数字信号;另一种是将该湿敏电容置于555振荡电路中,将电容值的变化转为与之呈反比的电压频率信号,可直接被计算机所采集。

图2 HS11 湿敏电容的湿度 电容响应曲线频率输出的555测量振荡电路如图3所示。

湿度传感器HS1101

湿度传感器HS1101

湿度传感器HS11011引言湿度传感器是根据某种物质从其周围空气中吸收水分后引起的物理或化学性质的变化,从而获得该物质的吸水量和周围空气的湿度。

湿度传感器分为电阻式和电容式两种,产品的基本形式都是在基片涂覆感湿材料形成感湿膜。

空气中的水蒸汽吸附于感湿材料后,元件的阻抗、介质常数发生很大的变化,从而制成湿敏元件。

湿敏电容一般是用高分子薄膜电容制成的,由于它具有灵敏度高、产品互换性好、响应速度快、湿度的滞后量小、便于制造、容易实现小型化和集成化,其精度一般比湿敏电阻要低一些。

但电阻对温度的敏感因而限制了器件在较大温度范围内的应用,因而电容湿度传感器越来越受到重视。

2 湿敏元件及变送器芯片特性目前,生产湿敏电容的主要厂家是法国Humirel 公司。

它生产的HS1101 测量范围是0%,100%RH,电容量由162PF 变到200PF,其误差不大于?2%RH;响应时间小于5S;湿度系数为0.34PF/?;年漂移量0.5%RH/年,长期稳定。

图1 为HS1101湿敏电容的湿度-电容响应曲线。

湿度变送器采用了美国 BB 公司生产的XTR105芯片,该变送器具有以下特点:a 工作范围宽;b 测量精度高;c 电路简单;d 可靠性好,使用寿命长;e 抗干扰能力强;f 工作温度范围宽(-40,+85?)3 湿度测量电路HS1101在电路中相当于一个电容器件,它的电容量随着所测空气湿度的增加而增大,为了能将电容的变化转换成电压的变化,我们设计了振荡电路、消除零点电容影响电路、整流电路、积分电路、电压—电流转换电路、放大电路等,其工作原理简图如图2 所示。

3.1 振荡电路振荡电路的作用是将电容的变化量转化为频率可变的方波。

由图3 可知,这是一个非对称多谐振荡器。

或非门G1 工作在电压传输特性的转折区,把它的输出电压直接连接到或非门G2 的输入端。

G2即可得到一个介于高低电平之间的静态偏置电压,从而使G2 的静态工作点也处于电压传输特性转折区上。

运用KEILC分析HS1101湿度传感器F-RH转换算法

运用KEILC分析HS1101湿度传感器F-RH转换算法

运用KEILC分析HS1101湿度传感器F-RH转换算法作者:邱玉娟来源:《现代电子技术》2008年第24期摘要:针对在单片机湿度测量系统中,将湿度传感器HS1101和555组成振荡器的输出计频后,按技术手册给定的频率-湿度关系,为达到理想的转换精度,设计了几种将频率转换为湿度的算法以及实现该算法相应的C51源程序,在KEIL C软件环境下,进行编译并仿真运行,通过监视反汇编、性能分析等观察窗口,对生成代码长度、执行效率进行了具体分析比较,指出了在C51编程提高程序运行性能方面,应引起重视的算法和一些技术性问题。

关键词:HS1101;F-RH转换函数;转换精度;KEILC;性能分析中图分类号:G712;TP212文献标识码:B文章编号:1004-373X(2008)24-184-03Analysis of the Convertible Algorithm about HS1101 Humidity Sensor by KEILCQIU Yujuan(Jiangyin Polytechnic College,Jiangyin,214433,China)Abstract:This article designs several algorithms of the conversion between frequency and humidity with reference to the fixed relation of the tow elements stated in the technical manual to achieve the desired accuracy of the conversion,and provides a realization of these types of algorithms corresponding C51 source program.These algorithms apply to the microcontroller humidity measurements system in which the frequency of the output of the oscillator consisted of humidity sensor and 555 is counted.Apart from it,through the adoption of software KEILC,after compiler and simulation,the length of Generation code,executive efficiency have been compared and analyzed specificly while surveillance of the observation window.And some technical problems about the efficienal processing of C51 which should be stressed on are also pointed out in the article.Keywords:HS1101;F-RH transfer function;conversion accuracy;KEILC;performance analysis 1 引言HS1101法国HUMIREL电容式湿度传感器,采用创新技术、稳定性好、精度高、外带防护罩,抗静电、防灰尘、并可抵抗氯气、氨水等,可测的湿度测量范围为1~99%RH,精度可达到±2%可应用于湿度变送器、湿度仪表、湿度控制器及其他场合,在测量温度Tα=25℃,测量工作频率为10 kHz,C-RH特性曲线如图1,从特性曲线图上可以看出,HS1101具有极好的线性输出。

基于AT89S51单片机的以HS1101作为前端湿敏元件的室内湿度检测系统设

基于AT89S51单片机的以HS1101作为前端湿敏元件的室内湿度检测系统设

摘要随着社会信息科学的发展,控制理论和电子技术也在不断更新,基于微控制器的高度智能化测控技术逐步成为现实。

其中以单片机为核心实现数字控制器因其体积小、成本低、功能强、简便易行而得到了广泛的应用。

室内湿度测控由于其重要性的日益突出,技术也越来越成熟。

本文主要讨论基于AT89S51单片机的以HS1101作为前端湿敏元件的室内湿度检测系统。

本系统采用层次化、模块化设计,以HS1101湿敏芯片的传感器作为测量的器件,所得到的数据经过NE555振荡电路处理后,通过ADC0809模数转换器件接入到AT89S51单片机,以单片机为核心对数据进行记录、存储、处理和报警。

本文在设计过程中主要做了以下几个方面的工作:一是讨论并选择系统的总体设计方案;二是对传感器、A/D转换器和单片机进行设计和选择;三是对单片机及其跟PC机进行通信的接口进行电路及软件系统的设计。

本系统的设计还处于理论阶段,是在论证了各种方案和搜集了各种的资料后提出的一种切实可行的室内湿度监测系统。

本系统完全满足一般小实验室的湿度测控系统的要求,实现了对室内湿度状况的全面、实时和长期的监测,也实现了室内湿度检测的自动化智能化。

关键词:AT89S51;HS1101;AD转换器;RS-232;传感器AbstractWith the social development of information science, control theory and electronic technology has been updated too, based on the micro-controller, the technology of highly intelligent micro-controller monitoring has gradually become a reality. Among them, single-chip digital controller as the core because of their small size, low cost, powerful, simple and widely used. Indoor humidity measurement and controlling has been growing importance because of the prominent and the more and more mature technology. This article focused on a single chip AT89S51 based HS1101 humidity sensor as a front-end indoor humidity detection system.The system has a hierarchical, modular design, and uses HS1101 humidity sensor chip as a measurement device. The data obtained after treatment NE555 oscillator circuit through the ADC0809 AD converter connecting to the AT89S51 micro-controller, a single machine as the core of the data record, storage, processing and alarm. In this paper, the main job of the design is the following points: First, to discuss the overall design and program so to select the appropriate system; Second, design and selection of the sensor, A / D converter, and a single-chip; third is a Micro Controller Unit to communicate with the PC interface and software systems for circuit design.The design of the system is still in the theoretical stage, and it is to demonstrate a variety of programs and collected information on the various proposed a practical indoor humidity monitoring systems. Satisfy the system of small laboratory humidity measurement and control system requirements, the indoor humidity has been to achieve the status of a comprehensive, real-time and long-term monitoring, and also make the indoor humidity intelligent and automated testing to come true.Keywords: AT89S51; HS1101; AD converter; RS-232; sensor目录第一章前言 (1)1.1 概述 (1)1.2 实验室湿度测控的意义 (1)1.3 实验室湿度测控的现状与发展 (2)1.3.1传统的分立式湿度测量 (2)1.3.2模拟集成湿度传感器测量 (2)1.3.3智能湿度传感器测量 (2)1.4 本课题的设计方案 (3)第二章湿度测量电路设计 (4)2.1 传感器的认识 (4)2.1.1传感器的静态特性 (4)2.1.2传感器的动态特性 (5)2.2 湿度传感器的选择 (6)2.2.1湿度及其表示方法 (6)2.2.2湿度传感器HS1101 (6)2.3 湿度测量电路 (8)2.3.1NE555时基电路 (8)2.3.2基于555振荡电路的湿度测量电路设计 (9)第三章核心电路的设计 (10)3.1 ADC0809模数转换器 (10)3.1.1ADC0809应用简介 (10)3.1.2测湿电路与单片机连接 (11)3.1.3湿度误差补偿插值法子程序 (11)3.2 单片机电路的设计 (12)3.2.1MCS-51单片机 (12)3.2.2AT89S51单片机 (13)3.2.3时钟晶振电路和复位电路 (13)3.3 总体电路系统 (14)3.3.1LED报警设计 (14)3.3.2系统总设计 (15)3.4 电路PCB版图设计 (17)第四章单片机与PC间的串行通讯 (20)4.1 RS-232-C接口 (20)4.2 单片机和PC通信连接 (20)4.3 简单软件设计 (22)4.3.1下位机软件设计 (22)4.3.2上位机程序设计 (23)第五章结论 (24)参考文献 (25)致谢 (26)附录 (27)。

湿度传感器HS1101

湿度传感器HS1101

湿度传感器HS11011引言湿度传感器是根据某种物质从其周围空气中吸收水分后引起的物理或化学性质的变化,从而获得该物质的吸水量和周围空气的湿度。

湿度传感器分为电阻式和电容式两种,产品的基本形式都是在基片涂覆感湿材料形成感湿膜。

空气中的水蒸汽吸附于感湿材料后,元件的阻抗、介质常数发生很大的变化,从而制成湿敏元件。

湿敏电容一般是用高分子薄膜电容制成的,由于它具有灵敏度高、产品互换性好、响应速度快、湿度的滞后量小、便于制造、容易实现小型化和集成化,其精度一般比湿敏电阻要低一些。

但电阻对温度的敏感因而限制了器件在较大温度范围内的应用,因而电容湿度传感器越来越受到重视。

2 湿敏元件及变送器芯片特性目前,生产湿敏电容的主要厂家是法国Humirel 公司。

它生产的HS1101 测量范围是0%,100%RH,电容量由162PF 变到200PF,其误差不大于?2%RH;响应时间小于5S;湿度系数为0.34PF/?;年漂移量0.5%RH/年,长期稳定。

图1 为HS1101湿敏电容的湿度-电容响应曲线。

湿度变送器采用了美国 BB 公司生产的XTR105芯片,该变送器具有以下特点:a 工作范围宽;b 测量精度高;c 电路简单;d 可靠性好,使用寿命长;e 抗干扰能力强;f 工作温度范围宽(-40,+85?)3 湿度测量电路HS1101在电路中相当于一个电容器件,它的电容量随着所测空气湿度的增加而增大,为了能将电容的变化转换成电压的变化,我们设计了振荡电路、消除零点电容影响电路、整流电路、积分电路、电压—电流转换电路、放大电路等,其工作原理简图如图2 所示。

3.1 振荡电路振荡电路的作用是将电容的变化量转化为频率可变的方波。

由图3 可知,这是一个非对称多谐振荡器。

或非门G1 工作在电压传输特性的转折区,把它的输出电压直接连接到或非门G2 的输入端。

G2即可得到一个介于高低电平之间的静态偏置电压,从而使G2 的静态工作点也处于电压传输特性转折区上。

基于51单片机的HS1101湿度采集(优.选)

基于51单片机的HS1101湿度采集(优.选)

作者:李霈雯硬件电路程序#include<reg52.h> #include<intrins.h>#define uint unsigned int#define uchar unsigned char#define ulongint unsigned long intsbit D0=P1^0; //将D0位定义为P1.0引脚uint code tab[2][11]={0,10,20,30,40,50,60,70,80,90,100,7351,7224,7100,6976,6853,6728,6600,6468,6330, 6186,6033};ulongint F=0;ulongint T0_count=0,T1_count=0;bit flag=0;ulongint RH;/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<4;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delaynms(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/****************************************************************************** *以下是对蜂鸣器模块的操作程序******************************************************************************* /sbit fmq1=P3^6;/*****************************************************函数功能:蜂鸣器延时若干250us入口参数:n***************************************************/void delay500us(){unsigned char j;for(j=0;j<57;j++) //500us基准延时程序{;}}void beep() //产生1KHZ频率声音的函数{unsigned int t;for(t=0;t<1000;t++){fmq1=~fmq1;delay500us();}fmq1=1;delaynms(1000);}/****************************************************************************** *以下是对液晶模块的操作程序******************************************************************************* /sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。

HS1101电容式空气湿度传感器

HS1101电容式空气湿度传感器

编号:传感器实训(论文)说明书题目:HS1101湿度检测计院(系):信息与通信学院专业:电子信息工程学生姓名:邱俊凯学号:1001130126指导教师:王守华2012年7月2日摘要随着科技的发达,以及人民生活水平的提高,人民室内生活环境不断改善,出现了空调、智能温度器、室内净化器等一系列改善人民生活条件的高科技产品。

然而这并不能满足人民越来越高的生活需求,有些人提出了湿度的要求,本设计就在此基础上,设计一种基于89C51单片机控制的智能湿度控制系统。

此系统采用了精密的检测电路(包刮精密对称方波发生器、对数放大及半波整流、温度补偿及温度自动校正及滤波电路等几部分电路组成),能够自动、准确检测环境空气的相对湿度,并将检测数据通过A/D转换后,送到处理器(AT89C51)中,然后通过软件的编程,将当前环境的相对湿度值转换为十进制数字后,再通过数码管来显示;而且,通过软件编程,再加上相应的控制电路(光电耦合及继电器等部分电路组成),设计出可以自动的调节当前环境的相对湿度:当室内空气湿度过高时,控制系统自动启动抽风机,减少室内空气中的水蒸气,以达到降低空气湿度的目的;当室内空气湿度过低时,控制系统自动启动蒸汽机,增加空气的水蒸气,以达到增加湿度的目的,使空气湿度保持在理想的状态;键盘设置及调整湿度的初始值,另外在设计个过程当中,考虑了处理器抗干扰,加入了单片机监视电路。

通过对基于单片机的相对湿度控制器设计,加深对传感器技术及检测技术的了解,巩固对单片机知识的掌握,并系统的复习本专业所学过的知识。

关键词:湿度检测,对数放大,湿度调节,温度补偿目录1.设计要求 (1)2. 方案设计及论证 (1)2.1 总体方案设计 (1)2.2 系统主要单元的选择与论证 (1)2.2.1单片机控制模块的选择论证 (1)2.2.2湿度检测模块的选择与论证 (1)2.2.3显示模块的选择与论证 (2)2.3 系统组成 (2)3. 理论分析及计算 (2)3.1 HS1101的湿度测量方法分析 (2)3.2HS1101的湿度测量计算 (2)4. 系统电路设计 (2)4.1单片机主控电路设计 (3)4.2 HS1101湿度检测模块电路设计 (4)4.2.1 HS1101湿度检测传感器工作原理 (5)4.3 1602液晶显示模块电路设计 (6)5. 系统软件设计 (7)5.1 软件设计流程图 (7)5.2 软件设计分析 (8)6. 系统测试 (8)6.1主要指标测试 (8)6.2测试结果分析 (8)7. 结论 (9)参考文献 (10)附录 (11)附录一:系统的总原理图 (11)附录二:系统的PCB元件分布图 (11)附录三:程序清单 (12)附录五:元器件清单 (18)1.设计要求(1)设计制作一个湿度计,湿度为0-100%;(2)湿度测量误差为3%;(3)具有量程自动转换功能;2.2. 方案设计及论证2.1 总体方案设计经分析,将系统分为两个部分,一个是由湿度传感器组成的检测部分,另一个是由单片机和1602液晶组成的主控与显示部分。

基于HS1101的语音湿度测量仪

基于HS1101的语音湿度测量仪

基于HS1101的语音湿度测量仪[摘要] 以凌阳16位单片机SPCE061A为控制中心,配合LCD501液晶模组及HS1101电容式湿度传感器,通过SPCE061A的Feedback功能构成RC反馈振荡电路,完成湿度传感器从电容到频率的转换,从而实现了湿度的测量。

且当湿度值高于或低于设定值时有提示功能,利用按键可控制湿度值的播放及若干湿度值的存储。

[关键词] HS1101SPCE061ALCD501Feedback在日常生活及科学研究中,常需要对环境温湿度等进行测量及控制,在常规的环境参数中,因为湿度往往受其他因素(如大气压强、温度等)的影响是较难准确测量的一个参数。

随着科技的发展和对湿度认识的不断深入,湿度的测量技术和测量方法取得了飞速的发展,电子式湿度传感器及湿度测量技术也随之兴起,并取得了长足的发展。

电容式相对湿度传感器是气候、过程湿度检测的主流、并能检测全湿度范围,具有较好的温度特性,经常不用温度补偿就能测量较宽温度范围相对湿度。

本系统就是利用电容式湿度传感器配合单片机实现具有语音功能人性化的测湿仪。

一、湿度及其测量方法1、湿度的定义在计量法中规定,湿度定义为“物象状态的量”。

日常生活中所指的湿度为相对湿度(Relative Humidity),即气体中(通常为空气中)所含水蒸气量(水蒸气压)与其相同情况下饱和水蒸气量(饱和水蒸气压)的百分比,用RH%表示。

湿度测量方法主要分为伸缩法、干湿球法、冷凝露点法、氯化锂露点法、电湿度测量法以及电解法等等。

电湿度测量法主要是利用湿度传感器通过检测电参数的变化值而获得湿度值。

其中,电容式湿度传感器由于响应速度快、体积小、线性度好、较稳定被广泛应用。

本系统采用了HS1101电容式湿度传感器,能够实现:±2%RH的高精度、1~99%RH的量程、-40~100℃的工作温度范围。

2、湿度值的计算在测量温度Ta =25℃,工作频率为10KHz情况下,电容值和湿度值之间多项式关系近似为C(pf)=C1*(1.25*10-7*RH3-1.36*0-5*RH2+2.19*10-3*RH+9.0*10-1)其中,C1为传感器在10kHz、55%RH下的电容值,按图1可取183pf。

电子湿度计C语言程序代码

电子湿度计C语言程序代码

C语言程序代码#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit DS1=P3^3;sbit DS2=P3^4;uint num=0,counterTH1,counterTL1,f,sum;uchar code table[]={0x88,0xeb,0xc4,0x94,0xb2,0x91,0x81,0xbc,0x80,0x90 ,0xdf};void delay(uint k); //声明延时子函数void initial(); //声明初始化子函数void translate(); //声明频率转换为相应的数码管数字void display();//声明初始化数码管显示内容子函数void initial(){TMOD=0x51; //选择方式寄存器TL0=0xb0;TH0=0x3c; //定时器0赋初值TR0=1; //开启定时ET0=1; //允许T0中断TL1=0x00;TH1=0x00; //定时器T1赋初值TR1=1; //开启计数ET1=1; //允许T1中断EA=1; //打开总中断}//****************************************************// void main() //主函数{initial(); //调用初始化函数while(1){translate();//调用转换子函数display();}}//******************************************************// void TimeT0() interrupt 1 //定时器0溢出中断{EA=0;TR0=0;TL0=0xb0;TH0=0x3c; //定时器0初值重装载num++;if(num==20)//判断一秒时间是否到了{TR1=0;//关计数器1counterTH1=TH1;counterTL1=TL1;f=(counterTH1<<8)|counterTL1; //读计数值TL1=0x00;TH1=0x00; //清计数器1TR1=1; //重新启动计数器T1num=0; //定时器0重新置零}EA=1;TR0=1;}/********************************************************/ void translate(){uint num1,num2;sum=0;if(f>7351){num1=10;num2=10;}else if(7224<f){num1=0;num2=(uint)(7531-f)*10/127; }else if(7100<f){num1=1;num2=(uint)(7224-f)*10/124; }else if(6976<f){num1=2;num2=(uint)(7100-f)*10/124; }else if(6853<f){num1=3;num2=(uint)(6976-f)*10/123; }else if(6728<f){num1=4;num2=(uint)(6853-f)*10/125; }else if(6600<f){num1=5;num2=(uint)(6728-f)*10/128; }else if(6468<f){num1=6;num2=(uint)(6600-f)*10/132; }else if(6330<f){num1=7;num2=(uint)(6468-f)*10/138; }else if(6186<f){num1=8;num2=(uint)(6330-f)*10/144;}else if(6033<f){num1=9;num2=(uint)(6186-f)*10/153;}else{num1=10;num2=10; //超出表范围的显示_ _}sum=num1*10+num2;}/********************************************************/ void delay(uint k){int i,j;for(i=0;i<k;i++)for(j=0;j<2;j++); //延时子函数}/********************************************************/ void display(){if(sum<=99){P0=table[sum/10];DS1=0; //显示第1位数码管delay(1);DS1=1;P0=table[sum%10];DS2=0; //显示第2位数码管delay(1);DS2=1;}else{P0=table[10];DS1=0; //显示第1位数码管delay(1);DS1=1; //关第一个数码管的段码P0=table[10];DS2=0; //显示第2位数码管delay(1);DS2=1; //关第二个数码管的段码}}void counterT1() interrupt 3{EA=0;TR1=0;TL1=0x00;TH1=0x00; //计数器T1赋初值TR1=1; //开启计数ET1=1; //允许T1中断EA=1; //打开总中断}。

关于湿度传感器HS1101的设计

关于湿度传感器HS1101的设计

关于湿度传感器HS1101的设计本课题的设计方案本课题所设计的系统有三个原则:1、操作维护方便,为了利于系统的推广,在设计时应该充分采用操作内置或简化的方法,以尽量减少对操作人员专用知识的要求,也便于进行维修。

2、可靠性,本系统所有的环节中,都应该有着可靠性的思想,从选用可靠性高的元器件;供电电源采用抗干扰措施;进行多向滤波等作为出发点。

3、性价比,本课题所设计的系统的核心是单片机,它本身有着多个优势,要使得系统能够广泛地应用,在充分考虑可靠性的同时,尽可能降低成本,提高系统的性价比。

本文将从以下几个方面展开工作:一是确定测湿电路的设计方案;二是进行单片机核心电路的设计;三是对单片机及通信接口进行简单的概述;四是对所有的工作进行总结。

本次课题的设计系统的示意图如图1-1。

图1-1:系统示意图湿度传感器HS1101是基于独特工艺设计的电容元件,这些相对湿度传感器可以大批量生产。

可以应用于办公室自动化,车厢内空气质量控制,家电,工业控制系统等。

它有以下几个显著的特点:1.全互换性,在标准环境下不需校正2.长时间饱和下快速脱湿3.可以自动化焊接,包括波峰或水浸4.高可靠性与长时间稳定性5.专利的固态聚合物结构6.可用于线性电压或频率输出回路7.快速反应时间HS1101的简单物照图如图2-1[5]。

图2-1:HS1101实物照相对湿度在0%~100%RH范围内;电容量由162pF变到200pF,其误差不大于 2%RH;响应时间小于5s;温度系统为0.04pF/℃。

可见其精度是较高的。

其湿度-电容响应曲线如图2-2:20 40 60 80 100相对湿度%图2-2:HS1101湿度-电容响应曲线HS1101的一些常用参数如表2-1:表2-1:HS1101常用参数a) 湿度测量电路HS1101电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。

涉及如何将电容的变化量准确地转变为计算机易于接受的信号时,常用两种方法:一是将HS1101置于运放与阻容组成的桥式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再A/D 转换为数字信号;另一种是将HS1101置于555振荡电路中,将电容值的变化转为与之呈反比的电压频率信号,可直接被计算机所采集。

hs1101的基本应用原理

hs1101的基本应用原理

HS1101的基本应用原理1. 介绍HS1101是一种湿度传感器,能够用于测量周围环境的湿度。

它采用一种特殊的传感器结构,利用电容原理来测量湿度,并将其转化为电信号输出。

2. 原理HS1101的工作原理基于电容变化的测量。

它由两个电板组成,其中一个电板是由普通电子材料构成的,另一个电板则是由高分子材料(通常是聚酰亚胺)构成的。

这两个电板之间形成了一个电容,当周围环境的湿度改变时,高分子材料的含水量也会发生变化,从而导致电容的变化。

3. 工作原理详解当空气中的湿度上升时,高分子材料会吸收水分,导致之间的电容增加。

反之,当空气中的湿度降低时,高分子材料会释放水分,导致之间的电容减小。

因此,通过测量电容的变化,我们可以间接测量空气中的湿度。

4. 电路连接HS1101可以通过与微处理器或其他电子设备连接来实现湿度的测量。

一般情况下,它需要连接到一个模数转换器(ADC)或其他类型的电路,将电容变化转化为可测量的电压。

5. 注意事项在使用HS1101时,需要注意以下几个方面:•温度影响:HS1101的湿度测量结果可能会受到温度的影响。

因此,在进行湿度测量时,需要同时测量温度,并对结果进行校正。

•电源电压:HS1101通常需要与某种电源电压连接,以提供工作所需的电能。

因此,在使用HS1101时,需要确保供电电源的电压稳定,以保证准确的测量结果。

•电路保护:由于HS1101是一种比较敏感的传感器,其电路对静电和其他电磁干扰较为敏感。

因此,在使用过程中,需要注意对其进行适当的保护,以防止干扰影响测量结果。

6. 应用领域HS1101的基本应用领域包括但不限于以下几个方面:•气象观测:HS1101可以用于测量空气中的湿度,成为气象观测的重要工具之一。

•温湿度监测:HS1101可以与其他温度传感器结合使用,实现对环境中温湿度的同时监测。

•农业控制:HS1101可以应用于农业领域,用于监测土壤湿度,以便控制灌溉水量。

•家居自动化:HS1101可以用于家居自动化系统中,实现湿度的监测和控制。

高分子湿敏电容传感器hs1101的原理及应用

高分子湿敏电容传感器hs1101的原理及应用

高分子湿敏电容传感器hs1101的原理及应用高分子湿敏电容传感器HS1101是一种能够测量环境湿度的电子器件。

它使用高分子材料制成,具有特殊的敏感性,可以测量空气中的
湿度并将其转化为电信号输出。

在许多应用场合中,HS1101传感器是
非常有用的,例如环境监测、工业控制和人体健康监测等。

HS1101传感器的原理基于吸附高分子材料所固有的特性。

当传感
器的感测元件接收到环境中的水分分子后,高分子材料开始吸收这些
水分分子并膨胀,导致感测元件变化,从而导致电容值发生变化,该
变化可被传感器测量并输出。

该传感器具有许多应用领域。

在环境监测领域中,HS1101传感器
可用于测量空气中的湿度,以确定空气中的水蒸气含量。

在医疗和健
康监测领域中,该传感器可用于监测患者呼吸时口腔和喉咙的湿度。

在工业控制领域中,则常用于监测工业生产过程中的相对湿度,以确
保产品质量。

使用该传感器时需要注意一些细节。

首先,传感器的敏感元件必
须被保持在合适的温度和湿度之下,以确保传感器的准确性和可靠性。

其次,传感器对电路干扰和噪声敏感,因此需要保证传感器电路的输
入端稳定。

最后,传感器需要定期校准,以保证传感器输出的准确性。

总之,高分子湿敏电容传感器HS1101是一款非常可靠和实用的传
感器。

它可以用于许多不同领域的应用,例如环境监测、工业控制和
医疗健康监测。

然而,在使用传感器时应注意细节和保持传感器的准确性,以确保其准确性和可靠性。

DS18B20和HS1101程序

DS18B20和HS1101程序

/********************************************************* DS18B20温度传感器* C51* yajou 2008-06-28 无CRC********************************************************/#include <reg51.h>#include <intrins.h>/********************************************************* I/O口定义********************************************************/sbit dq = P1^1;sbit spk=P1^0;bit flag=0;/********************************************************* 命令字定义********************************************************/#define uchar unsigned char#define uint unsigned int#define ReleaseDQ() dq = 1; //上拉/释放总线#define PullDownDQ() dq = 0; //下拉总线#define Delay2us() _nop_();_nop_(); //延时2us,每nop 1us#define Delay8us() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //设置重复检测次次数,超出次数则超时#define ReDetectTime 20//ds18b20命令#define SkipROM 0xCC#define MatchROM 0x55#define ReadROM 0x33#define SearchROM 0xF0#define AlarmSearch 0xEC#define Convert 0x44#define WriteScr 0x4E#define ReadScr 0xBE#define CopyScr 0x48#define RecallEE 0xB8#define ReadPower 0xB4#define fushu 0x0a/********************************************************* 显示缓存*********************************************************/uchar code dispTAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbF,0xff}; uchar code dispbit[]={0xfe,0xfd,0xfb,0xf7};/********************************************************* us延时程序*********************************************************/void Delayus(uint us){while(us--); //12M,一次6us,加进入退出14us(8M晶振,一次9us)}/******************************************************** * DS18B20初始化* ********************************************************/ bit Ds18b20_Init(void) //存在返0,否则返1{bit temp = 1;dq=1;_nop_();dq=0;Delayus(60); //556us时间dq=1;Delayus(5); //61us(>60)temp = dq;Delayus(45); //2us(>1us)dq=1;return temp;}/******************************************************** * 写bit2DS18B20 * ********************************************************/ void Ds18b20_WriteBit(bit bitdata){dq=1;Delay2us(); //2us(>1us)if(bitdata){dq=0;Delay2us(); //2us(>1us)dq=1;Delayus(12); //86us(45- x,总时间>60)}else{dq=0;Delayus(12); //120us}dq=1;Delay2us(); //2us(>1us)}/******************************************************** * 写Byte DS18B20 * ********************************************************/ void Ds18b20_WriteByte(uchar chrdata){uchar i;for(i = 0; i < 8; i++){Ds18b20_WriteBit(chrdata&0x01);chrdata>>= 1;}}/******************************************************** / * 读bit From DS18B20 *********************************************************/ bit Ds18b20_ReadBit(void){bit bitdata;dq=1;Delay2us(); //2us( >1us)dq=0;Delay2us(); //2us( >1us)Delay2us(); //2us( >1us)dq=1;Delay8us(); //8us( <15us)Delay8us(); //8us( <15us)bitdata = dq;Delayus(5); //86us(上述总时间要>60us)dq=1;return bitdata;}/******************************************************** * 读Byte DS18B20 * ********************************************************/ uchar Ds18b20_ReadByte(void){uchar i,chardata;for(i= 0; i< 8; i++){chardata >>= 1;if(Ds18b20_ReadBit()) chardata |= 0x80;// chardata=chardata|0x80 }return chardata;}/******************************************************** * 读DS18B20 BE * ********************************************************/ bit Ds18b20_ReadBE(uchar *p_readdata) //成功返0,失败返1{uchar ii = 2;if(Ds18b20_Init()) return 1;Ds18b20_WriteByte(SkipROM);//0xccDs18b20_WriteByte(ReadScr);//0xbewhile(ii--){*p_readdata = Ds18b20_ReadByte();p_readdata++;}return 0;}/******************************************************** * 温度采集计算********************************************************/uint TempCal( uchar temp[2] ) //返(温度范围-55 --- +128){uint tmpwendu;tmpwendu = temp[1];tmpwendu<<= 8;tmpwendu|= temp[0]; //组成温度的两字节合并if(tmpwendu&0x8000){tmpwendu=(~tmpwendu)+1;flag=1;}elseflag=0;return tmpwendu;}/******************************************************** * 温度转换********************************************************/ void TempDISP( uint temperature ) //返(温度范围-55 --- +128){uchar disp[4],tmp,i;temperature=temperature*0.0625*10;if((flag)&&(temperature<100)){disp[0]=0x0b;disp[1]=fushu;disp[2]=(temperature/10);disp[3]=temperature%10;}else if((flag)&&(temperature>=100)){disp[0]=fushu;disp[1]=temperature/100;disp[2]=((temperature%100)/10);disp[3]=temperature%10;}else if(temperature<100){disp[0]=0x0b;disp[1]=0x0b;disp[2]=(temperature/10)&0x7f;disp[3]=temperature%10;}else if((temperature<1000)&&(temperature>=100)){disp[0]=0x0b;disp[1]=temperature/100;disp[2]=((temperature%100)/10);disp[3]=temperature%10;}else{disp[0]=temperature/1000;disp[1]=(temperature%1000)/100;disp[2]=((temperature%100)/10);disp[3]=temperature%10;}for(i=0;i<4;i++){P2=dispbit[i];tmp=disp[i] ;if(i==2)P0=dispTAB[tmp]&0x7f;elseP0=dispTAB[tmp];Delayus(200) ;P0=0xff;}}void main(){uchar a[2],j=100;//spk=0;while(1){Ds18b20_Init(); //DS18B20初始化,存在返0,否则返1Ds18b20_WriteByte(0xcc);Ds18b20_WriteByte(0x44);while(--j)TempDISP(TempCal(a));Ds18b20_ReadBE(a);TempDISP(TempCal(a));}}HS1101湿度采集程序#include "reg51.h"#define uchar unsigned char #define uint unsigned int uchar tem0,tem1;uchar temp0,temp1;uint f=0;void timer0() interrupt 1 {EA=0;TR0=0;TR1=0;TL0=0XFF;TH0=0X4B;tem0=TL1;tem1=TH1;TL1=0X00;TH1=0X00;f=1;TR0=1;TR1=1;EA=1;}void timer1()interrupt 3 {EA=0;TR0=0;TR1=0;TL0=0X00;TH0=OX4C;TL1=0X00;TH1=0X00;TR0=1;TR1=1;EA=1;}void Init_timer(){TMOD=0X51;TL0=0X00;TH0=OX4C;TL1=0X00;TH1=0X00;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;}void tran(){f=tem1;f=(f<<8)|tem0;f=f*20;if((5623<=f)&&(f<=6852)) {if((6734<f)&&(f<=6852)){temp0=0;temp1=(6852-f)*10/118; }if((6618<f)&&(f<=6734)){temp0=1;temp1=(6734-f)*10/116; }if((6503<f)&&(f<=6618)){temp0=2;temp1=(6618-f)*10/115; }if((6388<f)&&(f<=6503)){temp0=3;temp1=(6503-f)*10/115; }if((6271<f)&&(f<=6388)){temp0=4;temp1=(6388-f)*10/117; }if((6152<f)&&(f<=6271)){temp0=5;temp1=(6271-f)*10/119; }if((6029<f)&&(f<=6152)){temp0=6;temp1=(6152-f)*10/123; }if((5901<f)&&(f<=6029)){temp0=7;temp1=(6029-f)*10/128; }if((5766<f)&&(f<=5901)){temp0=8;temp1=(5901-f)*10/135; }if((5623<f)&&(f<=5766)){temp0=9;temp1=(5766-f)*10/143; }}else{temp0=0;temp1=0;}}void main(){uchar i,k;uchar count;Init_timer();count=0;while(1){for(i=0;i<200;i++)for(k=0;k<200;k++)tran();temp0 &=0x0f;temp1 &=0x0f;temp0 =temp0<<4;count=temp0|temp1; disp(count);}}。

湿度传感器HS1101c语言的程序

湿度传感器HS1101c语言的程序

湿度传感器HS1101c语言的程序//********应用频率计的思想来计算湿度,利用定时器计算频率脉冲F,**********////********再根据频率计算湿度。

HS1101相当于一个电容变量,湿度变大电容也变大**********////********HS1101电容模拟信号经过NE555震荡后转变为频率信号*********************//#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit SCLK=P2^6; /***时钟信号即EN使能信号***/sbit CS=P2^4; /***片选信号即RS***/sbit SID=P2^5; /***数据信号即RW***/sbit PSB=P2^7; /***串、并行选择信号***/sbit out=P3^5; //湿度的输出端接单片机的定时器1口P3^5(因为该程序用定时器1来计数脉冲,用定时器0来定时1秒)//如果用定时器0来计数脉冲,则接P3^4口 uchar flag; //定时器0定时1秒到uint maichong; //定义频率脉冲,一定要定义为uint型,uchar型最大值只为255,而uint最大值为63335uint RH; //定义相对湿度uint C;uchar led[4]=""; //频率数值,led缓存uchar dis[3]=""; //湿度数值,led缓存uchar volatile count0=0; //定时器0中断次数 volatile定义的变量它的值在编译时是会改变的,跟const相反,而const定义的变量一直不会变的uint volatile count1=0; //定时器1中断次数void delay(uint xms){uchar x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}/***************************************/ /* 以串行协议发送数据 */ /***************************************/void send_bit(uchar byte){uchar x;for(x=0;x<8;x++) //八位数据,一位一位发送//{if((byte<<x)&0x80) //如果最高位为1,则发送1//{SID=1;}else{SID=0; //如果最高位为0,则发送0//}SCLK=0;SCLK=1; //每发送一位,SCLK跳变一次,上升沿有效//}delay(5);}/***************************************/ /* 写串口命令函数 */ /***************************************/void write_com(uchar com){CS=1; //每次传数据前把CS端拉高//send_bit(0xf8); //串行发送命令前必发0xf8识别命令//send_bit(com&0xf0); //0xf0为1111 0000,送高四位send_bit((com<<4)&0xf0); //0xf0为1111 0000,送低四位delay(5);CS=0;}/***************************************/ /* 写串口数据函数 */ /***************************************/void write_date(uchar date){CS=1; //每次传数据前把CS端拉高//send_bit(0xfa); //串行发送数据前必发0xfa识别数据//send_bit(date&0xf0); //0xf0为1111 0000,送高四位//send_bit((date<<4)&0xf0); //0xf0为1111 0000,送低四位//delay(10);CS=0;}/***************************************/ /* 液晶显示初始化 */ /***************************************/ void lcd_init(){PSB=0; //选择串口方式delay(5);write_com(0x30); //基本指令操作delay(5);write_com(0x0c); //开显示,关光标delay(5);write_com(0x02); //地址归位delay(5);write_com(0x01); //清除液晶显示内容delay(5);}//显示字符串void write_word(uchar add,uchar *s){write_com(add);while(*s!='\0'){write_date(*s);s++;delay(5);}}//基本显示void see_init(){write_word(0x80,"humidity HS1101");write_word(0x90," f: HZ ");write_word(0x88,"相对湿度: ");write_word(0x98,"RH: % "); }//定时器初始化void chushihua(){TMOD=0x51;//0101 0001设置定时器1为计数模式,为工作方式1和定时器0为定时模式工作方式1;(M1M0为01,GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1控制))TH1=0;TL1=0;TH0=(65536-18349)/256;TL0=(65536-18349)%256;EA=1; //开总中断ET0=1; //开启定时器0中断ET1=1; //开启定时器1中断TR0=1; //启动定时器0 定时器0的优先级比定时器1的优先级高TR1=1; //启动定时器1}//定时器1的中断函数void time1(void) interrupt 3 //定时器1用作计时{count1++;}//定时器0的中断函数void time0(void) interrupt 1 {TR1=1; //已经中断0马上打开定时器1(count0=51),或者在下面dispose()子函数里打开(但是count0==50,这样误差就准确些)TH0=(65536-18349)/256;TL0=(65536-18349)%256;count0++;if(count0==51) //count0=50时到达1秒(因为内部定时器会有误差,所以这里用了count0=51延长了一点时间,就减少了计算频率时候的误差(与示波器对比)) {count0 = 0;TR1=0; //关定时器1flag = 1; // 定时器0定时1秒到标志}}void dispose(){maichong=TL1+TH1*256+count1*65536; //1秒内的脉冲个数C = (uint)(1000000000/(819.7*maichong)); //maichong相当于频率f,f=1/(0.7(R1+2R2)C)(NE555振荡器的公式);//在我们做的板上我们采用了560k的R2,51K的R1;带进去算就得到了程序中的式子.乘上1000000000是转化成pf单位RH = (uint)(C-164)/0.39; //相对湿度RH的计算公式,本实验室根据HS1101的特性曲线的得出的公式,它的特性曲线类似于一条直线,有很好的线性输出count1=0; // 清零TH1=0; //计数器清零TL1=0; //清零//TR1=1;led[3]=maichong/1000+0x30;led[2]=maichong%1000/100+0x30;led[1]=maichong%100/10+0x30;led[0]=maichong%10+0x30;dis[1]=RH/10+0x30;dis[0]=RH%10+0x30;write_com(0x92); //脉冲频率显示write_date(led[3]);write_date(led[2]);write_date(led[1]);write_date(led[0]);write_com(0x9b); //相对湿度显示write_date(dis[1]);write_date(dis[0]);}void main(){chushihua(); //定时器初始化lcd_init(); //液晶初始化see_init(); //显示初始化while(1){if(flag){flag=0;dispose();}}}。

线性频率输出式相对湿度测量电路(湿度传感器HS11001101)

线性频率输出式相对湿度测量电路(湿度传感器HS11001101)

线性频率输出式相对湿度测量电路(湿度传感器HS1100/1101)
发布时间:2008-12-23 本电路图所用到的元器件:
T TLC555 H HS1100 HHS1101
线性频率输出式相对湿度测量电路如图所示,电源电压范围是UCC=+3.5~+12V。

利用一片CMOS定时器TLC555,配上HS1100/1101和电阻R2、R4构成单稳态电路,将相对湿度转换成频率信号。

输出频率范围是7351~6033Hz,所对应的相对湿度为0~100%。

当RH=55%时,f=6660Hz。

输出频率信号可送至数字频率计或单片机系统,测量并显示出相对湿度值。

R3为输出端的限流电阻,起保护作用。

D=52%。

当C=C0=181.5pF时,求出f=6668Hz,这与6660Hz(典型值)非常接近。

当RH=55%、TA=+25℃时,输出方波频率与相对湿度的数据对照见下表。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
send_bit(0xfa); //串行发送数据前必发0xfa识别数据//
send_bit(date&0xf0);//0xf0为1111 0000,送高四位//
send_bit((date<<4)&0xf0);//0xf0为1111 0000,送低四位//
delay(10);
CS=0;
}
/***************************************/
TL0=(65536-18349)%256;
EA=1;//开总中断
ET0=1; //开启定时器0中断
ET1=1;//开启定时器1中断
TR0=1; //启动定时器0定时器0的优先级比定时器1的优先级高
TR1=1;//启动定时器1
}
//定时器1的中断函数
void time1(void) interrupt 3 //定时器1用作计时
uint volatile count1=0;//定时器1中断次数
void delay(uint xms)
{
uchar x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************/
/*以串行协议发送数据*/
/***************************************/
void send_bit(uchar byte)
{
uchar x;
for(x=0;x<8;x++)//八位数据,一位一位发送//
{
if((byte<<x)&0x80) //如果最高位为1,则发送1//
{
SID=1;
}
TL0=(65536-18349)%256;
count0++;
if(count0==51)//count0=50时到达1秒(因为内部定时器会有误差,所以这里用了count0=51延长了一点时间,就减少了计算频率时候的误差(与示波器对比))
{
count0 = 0;
TR1=0; //关定时器1
flag = 1;//定时器0定时1秒到标志
else
{
SID=0;//如果最高位为0,则发送0//
}
SCLK=0;
SCLK=1;//每发送一位,SCLK跳变一次,上升沿有效//
}
delay(5);
}
/***************************************/
/*写串口命令函数/
/***************************************/
{
count1++;
}
//定时器0的中断函数
void time0(void) interrupt 1
{
TR1=1; //已经中断0马上打开定时器1(count0=51),或者在下面dispose()子函数里打开(但是count0==50,这样误差就准确些)
TH0=(65536-18349)/256;
uint maichong;//定义频率脉冲,一定要定义为uint型,uchar型最大值只为255,而uint最大值为63335
uint RH;//定义相对湿度
uint C;
uchar led[4]=""; //频率数值,led缓存
uchar dis[3]=""; //湿度数值,led缓存
uchar volatile count0=0; //定时器0中断次数volatile定义的变量它的值在编译时是会改变的,跟const相反,而const定义的变量一直不会变的
delay(5);
write_com(0x02); //地址归位
delay(5);
write_com(0x01); //清除液晶显示内容
delay(5);
}
//显示字符串
void write_word(uchar add,uchar *s)
{
write_com(add);
while(*s!='\0')
TH1=0;//计数器清零
TL1=0;//清零
//TR1=1;
led[3]=maichong/1000+0x30;
led[2]=maichong%1000/100+0x30;
led[1]=maichong%100/10+0x30;
led[0]=maichong%10+0x30;
dis[1]=RH/10+0x30;
}
}
void dispose()
{
maichong=TL1+TH1*256+count1*65536;//1秒内的脉冲个数
C = (uint)(1000000000/(819.7*maichong));//maichong相当于频率f,f=1/(0.7(R1+2R2)C)(NE555振荡器的公式);
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCLK=P2^6; /***时钟信号即EN使能信号***/
sbit CS=P2^4; /***片选信号即RS***/
{
write_date(*s);
s++;
delay(5);
}
}
//基本显示
void see_init()
{
write_word(0x80,"humidity HS1101");
write_word(0x90," f: HZ ");
write_word(0x88,"相对湿度:");
write_word(0x98,"RH:% ");
dis[0]=RH%10+0x30;
write_com(0x92);//脉冲频率显示
write_date(led[3]);
write_date(led[2]);
write_date(led[1]);
write_date(led[0]);
write_com(0x9b);//相对湿度显示
write_date(dis[1]);
/*液晶显示初始化*/
/***************************************/
void lcd_init()
{
PSB=0;//选择串口方式
delay(5);
write_com(0x30);//基本指令操作
delay(5);
write_com(0x0c); //开显示,关光标
}
//定时器初始化
void chushihua()
{
TMOD=0x51;//0101 0001设置定时器1为计数模式,为工作方式1和定时器0为定时模式工作方式1;(M1M0为01,GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1控制))
TH1=0;
TL1=0;
TH0=(65536-18349)/256;
void write_com(uchar com)
{
CS=1; //每次传数据前把CS端拉高//
send_bit(0xf8);//串行发送命令前必发0xf8识别命令//
send_bit(com&0xf0);//0xf0为1111 0000,送高四位
send_bit((com<<4)&0xf0);//0xf0为1111 0000,送低四位
//********应用频率计的思想来计算湿度,利用定时器计算频率脉冲F,**********//
//********再根据频率计算湿度。HS1101相当于一个电容变量,湿度变大电容也变大**********//
//********HS1101电容模拟信号经过NE555震荡后转变为频率信号*********************//
delay(5);
CS=0;
}
/***************************************/
/*写串口数据函数*/
/***************************************/
void write_date(uchar date)
{
CS=1;//每次传数据前把CS端拉高//
//在我们做的板上我们采用了560k的R2,51K的R1;带进去算就得到了程序中的式子.乘上1000000000是转化成pf单位
RH = (uint)(C-164)/0.39;//相对湿度RH的计算公式,本实验室根据HS1101的特性曲线的得出的公式,它的特性曲线类似于一条直线,有很好的线性输出
count1=0;//清零
sbit SID=P2^5; /***数据信号即RW***/
sbit PSB=P2^7; /***串、并行选择信号***/
sbit out=P3^5;//湿度的输出端接单片机的定时器1口P3^5(因为该程序用定时器1来计数脉冲,用定时器0来定时1秒)
//如果用定时器0来计数脉冲,则接P3^4口
uchar flag; //定时器0定时1秒到
write_date(dis[0]);
}
void main()
{
chushihua();//定时器初始化
lcd_init();//液晶初始化
相关文档
最新文档