用DHT11与4段数码管显示的温湿度检测系统.docx

上传人:scccc 文档编号:13695452 上传时间:2022-01-22 格式:DOCX 页数:28 大小:382.44KB
返回 下载 相关 举报
用DHT11与4段数码管显示的温湿度检测系统.docx_第1页
第1页 / 共28页
用DHT11与4段数码管显示的温湿度检测系统.docx_第2页
第2页 / 共28页
用DHT11与4段数码管显示的温湿度检测系统.docx_第3页
第3页 / 共28页
用DHT11与4段数码管显示的温湿度检测系统.docx_第4页
第4页 / 共28页
用DHT11与4段数码管显示的温湿度检测系统.docx_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《用DHT11与4段数码管显示的温湿度检测系统.docx》由会员分享,可在线阅读,更多相关《用DHT11与4段数码管显示的温湿度检测系统.docx(28页珍藏版)》请在三一文库上搜索。

1、等级:25湖南工程学院课 程 设 计课程名称单片机原理与应用课题名称温湿度检测系统专 业一自动化班 级学号姓名指导教师2013年6月20日ii湖南工程学院课程设计任务书课程名称单片机与应用课 题环境温、湿度检测系统设计专业班级学生姓名 学号指导老师审批任务书下达日期2013年6月10日任务完成日期2013年6月21日设计内容与设计要求设计内容:本课题要求以单片机为核心,采用温湿度传感器DHT11设计一个对环境温度湿度的检测系统,要求用按键控制系统选 择分别对温度或湿度的测试、复位、清除功能,用四位LED数码管显示实时温度和湿度。还可由用户设定温度和湿度的上、 下限,设计越限报警功能。设计要求:

2、1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要元器件选择;4)系统软件设计及调试;5)系统联调及操作说明6)按规范要求写设计说明书28主要设计条件1、PC机及单片机调试软件;2、开发板1块;3、系统设计、调试所需的元器件说明书格式1 .课程设计任务书2 .目录3 .总体方案确定4 .各单元硬件电路设计及计算方法5 .软件设计与说明(包括流程图)6 .调试结果与必要的调试说明7 .总结8 、参考文献9 、附录附录A系统原理图附录B 程序清单10 、课程设计成绩评分表。进度安排设计时间分为二周第一周星期一、上午:布置课题任务,课题介绍及讲课。下午:借阅有关资料,总体方案讨论。星期二、确

3、定总体方案,学习与设计相关内容。星期三、各部分方案设计,各部分设计。星期四、设计及调试。星期五、设计及调试。星期六、设计及调试。第二周星期一:设计及调试。星期二:设计及调试。星期三:调试、写说明书。星期四-星期五上午:写说明书、完成电子版并打印成稿 星期五下午:答辩。参考文献1王迎旭等.单片机原理及及应用.机械工业出版社.2012年目录第1 章系统总体方案设计71.1 系统设计方案总体思路 71.2 系统总体方案框图 7第2 章硬件设计82.1 STC89C52 简介 82.2 晶振电路 82.3 复位电路 82.4 共阳数码管显示电路 92.5 键盘电路 102.6 DHT11传感器电路 1

4、02.7 报警电路 11第 3 章 软件设计与说明123.1 系统软件设计思路 错误!未定义书签。3.2 主程序设计123.3 键盘函数 错误!未定义书签。3.4 显示程序设计 12第4 章调试结果与说明144.1 系统调试说明 144.2 调试结果 14第5 章总结 15参考文献 16附录A 系统电理图路原17附录B 系统程序清单18第1章系统总体方案设计1.1 系统设计方案总体思路根据课题,设计温湿度检测系统电路,采用单片机STC89C52为控制芯片。根据设计要求所需的实现要求, 将总电路分为键盘接口电路、单 片机时钟电路、复位电路、LED显示电路、DHT11传感器电路、报警电路 几个模块

