单片机湿度测量仪课程设计报告讲解.docx

上传人:b****8 文档编号:28126672 上传时间:2023-07-08 格式:DOCX 页数:29 大小:497.69KB
下载 相关 举报
单片机湿度测量仪课程设计报告讲解.docx_第1页
第1页 / 共29页
单片机湿度测量仪课程设计报告讲解.docx_第2页
第2页 / 共29页
单片机湿度测量仪课程设计报告讲解.docx_第3页
第3页 / 共29页
单片机湿度测量仪课程设计报告讲解.docx_第4页
第4页 / 共29页
单片机湿度测量仪课程设计报告讲解.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机湿度测量仪课程设计报告讲解.docx

《单片机湿度测量仪课程设计报告讲解.docx》由会员分享,可在线阅读,更多相关《单片机湿度测量仪课程设计报告讲解.docx(29页珍藏版)》请在冰豆网上搜索。

单片机湿度测量仪课程设计报告讲解.docx

单片机湿度测量仪课程设计报告讲解

机电信息工程学院

自动化系

 

单片机系统课程设计报告

 

题目:

湿度测量仪

专业:

自动化

班级:

自动化

学生姓名:

指导教师:

 

课程设计任务书

题目:

湿度测量仪

课程设计时间:

2012.11.12~2012.11.30

一、设计任务

给定湿度传感器和单片机最小系统,学习使用单片机最小系统,设计湿度检测电路和湿度上下限报警电路,完成相关的软件设计并进行湿度值显示。

二、设计内容及要求

⒈系统设计的方案;

⒉检测电路和过程通道的设计;

⒊系统软件设计与实现;

⒋需要的详细材料和工具清单;

设计的性能指标;

撰写设计报告;

资料归档。

三、设计重点

检测电路和过程通道设计;

系统软件设计、调试。

四、课程设计进度要求

12.11.12~12.11.14系统方案设计;

⒉12.11.15~12.11.16检测电路和过程通道设计;

12.11.19~12.11.21完成系统硬件设计与实现;

12.11.22~12.11.23完成系统软件编程;

12.11.26~12.11.29系统调试及撰写设计报告;

12.11.30验收答辩。

五、参阅书目

[1]祁伟,杨亭,单片机C51程序设计教程与实验[M]。

北京:

北京航空航天大学出版社,2006.1

[2]徐科军,传感器与检测技术[M]。

北京:

电子工业出版社,2010.11

[3]方彦军,孙健,智能仪器技术及其应用[M]。

北京:

化学工业出版社,2004.4

[4]徐爱钧,智能化测量控制仪表原理与设计[M]。

北京:

北京航空航天大学出版社,2004.9

 

 

1任务分析和性能指标

1.1任务分析

本题目是设计制作一个湿度测量仪,基本功能是能够检测出某一环境的湿度,并且能够显示湿度值,并设计湿度上下限实现报警功能。

湿度检测器主要由湿度传感器HM1500,AT89C52单片机和数码管显示电路以及蜂鸣器报警电路四部分组成,采用Keil软件编程。

使其达到了整个系统的相对湿度测量误差优于4%的预期指标。

1.2性能指标

设计时,考虑湿浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压且电压值稳定,外部干扰小等。

因此,可以直接把传感器输出电压值经过A/D转换器转换得到数据送入单片机进行处理。

此外,还需接人LED数码管显示,一个按键,报警电路等。

其总体框图如图1-1所示。

图1.1总体框图

湿度传感器是系统的核心器件,其运行精度直接影响产品质量。

整个系统的性能指标为:

1、相对湿度测量精度和范围:

;检测范围0-100%;湿度设限范围10%-95%;

2、电源:

DC5V

10%;

3、工作环境湿度

90%;

1.3显示部分

四位数码管实时显示温湿度。

2总体方案设计

2.1总体方案设计

图2.1为总体方案系统设计图

2.1设计过程

2.1.1认真领会设计要求,确定系统功能,包括显示信息、报警功能等;

2.1.2样品外观设计,确定系统显示信息,显示器种类(液晶、数码管)、显示器尺寸等;

