温湿度传感器课程设计.docx

上传人:b****2 文档编号:16883443 上传时间:2023-07-19 格式:DOCX 页数:67 大小:404.22KB
下载 相关 举报
温湿度传感器课程设计.docx_第1页
第1页 / 共67页
温湿度传感器课程设计.docx_第2页
第2页 / 共67页
温湿度传感器课程设计.docx_第3页
第3页 / 共67页
温湿度传感器课程设计.docx_第4页
第4页 / 共67页
温湿度传感器课程设计.docx_第5页
第5页 / 共67页
温湿度传感器课程设计.docx_第6页
第6页 / 共67页
温湿度传感器课程设计.docx_第7页
第7页 / 共67页
温湿度传感器课程设计.docx_第8页
第8页 / 共67页
温湿度传感器课程设计.docx_第9页
第9页 / 共67页
温湿度传感器课程设计.docx_第10页
第10页 / 共67页
温湿度传感器课程设计.docx_第11页
第11页 / 共67页
温湿度传感器课程设计.docx_第12页
第12页 / 共67页
温湿度传感器课程设计.docx_第13页
第13页 / 共67页
温湿度传感器课程设计.docx_第14页
第14页 / 共67页
温湿度传感器课程设计.docx_第15页
第15页 / 共67页
温湿度传感器课程设计.docx_第16页
第16页 / 共67页
温湿度传感器课程设计.docx_第17页
第17页 / 共67页
温湿度传感器课程设计.docx_第18页
第18页 / 共67页
温湿度传感器课程设计.docx_第19页
第19页 / 共67页
温湿度传感器课程设计.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

温湿度传感器课程设计.docx

《温湿度传感器课程设计.docx》由会员分享,可在线阅读,更多相关《温湿度传感器课程设计.docx(67页珍藏版)》请在冰点文库上搜索。

温湿度传感器课程设计.docx

温湿度传感器课程设计

实用标准文案

等级:

 

湖南工程学院

 

课程设计

 

课程名称单片机原理与应用

 

课题名称环境温、湿度检测系统设计

 

专业自动化

 

班级1191

 

学号20

 

姓名

 

指导教师李晓秀王迎旭

 

2021年12月12日

 

精彩文档

实用标准文案

 

湖南工程学院

 

课程设计任务书

 

课程名称单片机原理与应用

 

课题环境温、湿度检测系统设计

 

专业班级

自动化

学生姓名

2021

指导老师

李晓秀

 

任务书下达日期

2021

年12

月1

任务完成日期

2021

年12

月13

精彩文档

实用标准文案

 

主要设计条件

设计内容与设计要求

 

设计内容:

 

本课题要求以单片机为核心,采用温湿度传感器DHT11设

计一个对环境温度湿度的检测系统,要求用按键控制系统选择分

别对温度或湿度的测试、复位、去除功能,用四位LED数码管显

示实时温度和温度。

 

设计要求:

1〕确定系统设计方案;

 

2〕进行系统的硬件设计;

 

3〕完成必要元器件选择;

 

4〕系统软件设计及调试;

 

5〕系统联调及操作说明

6〕按标准要求写设计说明书

 

精彩文档

实用标准文案

 

1、PC机及单片机调试软件;

2、开发板1块;

3、系统设计、调试所需的元器件

 

说明书格式

 

1.课程设计任务书

2.目录

3.总体方案确定

4.各单元硬件电路设计及计算方法

5.软件设计与说明〔包括流程图〕

6.调试结果与必要的调试说明

7.总结

8、参考文献

9、附录

附录A系统原理图

附录B程序清单

10、课程设计成绩评分表。

 

进度安排

 

精彩文档

实用标准文案

 

设计时间分为二周

 

第一周

星期一、上午:

布置课题任务,课题介绍及讲课。

下午:

借阅有关资料,总体方案讨论。

星期二、确定总体方案,学习与设计相关内容。

星期三、各局部方案设计,各局部设计。

星期四、设计及调试。

星期五、设计及调试。

星期六、设计及调试。

第二周