5、。键盘接口电路为4*4矩阵式键盘,采用查询法,键盘连接到单 片机的P2 口(P1.0-P1.3歹线,P14P1.7行线),在本系统中采用内部时 钟电路,由一个石英晶体管振荡器和两个微调电容组成;复位电路中给给RST引脚连续输入2个机器周期(即24个时钟振荡周期)以上高电平, 就可完成初始化操作;显示电路与单片机 I/O相连,采用4段7位共阳 LED显示管显示温湿度。1.2 系统总体方案框图根据设计思路确定的总体方案如图1-2所示。图1-2系统总体框图第2章硬件设计2.1 STC89C52 简介STC89C52是STC公司生产的一种低功耗高性能 CMOS8位微控制器, 具有8K在系统可编程FLA

6、SH存储器。STC89C52使用经典的MCS-51 内核,但做了很多改进使得芯片具有传统 51单片机不具备的功能。拥有 灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式 控制应用系统提供高灵活、超有效的解决方案。2.2 晶振电路单片机工作的时间基准是由时钟电路所控制的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。 电路中,电容器C1和C2对振荡频率有微调作用,均选用20pF,石英晶体 选择12MHZ。晶振电路如图.C1o XIUL图2-2晶振电路2.3 复位电路复位电路是保证单片机正常运行的关键因素,所以可靠地复位电路设计是

7、必要的。将RST引脚连续输入2个机器周期(即24个时钟振荡期间) 以上高电平,即可以完成单片机的初始化操作。本设计采用按钮复位方式。复位电路如图:图2-3复位电路2.4 共阳数码管显示电路LED数码管采用共阳数码管,采用动态显示方式,减少硬件资源。动态扫描显示接口是单片机中应用最广泛的一种显示方式。数码管的dp段以及g-a段依序与P0 口的P0.7-P0.0连接。4位LED的位选线分别由相对应的P2.0-P2.3控制。显示电路如图:图2-4显示电路2.5 键盘电路该系统采用4*4矩阵式键盘电路,在矩阵式键盘中,每条水平线和垂 直线交叉处都由一个按钮连接。 键盘的行线与P1 口的P1.4-P1.

8、7相连,列 线与P1.0-P1.3相连。本系统采用4个键:键0:启动系统,传感器有响应。键1:设置温湿度的上下限。键2:暂停。键3:单片机复位,系统停止工作。键盘电路如下:图2-5键盘电路图2.6 DHT11传感器电路DHT11是一种能对环境的温湿度参数进行采样的传感器。传感器中 的DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格 式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下 面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数 据+8bit湿度小数数据。+8bi温度整数数据+

9、8bit温度小数数据。+8bit校验 和。DHT11传感器电路如下:图2-6 DHT11传感器电路2.7 报警电路蜂鸣器是一种一体化的电子通讯响应器。在本系统中,当温湿度超过 其上下线时报警。图2-7报警电路第 3 章 软件设计与说明此次系统设计是通过C 语言编程,其中包括数码管显示部分、键盘扫描部分、传感器采样温湿度部分。3.1 主程序设计主程序初始化,主程序循环扫描是否有键按下,如有键按下则做出相应的功能处理,若无键按下则继续执行显示函数。3.4 显示程序设计显示采用4 位共阳数码管,段码在程序数据区定义,根据需要查表取得,再送往P0 口,以控制数码管显示不同字符数字。位码由P2.0 P2

10、.3口分别控制晶体数码管的位控位W4 W1 ,以控制各个数码管显示。图3-4显小程序流程图第4章调试结果与说明4.1 系统调试说明本系统调试过程中采用直接硬件调试的方法,对整体的系统程序进行 分解排故,首先对八段显像管进行数字显示测试, 然后对键盘进行按键响 应测试,当测试都得到正确结果时,将键盘与显示结合起来,并给予恰当的字型码,最后加入定时器中断程序,给出正确的脉冲信号和频率。调试 过程中,数码管显示的数字闪烁,原因是传感器接触不良,后换了导线, 数字不在闪烁。按键出现按下一键响应多次的情况, 后查出由于键位抬起 子程序书写不当,造成键盘多次响应,并加上了松手去抖程序后问题得以 顺利解决。

11、4.2 调试结果接上温湿度传感器 DHT11后和电源后,将程序下载到板子上,按下 0 号键启动,执行程序,数码管上显示了环境的温湿度参数。图5-1显示环境温湿度参数第 5 章 总结经过两周的单片机课程设计,终于完成了单片机环境温湿度检测系统实践能力的到了一定的刚学完单片机并且经历了考试,我一直以为我对单片机有了不少的了解,课透过此次课程设计,我才看到了自己的诸多不足,也学到了很多知识与技巧。虽然之前有做过不少课程设计,但以前大多是单独的软件或者硬件设计,这次设计让我有了长足的进步,真正实现了对单片机硬件与软件的兼顾与融会贯通。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法, 虽