2.1.3硬件初步设计,选定HM1500湿度传感器、选定四位数码管显示方式,湿度报警装置。

2.1.4系统原理图设计:

按照前几步规划,设计系统原理图。

此时应认真研究学习HM1500湿度传感器的使用方法正确连接。

设计报警及显示电路。

图2.2所示为总体方案设计框图。

 

四位数码管显示

ADC0809

AT89C51单

HM1500湿度传感器

某一环境湿度

上下限报警

图2.2总体设计方案图

该系统主要由AT89C52单片机系统,温湿度采样电路,数码管显示电路和报警电路三部分组成。

1).湿度模拟量的数据采集

2).程序的时序分析

方案:

采用传统的传感器将湿度转换成模拟的电压信号,然后通过AD转换为数字量。

HM1500湿度传感器是一种标准的模拟量湿度采集的传感器,其内部通过采集的电压信号放大为标准的输出电压,进入ADC0809芯片转换,通过模拟量转换为数字量以后,数字量输入单片机进入显示电路显示,期间可以按下按键定点显示此时刻湿度值,若此环境的湿度值低于或者超过设限范围并进入报警电路,蜂鸣器能响起。

2.2硬件方案

本设计的原理是一个基于单片机AT89C52与湿度传感器HM1500等技术相结合主体,利用模拟湿度传感器HM1500对某一环境的湿度进行检测,实现对此环境湿度的测控,并将它的输出由单片机的软件对其进行校正处理,所得到的结果最终送给四位数码管显示,切带有湿度上下限的报警。

设计原理图如下图2.2:

图2.2设计原理图

2.2.1HM1500湿度传感器

本系统直接测量的是某一个环境中的湿度,所用的传感器是HM1500湿度传感器,输出电压值,再通过ADC0809的模数转换芯片进行转换,转换的数字量进入单片机输出数码管显示。

实验采用的是集成湿度传感器。

传感器的敏感元件采用的属水分子亲和力型和高分子材料湿敏元件。

它的原理是采用具有感湿功能的高分子聚合物涂敷在带有导电电极的陶瓷衬底上,导电机理为水分子的存在影响高分子膜内部导电离子的迁移率,形成阻抗随相对湿度变化成对数变化转换成相应的线性电压信号输出以制成湿度传感器模块形式。

湿敏传感器实物、原理框图如图2.2.1所示。

当传感器的工作电源为+5V±5%时,湿度传感器的输出电压为0.9V至2.7V,湿度为30%至90%RH。

因为考虑到周围空气中的气体成分可能影响传感器测量的准确性,所以选择HM1500湿度传感器,其具有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。

如下图2.3是HM1500结构和外形,图2.4是HM1500原理图,图2.5是HM1500传感器实物图,图2.6是HM1500传感器的电压量和百分值的关系以及算法。

图2.3HM1500结构和外形图2.4HM1500原理图

图2.5湿敏传感器实物

图2.6HM1500传感器的电压量和百分值的关系以及算法

2.2.2A/D转换电路

(1)在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电信号必须转换成数字量后才能在单片机中用软件进行处理。

实现模拟量转换成数字量的器件称为A/D转换器(ADC)。

A/D转换器大致分有三类:

一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近型A/D转换器,精度、速度、价格适中;三是∑-△A/D转换器。

该设计中选用的是ADC0809属第二类,是8位A/D转换器。

0809具有8路模拟信号输入端口,地址线(23-25脚)可决定那一路模拟信号进行A/D转换。

22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。

6脚为测试控制,当输入一个2μs的高电平脉冲时,就开始A/D转换。

7引脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。

9脚为A/D转换数据输出允许端,当OE脚为高电平时,A/D转换数据输出。

10脚为0809的时钟输入端。

(2)ADC0809的引脚及功能

逐次比较型A/D转换器在精度、速度、和价格上都适中,是最常用的A/D转换器件。

芯片采用的是ADC0809,以下介绍ADC0809的引脚及功能。

芯片ADC0809引脚以及通道选择表如图2.7所示。

图2.7ADC0809的引脚以及通道选择表

ADC0809是一种逐次比较式8路模拟输入、8位数字量输出的A/D转换器。

