毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计

基于51单片机的空气质量检测PM2.5粉尘检测温度设计

  • 1、项目简介
    • [1.1 系统构成](#1.1 系统构成)
    • [1.2 系统功能](#1.2 系统功能)
  • 2、部分电路设计
    • [2.1 LED信号指示灯电路设计](#2.1 LED信号指示灯电路设计)
    • [2.2 LCD1602显示电路](#2.2 LCD1602显示电路)
    • [2.3 PM2.5粉尘检测电路设计](#2.3 PM2.5粉尘检测电路设计)
  • 3、部分代码展示
    • [3.1 串口初始化](#3.1 串口初始化)
    • [3.1 定时器初始化](#3.1 定时器初始化)
    • [3.2 LCD1602显示函数](#3.2 LCD1602显示函数)
  • [4 演示视频及代码资料获取](#4 演示视频及代码资料获取)

1、项目简介

1.1 系统构成

本系统采用51/52单片机+LCD1602液晶显示屏+声光报警按键+0832模数转换芯片+PM2.5传感器设计而成。

1.2 系统功能

  • 1、51单片机作为主控芯片,由(GP2Y1010AU0F)粉尘传感器采集到信号,然后通过ADC0832将模拟信号转化为数字信号,传送给单片机读取并处理数据。
  • 2、LCD1602液晶屏幕上显示测到的PM2.5实际值,PM2.5浓度报警阀值
  • 3、通过按键可修改报警阈值
  • 4、使用LED与蜂鸣器进行报警,超出报警阈值,打开风扇

2、部分电路设计

2.1 LED信号指示灯电路设计

LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。在电路中,电阻的作用是限流,保护LED灯。只要单片机的控制引脚拉低,则LED灯亮,否则,LED灯不亮。其具体电路原理图如下图所示。

2.2 LCD1602显示电路

LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。

一、LCD1602主要技术参数如下:

(1)显示容量为16×2个字符;

(2)芯片工作电压为4.5~5.5V;

(3)工作电流为2.0mA(5.0V);

(4)模块最佳工作电压为5.0V;

(5)字符尺寸为2.95×4.35(W×H)mm。

二、LCD1602采用标准的14脚,其接口的引脚说明如下:

(1)第1脚:VSS为地电源。

(2)第2脚:VDD接5V正电源。

(3)第3脚:V0为液晶显示器对比度调整端。

(4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

(5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

(6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

(7)第7~14脚:D0~D7为8位双向数据线。

(8)第15~16脚:空脚

2.3 PM2.5粉尘检测电路设计

粉尘浓度检测仪的核心部件是粉尘传感器[10]。它的选择直接影响到了量程的大小以及测量结果的准确程度。而考虑到它与单片机协同工作,因此在电源供电电压输出问题上也需谨慎。本设计中使用了SHARP(夏普)公司的GP2Y1010AU0F粉尘浓度传感器。如图

电路连接如下图

3、部分代码展示

3.1 串口初始化

c 复制代码
void UART_Init(void)
{
  SCON  = 0x50;		// SCON: 模式 1, 8-bit UART, 使能接收  
  TMOD |= 0x20;     // TMOD: timer 1, mode 2, 8-bit 重装
  TH1   = 0xFD;     // TH1:  重装值 9600 波特率 晶振 11.0592MHz
  TL1 = TH1;  
  TR1   = 1;        // TR1:  timer 1 打开                         
  EA    = 1;        //打开总中断
  ES    = 1;        //打开串口中断
} 

3.1 定时器初始化

c 复制代码
void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-10000)/256;		  //重新赋值 20ms
	TL0=(65536-10000)%256;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}

3.2 LCD1602显示函数

c 复制代码
void L1602_char(uchar hang,uchar lie,char sign)
{
	uchar a;
	if(hang == 1) a = 0x80;
	if(hang == 2) a = 0xc0;
	a = a + lie - 1;
	enable(a);
	write(sign);
}

4 演示视频及代码资料获取

相关推荐
物联网嵌入式小冉学长19 小时前
10.C S编程错误分析
c语言·stm32·单片机·算法·嵌入式
蝈蝈(GuoGuo)2 天前
STM32103CBT6显示ST7789通过SPI方式显示柬埔寨文
stm32·单片机·嵌入式硬件
Ronin-Lotus2 天前
嵌入式硬件篇---常见电平标准
嵌入式硬件·fpga开发·常见的电平标准
大鼻噶喳2 天前
使用VSCode开发MCU,FreeRTOS进Hard_Fault调试
vscode·单片机
我命由我123452 天前
嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·嵌入式
麦德泽特2 天前
超高速总线CDCTL01A 芯片在机器人领域的应用解析
人工智能·嵌入式硬件·物联网·机器人·信息与通信
vicorv252 天前
电流传感器在汽车中的应用:从BMS电池管理到电机控制的工程解析
stm32·单片机·嵌入式硬件
JINX的诅咒2 天前
FPGA多通道卷积加速器:从零构建手写识别的硬件引擎
嵌入式硬件·fpga开发·cnn·开源
阿让啊2 天前
Notepad++如何列选
c语言·嵌入式硬件·notepad++
Archer-2 天前
解决STM32H7系列串口DMA发送一次卡死
stm32·单片机·嵌入式硬件