毕业设计 基于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

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处