基于51单片机温湿度与时钟显示器

上传人:第*** 文档编号:61115476 上传时间:2018-11-24 格式:DOC 页数:22 大小:30.17MB
返回 下载 相关 举报
基于51单片机温湿度与时钟显示器_第1页
第1页 / 共22页
基于51单片机温湿度与时钟显示器_第2页
第2页 / 共22页
基于51单片机温湿度与时钟显示器_第3页
第3页 / 共22页
基于51单片机温湿度与时钟显示器_第4页
第4页 / 共22页
基于51单片机温湿度与时钟显示器_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《基于51单片机温湿度与时钟显示器》由会员分享,可在线阅读,更多相关《基于51单片机温湿度与时钟显示器(22页珍藏版)》请在金锄头文库上搜索。

1、1、 背景知识随着电子技术的发展和人们生活水平的不断提高。人类对科学技术的不断研究,不断创新纪录。单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中温度传感器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的温度传感器与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机STC89C52RC增强型芯片,测温传感器使用DHT11,用LCD1602A实现温度显示,能准确达到以上要求。2、 课程设计目的通

2、过基于MCS-51系列单片机STC89C52RC增强型和DHT11温湿度传感器检测温度和湿度,熟悉对DHT11传感器的使用,温度传感器的功能,LCD1602A液晶显示,C语言的设计;并且把我们这两年所学的数字和模拟电子技术、检测技术、以及这个学期学的单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础3、 工具/准备工作准备工具材料如表1所示:表11单片机STC89C5

3、2RC1片2发光二极管1只312M晶振1个4电阻、电容若干5排针若干6按钮及开关若干7电烙铁1个8焊锡若干9蜂鸣器1个10LCD1602液晶显示器1个11DHT11温湿度传感器1个12电位器1个13PNP三极管1个14电源线1条4、 设计步骤及原理步骤1:原理图分析与设计单片机最小系统原理图如图4-1-1所示:图4-1-151单片机最小系统包括了主要由电源、复位、振荡电路以及扩展部分等部分组成。对于电源供电模块可以通过USB电源线连接电脑供给,另外也可以用外部稳定的5V电源供电模块供给。对于复位电路,本设计中采用按键复位方法。按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST

4、也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。对于时钟震荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。而本次设计采用了12MHz的晶体振荡器作为震荡源。 温湿度传感器温湿度数据采集模块如图4-1-2所示,DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2,量程湿度20-90%R温度050。DHT11数 图4-1-2字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元

5、件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。本设计中采用DHT11传感器将采集的温度传送给单片机,然后内部进行BCD码转换,最后通过LCD1602液晶显示器显示出来。 LCD1602液晶显示器模块如图4-1-3所示,602字符型LC

6、D通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。本次设计中将多出来的15脚接上VCC,然后GND(16脚)接到单片机的P24口,然后通过按键K5 图4-1-3来控制P24口输出电平的状态从而控制LCD1602液晶显示器的背光的开关。仿真中由于无法仿真背光效果,只能通过LED状态图4-1-4确定,如图4-1-4所示。通过网上查阅LCD1602液晶显示器的芯片手册可以知道,将D0-D7八个数据口连接P0,然后通过RS、RW以及使能端E控制LCD的读写操作。步骤2:流程设计通过对课本的学习以及课外学习的

7、知识,然后根据自己的构想来设计实现怎么样的效果,通过对软件设计思路的分析,得到该设计的系统主程序流程图如图4-2-1所示:开始定时器初始化显示器初始化系统初始化Flag=1定时器中断写入框架显示调用键盘扫描刷新温度数据对时分秒位进行运算调用温湿度函数图4-2-1系统开始后,先对定时器以及显示器进行初始化,然后写入框架显示时间和温度。当定时器中断时,内部对秒进行自加,加到60s后自动归零且分自加,其它时间标志位也是一样。当然,每1s满时显示会刷新一次从新显示新的数据,温度函数也是按照指定时间进行测量刷新。步骤3:软件编程1. 建立LCD.H文件#ifndef _LCD_H_#define _LC

8、D_H_#include#define uchar unsigned char#define uint unsigned int#define LCD1602_DATAPINS P0sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;void Lcd1602_Delay1ms(uint c); void LcdWriteCom(uchar com);void LcdWriteData(uchar dat);void LcdInit(); #endif2. 建立LCD.C函数#includeLCD.h/包含自建立库文件void L

9、cd1602_Delay1ms(uint c) /延时函数 uchar a,b;for (; c0; c-) for (b=199;b0;b-) for(a=1;a0;a-); void LcdWriteCom(uchar com) LCD1602_E = 0; LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = com 4; Lcd1602_Delay1ms(1

10、);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;void LcdWriteData(uchar dat)LCD1602_E = 0;LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DATAPINS = dat;Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat 4;Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD

11、1602_E = 0; void LcdInit()/初始化LcdWriteCom(0x32); LcdWriteCom(0x28); LcdWriteCom(0x0c); LcdWriteCom(0x06); LcdWriteCom(0x01); LcdWriteCom(0x80); 3. 建立DHT11.H库文件#ifndef _DHT11_H_#define _DHT11_H_#include #include #define uchar unsigned char#define uint unsigned intsbit DHT_DATA = P10;bit DHT_Start();b

12、it DHT_ByteRead(unsigned char *dat);#endif4. 建立DHT11.C文件#includeDHT11.hvoid delay_ms(unsigned char x) unsigned char a;while(x-)for(a=0;a0;a-);void delay_40us(void) unsigned char a,b; for(b=3;b0;b-) for(a=4;a0;a-);bit DHT_Start()unsigned char m=0;DHT_DATA=1;DHT_DATA=0;delay_ms(20);DHT_DATA=1;delay_40

13、us();if(DHT_DATA=1)return 0;else while(DHT_DATA=0)&(m200)m+;delay_40us();delay_40us();return 1;bit DHT_ByteRead(unsigned char *dat)unsigned char temp=0;unsigned char x,y;unsigned char m=0;unsigned char n=0;unsigned char mask=0x01;unsigned char sum=0;for(y=0;y=1)while(DHT_DATA=0&m200)m+;delay_30us();if(DHT_DATA)temp|=mask;elsetemp&=(mask);while(DHT_DATA=1&n200)n+;*(dat+y)=temp;temp=0;for(x=0;x4;x+)sum+=*(dat+x);if(sum&=0xff)=*(dat+4)return 1;

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号