由图可见,ADC0809共有28个引脚,采用双列直插式封装。

主要引脚功能如下:

①IN0-IN7是8路模拟信号输入端。

②D0-D7是8位数字量输入端。

③A、B、C与ALE控制8路模拟通道的切换,A、B、C分别与3根地址线或数据线相连,3位编码对应8个通道地址端口。

需要注意的是:

ADC0809虽然有8路模拟通道可以同时输入8路模拟信号,但每个瞬间只能换1路,共用一个A/D转换器进行转换,各路之间的切换由软件改变C、A、B引脚上的代码来实现。

地址锁存与译码电路完成对A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,图2-1-4为通道选择表。

④OE、START、CLK为控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。

⑤VR(+)和VR(-)为参考电压输入端。

(3)ADC0809的结构及转换原理

ADC0809采用逐次比较的方法完成A/D转换的,由单一的+5V电源供电。

片内有锁存功能的8路选1的模拟开关,由C、B、A引脚的功能来决定所选的通道。

0809完成一次转换需100μs左右,输出具有TTL三态锁存缓冲器,可直接连接到MCS-51的数据总线上。

通过适当的外接电路,0809可对0-5V的模拟信号进行转换。

图2.8为ADC0809的结构框图。

图2.8ADC0809的结构框图

2.2.389C51单片机最小系统

(1)89C51芯片介绍

掌握MCS-51单片机,应首先了解MCS-51的引脚,熟悉并牢记各引脚的功能,MCS-51系列中各种型号芯片的引脚是互相兼容的。

制作工艺为HMOS的MCS-51的单片机都采用40只引脚的双列直插封装方式,如图2.9AT89C51芯片管脚图所示。

图2.9AT89C51芯片管脚图

40只引脚按其功能来分,可分为如下3类:

⑴电源及时钟引脚:

Vcc、Vss、XTAL1、XTAL2。

电源引脚接入单片机的工作电源。

Vcc接+5V电源,Vss接地。

时钟引脚XTAL1、XTAL2外接晶体与片内的反相放大器构成了1个晶体振荡器,它为单片机提供了时钟控制信号。

2个时钟引脚也可外接独立的晶体振荡器。

XTAL1接外部的一个引脚。

该引脚内部是一个反相放大器的输入端。

这个反相放大器构成了片内振荡器。

如果采用外接晶体振荡器时,此引脚接地。

XTAL2接外部晶体的另一端,在该引脚内部接至内部反相放大器的输出端。

若采用外部时钟振荡器时,该引脚接受时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。

⑵控制引脚:

、ALE、

、RESET(RST)。

此类引脚提供控制信号,有的还具有复用功能。

①RST/VPD引脚:

RESET(RST)是复位信号输入端,高电平有效。

当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个振荡周期)的高电平时,就可以完成复位操作。

在单片机工作时,此引脚应为≤0.5V低电平。

VPD为本引脚的第二功能,即备用电源的输入。

当主电源发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAM的信息不丢失,从而使单片机在复位后能正常进行。

②ALE/

引脚:

ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后ALE引脚不断输出正脉冲信号。

当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存的锁存控制信号。

即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率的1/6。

为该引脚的第二功能。

在对片内EPROM型单片机编程写入时,此引脚作为编程脉冲输入端。

引脚:

程序存储器允许输出控制端。

在单片机访问外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。

此引脚接外部程序存储器的OE(输出允许端)。

/VPP引脚:

功能为片内程序存储器选择控制端。

引脚为高电平时,单片机访问片内程序存储器,但在PC值超过0FFFH时,即超出片内程序存储器的4KB地址范围时将自动转向执行外部程序存储器内的程序。

引脚为低时,单片机只访问外部程序存储器,不论是否有内部程序存储器。

⑶I/O口引脚:

P0、P1、P2、P3,为四个8位I/O口的外部引脚。

P0口、P1口、P2口、P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻。

当这3个准双向I/O口作输入口使用时,要向该口先写1,另外准双向口I/O口无高阻的“浮空”状态。

由于单片机具有体积小、质量轻、价格便宜、耗电少等突出特点,所以本系统采用89C51单片机。

