毕业设计 基于51单片机的室内环境监测系统的设计

2024-03-04 01:10

本文主要是介绍毕业设计 基于51单片机的室内环境监测系统的设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机的室内环境监测系统的设计 

1 硬件设计

1.1 控制系统的选型

在选用控制系统时,需要对市面上各种芯片进行对比,选用最适合的芯片。为了应对zigbee和RF4CE应用难题,TI公司研发了一款能够结合这类应用的cc2530芯片。cc2530是一款高性能、高标准的芯片,具有多种标准接口,是一款兼具性能和性价比的芯片产品,而且这类芯片的型号较多,具有兼容多种型号的引脚,也可以兼容各种开发软件,从而可以适用于多款应用。更方便于个体研究。性能方面,这款芯片配备高效RF收发器。是标准的增强型8051CPU。cc2530具备不同的运行模式,且备较高的抗干扰和穿透。,很适用于低功耗无线传感网络中。所以cc2530很适合作为此设计的控制芯片。

1.2模块电路

1.2.1 系统单片机核心电路

cc2530通过引出一系列的外接引脚,用于控制系统各模块。单片机系统的核心电路图如下图3所示:

单片机系统核心电路图

1.2.2 系统的晶振电路

此单片机晶振电路用引脚PC14和引脚PC15连接到单片机,再通过单片机介入osc-in和osn-out,提供了稳定时序进入单片机,为使晶振能够谐振,加入了电容,方便产生时间的序列。在偏激中最为重要的就是时钟。

晶振电路原理如图4所示:

晶振电路原理图

1.2.3 复位电路设计

当系统监测到环境中有数据超标之后会触发系统报警。当问题得以解决之后,要使系统回复之处状态继续运行。我们就需要设计一个复位电路,复位电路图如图5所示:

复位电路原理图

1.2.4 呼吸灯原理

本课题设计基于cc2530单片机系统的呼吸灯要求在报警时能够频闪。单片机上的灯只有两种状态,通电时亮,断电时灭。要让灯由暗到亮再到暗,原理就是让灯以肉眼观察不到的频率闪烁,灯暗的时候其实是灯闪烁频率较低,逐渐加快频率,小灯就越来越亮,在到达设置的最高频率时灯就最亮,然后又降低频率,灯又慢慢变暗。以这种规律重复让灯闪烁就达到呼吸灯的效果。

1.2.5 电源电路设计

    系统需要供给5V直流电工作。在调试时直接使用电脑USB进行供电即可。在进行远距离测试时,用干电池对其供电。安装时需要常用的5V充电头持续稳定的供电。

1.2.6烟雾浓度检测模块

市面上有已存在的烟雾检测模块,因此只需将其介入到电路当中即可。烟雾传感器是要连接在从机的,当烟雾传感器采集到数据之后会通过从机的zigbee节点发送到协调器,协调器会在12864显示上显示出对应值,因为烟雾传感器是环境中烟雾浓度达到报警值之后就会报警,所以协调器显示屏上只会显示1和2,不会显示烟雾具体浓度。1表示报警2表示不报警。

2软件设计

2.1 软件开发环境

本设计使用的编译软件是IAR。在开发过程中,要尽量做到简单编译,语法通俗易懂。因此在对开发环境的选择时需要对软件各方面综合考虑选择。IAR作为一款优秀的开发工具广泛应用于嵌入式系统。这款C编译器可支持众多半导体材料微处理器。它具有丰富的函数库和强大的开发与调试的能力,含有的PROMable代码效率极高。面对不同的芯片有相应的速度和相应的大小优化器。是调试本课题设计的系统的很好的选择。

2.2 主机及从机电路设计

在本课题研究中,在单片机的控制下,通过温湿度传感器采集温湿度数据,烟雾传感器采集烟雾浓度。传感器收集到室内环境中的数据后,通过zigbee模块将数据发送到主机单片机,通过对数据的处理之后。在液晶显示屏上显示出室内温湿度数据及单位。

2.2.1 协调器程序设计

协调器部分也称主机部分,由一个cc2530、一个蜂鸣器和一个12864显示屏组成。功能是受到从机部分采集到的数据后,通过单片机处理在显示屏上显示出来,当各项数据超标后控制蜂鸣器报警。

主机程序代码如下:

uint8 wen[]={

if(KEY1==0)

                           {

                                if(wendu_worn>=65)  wendu_worn=1;

                                else wendu_worn++;                             

                                LCD_disp_char(2, 110,wendu_worn);                                

                            }

                            if(KEY2==0)

                            {

                                if(shidu_worn>=100)  shidu_worn=1;

                                else shidu_worn++;

                                LCD_disp_char(4, 110,shidu_worn);  

                            }                            

                            if((Temp>=wendu_worn)||(Humi>=shidu_worn)||(Smoke==0x01))

                            {

                              BEEP=0;D2=0;

                            }

                            Else

                            

                            if(KEY1==0)

                            {

                                if(wendu_worn>=65)  wendu_worn=1;

                                else wendu_worn++;                             

                                LCD_disp_char(2, 110,wendu_worn);                                

                            }

                            if(KEY2==0)

                            {

                                if(shidu_worn>=100)  shidu_worn=1;

                                else shidu_worn++;

                                LCD_disp_char(4, 110,shidu_worn);  

                            }                            

                            if((Temp>=wendu_worn)||(Humi>=shidu_worn)||(Smoke==0x01))

                            {

                              BEEP=0;D2=0;

                            }

                            else

                            {

                                (shidu_worn>=100)  shidu_worn=1;

                                else shidu_worn++;

                                LCD_disp_char(4, 110,shidu_worn);  

                            }                            

                            if((Temp>=wendu_worn)||(Humi>=shidu_worn)||(Smoke==0x02))

                            {

                              BEEP=0;D2=0;

                            }

2.2.2 从机程序设计

从机部分是在单片机控制下,通过DHT11传感器和烟雾传感器采集环境中的数据,再靠zigbee与协调器进行数据传输,我们还需对从机部分进行编译程序并拷入。

从机部分代码如下:

     while(1)

{

If(GPIO_ReadlnputDataBit(GDPIO_GPIO_Pin_1)==0)

{

UART1-sENDdATA(0*FC);

UART1-sENDdATA(0*07);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*FF);

UART1-sENDdATA(0*FD);

UART1-sENDdATA(0*00);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*FF);

}

else

{

UART1-sENDdATA(0*FC);

UART1-sENDdATA(0*07);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*FF);

UART1-sENDdATA(0*FD);

UART1-sENDdATA(0*00);

UART1-sENDdATA(0*01);

UART1-sENDdATA(0*FF);

}

Delay_ms(1000);delay_ms(1000); Delay_ms(1000);delay_ms(1000); Delay_ms(1000);delay_ms(1000);

}

2.2.3 LED12864显示模块

系统选用的是12864液晶显示屏,这个名字来源于横向128纵向64的点阵排列。这类显示屏在单片机领域应用广泛。8位并口的数据总线也很适合我们的cc2530单片机。

如果你需要帮助、建议或解决问题,不要犹豫,可以随时向老师提问或寻求支持。专注于单片机的解决方案可以为你提供有关电子设计、嵌入式系统、编程和硬件方面的宝贵信息。无论你的问题涉及到哪个方面,都可以向老师咨询,以获得有针对性的建议和指导。祝愿你在单片机设计领域取得成功!

这篇关于毕业设计 基于51单片机的室内环境监测系统的设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771537

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.