12、然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事。由于 C 语言学习较早,很多技巧与方法早就忘得差不多了,上课与做实验, 我一直以来都是使用汇编语言来编写程序,可课题的复杂度明显比试验中遇到的要大得多,C 语言编程的方便性让我不得不着手C 语言开始。这也让我再次巩固了以前学习的专业知识。面对大量的参考资料甚至是几乎现成的参考报告,我选择了在学习吸纳的基础上另辟蹊径,虽然遇到困难的时候都想放弃,直接用现成的程序和报告,可看到其他同学和我一样在埋头苦干、老师期盼的眼神,我选择了坚持下来,当然,现在这是我骄傲的资本。虽然这个课题不算难,但是从硬件电路到最后程序的编写和调试都是自己摸索出来的

13、,这个过程中也遇到了不少困难,更多的是成功后的喜悦,学习永无止境,只有把学习和实践当做一种乐趣那么即便有再大的困难也会是一种享受。参考文献 1 王迎旭 . 单片机原理与应用 M. 北京:机械工业出版社, 2004. 2 陈海宴 . 51 单片机原理及应用 M . 北京:北京航空航天大学出版社, 2010. 3 胡汉才 . 单片机原理及其接口技术 M. 北京:清华大学出版社,2010. 4 李全利 . 单片机原理及应用技术 M. 北京: 高等教育出版社,2004. 5 陈光东 . 单片微型计算机原理及接口技术 M. 华中科技大学出版社, 2001. 6 何立民 . 51 系列单片机应用与实践教程

14、 M. 北航出版社,.附录A系统电路原理图B 系统程序清单/ P1.0-P1.7段选a-dp,P2.0-P2.3:选w4-w1,p1 口接矩阵键盘 列接高四位,横接低四位/ 键盘: 0 键启动,1 键设置, 2 键暂停, 3 键复位#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned intunsignedcharcodeled_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0

15、xa1,0x86,0x8e,0xbf;/*共阳字型段码表,0-F,-*/uchar led0,led1,led2,led3;/*函数声明*/uchar keyscan(void);/8 盘扫描void delay(uint i); /延时程序void display(ucha门ed0,led1,led2,led3);/ftl态扫描显示程序/*主函数*/void main()uchar key;的值P1=0xff;/*关所有位显示*/led0=16;/*显示初始状态“- - - 0” */led1=16;led2=16;led3=0;while(1)display(led0,led1,led2,

16、led3); /*调显示 */ key=keyscan(); /调用键盘扫描,switch(key)case 0x7e:led0=0;break; /0按下相应的键,首位数码管显示相对应case 0x7d:led0=1;break; /1case 0x7b:led0=2;break; /2case 0x77:led0=3;break; /3case 0xbe:led0=4;break; /4case 0xbd:led0=5;break; /5case 0xbb:led0=6;break; /6case 0xb7:led0=7;break; /7case 0xde:led0=8;break; /

17、8case 0xdd:led0=9;break; /9case 0xdb:led0=10;break; /acase 0xd7:led0=11;break; /bcase 0xee:led0=12;break; /ccase 0xed:led0=13;break; /dcase 0xeb:led0=14;break; /ecase 0xe7:led0=15;break; /f/*键盘扫描程序,P1.0-P1.3列线,P1.4-P1.7行线,*/uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法uchar cord_h,cord_l;/亍歹 U值中间变量P1=0x0f;/