89C51内部有4KB的EPROM,128字节的RAM,所以一般都要根据所需存储容量的大小来扩展ROM和RAM。

本电路

接高电平,没有扩展片外ROM和RAM。

5、LED显示电路

LED显示有静态显示和动态显示两种显示方式。

本设计使用并行输入硬件译码静态显示电路,静态显示电路中,各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。

电路中采用了锁存译码器MC14495将P1口低4位输出的BCD码译成七段字型码,利用P1口高四位做为各锁存译码器的所存信号,实现稳定显示。

LED使用的是共阴极7段数码管。

数码管显示电路如图2.10

图2.10数码管显示电路如图

7、报警电路

报警电路图2.11:

图2.11报警电路

2.3软件方案

2.3.1主程序框图

主程序流程图如下2.12:

 

 

图2.12主程序框图

2.3.2AD转换部分

ADC0809转换流程图2.13。

图2.13AD转换部分程序流程图

2.3.2数据显示程序框图

A/D转换子程序流程图如下图3-2所示。

ADC0809初始化后,把0通道输入的0-5V的模拟信号转换为对应的数字量OOH-FFH,然后将对应数值存储到内存单元。

程序框图如图2.14。

 

 

图2.14数据采集显示程序框图

3硬件设计与实现

在本次设计中,硬件电路与器件搭接也是很重要的一部分,我们先是通过AD6软件画出原理图,在根据原理图,利用proteus仿真软件实现了硬件模拟成功,接着开始在万用板上面搭接外围电路。

3.1检测电路

整体电路仿真如图3.1。

图3.1整体电路仿真图

3.2控制电路

湿度测量仪的控制电路是AT89C51,其最小系统的原理图如下,图3.2.

图3.2最小系统原理图

4软件设计与实现

通过51单片机实现功能,软件部分是不可缺少的,编写程序的途径有很多种,经过小组成员讨论,我们决定使用Kill软件中的c语言编程。

通过程序流程图编写程序,经过调试,程序无误,并且写入单片机中能实现读取传感器的电压信号转换以及显示的功能。

4.1主程序

voidmain()

{

uinti;

uintgetdata;

floatnum,num1;

TMOD=0x02;

TH0=0Xbd;

TL0=0Xbd;

IE=0X82;

TR0=1;

P3=0Xff;

while

(1)

{

if(flag==1)

{

i++;

if(i==150)

{

i=0;

ST=0;

OE=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

getdata=P2;

OE=0;

}

}

num=(float)getdata*4.85/255;

num1=(float)38.92*num-42.07;

if(num1>100)

{

num1=99.99;

}

display(num1*100);

}

}

4.2子程序

4.2.1延时子程序

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

4.2.2数码管显示子程序

voiddisplay(uintnum)