星期一:

设计及调试。

星期二:

设计及调试。

星期三:

调试、写说明书。

星期四--星期五上午:

写说明书、完成电子版并打印成稿。

星期五下午:

辩论。

 

参考文献

[1]王迎旭等.单片机原理及及应用[M]机械工业出版社.2021年

[2]康华光等.模拟电子技术第五版[M]高等教育出版社2021年

[3]杜树春等.单片机C语言[M]北京航空航天大学出版社

 

 

精彩文档

实用标准文案

第1章概述6

1.1设计任务与要求7

1.2设计方案7

第2章硬件设计7

2.1时钟电路和复位电路8

2.2温湿度测量电路设计8

2.3按键电路10

第3章软件设计11

3.1主函数设计11

3.2按键查询12

3.3实时监控与测试流程图13

第4章硬件调试与结果分析15

4.1调试过程15

4.2硬件调试16

第5章总结18

 

参考文献19

 

附录一:

系统仿真图20

 

附录二:

源程序21

 

电气与信息工程系课程设计评分表29

 

第1章概述

精彩文档

实用标准文案

1.1设计任务与要求

 

本课题以单片机为核心,用智能集成温温度传感器DHT11主要实现检

 

测温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换

 

成数字信号,再运用单片机进行数据的分析和处理,在数码管上显示当前

 

温湿度。

要求用按键控制系统选择分别对温度或湿度的测试、复位、去除

 

功能,完成硬件调试。

 

1.2设计方案

 

本课题的温湿度测试,通过单片机STC-89C51连接温湿度模块、显示模块将温度、湿度同时显示。

单片机发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,

送出40bit的数据,并触发一次信号采集,如果没有接收到单片机发送来

的信号,DHT11不会主动进行温度采集,采集数据后转换到低速模式。

统设计框图如图1.1所示。

 

按键电路

 

DHT11

温度采集电路

 

 

 

 

时钟复位

电路

 

 

图程序设计框图

 

第2章硬件设计

精彩文档

实用标准文案

2.1时钟电路和复位电路

 

MCS-51单片机内部有一个用于构成振荡器的高增益反放大器,引脚XTAL1和XTAL2分别是反相放大器的输入端和输出端。

通常,经由片外晶体振荡器或陶瓷谐振器与两个匹配电容一起构成一个自激振荡电路。

课题由片外晶体振荡器与两个匹配电容一起构成了一个内部时钟振荡电

路,为单片机提供时钟源。

本设计复位电路采用按键复位,当开关断开时,与上电自动复位电路

相同;当开关闭合时,电容通过并联的电阻迅速放电,然后,RC电路充

电,能够保证RST端能够维持一段时间的高电平。

如图2.1所示。

 

图时钟及复位电路

 

2.2温湿度测量电路设计

 

DHT11的供电电压为3-,传感器上电后,要等待1s以越过不稳

精彩文档

实用标准文案

定状态在此期间无需发送任何指令。

电源引脚〔VDD,GND〕之间可增加一

个100nF的电容,用以去耦滤波。

数据用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数局部和整数局部。

如图2.2所示,本电路上拉电阻为5K,数据端接P1.7〔接受温湿度数据〕。

 

图2.2温湿度测量电路

2.3显示电路

本电路由四位一体共阳极数码管显示,采用9015三极管做位驱动。

根据发光二极管物理连接的不同,七段数码管可以分为共阴极和共阳极两

种结构。

其中P0端口为段选,~P2.3为位选,如图2.3所示。

 

精彩文档

实用标准文案

 

图显示电路

2.4按键电路

 

单片机设计中按键可分为独立式按键和矩阵式按键,本系统由于按键

较少,故采用四个独立按键,上拉电阻为1K。

其中,四个按键功能分别

是显示温度、显示湿度、实时监控显示温湿度、测试温湿度。

如图2.4。

 

图按键电路

 

精彩文档

实用标准文案

第3章软件设计

 

本软件设计主要是对距离进行测量、显示。

