编号:
传感器
实训(
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
)说明书
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目: HS1101湿度检测计
院 (系): 信息与通信学院
专 业: 电子信息工程
学生姓名: 邱俊凯
学 号: 1001130126
指导教师: 王守华
2012年 7月2日
摘 要
随着科技的发达,以及人民生活水平的提高,人民室内生活环境不断改善,出现了空调、智能温度器、室内净化器等一系列改善人民生活条件的高科技产品。然而这并不能满足人民越来越高的生活需求,有些人提出了湿度的要求,本设计就在此基础上,设计一种基于89C51单片机控制的智能湿度控制系统。
此系统采用了精密的检测电路(包刮精密对称方波发生器、对数放大及半波整流、温度补偿及温度自动校正及滤波电路等几部分电路组成),能够自动、准确检测环境空气的相对湿度,并将检测数据通过A/D转换后,送到处理器(AT89C51)中,然后通过软件的编程,将当前环境的相对湿度值转换为十进制数字后,再通过数码管来显示;而且,通过软件编程,再加上相应的控制电路(光电耦合及继电器等部分电路组成),设计出可以自动的调节当前环境的相对湿度:当室内空气湿度过高时,控制系统自动启动抽风机,减少室内空气中的水蒸气,以达到降低空气湿度的目的;当室内空气湿度过低时,控制系统自动启动蒸汽机,增加空气的水蒸气,以达到增加湿度的目的,使空气湿度保持在理想的状态;键盘设置及调整湿度的初始值,另外在设计个过程当中,考虑了处理器抗干扰,加入了单片机监视电路。
通过对基于单片机的相对湿度控制器设计,加深对传感器技术及检测技术的了解,巩固对单片机知识的掌握,并系统的复习本专业所学过的知识。
关键词:湿度检测,对数放大,湿度调节,温度补偿
目录
1. 设计要求 1
2.
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计及论证 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.2 HS1101的湿度测量计算 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湿度检测电路将检测到的数送到单片机,单片机对接收到的数据进行处理并送到1602显示,5V稳压电源给各个部分供电。
图2.1 系统组成框图
2.2 系统主要单元的选择与论证
2.2.1单片机控制模块的选择论证
方案一:采用XC9000系列的FPGA。该类器件具有并行处理能力,能快速的响应外部的各种数字信号,但在数据处理方面过于复杂,而且芯片价格较昂贵。
方案二:采用单片机作为控制核心,单片机数学运算功能较强。在程序相互调用方面,处理方便灵活,性能稳定,适合实际应用。且单片机技术发展较为成熟,价格便宜。
基于以上分析,采用单片机控制可更为简便灵活地实现系统功能,故拟采用方案二。
2.2.2湿度检测模块的选择与论证
方案一:选用DHT11作为湿度检测模块。DHT11是一款数字输出的复合传感器,包含一个电阻式感湿元件和NTC式温度检测元件,可测20~90%RH湿度,误差5%RH,0~50摄氏度,误差2摄氏度。
方案二:选用HS1101湿度传感器。HS1101是电容式湿度传感器,可测相对湿度范围在0%~100%RH,误差为-\+2%RH。方案选择,有上述数据可知,根据设计要求:湿度为0-100%;湿度测量误差为3%,从设计要求的精度来看,本方案更优。
综上所述,虽然方案一具有综合作用,但是方案二的测试范围和精度都由于方案一,故本模块采用方案二。
2.2.3显示模块的选择与论证
方案一:采用12864液晶模块显示测得的数据,可显示较多组的数据,字体较大,可清晰读数,但12864液晶模块价格昂贵,接线复杂,故不采用。
方案二:采用1602液晶模块显示所测数据,1602液晶接线简单方便,同时也能满足显示需要,价格远低于12864液晶。因此,本方案为首选方案。
综上所述,显示模块选择方案二。
2.3 系统组成
本系统由单片机主控电路、HS1101湿度检测模块、1602液晶显示模块4部分组成,其中单片机主控电路
3.
3. 理论分析及计算
3.1 HS1101的湿度测量方法分析
HS1101是电容式湿度传感器,由于电容不可直接测量,故选用555多谐震荡电路检测到频率,然后由单片机计算的电容值,再根据电容值算出相应的湿度值。
3.2 HS1101的湿度测量计算
电路如图4.2 ,由电路可知 图3.1电容值与相对湿度值的关系
t 充电 =C(R2 +R1 ) ln2
t 放电 =CR4 ln2
因而 , 输出的方波率
?? f= 1 /(t 充电 +t 放电 )= 1 /[C(R2+ 2 R1) ln2 )]
由图3.1可知相对湿度与电容的关系可看成直线段,所以有相对湿度
RH=2.7C+163
所以有
4. 系统电路设计
4.1单片机主控电路设计
单片机主控电路原理图如下所示:
图4.1 单片机主控电路原理图
单片机主控模块包括了振落电路、复位电路,同时接入了各个模块的接口,保证了整个系统的灵活性。
单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。
控制电路的核心器件是由美国Atmel公司生产的AT89S52单片机,属于MCS-51系列。AT89S52是一种低功耗、高性能的CMOS8位微控制器,具有8K在系统可编程Flash存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。
4.2 HS1101湿度检测模块电路设计
HS1101湿度检测模块电路原理图如下所示:
图4.2.1 HS1101湿度检测模块电路原理图
图4.2.2 HS1101湿度检测模块电路仿真图
图4.2.3 HS1101湿度检测模块电路仿真结果图
4.2.1 HS1101湿度检测传感器工作原理
HS1101湿度检测传感器,其工作电路由555多谐振荡器来实现,HS1101作为电容变量接在555芯片的2、5脚之间,引脚7用作电阻R2的短路,等量电容HS1101通过R1、R2充电到门限电压(约0.67V),通过R4放电到触发电平,然后R2通过7短路到地,传感器由不同的电阻R1、R2充放电,进行工作循环,形成方波。其周期计算如下:
T充电=C*(R1+R2)*In2;
T放电=C*R1*In2;
由此可知输出方波频率为f=1/(T充电+ T放电)=1/[C*(R2+2R1)*In2];
可见空气湿度通过555测量振荡电路,就转变为与之呈反比例的频率信号。
4.3 1602液晶显示模块电路设计
1602液晶显示模块电路原理图如下所示:
图4.3 1602液晶显示模块电路原理图
在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高、数字式接口 、体积小、重量轻 、功耗低 、 1602LCD 主要技术参数:
显示容量:16×2 个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能说明:1602LCD 采用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的 14脚(无背光)或 16脚(带背光)接口,
第 1 脚:VSS 为地电源。
第 2 脚:VDD接 5V正电源。
第 3 脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。
第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W为低电平时可以写入数据。
第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。
第 7~14脚:D0~D7为 8 位双向数据线。
第 15脚:背光源正极。
第 16脚:背光源负极。
5. 系统软件设计
5.1 软件设计流程图
主程序流程图 液晶显示程序流程
是 是
否 否
图5.1.1 主程序流程图 图5.1.2液晶显示程序流程
湿度检测流程图
否
是
5.2 软件设计分析
主程序进行扫描。单片机显示湿度,调用湿度显示程序,开启定时中断T0、T1,T0进行定时,T1对湿度电路给的频率计数,当计满1S时关闭T1,单片机对计的数进行运算,得出湿度值,送往液晶显示。
6. 6. 系统测试
6.1主要指标测试
本系统主要指标就在于所测得的湿度的数据是否达到了题目要求,本系统测量范围湿度为0-100%,湿度测量误差为2%,在17栋211测试湿度为41%。
6.2测试结果分析
通过测试,与标准仪器所测得的湿度相比较,可得系统的误差为信号传输过程中可能存在误码,及误判。
7. 结论
本温湿度计的制作基本上达到了题目要求的技术指标,湿度为0-100%,湿度测量误差为3%,实现了量程自动转换功能。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
参考文献
(1) 康华光等.电子技术基础[M]. 北京:高等教育出版社
(2) 彭介华.电子技术课程设计指导[M]. 北京:高等教育出版社
(3) 黄智伟.全国大学生电子设计竞赛制作实训[M].北京:北京航空航天大学出版社,2007
(4) 黄智伟.全国大学生电子设计竞赛系统设计[M].北京:北京航空航天大学出版社,2006
(5) 黄智伟.全国大学生电子设计竞赛技能训练[M].北京:北京航空航天大学出版社,2007
(6) 黄智伟.全国大学生电子设计竞赛电路设计[M].北京:北京航空航天大学出版社,2006
(7) 黄智伟.全国大学生电子设计竞赛 常用电路模块制作[M].北京:北京航空航天大学出版社,2010
(8) 黄智伟等.基于NI multisim的电子电路计算机仿真设计与分析[M].北京:电子工业出版社,2007
(9) 黄智伟.印制电路板(PCB)设计技术与实践[M].北京:电子工业出版社,2009
(10) 高吉祥等.电子技术基础实验与课程设计[M].北京:电子工业出版社,2002
(11) 吴运昌.模拟集成电路原理与应用[M].广州:华南理工大学出版社,2001年
(12) 谭博学等. 集成电路原理及应用[M].北京:电子工业出版社,2003
(13) 魏立军.CMOS 4000系列60种常用集成电路的应用[M].北京:人民邮电出版社,1993
(14) 杨宝清.实用电路手册[M].北京:机械工业出版社.2002
(15) 陈有卿.报警集成电路和报警器制作实例[M].人民邮电出版社1996
附录
附录一:系统的总原理图
图附1.1 系统总原理图
附录二:系统的PCB图及元件分布图
附录三:程序清单
#include < reg51.h >
#include < intrins.h >
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
sbit key1 = P2^3;
sbit key2 = P2^4;
uchar code cdis3[ ] = {" shidujishiyan "} ;
uchar code cdis4[ ] = {"shidu: %"} ;
uchar code cdis5[ ] = {"the system of "} ;
uchar code cdis6[ ] = {" hum "} ;
unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;
unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;
unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ;
bit int_flag; //定时器0 1S到标志位
unsigned char volatile int_count; //定时器0中断次数
unsigned char volatile T1count; //定时器1中断次数
unsigned long sum=0; //1S内脉冲总个数
unsigned long wet=0;
unsigned char le[6]; //LED显示缓存
#define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;
/*******************************************************************/
void delay1(int ms)
{
unsigned char y ;
while(ms--)
{
for(y = 0 ; y<250 ; y++)
{
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
}
}
}
/******************************************************************/
/*检查LCD忙状态 */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
/******************************************************************/
bit lcd_busy()
{
bit result ;
LCD_RS = 0 ;
LCD_RW = 1 ;
LCD_EN = 1 ;
delayNOP() ;
result = (bit)(P0&0x80) ;
LCD_EN = 0 ;
return(result) ;
}
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{
while(lcd_busy()) ;
LCD_RS = 0 ;
LCD_RW = 0 ;
LCD_EN = 0 ;
_nop_() ;
_nop_() ;
P0 = cmd ;
delayNOP() ;
LCD_EN = 1 ;
delayNOP() ;
LCD_EN = 0 ;
}
/*******************************************************************/
/*写显示数据到LCD */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
/*******************************************************************/
void lcd_wdat(uchar dat)
{
while(lcd_busy()) ;
LCD_RS = 1 ;
LCD_RW = 0 ;
LCD_EN = 0 ;
P0 = dat ;
delayNOP() ;
LCD_EN = 1 ;
delayNOP() ;
LCD_EN = 0 ;
}
/* LCD初始化设定 */
/*******************************************************************/
void lcd_init()
{
delay1(15) ;
lcd_wcmd(0x01) ; //清除LCD的显示内容
lcd_wcmd(0x38) ; //16*2显示,5*7点阵,8位数据
delay1(5) ;
lcd_wcmd(0x38) ;
delay1(5) ;
lcd_wcmd(0x38) ;
delay1(5) ;
lcd_wcmd(0x0c) ; //显示开,关光标
delay1(5) ;
lcd_wcmd(0x06) ; //移动光标
delay1(5) ;
lcd_wcmd(0x01) ; //清除LCD的显示内容
delay1(5) ;
}
/* 设定显示位置 */
/*******************************************************************/
void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80) ; //数据指针=80+地址变量
}
/*自定义字符写入CGRAM */
/*******************************************************************/
void writetab()
{
unsigned char i ;
lcd_wcmd(0x40) ; //写CGRAM
for (i = 0 ; i< 8 ; i++)
lcd_wdat(mytab[ i ]) ;
}
/*us级延时
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
*/
/****************************************************************
************************湿度测量*********************************
***************************************************************/
///////////////软件延时/////////////
void delays(unsigned int cnt) //us延时
{
while(--cnt);
}
//定时器0初始化
void inti_t0(void)
{
TMOD=((TMOD&0xF0)|0x01); //定时器0工作于方式1
// TH0=(65536-50000)/256; //定时50ms
// TL0=(65535-50000)%256;
TH0=0x3C;
TL0=0xB0;
}
// 定时器1初始化
void inti_t1(void)
{
TMOD=((TMOD&0x0F)|0x50); //定时器1用作计时方式1
TH1 =0x00;
TL1 =0x00;
}
//定时器0中断服务程序 定时1s
void time_t0(void) interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
int_count++;
if(int_count==20) //20*50000=1s
{
TR1=0;
int_flag=1; //定时满1s标志位
int_count=0;
}
}
//定时器1中断服务程序 计数
void time_t1(void) interrupt 3
{
T1count++;
}
void disp(void) //湿度显示函数
{
int_flag=0;
sum=TL1+TH1*256+T1count*65536; //计算1秒内的脉冲个数
//以下将数据格式化,转成LED可显示的BCD码
wet=100-(sum-4000)/50;//********** 湿度计算公式
le[0]=wet%10; //最低位
wet=wet/10;
le[1]=wet%10; //第二位
wet=wet/10;
le[2]=wet%10; //第三位
wet=wet/10;
int_count=0;
T1count=0;
lcd_pos(0x4a) ;
lcd_wdat(le[2]+48);
lcd_pos(0x4b) ;
lcd_wdat(le[1]+48);
lcd_pos(0x4c) ;
lcd_wdat(le[0]+48);
delays(100);
TH1=0x00;
TL1=0x00;
TR1=1;//T1重新开始计数
}
void shidu_Menu () //显示湿度的菜单
{
uchar m ;
lcd_pos(0x00) ; //设置显示位置为第一行的第1个字符
m = 0 ;
while(m<16)
{ //显示字符
lcd_wdat(cdis3[m]) ;
m++ ;
}
lcd_pos(0x40) ; //设置显示位置为第二行第1个字符
m = 0 ;
while(m<16)
{
lcd_wdat(cdis4[m]) ; //显示字符
m++ ;
}
writetab() ; //自定义字符写入CGRAM
delay1(5) ;
lcd_pos(0x4d) ;
lcd_wdat(0x00) ; //显示自定义字符
}
/*******************************************************************/
/* 主函数 */
/************************************/
void main()
{
EA=1; //开总中断
inti_t0(); //初始化定时器0定时50ms
inti_t1(); //初始化定时器1定时计数外部脉冲下降沿
ET0=1; //T0中断允许
ET1=1; //T1中断允许
TR0=1; //定时器0开始定时
TR1=1; //定时器1开始计数
lcd_init() ; //初始化LCD
//T0中断发生时重新计数50ms,若满20次(1s),则显示标志位置位,停止计数
//T1溢出就T1count加1,并且使初值为0
while(1)
{
shidu_Menu();
if(int_flag==1)
{
disp();
delay1(2500);
}
}
}
附录五:元器件清单
元件种类
元件型号
数量
单片机
AT89S51
1
湿度传感器
HS1101
1
定时器
NE555
1
电阻
1K、10K、51K、560K、1M
6
电容(电解,无极性)
10uF、30pF
3
发光二极管
1
电位器
10K
1
晶振
12MHz
1
按键开关
1
排阻
10K
4
板
1
插槽+插针
若干
《传感器综合设计》实训任务书
年级: 10级 面向专业: 电子信息工程 学时: 2周
项目名称:
HS1101湿度检测计
项目类型
硬件设计与制作
特殊要求
无
承担学生姓名
学号
专业
联系电话
邱俊凯
1001130126
电子信息工程
152********
项目设计要求:
技术参数:
(1)设计制作一个湿度计,湿度为0-100%;
(2)湿度测量误差为3%;
(3)具有量程自动转换功能;
参考资料:
[1] 戴佳,戴卫恒,刘博文 51单片机C语言应用程序设计实例精讲(第2版),北京:电子工业出版社,2008.12
[2](美)安格斯生编著,精英科技译 串行端口大全,北京:中国电力出版社,2001
[3] 龚运新,罗惠敏,彭建军 单片机接口C语言开发技术,北京:清华大学出版社,2009.2
[4] 陈龙三 8051单片机C语言控制与应用,北京:清华大学出版社,1999
[5] 徐爱钧,彭秀华 单片机高级语言C51 Windows环境编程, 北京:电子工业出版社,2001
[6] 张天凡 51单片机C语言开发详解, 北京:电子工业出版社,2008
完成形式:
1. 提交程序及电路板;
2. 独自完成作品。
3. 完成实训设计报告。
项目设计进度要求:
20012年6月24日:实训内容选题及参考资料的查找,到指导老师处定题;
2012年6月24~27日:自主进行实训;
2012年6月27日:进度检查
2012年7月5日:①上交作品并通过指导教师的验收;地点:2508和2516
②独立撰写字数在5000字以上的实训论文,统一按桂林电子科技大学课程设计论文格式编写,并上交论文及实训资料(包括论文的电子文稿及打印稿,任务书,Proteus电子设计文件等);
项目验收方式:
1、在实训期间进行作品验收,验收后交实训报告及实训资料的打印稿及电子文稿。
2、设计报告要符合桂林电子科技大学课程设计论文统一格式。
项目开始时间:
2012年6月24日
项目结束时间:
2012年7月6日
任务下达:
王守华、归发弟、胡机秀、童有为、李秀东