环境温湿度检测系统设计单片机毕业课程设计.docx
- 文档编号:11322281
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:25
- 大小:23.14KB
环境温湿度检测系统设计单片机毕业课程设计.docx
《环境温湿度检测系统设计单片机毕业课程设计.docx》由会员分享,可在线阅读,更多相关《环境温湿度检测系统设计单片机毕业课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
环境温湿度检测系统设计单片机毕业课程设计
(此文档为word格式,下载后您可任意编辑修改!
)
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称环境温、湿度检测系统设计
专
业
自动化
班
级
1191班
姓
名
杨力
指导教师
李晓秀老师
2013年12月10日
1
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题环境温、湿度检测系统设计
专业班级自动化1191班
学生姓名杨力
指导老师李晓秀老师
审批
任务书下达日期2013年12月2日
任务完成日期2013年12月10日
设计内容与设计要求
2
设计内容:
本课题要求以单片机为核心,采用温湿度传感器DHT11设计一个
对环境温度湿度的检测系统,要求用按键控制系统选择分别对温度或湿
度的测试、复位、清除功能,用四位LED数码管显示实时温度和温度。
还可由用户设定温度和湿度的上、下限,设计越限报警功能。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要元器件选择;
4)系统软件设计及调试;
5)系统联调及操作说明
6)按规范要求写设计说明书
主要设计条件
3
1、PC机及单片机调试软件;
2、开发板1块;
3、系统设计、调试所需的元器件。
说明书格式
1、课程设计任务书
2、目录
3、总体方案确定
4、各单元硬件电路设计及计算方法
5、软件设计与说明(包括流程图)
6、调试结果与必要的调试说明
7、总结
8、参考文献
9、附录
附录A系统原理图
附录B程序清单
10、课程设计成绩评分表。
进度安排
4
设计时间分为二周
第一周
星期一、上午:
布置课题任务,课题介绍及讲课。
下午:
借阅有关资料,总体方案讨论。
星期二、确定总体方案,学习与设计相关内容。
星期三、各部分方案设计,各部分设计。
星期四、设计及调试。
星期五、设计及调试。
星期六、设计及调试。
第二周
星期一:
设计及调试。
星期二:
设计及调试。
星期三:
调试、写说明书。
星期四--星期五上午:
写说明书、完成电子版并打印成稿。
星期五下午:
答辩。
参考文献
[1]王迎旭等.单片机原理及及应用.机械工业出版社.2012年
[2]郭天祥.10天征服单片机,延边教育出版社
[3]阎石.数字电子技术,高等教育出版社
[3]康华光.模拟电子技术.高等教育出版社
5
第1章
总体方案确定....................................................
1
第2
章
各单元硬件电路设计及计算方法....................................
1
2.1
温湿度采集电路..................................................
1
2.2
单片机时钟电路..................................................
3
2.3
晶体管显示电路..................................................
3
2.4
按键电路........................................................
4
第3
章软件设计与说明...................................................
5
3.1
主程序设计......................................................
5
3.2
温湿度采集子程序................................................
6
3.3
显示子程序......................................................
8
第4
章
调试结果与调试说明..............................................
9
第5
章
总结...........................................................
11
参考文件
...............................................................
13
附录...................................................................
13
6
第1章总体方案确定
本方案以STC89C51单片机系统为核心来对温度和湿度进行控制和巡检。
各检测单
元能独立完成各自功能,并根据主控机的指令对温湿度进行采集。
主控机负责控制指
令的发送,并控制各个检测单元进行温湿度采集、收集测量数据以及对测量结果进行
调整和显示,系统原理框图如图1-1所示。
图1-1系统原理框图
第2章各单元硬件电路设计
2.1温湿度采集电路
温湿度采集电路是本设计中最重要的一个模块,用于外部环境的参数读取,是单片机系统的输入模块,是与单片机联系最为密切的部分。
本课题采用的温湿度传感器DHT11是一个。
。
。
。
。
外部接线图
图2-11DHT11外部接线图
DHT11的供电电压为3-5.5V。
传感器上电后,要等待1s以越过不稳定状态在此
期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以
去耦滤波。
温湿度采集电路外部接线图如图2-12所示:
:
(本实验以P1.7为输入输出口)
图2-12温湿度采集电路外部接线图
2.2单片机时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,其输入端为芯片引脚X1,输出
端引脚为X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,构成了一个
稳定的自激震荡器。
单片机时钟电路外部接线图如图
2-21所示:
图2-21单片机时钟电路外部接线图
其中电容为33pf,晶振频率为12MHZ。
2.3显示电路
在本系统中采用四位一体共阳极数码显示器实现动态显示,以P0口作段控,P2.1
口作位控,(输出低电平有效)对温湿度传感器采集的数据进行显示。
显示端通过
P0.0~P0.3位控,哪个端口为低电平时,哪个晶体管显示器接通。
显示电路模块电路如
图2-31所示:
图2-31显示电路模块电路图
2.4按键电路
在本系统中,采用P3口作键盘按键的端口,对键盘的列矩阵扫描,扫描单片机的
CDEF键,C键的作用是开始采集温湿度数据,D键的作用是显示湿度,E键的作用是显
示温度,F键的作用是实现时时监控,按键电路如图
2-41所示:
图2-41按键电路图
第3章软件设计与说明
3.1主程序设计
主程序模块中包括了初始化程序、按键扫描程序、温湿度采集程序和温湿度显示
程序,其主程序流程图如图3-11所示。
图3-11主程序流程图
3.2温湿度采集子程序
DHT11采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据
+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit。
其通讯过程简介:
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大
于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待
20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。
DHT11原理图如图3-21所示:
图3-21DHT11原理图
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位
是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
温湿度采集程序流程图如图3-22所示。
图3-22DHT11程序流程图
3.3显示子程序
显示采用LED晶体管显示,P0口作段选,P2口作位选,程序流程图如图2-31所
示:
图3-31LED晶体管显示程序流程图
第4章调试结果与调试说明
本次试验的调试并不是很顺利,出现了很多的问题,但在我们的细心琢磨下最终把
实验调试完毕,其调试中出现的几个案列有:
1、电路板短焊。
在数码管显示的过程中,该显示数字2时,其左上角的那个管脚
还是亮着的,在分析程序没有错误的情况下,我们把控制f的管脚拔出来了,其端口
由P0.5控制,能显示正常,最后考虑到是电路板的问题,我们把焊接电路板
P0.5端
仔细一看,P0.5和P0.4的焊锡丝融在一起了,当用电烙铁把两端口的焊铁分开,分开
后,调试正常。
2、程序调试不成功。
根据老师要求,要对温湿度实施时时监控,我们当时的程序做出来的效果只能像个多用电表一样通过按键测试温湿度,不能像个监控程序一样,但是我们还是做了很多尝试的。
首先,我们把显示温湿度的子程序做成了一个无限循环的程序,让它显示了温湿度后又开始采集数据,延时,再显示,但是做出来后显示的是“----”,发现不行后我们最后用了定时器,在主程序中调用定时器功能,再添加一个时时监控子程序,调试后能实现时时监控了。
图4-1与4-2分别为湿度和温度显示的调试结果图:
图4-1湿度显示图
图4-2温度显示图
第5章总结
作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想做类似的课程设计就为我们提供了良好的实践平台。
这次单片机课程设计我们历时两个星期,在我们班里也算是前面几个完成的吧,但经过这两个星期的实践和体验下来,对我们来说学到的不仅是那些知识,更多的是团队和合作。
现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!
这项看起来不需要多少技术的工作却是非常需要耐心和精力的,在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。
更重要的是如何把自己平时所学的东西应用到实际中。
虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很
难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐
步从基础慢慢开始弄懂它。
我认为这个收获应该说是相当大的。
觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。
最后,我得感谢在为我们这次课程设计精心指导的李老师和王老师,是她们的付出才
使得我们有现在的进步,谢谢老师,您们辛苦了!
参考文件
[1]王迎旭等.单片机原理及及应用.机械工业出版社.2012年
[2]郭天祥.10天征服单片机,延边教育出版社
[3]阎石.数字电子技术,高等教育出版社
[3]康华光.模拟电子技术.高等教育出版社附录A:
系统原理图
图A系统原理图
附录B:
程序清单
#include 键盘扫描 unsignedcharstatus; #defineucharunsignedchar #defineuintunsignedintunsignedcharled_code[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x9c,0x89}; *共阳字型段码表,"0"--"F","-"* unsignedcharled0,led1,led2,led3; unsignedcharvalue_array[5]; 存放五字节数据的数组 *可在其他的文件引用温湿度值,实际是温度的整数的10倍 如dht11读回的温度是26,则temp_value=260,湿度同理* unsignedcharvalue_temp,value_0; 函数执行过程发生错误就退出函数 } 26-28us的高电平表示该位是 DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); 0, 为 70us 高电平表该位 1 延时 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; EA=0; dht11=0; Delay_1ms(20); dht11=1; 拉低数据线大于18ms发送开始信号 需大于18毫秒 释放数据线,用于检测低电平的应答信号 延时20-40us,等待一段时间后检测应答信 号,应答信号是从机拉低数据线 80us DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); if(dht11! =0) 检测应答信号 应答信号是低电平 { 没应答信号 EA=1; returnERROR; } else { 有应答信号 while((dht11==0)&&(count++ 等待应答信号结束 检测计数器是否超过了设定的范 围 { dht11=1; EA=1; returnERROR; 读数据出错 退出函数 } count=0; dht11=1; 释放数据线 应答信号后会有一个 80us 的高电平, 等待高电平结束 while((dht11! =0)&&(count++ if(count>=NUMBER) { dht11=1; EA=1; returnERROR; 退出函数 } 读出湿.温度值 for(i=0;i { value_array[i]=DHT11_ReadValue(); if(status==ERROR) 调用ReadValue()读数据出错会设定status为ERROR { dht11=1; EA=1; returnERROR; } 读出的最后一个值是校验值不需加上去 if(i! =SIZE-1) { 读出的五 字节数据中的前四字节数据和等于第五字节数据表示成功 check_value+=value_array[i]; } } endfor 在没用发生函数调用失败时进行校验 if(check_value==value_array[SIZE-1]) { 将温湿度扩大 10倍方便分离出每一位 value_OK;正确的读 出dht11输出的数据 } else { 校验数据出错 EA=1; 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];delay(5); P2=0xf7;P0=led_code[led3];delay(5); } 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,cishu; for(cishu=0;cishu<2;cishu++) { d=DHT11_ReadTempAndHumi(); if(d==1) { led0=16; led1=16; led2=16; led3=16; } } } voidxianshishidu(void) {unsignedchare; e=value_() { unsignedcharkey; delay_1_002s(); display(led0,led1,led2,led3); while (1) { display(led0,led1,led2,led3); key=keyscan(); switch(key) { case0xe0: ceshiwenshidu();break; case0xd0: xianshishidu();break; case0xb0: xianshiwendu();break; case0x70: break; } 开始测试温湿度 显示湿度 显示温度 } for(cishu=0;cishu<2;cishu++) { key=DHT11_ReadTempAndHumi(); if(key==1) { led1=value_temp%10; led0=value_temp10; led3=value_humi%10; led2=value_humi10; } } while (1) { display(led0,led1,led2,led3); } } 电气与信息工程系课程设计评分表 评价 项目 优良中及格差 设计方案合理性与创造性(10%) 开发板焊接及其调试完成情况*(10%) 硬件设计或软件编程完成情况(20%) 硬件测试或软件调试结果*(10%) 设计说明书质量(20%) 答辩情况(10%) 完成任务情况(10%) 独立工作能力(10%) 出勤情况(10%) 综合评分 指导教师签名: ________________ 日期: ________________ 注: ①表中标*号项目是硬件制作或软件编程类课题必填内容; ②此表装订在课程设计说明书的最后一页。 课程设计说明书装订顺序: 封面、任务书、目录、正文、评分表、 附件(非16K大小的图纸及程序清单)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 环境 温湿度 检测 系统 设计 单片机 毕业 课程设计