因此,整个软件可分为按照硬件电路对单片机位定义;温湿度设置子程序;温湿度接收子程序;显示子程序;延时子程序等。

由于本设计方案要求硬件电路和软件编程相结合,所以选择适宜的编程语言十分重要。

C语言执行效率没有汇编语言高,但语言简洁,使用方便灵活,运算丰富,表达化类型多样化,程序设计自由度大,很好的可重用性,可移植性等特点基于C语言的众多优点本设计选择此语言来编程。

 

3.1主函数设计

 

软件分为两局部,主程序和中断效劳程序。

主程序完成初始化工作、温湿度数据接收处理控制。

外部中断效劳子程序主要完成时间值的读取、结果的输出等工作,如图3.1所示。

 

开始

 

初始化

 

显示

 

扫描

按键

 

图主程序流程图

精彩文档

实用标准文案

3.2按键查询

 

独立式按键接口采用直接读入方式工作,直读式键盘接口是一个输入

接口,输入接口主要功能是解决数据输入的缓冲〔选通〕问题。

本设计按

键较少,采用的独立按键。

 

是否按键?

 

Y

 

确定键

 

湿

 

图查询按键处理

 

在扫描按键函数中,每按下不同按键会返回一个不同的数值,在主函数中有按键查询函数判断为那个按键按下,随后进入不同的子函数,如图3.2所示。

 

精彩文档

实用标准文案

 

3.3实时监控与测试流程图

 

本系统设计分为实时监控与测试模块,图3.3示为测试模块。

上电

是数码管显示四个零,当按下测试按键后,系统开始测量环境温、湿度。

当数码管显示四个“—〞时,表示成功测量温、湿度。

当按下温度〔湿度〕

显示按键,该模块显示测试时的温度〔湿度〕。

当要进行下一次测量时,

必须按下测试按键。

 

开始

 

N

是否按键?

 

Y

 

显示

 

N

 

是否按键?

 

Y

 

调用测试函数

 

温度按键按下?

湿度按键按下?

 

YY

调用显示温度函数调用显示湿度函数

 

图测试流程图

 

精彩文档

实用标准文案

图3.4示为实时监控模块,按下实时监控键后,启动T0定时器开

始定时,每一分钟测试一次温度、湿度,并在四位一体的共阳极数码

管轮流显示温度、湿度。

当按下温度〔湿度〕显示按键后,该模块只

显示实时的温度〔湿度〕。

当再次按下实时监控按键后。

定时器T0关

闭。

 

开始

 

N

是否按键?

 

Y

 

显示

 

是否按键?

N

 

Y

 

重装初值启动定时器

 

调用测试函数

 

轮流显示温湿度

 

图实时监控模块

精彩文档

实用标准文案

第4章硬件调试与结果分析

 

4.1调试过程

 

在编写此程序前,感觉DHT11的通信程序和取数程序最为难写,在之前的学习中我并没有接触过单总线的通信时序图。

通过查阅资料和参考现有的程序,然后在老师讲解和与本组的其他组员谈论后,终于弄明白这方面的知识。

而在测量函数中,刚开始并没有测得数据,通过查阅书籍我设置了一个全局变量,一步一步跟踪每一步并显示在P1的LED灯上,一步一步跟踪,完善了DTH11的通信与取数函数。

但在通信与取数函数与按键函数衔接时,总是有一定的概率测不到数

据,慢慢的调试我发现我的通信与取数函数要连续调用两次才能每次正确

的读取数据,在此,我设置了一个全局变量作为一个标志位,每次按下测

量键是将该标志位设置为2,使通信与取数函数循环两次,这样保证了每

次按下测试按键后就能与DHT11正确的通信从而保证得到正确的数据。

在实时监控这个模块中,为了保证温、湿度能循环显示、按键后能只显示温度〔湿度〕。

由于按键有限,所以一下设置了很多的标志位。

因为标志位太多,而没有将所有的环节考虑进去,一下程序有调试了很久才正确的实现要求的功能。

 

精彩文档

实用标准文案

硬件调试

 

如图4.1所示,按下左下角按键时,单片机开始与DHT11通信并开始

