




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、等级 :工程学院课程设计课程名称 单片机原理与应用 课题名称 环境温、湿度检测系统设计专 业自动化班 级1191学 号20姓名 指导教师晓秀 王迎旭2013 年 12 月 12 日工程学院课程设计任务书课程名称 单片机原理与应用课 题 环境温、湿度检测系统设计专业班级自动化学生姓名学 号2011指导老师 晓秀 审批任务书下达日期 2013 年 12 月 1 日任务 完成日期 2013 年 12 月 13 日设计容与设计要求.页脚.设计容: 主 要 设 计 条 件本课题要求以单片机为核心,采用温湿度传感器 DHT11 设 计一个对环境温度湿度的检测系统,要求用按键控制系统选择分 别对温度或湿度的
2、测试、复位、清除功能,用四位 LED 数码管显 示实时温度和温度。设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要元器件选择;4)系统软件设计及调试;5)系统联调及操作说明6)按规要求写设计说明书1、PC 机及单片机调试软件;2、开发板 1块;3、系统设计、调试所需的元器件说明书格式1. 课程设计任务书2. 目录3. 总体方案确定4. 各单元硬件电路设计及计算方法5. 软件设计与说明(包括流程图)6. 调试结果与必要的调试说明7. 总结8、参考文献9、附录附录 A系统原理图附录 B程序清单10、课程设计成绩评分表。进度安排设计时间分为二周第一周 星期一、上午:布置课题任务,
3、课题介绍及讲课。 下午:借阅有关资料,总体方案讨论。 星期二、确定总体方案,学习与设计相关容。 星期三、各部分方案设计,各部分设计。 星期四、设计及调试。星期五、设计及调试。 星期六、设计及调试。第二周 星期一:设计及调试。 星期二:设计及调试。 星期三:调试、写说明书。星期四-星期五上午:写说明书、完成电子版并打印成稿 星期五下午:答辩。参考文献1 王迎旭等 .单片机原理及及应用 M 机械工业出版社 .2012 年2 康华光等 .模拟电子技术 第五版 M 高等教育出版社 2011 年3 杜树春等 .单片机 C 语言 M 北京航空航天大学出版社目录第 1 章 概述 81.1 设计任务与要求 8
4、1.2 设计方案 9第 2 章 硬件设计 92.1 时钟电路和复位电路 92.2 温湿度测量电路设计 102.3 按键电路 12第 3 章 软件设计 133.1 主函数设计 133.2 按键查询 143.3 实时监控与测试流程图 16第 4 章 硬件调试与结果分析 184.1 调试过程 184.2 硬件调试 19第 5 章 总结 21参考文献 22附录一:系统仿真图 23附录二:源程序 24电气与信息工程系课程设计评分表 29第 1 章 概述1.1 设计任务与要求本课题以单片机为核心,用智能集成温温度传感器 DHT11 主要实现 检测温度、湿度的检测, 将温度湿度信号通过传感器进行信号的采集并
5、转 换成数字信号, 再运用单片机进行数据的分析和处理, 在数码管上显示当 前温湿度。 要求用按键控制系统选择分别对温度或湿度的测试、 复位、清除功能,完成硬件调试。1.2 设计方案本课题的温湿度测试,通过单片机 STC-89C51 连接温湿度模块、显 示模块将温度、湿度同时显示。单片机发送一次开始信号后, DHT11 从 低功耗模式转换到高速模式,等待主机开始信号结束后, DHT11 发送响 应信号,送出 40bit 的数据,并触发一次信号采集,如果没有接收到单片 机发送来的信号, DHT11 不会主动进行温度采集,采集数据后转换到低 速模式。系统设计框图如图 1.1 所示。图 1.1 程序设
6、计框图第 2 章 硬件设计2.1 时钟电路和复位电路MCS-51 单片机部有一个用于构成振荡器的高增益反放大器,引脚 XTAL1和 XTAL2分别是反相放大器的输入端和输出端。通常,经由片外 晶体振荡器或陶瓷谐振器与两个匹配电容一起构成一个自激振荡电路。 本 课题由片外晶体振荡器与两个匹配电容一起构成了一个部时钟振荡电路, 为单片机提供时钟源。本设计复位电路采用按键复位, 当开关断开时, 与上电自动复位电路 相同;当开关闭合时,电容通过并联的电阻迅速放电,然后, RC 电路充 电,能够保证 RST端能够维持一段时间的高电平。如图 2.1 所示。图 2.1 时钟及复位电路2.2 温湿度测量电路设
7、计DHT11 的供电电压为 35.5V ,传感器上电后,要等待 1s以越过不 稳定状态在此期间无需发送任何指令。电源引脚( VDD ,GND )之间可 增加一个 100nF 的电容,用以去耦滤波。数据用于微处理器与 DHT11 之 间的通讯和同步 ,采用单总线数据格式 ,一次通讯时间 4ms 左右 ,数据分小 数部分和整数部分。 如图 2.2 所示,本电路上拉电阻为 5K,数据端接 P1.7 (接受温湿度数据)。图 2. 2 温湿度测量电路2.3 显示电路本电路由四位一体共阳极数码管显示,采用 9015 三极管做位驱动。 根据发光二极管物理连接的不同, 七段数码管可以分为共阴极和共阳极两2.3
8、 所示。种结构。其中 P0 端口为段选, P2.0P2.3 为位选,如图图 2.3 显示电路2.4 按键电路单片机设计中按键可分为独立式按键和矩阵式按键, 本系统由于按键 较少,故采用四个独立按键,上拉电阻为 1K。其中,四个按键功能分别 是显示温度、显示湿度、实时监控显示温湿度、测试温湿度。如图2.4。图 2.4 按键电路第 3 章 软件设计本软件设计主要是对距离进行测量、 显示。因此,整个软件可分为按 照硬件电路对单片机位定义; 温湿度设置子程序; 温湿度接收子程序; 显 示子程序;延时子程序等。由于本设计方案要求硬件电路和软件编程相结合, 所以选择合适的编 程语言十分重要。 C 语言执行
9、效率没有汇编语言高,但语言简洁,使用 方便灵活,运算丰富, 表达化类型多样化, 程序设计自由度大, 很好的可 重用性,可移植性等特点基于 C 语言的众多优点本设计选择此语言来编 程。3.1 主函数设计软件分为两部分, 主程序和中断服务程序。 主程序完成初始化工作、 温湿度数据接收处理控制。外部中断服务子程序主要完成时间值的读取、 结果的输出等工作,如图 3.1 所示。图 3.1 主程序流程图3.2 按键查询独立式按键接口采用直接读入方式工作, 直读式键盘接口是一个输入 接口,输入接口主要功能是解决数据输入的缓冲 (选通)问题。本设计按 键较少,采用的独立按键。图 3.2 查询按键处理在扫描按键
10、函数中, 每按下不同按键会返回一个不同的数值, 在主函 数中有按键查询函数判断为那个按键按下, 随后进入不同的子函数, 如图3.2 所示。.页脚.3.3 实时监控与测试流程图本系统设计分为实时监控与测试模块,图 3.3 示为测试模块。上电 是数码管显示四个零,当按下测试按键后,系统开始测量环境温、湿度。 当数码管显示四个 “”时,表示成功测量温、 湿度。当按下温度 (湿度) 显示按键,该模块显示测试时的温度(湿度) 。当要进行下一次测量时, 必须按下测试按键。开始显示NY调用测试函数Y调用显示温度函数湿度按键按下?调用显示湿度函数图 3.4 示为实时监控模块, 按下实时监控键后, 启动 T0
11、定时器开 始定时,每一分钟测试一次温度、湿度,并在四位一体的共阳极数码 管轮流显示温度、湿度。当按下温度(湿度)显示按键后,该模块只 显示实时的温度(湿度) 。当再次按下实时监控按键后。定时器 T0关 闭。开始是否按键?Y显示Y图 3.4 实时监控模块第 4 章 硬件调试与结果分析4.1 调试过程在编写此程序前,感觉 DHT11 的通信程序和取数程序最为难写,在 之前的学习中我并没有接触过单总线的通信时序图。 通过查阅资料和参考 现有的程序, 然后在老师讲解和与本组的其他组员谈论后, 终于弄明白这 方面的知识。而在测量函数中, 刚开始并没有测得数据, 通过查阅书籍我 设置了一个全局变量, 一步
12、一步跟踪每一步并显示在 P1的 LED灯上,一 步一步跟踪,完善了 DTH11 的通信与取数函数。但在通信与取数函数与按键函数衔接时, 总是有一定的概率测不到数 据,慢慢的调试我发现我的通信与取数函数要连续调用两次才能每次正确 的读取数据, 在此,我设置了一个全局变量作为一个标志位, 每次按下测 量键是将该标志位设置为 2,使通信与取数函数循环两次, 这样保证了每 次按下测试按键后就能与 DHT11 正确的通信从而保证得到正确的数据。在实时监控这个模块中, 为了保证温、湿度能循环显示、 按键后能只 显示温度(湿度)。由于按键有限,所以一下设置了很多的标志位。因为 标志位太多, 而没有将所有的环
13、节考虑进去, 一下程序有调试了很久才正 确的实现要求的功能。4.2 硬件调试如图 4.1 所示,按下左下角按键时,单片机开始与 DHT11 通信并开 始测试温、湿度。图示为测量温、湿度成功。图 4.1 初始化当按下图示按键时, 数码管显示此时或实时监控的环境湿度。 其中最 前端的“ C” 表示此时显示的事环节温度,如图 4.2 。图 4.2 显示湿度当按下此按键时, 数码管显示此时或实时监控的环境温度。 其中最前 端的“ H”表示此时显示的是环境湿度,如图 4.3。图 4.3 显示温度.页脚.第 5 章 总结这次单片机课程设计不仅巩固了以前学过的知识, 而且学到了很多书 本上没有没到的知识,
14、掌握了一种系统的研究方法, 可以进行一些简单的 编程,通过这次课程设计我们明白理论与实际相结合是很重要的, 只有理 论知识还不够,理论实践相结合才能提高实际动手能力和独立思考的能 力。同样,在学习中也发现了自己的不足之处, 例如对以前所学过的知识 理解不够深刻,掌握不够牢固。课程设计是培养学生综合运用所学知识 ,发现、提出、分析和解决实 际问题 ,锻炼实践能力的重要环节 ,是对学生实际工作能力的具体训练和 考察过程。随着科学技术发展的日新日异, 单片机已经成为当今计算机应 用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一 世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此
15、次单片机课程设计,我仍感慨颇多。的确,从选题到定稿, 从理论到实践, 在接近两个星期的日子里, 可以说得是苦多于甜, 在设计 的过程中遇到问题,可以说得是困难重重, 难免会遇到过各种各样的问题, 通过这次课程设计之后,一定把以前所学过的知识重新温故。参考文献1 王迎旭等 .单片机原理及及应用 M 机械工业出版社 .2012 年2 龚建伟、熊光明等 .Visual.c.Tubor.c 串口通信 M3 康华光等 .模拟电子技术 第五版M 高等教育出版社 2011 年 4 杜 树春等 .单片机 C 语言M 北京航空航天大学出版社附录一:系统仿真图附录二:源程序#include <reg51.h
16、>bit flag2,flag3,flag5;sbit dht11 = P17;#define NUMBER 20/ 防止在与硬件通信时发生死循环的计数围#define SIZE 5#define OK 1#define ERROR 0ERROR/ 函数的返回值表示读取数据是否成功 OK 表示成功 表示失败void DHT11_Delay_10us(void);/ 延时 10usvoid ceshiwenshidu(void);void xianshishidu(void);void xianshiwendu(void);unsigned char ReadValue(void);uns
17、igned char DHT11_ReadTempAndHumi(void);void delay_1_002s(void);void delay(unsigned char i);/ 延时程序void display(unsigned char led0,led1,led2,led3);/ 动态扫描显示程序unsigned char keyscan(void);/ 键盘扫描unsigned char status;/#define uchar unsigned char/#define uintunsigned intunsigned char flag1,flag4;unsigned ch
18、ar led_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89; /* 共 阳 字型段码表 ,"0"-"F","-",“ H” */unsigned char led0,led1,led2,led3;unsigned char value_array5;.页脚./ 存放五字节数据的数组 unsigned char value_temp, value_humi;void DHT11_Delay_10
19、us(void)unsigned char i;i-;i-;i-;i-;i-;i-;/* 读一个字节的数据 */unsigned char DHT11_ReadValue(void) unsigned char count, value = 0, i; status = OK;/ 设定标志为正常状态for(i = 8; i > 0; i-)/ 高位在先value <<= 1;count = 0;/ 每一位数据前会有一个 50us 的低电平时间 .等待 50us 低电平结束while(dht11 = 0) && (count+ < NUMBER);if(c
20、ount >= NUMBER) status = ERROR;/ 设定错误标志return 0;/ 函数执行过程发生错误就退出函数/26-28us 的高电平表示该位是 0,为 70us 高电平表该位 1 DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();/ 延时 30us 后检测数据线是否还是高电平 if(dht11 != 0)/ 进入这里表示该位是 1 value+;/ 等待剩余 (约 40us) 的高电平结束 while(dht11 != 0) && (count+ < NUMBER) dht11
21、= 1;if(count >= NUMBER)status = ERROR;/ 设定错误标志return 0;.页脚.return (value);/ 读温度和湿度函数,读一次的数据 ,共五字节,读出成功函数返回OK,错误返回 ERRORunsigned char DHT11_ReadTempAndHumi(void)unsigned char i = 0, check_value = 0,count = 0;display(led0,led1,led2,led3);/ EA = 0;dht11 = 0;/ 拉低数据线大于 18ms 发送开始信号display(led0,led1,led
22、2,led3);/ 需大于 18毫秒dht11 = 1;/ 释 放数 据 线,用于检测低电平的应答信号/ 延时 20-40us,等待一段时间后检测应答信号 ,应答信号是从机拉低数据线 80usDHT11_Delay_10us();DHT11_Delay_10us();.页脚.页脚./ 检测应答信号/ 没应答信号/ 有应答信号/ 等 待/ 检测计数器是/ 读数据出dht11 = 1;/ 释放数据线DHT11_Delay_10us();DHT11_Delay_10us(); if(dht11 != 0)应答信号是低电平return ERROR;elsewhile(dht11 = 0)&&a
23、mp;(count+ < NUMBER); 应答信号结束if(count >= NUMBER) 否超过了设定的围dht11 = 1;return ERROR;错,退出函数count = 0;/ 应答信号后会有一个 80us 的高电平,等待高电平结束while(dht11 != 0) && (count+ < NUMBER);if(count >= NUMBER)dht11 = 1;函数return ERROR;/退出值/ 读 出湿.温度for(i = 0; i < SIZE; i+)/ 调 用value_arrayi=DHT11_ReadValue
24、();if(status = ERROR)ReadValue() 读数据出错会设定 status 为 ERRORdht11 = 1;return ERROR;/ 读出的最 后一个值是校验值不需加上去if(i != SIZE - 1) / 读出的五 字节数据中的前四字节数据和等于第五字节数据表示成功check_value += value_arrayi;/end fordisplay(led0,led1,led2,led3);/ 在没用发生函数调用失败进行 校验if(check_value = value_arraySIZE - 1)value_humi = value_array0;value
25、_temp = value_array2;dht11 = 1;return OK; / 正确的读出 dht11 输出的数据else/ 校验数据错return ERROR;void delay_1_002s(void)unsigned char z,b,c;for(z=0;z<10;z+)for(b=0;b<160;b+)for(c=0;c<207;c+);void delay(unsigned char x)unsigned char i,j;.页脚.for(i=0;i<x;i+)for(j=0;j<120;j+);void display(unsigned ch
26、ar led0,led1,led2,led3)P2=0xfe;P0=led_codeled0;delay(5);P2=0xfd;P0=led_codeled1;delay(5);P2=0xfb;P0=led_codeled2&0x7f;delay(5);P2=0xf7;P0=led_codeled3;delay(5);P2=0xff;unsigned char keyscan(void)unsigned char cord_l;cord_l=P3&0xf0;if(cord_l!=0xf0) display(led0,led1,led2,led3); if(cord_l!=0xf
27、0)while(P3!=0xf0).页脚.P3=0xf0;/ 等待按键释放 return(cord_l);return(0xf0);void ceshiwenshidu(void)unsigned char d;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;void xianshishidu(void)led0=17;led1=value_humi/10;led2=value_humi%10;led3=0;void xianshiwendu(void)led0=12;led1=value_temp/10;led2=value_tem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑瓦工清包合同协议
- 废铜电缆采购合同协议
- 工程融资居间合同协议
- 工程意向合作合同协议
- 采购招标档案管理重点基础知识点
- 花卉养护培训教材
- 2012数学第7章 7.3.1《组合与组合数公式》知能优化训练(湘教版选修2-3)教案
- 人教版 (PEP)Unit 2 My schoolbag Part B教案配套
- 幼儿园科学课基本流程
- 2019年春八年级地理教案(人教版)
- 绿色金融产品创新与风险管理-全面剖析
- 电缆火灾事故专项应急预案
- 山西省朔州市怀仁县2025届小学六年级第二学期小升初数学试卷含解析
- 东北三省三校2025届高三下学期第二次联合模拟考试物理试题及答案
- 2025年安徽物理中考模拟练习卷(含答案)
- 2025年山东省济南市莱芜区中考一模地理试卷(原卷版+解析版)
- 鲜茧采购合同范本
- 2025年安阳学院单招职业技能考试题库必考题
- 留罐法传统康复技术针灸技术课件
- 2025年陪玩培训考试题及答案
- 发展银发经济的理论依据与实践路径研究
评论
0/150
提交评论