基于51单片机的温湿度测量仪课程设计报告书.docx

上传人:1513****116 文档编号:93929018 上传时间:2023-07-18 格式:DOCX 页数:37 大小:946.13KB
返回 下载 相关 举报
基于51单片机的温湿度测量仪课程设计报告书.docx_第1页
第1页 / 共37页
基于51单片机的温湿度测量仪课程设计报告书.docx_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《基于51单片机的温湿度测量仪课程设计报告书.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温湿度测量仪课程设计报告书.docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、邮电大学单片机应用课程设计2023-20231课设题目:基于单片机的简易温湿度测量仪序号分数1234夏恒发 文 翻 罗春雪王指导教师:黄 老 师班级学号性别工作量%01211012023210050男2001211012023210009女2001211012023210010女1501211012023210043男15琎5艺01211012023210069女156怡佳01211012023210072女15名目第1章摘要1第2章设计任务分析及方案论证12.1 设计要求12.2 设计方案及其论证12.3 器件选定22.4 AT89C51 单片机42.5 显示局部5第3章电路与程序设计63.

2、1 主掌握电路和测温时掌握电路63.2 主要模块的电路73.2.1 温湿度采集模块73.2.2 报警模块73.2.3 显示模块8第4章测试方案与测试结果104.1 测试方案及测试条件104.2 测试结果及其完整性104.3 测试结果分析10结论11心得体会12参考文献12附录13摘要本次设计是承受MSC-51 系列单片机中的AT89C51 和DHT11 构成的低本钱的温湿度的检测掌握系统。单片机 AT89C51 是一款低消耗、高性能的 CMOS8 位单片机,由于它强大的功能和低价位,因此在很多领域都是用它。DHT11 温湿度传感器是一款含有已校准数字输出的温湿度复合传感器,传感器包括一个电阻式

3、感湿原件和一个 NTC 测温元件,该产品具有品质卓越、超快响应、抗干扰力量强、性价比极高等优点。设计主要包括硬件电路的设计和系统软件的设计。硬件电路主要包括单片机、温湿度传感器、显示模块、报警器以及掌握设备等 5 局部。其中由DHT11 温湿度传感器及 1602 字符型液晶模块构成系统显示模块;测温湿度掌握电路由温湿度传感器和预设温度值比较报警电路组成;用户依据需要预先输入预设值,当实际测量的温湿度不符合预设的温湿度标准时,发出报警信号蜂鸣器蜂鸣,启动相应掌握。关键词:AT89C51;DHT11;温湿度传感器第 2 章 设计任务分析及方案论证2.1 设计要求以 MCS_51 系列单片机 AT8

4、9C51 学习板作为本次试验的核心器件,外接报警电路,温湿度采集电路,组成一个温湿度采集报警系统。根本要求温湿度采集使用 DHT11 芯片,报警电路用有源蜂鸣器作为报警器件;测量空气温湿度;通过数码管显示温度和湿度,显示位数准确到个位,要求观看时无闪耀;设置温度和湿度的上下限,通过蜂鸣器报警;将温度和湿度单位显示在数据后面,温度 C 或F、湿度%RH。提升局部:承受液晶显示,声音告警、闪耀显示告警项、按键设定上下限值,单位转换。2.2 设计方案及其论证本设计要实现的功能是:实时显示当前环境的温湿度,并且允许用户设定温湿度阀值,当环境温湿度超过或低于标准值时,系统会以蜂鸣器鸣响的方式进展报警提示

5、。温湿度传感器LCD1602、数码管温湿度显示单片机蜂鸣器用于用户设定温湿度准确值,1602 用于数据显示,蜂鸣器用于提示用户。依据系统的设计功能所要求的,温湿度监控系统原理图如以下图 2.2.1 所示:LED 灯图 2-2-1 温湿度监控系统原理图方案 1:利用 DHT11 与单片机上的数码管一起用来显示室温湿度。然后对当前的温湿度进展推断是否超出阈值。假设超出阈值,通过三极管放大作用使蜂鸣器报警。方案 2:利用 DHT11 采集温湿度,然后传入单片机,通过扩展槽连接到 LCD1602上,使用LCD1602 显示温湿度,然后在温湿度后面显示阈值。假设温度或湿度超出阈值,通过三极管使蜂鸣器报警