{

P1=0xfe;

P0=shuma[num/1000];

delay(3);

P0=0XFF;

P1=0xfd;

P0=shuma[num%1000/100]+128;

delay(3);

P0=0XFF;

P1=0xfb;

P0=shuma[num%100/10];

delay(3);

P0=0XFF;

P1=0xf7;

P0=shuma[num%10];

delay(3);

P0=0XFF;

P1=0XFF;

 

5调试及性能分析

5.1系统功能调试分析

在软件方面,本次课程设计的湿度检测器软件调试主要利用Proteus仿真,AD6电路板设计软件和Keil编程软件。

首先在Keil编程环境下调试程序,编译无误后进行Proteus仿真,仿真通过之后,采用AD6进行电路板设计。

经最后的调试,软件部分成功完成,并且把一开始的显示做到了无阴影延时显示的效果。

继软件调试成功之后,本次课程设计的湿度检测器硬件电路主要是在AT89C52单片机系统开发板上进行设计,外加HM1500湿度传感器和数码管显示器。

首先用万用板和杜邦线进行简单搭建电路,调试成功之后进行电路板设计。

在系统硬件和软件设计的基础上,通过对软硬件的结合调试,湿度检测器的设计方案得到了肯定,通过实物连接检测得知,能够检测到环境中的湿度,并且能够实时显示,且具有温湿度上下限报警功能。

软硬件结合调试成功图5.1。

图5.1软硬件结合调试成功

 

5.2性能分析

HM1500湿度传感器是一种灵敏度高,集成性强的传感器,经过调试很多次后发现,其测量需要用一层干燥的纸包住其感应端,这样使其在挪移过程中不会造成湿度值大幅度的变化,并且在很短的时间内稳定转换环境的湿度值。

设计的湿度检测测试仪应具有如下特点:

(1)数据采集系统以单片机为控制核心,外围电路键盘响应电路,无需要其他计算机,用户就可以与之进行交互工作,完成数据的采集、存储、计算、分析等过程。

(2)系统具有低功耗、小型化、高性价比等特点。

(3)从便携式的角度出发,系统成功使用了数码管显示器以及小键盘。

由单片机系统控制键盘和LED显示来实现人机交互操作,界面友好。

(4)软件设计简单易懂。

 

总结

一转眼,为期三周的单片机课程设计将至结束。

在这个过程中我们组的收获很大,从开始的选题到拟方案、焊接、调试到现在的总结,我们每个组员都一起努力,向着老师和自己商议的目标努力不断改进并完善课设,最终完成了单片机课程设计制作的湿度测量仪。

我们从中领悟到从理论到实践的一种艰辛,心想着不一定能做出来,因为有些东西必须我们亲手去想去做我们才能感受到,比如:

HM1500传感器并不是我们想象的拿来就上手,它的敏感度很高,需要测试得时候在端头上包住一层纸;焊接电路的实践环节中,如果某两根线不小心接了一点在一起就会导致整个电路故障,必须仔细检查;还有在调试程序的时候,没有一次性能调通的程序,是我们经过自己的思考,一次次的做改变,一步步的调出来的。

在课程设计中也有不足的地方,在测试环境的处理这一块还不够完善,在这方面有待于改进。

 

参考文献

[1]《电子工程师必备-元器件应用宝典》。

北京:

人民邮电出版社。

[2]何希才,《新型电子电路应用实例》。

北京:

科学出版社。

[3]郭天祥,51单片机C语言教程[M]。

北京:

电子工业出版社,2009.1。

[4]康华光,《电子技术基础-模拟部分》。

高等教育出版社。

[5]韩桂英,《数字电子技术基础实用教程》。

北京:

清华大学出版社。

[6]道客巴巴,

[7]XX文库,

[8]齐志才,赵继印.MCS-51系列单片机原理及接口技术.北京:

中国建筑工业出版2005。

[9]谭浩强,C程序设计[M].清华大学出版社,1998,1。

[10]《微机原理及应用》黄冰等编著重庆:

重庆大学出版社,2003

[11]《基于Proteus的电路及单片机系统设计与仿真》周润景等编著北京:

京航空航天大学出版社,2006

 

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeshuma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbitST=P3^7;

sbitOE=P3^6;

sbitEOC=P3^5;

sbitCLK=P3^4;

ucharnum,flag;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

//数码管

voiddisplay(uintnum)

{

P1=0xfe;

P0=shuma[num/1000];

delay(3);

P0=0XFF;

P1=0xfd;

P0=shuma[num%1000/100]+128;

delay(3);

P0=0XFF;

P1=0xfb;

P0=shuma[num%100/10];

delay(3);

P0=0XFF;

P1=0xf7;

P0=shuma[num%10];

delay(3);

P0=0XFF;

P1=0XFF;

}

voidmain()

{uinti;

uintgetdata;

floatnum,num1;

TMOD=0x02;

TH0=0Xbd;

TL0=0Xbd;

IE=0X82;

TR0=1;

P3=0Xff;

while

(1)

{

if(flag==1)

{

i++;

if(i==150)

{

i=0;

ST=0;

OE=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

getdata=P2;

OE=0;

}

}

num=(float)getdata*4.85/255;

num1=(float)38.92*num-42.07;

if(num1>100)

{

num1=99.99;

}

display(num1*100);

}

}

voidTimer0_INT()interrupt1

{

num++;

if(num=200)

{

num=0;

flag=1;

}

CLK=!

CLK;

}

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

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1