环境温、湿度检测系统设计——课程设计论文

上传人:good****022 文档编号:116529943 上传时间:2022-07-05 格式:DOC 页数:29 大小:811.50KB
返回 下载 相关 举报
环境温、湿度检测系统设计——课程设计论文_第1页
第1页 / 共29页
环境温、湿度检测系统设计——课程设计论文_第2页
第2页 / 共29页
环境温、湿度检测系统设计——课程设计论文_第3页
第3页 / 共29页
点击查看更多>>
资源描述
湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 温湿度检测系统 专 业 自动化 班 级 学 号 姓 名 指导教师 年 月 日湖南工程学院课 程 设 计 任 务 书课程名称 单片机与应用 课 题 环境温、湿度检测系统设计 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 年 月 日任务完成日期 年 月 日设计内容与设计要求设计内容:本课题要求以单片机为核心,采用温湿度传感器 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 王迎旭等.单片机原理及及应用.机械工业出版社.2012年目录第1章 系统总体方案设计81.1系统设计方案总体思路81.2系统总体方案框图8第2章 硬件设计92.1 STC89C52简介92.2 晶振电路92.3 复位电路92.4 共阳数码管显示电路102.5 键盘电路102.6 DHT11传感器电路112.7 报警电路12第3章 软件设计与说明123.1系统软件设计思路123.2 主程序设计133.3 键盘函数143.4 显示程序设计15第4章 调试结果与说明174.1 系统调试说明174.2 调试结果17第5章 总结18参考文献19附录A 系统电理图路原20附录B 系统程序清单21第1章 系统总体方案设计1.1系统设计方案总体思路根据课题,设计温湿度检测系统电路,采用单片机STC89C52为控制芯片。根据设计要求所需的实现要求,将总电路分为键盘接口电路、单片机时钟电路、复位电路、LED显示电路、DHT11传感器电路、报警电路几个模块。键盘接口电路为4*4矩阵式键盘,采用查询法,键盘连接到单片机的P2口(P1.0-P1.3列线, P1.4-P1.7行线),在本系统中采用内部时钟电路,由一个石英晶体管振荡器和两个微调电容组成;复位电路中给给RST引脚连续输入2个机器周期(即24个时钟振荡周期)以上高电平,就可完成初始化操作;显示电路与单片机I/O相连,采用4段7位共阳LED显示管显示温湿度。1.2系统总体方案框图 根据设计思路确定的总体方案如图1-2所示。DHT11传感器STC89C52 晶振电路键盘电路LED数码管显示复位电路段码位控制报警电路 图1-2 系统总体框图第2章 硬件设计2.1 STC89C52简介STC89C52是STC公司生产的一种低功耗高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。STC89C52使用经典的MCS-51内核,但做了很多改进使得芯片具有传统51单片机不具备的功能。拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 2.2 晶振电路 单片机工作的时间基准是由时钟电路所控制的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C1和C2对振荡频率有微调作用,均选用20pF,石英晶体选择12MHZ。 晶振电路如图. 图2-2 晶振电路 2.3 复位电路复位电路是保证单片机正常运行的关键因素,所以可靠地复位电路设计是必要的。将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.7相连,列线与P1.0-P1.3相连。本系统采用4个键:键0:启动系统,传感器有响应。键1:设置温湿度的上下限。键2:暂停。键3:单片机复位,系统停止工作。键盘电路如下 : 图2-5 键盘电路图2.6 DHT11传感器电路DHT11是一种能对环境的温湿度参数进行采样的传感器。传感器中的DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据。+8bi温度整数数据+8bit温度小数数据。+8bit校验和。DHT11传感器电路如下: 图2-6 DHT11传感器电路2.7 报警电路蜂鸣器是一种一体化的电子通讯响应器。在本系统中,当温湿度超过其上下线时报警。 图2-7 报警电路第3章 软件设计与说明此次系统设计是通过C语言编程,其中包括数码管显示部分、键盘扫描部分、传感器采样温湿度部分。3.1 主程序设计主程序初始化,主程序循环扫描是否有键按下,如有键按下则做出相应的功能处理,若无键按下则继续执行显示函数。3.4 显示程序设计显示采用4位共阳数码管,段码在程序数据区定义,根据需要查表取得,再送往P0口,以控制数码管显示不同字符数字。位码由P2.0P2.3口分别控制晶体数码管的位控位W4W1,以控制各个数码管显示。开始保护现场开始初始化查表取字型码送段码送位码延时显示4位显示扫描完?NY恢复现场返回 图3-4 显示程序流程图第4章 调试结果与说明4.1 系统调试说明本系统调试过程中采用直接硬件调试的方法,对整体的系统程序进行分解排故,首先对八段显像管进行数字显示测试,然后对键盘进行按键响应测试,当测试都得到正确结果时,将键盘与显示结合起来,并给予恰当的字型码,最后加入定时器中断程序,给出正确的脉冲信号和频率。调试过程中,数码管显示的数字闪烁,原因是传感器接触不良,后换了导线,数字不在闪烁。按键出现按下一键响应多次的情况,后查出由于键位抬起子程序书写不当,造成键盘多次响应,并加上了松手去抖程序后问题得以顺利解决。4.2 调试结果接上温湿度传感器DHT11后和电源后,将程序下载到板子上,按下0号键启动,执行程序,数码管上显示了环境的温湿度参数。 图5-1 显示环境温湿度参数第5章 总结 经过两周的单片机课程设计,终于完成了单片机环境温湿度检测系统的设计,其中收获许多,付出了许多精力和时间,实践能力的到了一定的提高。刚学完单片机并且经历了考试,我一直以为我对单片机有了不少的了解,课透过此次课程设计,我才看到了自己的诸多不足,也学到了很多知识与技巧。虽然之前有做过不少课程设计,但以前大多是单独的软件或者硬件设计,这次设计让我有了长足的进步,真正实现了对单片机硬件与软件的兼顾与融会贯通。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事。由于C语言学习较早,很多技巧与方法早就忘得差不多了,上课与做实验,我一直以来都是使用汇编语言来编写程序,可课题的复杂度明显比试验中遇到的要大得多,C语言编程的方便性让我不得不着手C语言开始。这也让我再次巩固了以前学习的专业知识。面对大量的参考资料甚至是几乎现成的参考报告,我选择了在学习吸纳的基础上另辟蹊径,虽然遇到困难的时候都想放弃,直接用现成的程序和报告,可看到其他同学和我一样在埋头苦干、老师期盼的眼神,我选择了坚持下来,当然,现在这是我骄傲的资本。虽然这个课题不算难,但是从硬件电路到最后程序的编写和调试都是自己摸索出来的,这个过程中也遇到了不少困难,更多的是成功后的喜悦,学习永无止境,只有把学习和实践当做一种乐趣那么即便有再大的困难也会是一种享受。 参考文献1 王迎旭. 单片机原理与应用 M.北京:机械工业出版社,2004.2 陈海宴. 51单片机原理及应用 M.北京:北京航空航天大学出版社,2010.3 胡汉才. 单片机原理及其接口技术 M.北京:清华大学出版社,2010.4 李全利. 单片机原理及应用技术 M.北京:高等教育出版社,2004.5 陈光东. 单片微型计算机原理及接口技术 M.华中科技大学出版社,2001.6 何立民. 51系列单片机应用与实践教程 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 intunsigned char code led_code=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90, 0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e,0 xbf;/*共阳字型段码表,0-F,-*/uchar led0,led1,led2,led3;/*- 函数声明-*/ uchar keyscan(void);/键盘扫描void delay(uint i); /延时程序void display(uchar led0,led1,led2,led3);/动态扫描显示程序/*- 主函数-*/void main() uchar key; P1=0 xff; /*关所有位显示*/ led0=16; /*显示初始状态“- - - 0”*/ led1=16; led2=16; led3=0; while(1) display(led0,led1,led2,led3); /*调显示*/ key=keyscan(); /调用键盘扫描, switch(key) case 0 x7e:led0=0;break; /0 按下相应的键,首位数码管显示相对应的值 case 0 x7d:led0=1;break; /1 case 0 x7b:led0=2;break; /2 case 0 x77:led0=3;break; /3 case 0 xbe:led0=4;break; /4 case 0 xbd:led0=5;break; /5 case 0 xbb:led0=6;break; /6 case 0 xb7:led0=7;break; /7 case 0 xde:led0=8;break; /8 case 0 xdd:led0=9;break; /9 case 0 xdb:led0=10;break; /a case 0 xd7:led0=11;break; /b case 0 xee:led0=12;break; /c case 0 xed:led0=13;break; /d case 0 xeb:led0=14;break; /e case 0 xe7:led0=15;break; /f /*- 键盘扫描程序,P1.0-P1.3列线, P1.4-P1.7行线,-*/uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P1=0 x0f; /行线输出全为0 cord_h=P1&0 x0f; /读入列线值 if(cord_h!=0 x0f) /先检测有无按键按下,cord_h不等于0 x0f无键按下 display(led0,led1,led2,led3); /*调显示*/ if(cord_h!=0 x0f) cord_h=P1&0 x0f; /读入列线值 P1=cord_h|0 xf0; /输出当前列线值 cord_l=P1&0 xf0; /读入行线值 return(cord_h+cord_l);/键盘最后组合码值 return(0 xff); /无键按下返回值/*- 动态扫描显示程序,P0段控,P2.0-P2.3位控 (反向驱动)-*/void display(led0,led1,led2,led3) / P2=0 xfe;P0=led_codeled0;delay(5);P2=0 xfd;P0=led_codeled1;delay(5);P2=0 xfb;P0=led_codeled2;delay(5);P2=0 xf7;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 unsigned char unint16; unsigned char table0= 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/不带小数点 unsigned char str1= ; unsigned char str2= ; sbit TRH = P30;/温湿度传感器DHT11数据接入 sbit LCD_RS = P26; sbit LCD_RW = P25; sbit LCD_EN = P27; void disp(unint8 str1,unint8 str2,unint8 str3,unint8 str4); unint8 TH_data,TL_data,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 delay_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+); else temp=0; com_data=1; com_data|=temp; return(com_data); void read_TRH() /主机拉低18ms TRH=0; delay_ms(18); TRH=1; /DATA总线由上拉电阻拉高主机延时20us delay_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(); 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 = 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 1 TH0=(65536-20000)/256; TL0=(65536-20000)%256; disp(str10,str11,str20,str21); void disp(unint8 str1,unint8 str2,unint8 str3,unint8 str4) P2=0 xfe; P0=str1; delay_ms(1); P2=0 xfd; P0=str2; delay_ms(1); /P2=0 xfb; /P0=str3; /delay_ms(1); P2=0 xfb; P0=str3; delay_ms(1); P2=0 xf7; P0=str4; delay_ms(1); /P2=0 xdf; /P0=str6; /delay_ms(1); 电气与信息工程系课程设计评分表项 目评 价优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。 29
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!