6、。方案 3:利用 DHT11 采集温湿度,将数据传入单片机,通过扩展槽连接到LCD1602,并一起使用数码管显示温湿度。阈值的显示在 LCD1602 上显示。假设温度或湿度超出阈值,通过三极管产生三种不同频率,使蜂鸣器发出不同的报警声音。2.3 器件选定2.3.1 测量局部:温湿度传感器DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的温湿度传感和数字模块采集技术,具有很高的稳定性和牢靠性,DHT11 传感器含一个 NTC 测温顺一个电阻式感湿元件,并与一个 8 位的高性能单片机相连接,在准确的湿度校验室中 DHT11 传感器进展过校准,以程序的形式校准系

7、数储存在 0TP 存中,检测信号的时候,在处理过程中传感器部要调用这些校准系数,承受单线制的串行接口,使系统集成可以有较低的功耗,而且更加简洁快速,信号传输距离超过 20 米,作为一个数字温湿度传感器 DHT11 具有响应快速、抗干扰强、性价比高等优点,它的性能指标如下:湿度测量围为2090RH;湿度测量精度为5RH;温度测量围为 050 ,温度测量精度为2,工作电压 3055 V,相应时间5S,DHT1l 承受 4 针单排引脚封装, 传感器通电后,需要等待 1s,这是由于要越过不稳定的状态,在此期间不需发送指令,电源引脚VDD,GND之间可增加一个 100nF 的电容, 用以去耦滤波。图 2

8、-3-1 典型的应用电路图 2-3-1DHT11 实物图(1) DHT11 温湿度传感器产品参数: 相对湿度分 辨 率:16Bit重 复 性:1%RH精度:25C5%RH迟滞:0.3%RH长期稳定性:0.5%RH/yr 温度分 辨 率:16Bit重 复 性:0.2C量程围:25C2C 电气特征供电:DC 3.5-5.5V供电电流:测量 0.3mA待机 60A 采样周期:次大于 2 秒引脚说明1VDD供电 3.5-5.5V(2) DATA 串行数据,单总线(3) NC 空脚(4) GND 接地,电源负极2.3.2 串行接口(单线双向)DATA 用于微处理器与 DHT11 之间的通讯和同步,承受单

9、总线数据格式, 一次通讯时间 4ms 左右,数据分小数局部和整数局部,具体格式在下面说明,当前小数局部用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为 40bit, 高位先出。数据格式:8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数数据+8bit 温度小数数据+8bit 校验和。数据传送正确时校验和数据等于“ 8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据”所得结果的末 8 位。DHT11发送响应信号的时候总线为低电平 ,DHT11把总线拉高 80us之前,必需等到响应信号发送,预备发送数据时,每一bit数据都以50

10、us低电寻常隙开头, 数据位是0或1是由高电平的长或短来打算。假设响应信号的读取为高电平 ,但是DHT11无响应响应,这时候说明路线可能连接不正常,当最终一bit数据传送完毕后,DHT11把总线拉低50us,接着总线由上拉电阻拉高进入空闲状态。2.3.3 引脚说明表 2.3.5 DHT11 引脚说明Pin名称注释1VDD供电 35.5V2DATA串行数据,单总线3NC空脚,悬空4GND接地,电源负极2.3.7 封装信息2.4 单片机资料简介图 2-3-6 DHT11 的封装信息:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片含4k bytes的可反复擦写的只读程序

11、存储器PEROM和128 bytes的随机存取数据存储器RAM,器件承受ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中心处理器CPU和Flash存储单元, 功能强大AT89C51单片机可为您供给很多高性价比的应用场合,可敏捷应用于各种掌握领域。2.5 显示局部:LCD显示局部是 LCD1602 液晶显示,2.5.1 引脚功能说明图 2-8 正常工作LCD1602 显示1602 液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。表 2-8-3 引脚接口说明表LCD1602 承受标准的 14 脚无背光或 16 脚带背光接口,各引脚接口说明符号

12、引脚说明1VSS地2VDD正极3VL液晶显示偏压4RS存放器选择5R/W读/写选择6EN使能信号7D0数据8D1数据9D2数据10D3数据11D4数据12D5数据13D6数据14D7数据15BLA背光源正极16BLK背光源负极图 2-8-3LCD1602 的管脚图图 2-8-3 1602 字符型液晶显示器实物图第 3 章 电路与程序设计单片机是整个系统的掌握中枢,它指挥外围器件协调工作,从而完成特定的功能,硬件实现上承受模块化设计,每一模块只实现一个特定功能,最终再将各个模块搭接在一起,这种设计方法可以降低系统设计的简单性,本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路,LCD 显示电路