测试温、湿度。

图示为测量温、湿度成功。

 

图4.1初始化

当按下列图示按键时,数码管显示此时或实时监控的环境湿度。

其中最

前端的“C〞表示此时显示的事环节温度,如图4.2。

 

图显示湿度

 

精彩文档

实用标准文案

当按下此按键时,数码管显示此时或实时监控的环境温度。

其中最前

端的“H〞表示此时显示的是环境湿度,如图4.3。

 

图显示温度

 

精彩文档

实用标准文案

 

第5章总结

 

这次单片机课程设计不仅稳固了以前学过的知识,而且学到了很多书本上没有没到的知识,掌握了一种系统的研究方法,可以进行一些简单的编程,通过这次课程设计我们明白理论与实际相结合是很重要的,只有理论知识还不够,理论实践相结合才能提高实际动手能力和独立思考的能

力。

同样,在学习中也发现了自己的缺乏之处,例如对以前所学过的知识理解不够深刻,掌握不够牢固。

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

随着科学技术开展的日新日异,单片机已经成为当今计算机应用中空前活泼的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回忆起此次单片机课程设计,我仍感慨颇多。

确实,从选题到定稿,从理论到实践,在接近两个星期的日子里,可以说得是苦多于甜,在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,通过这次课程设计之后,一定把以前所学过的知识重新温故。

 

精彩文档

实用标准文案

参考文献

 

[1]王迎旭等.单片机原理及及应用[M]机械工业出版社.2021年

[2]龚建伟、熊光明等串口通信[M]

[3]康华光等.模拟电子技术第五版[M]高等教育出版社2021年

[4]杜树春等.单片机C语言[M]北京航空航天大学出版社

 

精彩文档

实用标准文案

附录一:

系统仿真图

 

精彩文档

实用标准文案

附录二:

源程序

#include

bitflag2,flag3,flag5;

sbitdht11=P1^7;

#defineNUMBER20

//防止在与硬件通信时发生死循环的计数范围

#defineSIZE5

#defineOK1

#defineERROR0

//函数的返回值表示读取数据是否成功OK表示成功ERROR表示失败

voidDHT11_Delay_10us(void);

//延时10us

voidceshiwenshidu(void);

voidxianshishidu(void);

voidxianshiwendu(void);

unsignedcharReadValue(void);

 

unsignedcharDHT11_ReadTempAndHumi(void);voiddelay_1_002s(void);

voiddelay(unsignedchari);

//延时程序

voiddisplay(unsignedcharled0,led1,led2,led3);

//动态扫描显示程序

unsignedcharkeyscan(void);

//键盘扫描

unsignedcharstatus;

//#defineucharunsignedchar

//#defineuintunsignedint

unsignedcharflag1,flag4;

unsignedcharled_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

 

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89};/*共阳字型段码

表,"0"--"F","-",“H〞*/unsignedcharled0,led1,led2,led3;

unsignedcharvalue_array[5];

//存放五字节数据的数组

unsignedcharvalue_temp,value_humi;

 

精彩文档

实用标准文案

voidDHT11_Delay_10us(void)

{

unsignedchari;

i--;

i--;

i--;

i--;

i--;

i--;

}

/*读一个字节的数据*/

unsignedcharDHT11_ReadValue(void)