18、行线输出全为0cord_h=P1&0x0f;/读入列线值if(cord_h!=0x0f)/先检测有无按键按下,cord_h 不等于 0x0f 无键按下display(led0,led1,led2,led3); /*调显示 */if(cord_h!=0x0f)cord_h=P1&0x0f; /读入列线值P1=cord_h|0xf0; /输出当前列线值cord_l=P1&0xf0; /读入行线值return(cord_h+cord_l);/键盘最后组合码值return(0xff);/无键按下返回值/*动态扫描显示程序,P0段控,P2.0-P2.3位控(反向驱动)*/void display(led

19、0,led1,led2,led3) /P2=0xfe;P0=led_codeled0;delay(5);P2=0xfd;P0=led_codeled1;delay(5);P2=0xfb;P0=led_codeled2;delay(5);P2=0xf7;P0=led_codeled3;delay(5);/*延时程序*/void delay(int x )int i,j;for(i=0;ix;i+)for(j=0;j120;j+);/ 温度传感器采样环境温湿度参数并由数码管显示#include#include typedef unsigned char unint8;typedef unsigne

20、d char unint16;unsigned char table0=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/不带小数点unsigned char str1=;unsigned char str2=;sbit TRH = P3A0;/温湿度传感器DHT11数据接入sbit LCD_RS = P2A6;sbit LCD_RW = P2A5;sbit LCD_EN = P2A7;void disp(unint8 str1,unint8 str2,unint8 str3,unint8 str4);unint8 TH_data,TL_da

21、ta,RH_data,RL_data,CK_data;unint8 TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unint8 com_data,untemp,temp;unint8 respond;void delayNOP()_nop_();_nop_();_nop_();_nop_();/ 毫秒级延时子程序void delay_ms(unsigned char ms)unsigned char i;while(ms-)for(i = 0; i 150; i+)_nop_();_nop_();_nop_();_nop_();/5us级延时程序void de

22、lay_us()unint8 i;i-;i-;i-;i-;i-;char receive()unint8 i;com_data=0;for(i=0;i=7;i+)respond=2;while(!TRH)&respond+);delay_us();delay_us();delay_us();if(TRH)temp=1;respond=2;while(TRH)&respond+);elsetemp=0;com_data=1;com_data|=temp;return(com_data);void read_TRH()/主机拉低18msTRH=0;delay_ms(18);TRH=1;/DATA

23、总线由上拉电阻拉高主机延时20usdelay_us();delay_us();delay_us();delay_us();TRH=1;/判断DHT11 是否有低电平响应信号如不响应则跳出,响应则向下运行if(!TRH)respond=2;/判断DHT11 发出 80us 的低电平响应信号是否结束while(!TRH)& respond+); respond=2;/判断从机是否发出80us 的高电平,如发出则进入数据接收状态while(TRH & respond+);/数据接收状态RH_temp = receive();RL_temp = receive();TH_temp = receive(

24、);TL_temp = receive();CK_temp = receive();TRH=1;/数据校验untemp=(RH_temp+RL_temp+TH_temp+TL_temp); if(untemp=CK_temp)RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp;TL_data = TL_temp;CK_data = CK_temp;/湿度整数部分str10 = table0RH_data/10;str11 = table0RH_data%10; /温度整数部分str20 =table0TH_data/10;str21 =

25、table0TH_data%10;/主函数/TH,TL,RH,RL 分别代表温湿度的整数和小数部分void main()delay_us();TMOD=0X01;选择定时器工作方式TH0=(65536-12000)/256;TL0=(65536-12000)%256;EA=1;/开总中断ET0=1;/开定时器中断TR0=1;/启动定时器while(1)read_TRH();void T0_timer() interrupt 1TH0=(65536-20000)/256;TL0=(65536-20000)%256;disp(str10,str11,str20,str21);void disp(u

26、nint8 str1,unint8 str2,unint8 str3,unint8 str4)P2=0xfe;P0=str1;delay_ms(1);P2=0xfd;P0=str2;delay_ms(1);/P2=0xfb;/P0=str3;/delay_ms(1);P2=0xfb;P0=str3; delay_ms(1);P2=0xf7;P0=str4; delay_ms(1);/P2=0xdf;/P0=str6; /delay_ms(1);电气与信息工程系课程设计评分表项目评价优良中及格差设计方案合理性与创造性(10%开发板焊接及其调试完成情况 * (10%硬件设计或软件编程完成情况(20%) . 一.1_. *硬件测试或软件调试结果(10%)设计说明书质量(20%)答辩T青况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综合评分指导教师签名:日 期:注:表中标*号项目是硬件制作或软件编程类课题必填内容;此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、 正文、评分表、附件(非 16K大小的图纸及程序清单)。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1