13、以及温湿度传感器电路。3.1 主掌握电路和测温时掌握电路本次硬件的核心就是 AT89C511,其他的外围电路都是围绕它所设计的。数字温湿度传感器的 DHT11 的 DATA 口连接单片机 AT89C51 的 P1.7 口。显示电路就是把 LCD1602 和单片机的 P2 口分别相连,当温度或湿度高于预设值的时候蜂鸣器蜂鸣报警,代表掌握系统的指示灯闪耀。3.2 主要模块的电路3.2.1 系统的蜂鸣器电路图 3-2-1蜂鸣器电路开头void warning/报警函数HXD=0,蜂鸣器报警(RHH|RHL)&(HT|LT)HXD=1 , 蜂鸣器不报警uchar i;HXD=1;/蜂鸣器不报警if(R

14、HH|RHL)&(HT|LT)for(i=0;i5;i+)报警电路流程图HXD=0;Delay(2023);HXD=1;Delay(2023);HXD=0;Delay(2023);HXD=1;/温湿度都超标时,频率 1 报警报警模块子程序3.2.2 传感器电路DHT11 是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度,DHT11 承受的是单总线通信,因此只需将单片机的一个 IO 端口与DHT11 的通信接口连接就可以实现数据的采集和传送,相对于其他电路来说比较简洁。如图 3.4 所示:3.2.3 显示电路图 3-2-5 传感器电路显示模块选用 1602 字符型液晶模块,它是目

15、前工控系统中使用最广泛的液晶屏之一,由于它显示的质量高,电路图如图 3.4 所示,1602 字符型液晶模块是点阵型液晶,驱动便利,经过编程后显示容多样化。图 3-2-4 显示电路显示子程序开头void display/数码管显示函数初始化P0=0;P1=0X0Cuint j=0;段选/位选Seq_Tab/Dig_Tab P0=0XFF;Digce=1;Digce=0;完毕数码管显示流程图P0=Seg_Tab10;Segce=1;Segce=0;LCD 模块开头P0=Dig_Tab4;Digce=1;DigceLCD_init 初始化,清屏=0;for(j=0;j500;j+);设置输入指令函数

16、LCD_write_command设置输入数据函数LCD_write_data单数据显示函数LCD_disp整体显示函数LCD_display完毕LCD 显示流程图P0=0XFF;Digce=1;Digce=0; P0=Seg_Tab11;Segce=1;Segce=0;P0=Dig_Tab0;Digce=1;Digce=0;for(j=0;j500;j+);P0=0XFF;Digce=1;Digce=0; P0=Seg_Tab12;Segce=1;Segce=0;P0=Dig_Tab1;Digce=1;Di gce=0;for(j=0;j500;j+);P0=0XFF;Digce=1;Dig