{

 

unsignedcharcount,value=0,i;

status=OK;

//设定标志为正常状态

for(i=8;i>0;i--)

{

//高位在先

value<<=1;

count=0;

//每一位数据前会有一个50us的低电平时间.等待50us低电平结

while((dht11==0)&&(count++=NUMBER)

{

status=ERROR;

//设定错误标志

return0;

//函数执行过程发生错误就退出函数

}

 

//26-28us的高电平表示该位是0,为70us高电平表该位1DHT11_Delay_10us();

DHT11_Delay_10us();

DHT11_Delay_10us();

 

//延时30us后检测数据线是否还是高电平

精彩文档

实用标准文案

if(dht11!

=0)

{

 

//进入这里表示该位是1

value++;

 

//等待剩余(约40us)的高电平结束

while((dht11!

=0)&&(count++

{

dht11=1;

}

if(count>=NUMBER)

{

status=ERROR;

//设定错误标志

return0;

}

}

}

return(value);

}

//读温度和湿度

函数,读一次的数据,共五字节,读出成功函数返回OK,错误返回ERROR

unsignedcharDHT11_ReadTempAndHumi(void)

{

unsignedchari=0,check_value=0,count=0;

display(led0,led1,led2,led3);

//EA=0;

dht11=0;//拉低数据线大

于18ms发送开始信号

display(led0,led1,led2,led3);//需大于18毫秒

dht11=1;//释放数据线,用

于检测低电平的应答信号

//延时20-40us,

等待一段时间后检测应答信号,应答信号是从机拉低数据线80usDHT11_Delay_10us();

 

DHT11_Delay_10us();

DHT11_Delay_10us();

DHT11_Delay_10us();

 

精彩文档

实用标准文案

if(dht11!

=0)//检测应答信号,

应答信号是低电平

{//没应答信号

returnERROR;

}

else

{//有应答信号

while((dht11==0)&&(count++

信号结束

if(count>=NUMBER)//检测计数器是

否超过了设定的范围

{

dht11=1;

returnERROR;//读数据出错,退

出函数

}

count=0;

dht11=1;//释放数据线

//应答信号后会

有一个80us的高电平,等待高电平结束

while((dht11!

=0)&&(count++

if(count>=NUMBER)

{

dht11=1;

returnERROR;//退出函数

}

//读出湿.温度值

for(i=0;i

{

value_array[i]=DHT11_ReadValue();

if(status==ERROR)//调用

ReadValue()读数据出错会设定status为ERROR

{

dht11=1;

returnERROR;

}

//读出的最

后一个值是校验值不需加上去

if(i!

=SIZE-1)

 

精彩文档

实用标准文案

{//读出的五字节数据中的前四字节数据和等于第五字节数据表示成功

check_value+=value_array[i];

}

}//endfordisplay(led0,led1,led2,led3);//在没用发生函数调用失败进行校验if(check_value==value_array[SIZE-1])

 

{

 

value_humi=value_array[0];

value_temp=value_array[2];

dht11=1;

returnOK;//正确的读出dht11输出的数据

}

else

{

returnERROR;//校验数据错

}

}

}

 

voiddelay_1_002s(void)

{

unsignedcharz,b,c;

for(z=0;z<10;z++)

{

for(b=0;b<160;b++)

{

for(c=0;c<207;c++);

}

}

}

voiddelay(unsignedcharx)

{

unsignedchari,j;

for(i=0;i

for(j=0;j<120;j++);

}

voiddisplay(unsignedcharled0,led1,led2,led3)

 

精彩文档

实用标准文案

{

P2=0xfe;P0=led_code[led0];delay(5);

P2=0xfd;P0=led_code[led1];delay(5);

P2=0xfb;P0=led_code[led2]&0x7f;delay(5);

P2=0xf7;P0=led_code[led3];delay(5);

P2=0xff;

}

unsignedcharkeyscan(void)

{

unsignedcharcord_l;

cord_l=P3&0xf0;

if(cord_l!

=0xf0)

{

display(led0,led1,led2,led3);

if(cord_l!

=0xf0)

{

while(P3!

=0xf0)

{

P3=0xf0;//等待按键释放

}

return(cord_l);

}

return(0xf0);

}

}

voidceshiwenshidu(void)

{

unsignedchard;

for(;flag4>0;flag4--)

{

d=DHT11_ReadTempAndHumi();

display(led0,led1,led2,led3);

if(flag3==0)

{

if(d==1)

{

led0=16;

led1=16;

led2=16;

 

精彩文档

实用标准文案

led3=16;

}

}

}

flag4=1;

}

voidxianshishidu(void)

{

led0=17;

led1=value_humi/10;

led2=value_humi%10;

led3=0;

}

 

voidxianshiwendu(void)

{

le

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2