17、ce=0; P0=Seg_Tabd4;Segce=1;Segce=0;P0=Dig_Tab2;Digce=1;Di gce=0;for(j=0;j500;j+);P0=Seg_Tabd3;Segce=1; Segce=0;/*LCD 液晶屏函数局部*voidLCD_write_command(uchardat)/写指令LCD_DB=dat;LCD_RS=0;/指令LCD_RW=0;/写入LCD_E=1;/允许delay_n40us(1);LCD_E=0;delay_n40us(1);第 4 章显示模块子程序测试方案与测试结果4.1 测试方案及测试条件 软件调试将整个硬件电路通过学习板上的接口与

18、电脑上的软件 Keil uVision4 连接, 运行程序,此时学习板上的数码管显示的为测量的当前温湿度值室温。 转变测量温湿度值用手握住 DHT11,人为转变芯片所处环境温度,观看数码管上显示的温度值是否有转变。超出初始设定温度上下限时,蜂鸣器发出响声报警;对着 DHT11 哈气,转变湿度,观看数码管上显示的湿度度值是否有转变。超出初始设定湿度上下限时,蜂鸣器发出响声报警 软件设定报警温湿度上下限值在 Keil uVision4 中直接转变初始设定的报警温湿度值,运行程序,观看显示效果。超出设的报警温湿度,蜂鸣器发出响声报警。4.2 测试结果及其完整性 能正常显示 DHT11 测量到的温湿度

19、。显示无闪耀,有效值准确到小数点后一位; 超出设定的报警温湿度值,蜂鸣器发出不同频率响声报警; 当显示温度值在设定温度值之时,蜂鸣器不发出声音; 屡次转变报警温度上下限值,蜂鸣器能在每次显示温度值超出设定报警值时发出声音报警。4.3 测试结果分析 稳定无闪耀显示当前环境温湿度值,有效值准确到小数点后一位。转变环境温湿度,显示转变; 蜂鸣器在显示温湿度超出设定的上下限值时发出响声报警,显示温湿度在设定围之时,不发出声音; 屡次转变报警温度上下限值,转变 DHT11 所处环境温度,每次超出设报警温度值时,蜂鸣器都可以准确发出声音报警。依据温湿度监控系统功能,系统软件流程图如图 41 所示:图 4-

20、1 系统流程图结论本文设计的是粮库的温湿度监测报警、掌握系统。由高性价比单片机对数字温湿度传感器掌握,通过温、湿度传感器,实现对温湿度数据采集,并对数据处理、LCD1602显示屏显示即时温、湿度值。当温湿度数据超出设定温、湿度值时,由单片机驱动报警装置,实现现场报警功能,掌握系统自行启动,调整不在围的温、湿度,使其恢复正常。首先,介绍了设计的核心组成局部单片机 AT89S51的的根本构成和原理, 简要的说明白单片机的最小系统,中断系统,复位电路和时钟电路。然后介绍了显示局部 LCD1602的各个引脚和指令说明,为下面的编程做预备。其次,介绍了本次设计的传感器:DHT11温湿度传感器。然后给出了

21、主要模块电路的构造,在硬件连接以后,初步的硬件运行结果,以实物图的形式进展了说明。介绍了掌握温、湿度的设备,在依据不同环境下的应用和选择。最终,说明白用到的软件,给出了总体的原理图和流程图和Proteus 运行结果,以便更好的理解。最终程序检查正常,焊接成品,硬件运行正常,满足了初步设计要求,到达了粮库温、湿度掌握的目的。在设计中还有缺乏的局部,在现场掌握时,保证传感器不受条件因素的影响是很重要的,由于争论时间和条件的限制,粮库温、湿度还有很多地方需要深入争论。心得体会这次的课程设计是要求做一个 DHT11 的温湿度传感器,才拿到这个任务的时候,看着上面的要求,觉得似乎是一个挺大的工程的,当时

22、感觉还是比较迷茫的。于是我们从找资料到买器材就花了一周的时间,这期间对于 DHT11 的一些性能有了初步的了解,也对一些实际的电路器材有了生疏,但到底都是第一次做这种工程,所以光是完全确认原理电路和元件清单就用了很久,不过还好最终根本上预备齐全了。做工程的第一步,我们组是在一起争论了一个比较完善的焊接电路图,由于只是 51 板的一个外拓模块,且元器件也不是很多,所以留给我们的设计空间很大,最终我们打算了一个充分利用板子大小的方案来作为最终的方案。然后其次步,我们则是焊电路和编程一块进展的。在焊电路过程中,由于有设计图做参考,所以比较顺当,而在程序编写过程中,则遇到了一些困难。比方DHT11 的

23、数据传输有严格的时间标准,但是我们设计的延时程序总是与传输标准存在误差,导致无确接收数据。还有数据处理上面,由于没有进展字符型转化, 所以一开头在 LCD 液晶屏上显示的是乱码。再就是对于按键设置上面,一开头是预备添加按键功能的,然后在编程过程中觉察对于单一的温度或者湿度的按键调整比较好编,但是模式转换和将两者结合在一起的地方感觉思路很混乱,最终由于其他模块还亟待改善,就放弃了这个模块的添加。最终在全部设计完了以后做硬件调试时还觉察了蜂鸣器始终会叫,检查了几遍也没觉察错误,结果后来换了一个端口就没事了,一开头用的是 P0 口,后来是把 LED 灯的端口用来做蜂鸣器端口,觉察鸣叫正常了,而且 L

24、ED 灯也会亮起报警,是意料之外的惊喜。最终,这一次的课程设计真的让我们学到了很多,从一开头的资料查找,到购置原件,再到设计电路和编写程序,让我们切实的感受到了一个工程的完成需要做很多的预备和付出很多的精力。不过在这同时我们收获的也很多,总之这次课程设计让我们对单片机这一块有了很大的提高,很有意义。参考文献1 电子发烧友网.elecfans./.2 谭浩强.C 语言程序设计第三版清华大学.3 胡汉才.单片机原来及其接口技术第三版清华大学.4 :最全面的 DHT11 中文资料wenku.baidu./view/fc98050003d8ce2f00662316.html.5 :单片机驱动蜂鸣器原理

25、与设计wenku.baidu./view/c7aa15687e21af45b307a8e8.html.6 :DHT11 数据手册wenku.baidu./view/1a2bb48fa0116c175f0e48f6.html附录附录A硬件原理图附录B代码#include #include#define uchar unsigned char #define uintunsigned int #define LCD_DBP2ucharSeg_Tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39, 0x76,0x77,0x63;/uch

26、ar Seg1_Tab=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; uchar Dig_Tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar temp_H,temp_L,humi_H,humi_L;uchar value,check,bt,sum,bt_temp,keynum,flag; uchar tH,tL,hH,hL,RHH,RHL,HT,LT;uchar warning_RHHL2=65,20; uchar warning_THL2=25,16; uchar m,n,d1,d2,d3

27、,d4,d5,d6; uchar TD=0;uchar s15; uchar s25;sbit Segce=P10; sbit Digce=P11; sbit Keyce=P13; sbit LCD_RS=P14; sbit LCD_RW=P15; sbit LCD_E=P16; sbit DHT11=P17; sbit HXD=P12;/*延时函数局部* void Delay(uint j) /(j/10)msuchar i; for(;j0;j-)for(i=0;i0;i-)for(j=0;j2;j+);/*DHT11 数据接收处理与数码管显示局部*void inter_init/初始化函

28、数P0=0;P1=0x0c;TMOD=0x01;TH0=-50000/256; TL0=-50000%256; EA=1;ET0=1;void COM(void)/DHT11 的 bit 读取uchar i; for(i=0;i8;i+)flag=2; while(!DHT11)&flag+);Delay_10us; Delay_10us; Delay_10us; bt=0; if(DHT11)bt=1;flag=2; while(DHT11)&flag+);/超时则跳出 for 循环if(flag=1)break;/推断数据位是 0 还是 1/ 假设高电平高过预定 0 高电平值则数据位为 1

29、value= warning_RHHL0)RHH=1 ;else RHH=0; /湿度与最大值相比if(n= warning_THL0)HT=1 ;else HT=0;/温度与最大值相比if(m= warning_THL1)LT=1 ;else LT=0; /温度与最小值相比s10 = (char)(0X30+d3);s11 = (char)(0X30+d4); /湿度整数局部s12 = (char)(0X30+d6); /湿度小数局部s20 = (char)(0X30+d1);s21 = (char)(0X30+d2); /温度整数局部s22 = (char)(0X30+d5); /温度小数

30、局部void warning/报警函数uchar i;HXD=1;/蜂鸣器不报警if(RHH|RHL)&(HT|LT)for(i=0;i5;i+)HXD=0;Delay(2023); HXD=1;Delay(2023); HXD=0;Delay(2023); HXD=1;/温湿度都超标时,频率 1 报警else if(RHH|RHL)|(HT<)for(i=0;i5;i+)HXD=0;Delay(1000); HXD=1;Delay(1000); HXD=0;Delay(1000); HXD=1;/ 只有湿度超标时,频率 2 报警else if(RHH&RHL)|(HT|LT)for(i=

31、0;i5;i+)HXD=0;Delay(500);HXD=1;Delay(500);HXD=0;Delay(500);HXD=1;/ 只有温度超标时,频率 3 报警/ 蜂鸣器报警void display/数码管显示函数uint j=0; P0=0XFF;Digce=1;Digce=0; P0=Seg_Tab10;Segce=1; Segce=0;P0=Dig_Tab4;Digce=1;Digce=0;for(j=0;j500;j+); P0=0XFF;Digce=1;Digce=0;P0=Seg_Tab11; Segce=1;Segce=0; P0=Dig_Tab0;Digce=1;Digce

32、=0;for(j=0;j500;j+); P0=0XFF;Digce=1;Digce=0; P0=Seg_Tab12;Segce=1;Segce=0; P0=Dig_Tab1;Digce=1;Digce=0;for(j=0;j500;j+); P0=0XFF;Digce=1;Digce=0; P0=Seg_Tabd4;Segce=1;Segce=0; P0=Dig_Tab2;Digce=1;Digce=0;for(j=0;j500;j+); P0=Seg_Tabd3;Segce=1;Segce=0; P0=Dig_Tab3;Digce=1;Digce=0;for(j=0;j500;j+); P0=Seg_Tab13;Segce=1;Segce=0; P0=Dig_Tab5;Digce=1;Digce=0;for(j=0;j500;j+);P0=0XFF;Digce=1;Digce=0; P0=Seg_Tabd2;Segce=1;Segce=0; P0=Dig_Tab6;Digce=1;Digce=0;for(j=0;j500;j+); P0=0XFF;Digce=1;Digce=0; P0=Seg_Tabd1;Segce=1;Segce=0; P0=Dig_Tab7;Digce=1;Digce=0;for(j=0;j=1)&(TD=100)display;ti

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