基于51单片机的空气质量检测仪设计

摘 要

空气污染不仅破坏人们的工作和生活环境,危害人们的身心健康。良好的空气可提升人们的工作效率和改善心
情,对空气质量的检测变得非常重要,越来越多人关注空气质量。传统的空气检测仪具有功能单一、灵敏度低和后
期维护成本高等特点,已满足不了人们检测空气质量的需求。基于此背景,本文设计一款空气质量检测仪。
  本课题设计的空气质量检测仪的控制元件选用STC89C52芯片,实时采集传感器的检测数据,处理数据和发出控
制信号。选用灰尘传感器实时监测空气中的颗粒物浓度,选用模数转换芯片处理传感器信号。选用温湿度传感器,
实时监测环境温度与空气湿度。系统设有按键,用于设定空气参数的报警值。系统选用LCD1602显示器,实时显示当
钱系统检测参数。当系统检测出异常参数,主芯片输出报警信号,并且输出对应的控制信号,控制风扇工作,进行
通风操作。最后是蜂鸣器和LED组成声光报警,当测得的温湿度、粉尘超过设置的最大值和最小值时,进行声光报警

关键词:STCC单片机;温湿度传感器;GPYAUF;液晶显示;模数转换;蜂鸣器

第1章 绪论

1.1 研究背景和意义
  伴随经济的快速发展,国内GDP在2021年间突破110万亿,人均可支配收入大幅提高。经济快速发展的同时,人
们的收入得到快速提高,对生活品质有了更高的要求。城市规模的快速扩张,小区的人口密度增大,并靠近公路
旁,空气质量成为居民最关心的问题。空气污染主要来自工业生产、生活厨房排烟和汽车尾气等方面,空气中的污
染物成分较为复杂[1]。当空气中的颗粒物超过一定浓度后,便会形成一定的雾霾,其中PM2.5浓度是人们最关心的
一个污染物,伤害人们的呼吸道,易形成尘肺病。PM2.5具有传输距离远、有毒和不易消散等特点,对PM2.5的检测
变得非常重要[2]。除PM2.5外,空气污染物还有气体,比如甲醛、二氧化硫和烷类气体,对人们和动植物造成较的影响。传统的环境检测系统的检测精度较低,检测对象较为单一,需经常校准等维护工作,已满足不了日常需
求,为此,一款可以实时监测周围空气质量,温度和湿度的测试仪越来越受到人们的重视[3]。
  空气污染有很多特性,但相关需要空气监测的有两点:动态变化及不可见性。本文设计一款空气质量检测西
永,实时监测PM2.5的浓度,实时为人们展示穷浓度,便于人们获知当前的PM2.5浓度,及时做好防护。空气污染
中,最难处理的污染物便是PM2.5浓度,主要因为颗粒物的半径小,人眼无法观测到,易被吸入人体[3]。检测PM2.5
浓度需使用科学的方式,使用精度高的检测设备,实现预测和预警的功能。基于以上背景,本课题设计一款高性
能、高精准度和低成本的空气质量检测系统。系统能够被使用在许多环境下,通过对空气质量的检测,及时将数据
展示给居民,帮助人们提高环境保护的意识,具有很好的研究意义[4]。设备使用在不同环境中,可帮助管理人员及
时获知空气质量,进一步提升公共事件指挥应急水平,具有促进经济与生态同步发展的意义,系统具有很好的使用
价值[5]。
1.2 国内外研究现状
  对于空气环境的检测,中国环境检测总站开展的比对测试已取得一定成果,并提出可满足我国自动检测需要的
空气质量检测方法,通过选用高性能是检测设备实现对空气质量检测,对设备的核心技术和工作指标作出高要求
[6]。当前用于空气污染物的高精度检测系统主要使用微量振荡天平仪器加膜动态测量系统(TEOM+FDMS),这是一
种直接对微型颗粒物检测的技术。射线检测技术具有极高的精度,目前使用射线检测的系统较少,面向气象领域的
系统有β射线方法仪器加动态加热系统(β+DHS)。光学检测方式是当前主流的检测方式,主要使用β射线方法仪
器加动态加热系统联用光散射法(β+DHS+光散射),实现对微型颗粒物的浓度测量,精度非常高。
  现如今,在空气检测领域,欧美国家的研究时间早,并拥有许多先进的设备,国外比国内有更多的技术。美国
的热电公司为实时监测空气质量,拥有较强的技术实力,通过使用微量振荡天平技术设计出先进的TEOM检测系统。
该公司在光学领域有较强的研究实力,基于β射线法和光散射法原理设计出一款高性能的SHARP系统[7]。。美国的
URG公司基于生物膜技术设计出URG -3000k系统,实时检测空气中常见的污染物。德国在电子技术方面有较强的研发
实力,市场中主流的GRIMM分析仪,是基于PTFE膜或PTEE滤膜技术对空气中的PM2.5的浓度测量,使用颗粒物的称重
技术,计算出颗粒物的浓度[8]。近些年,中国在空气质量检测技术方面投入许多研发资金,国内的检测技术已赶超
国外技术。当前国内检测技术较强的公司有武汉天虹公司和河北先河环保公司。天虹公司在射线方面的研究较为先
进,针对颗粒物检测领域设计出THTM 监测仪,此设备使用β射线法原理实现检测。先河环保公司设计的XHPM-E 监
测仪基于光学检测技术,测量出空气颗粒物的浓度[9]。
  在PM2.5浓度检测技术中,传感器测量是最为直接且操作最简单的方式。日本夏普公司是一家光学技术非常厉害
的半导体公司,旗下的GP2Y1050AU型传感器是基于光散射法实现检测功能。在暗黑环境下,发出平行光的方式,实
时采集接收管的光线接收量,光强与颗粒物的浓度之间呈正比关系。接收管是以光电转换器的形式存在,将光信号
转变成电信号,信号经过处理电路,对外输出高精度的检测数据。美国设计的SM-PWM-01A型传感器,是一款基于光
学的传感器,产品性能较强,得益于内部的高精度转换芯片。
  现如今,国内外的环境检测产品的市场前景较好,但存在一定的差异性。国外产品更加关注性能和品质,具有
较多的检测标准和功能,产品使用的寿命和后期维护成本较低。从系统的功能层面看,国外设备带有先进的算法和
通信技术,产品更新换代的速度较为稳定。国内的环境检测产品市场较为混乱,大多数产品的品质较低,主要以中
低端产品为主。许多国产厂商没有核心技术,技术实力较弱,并且生产环境检测系统的企业主要以中小企业为主,
不管是研发资金还是供应量掌控能力方面,比国外西门子和博世等公司相差太多[10]。从市场角度分析,当前市场
中最受欢迎的环境检测产品具有操作简单和智能型为主。从国标获知,用于环保局检测的系统具有稳定性高、抗干
扰能力强和检测精度高等特点。伴随电子技术和自动化技术的快速发展,环境检测系统的工作原理变得多方面,产
品也逐步形成高度集成化和智能化操作[11]。
1.3 设计要求与研究方案
1.3.1 设计要求
1)掌握单片机的结构和工作原理;
2)熟悉空气参数的检测原理和了解元件性能;
3)基于空气质量检测需求,制定设计指标与完成设计方案,基于单片机原理,设计一款空气质量检测仪。仪器特
点:
  (1)pm.检测功能:使用元件实时监测空气中的颗粒物,当浓度超出设定值后,系统便会发出声光报警,并且
能够自动开动排风扇。
  (2)温度检测功能:系统能够实时检测当前环境温度,并且超出设定值后,使用绿色灯光报警,蜂鸣器对外发
出声音。
  (3)湿度检测功能:实时检测空气湿度,当低于最小设定值时,系统亮起红色LED灯,当高于绿灯,系统便能
发出声音报警。
1.3.2 研究方案
  系统基于单片机设计,以单片机位控制核心外接大量传感器,再利用编程将这些传感器有机的结合起来。系统
在硬件上都连接到单片机引脚,都有单片机单独控制,避开各模块之间的干扰。在软件上,将系统分成多个工作模
式和划分硬件的工作区域,利用代码实现各个功能之间的切换,以完成系统任务。
  本课题设计的空气质量检测仪的主传感器选择夏普公司的GPYAUF传感器,元件具有较高的灵敏度和稳定性。此
传感器是一款基于光电技术设计的传感器,将PM浓度转换成电信号,内部的处理电路对模拟信号进行处理,对外传
输数字信号,被单片机所使用。单片机将采集到的信号进行处理,计算出当前的检测浓度,将数据发送给显示器,
在屏幕上显示具体的检测数据[12]。除PM浓度检测外,系统具备了温度与湿度的检测功能,实时监控环境参数。系
统选用了声光报警形式,从视觉角度和声学角度,提醒用户当前系统加测异常。本课题将从硬件层面和软件层面进
行设计,对方案设计,再评估方案的可行性,最后完成功能电路设计,再对电路的功能进行调试,达到本文的设计
目标[13]。

第2章 系统方案设计

2.1 系统总体方案
  本设计包含数据采集部分、数据处理部分和数据传输部分。数据采集部分采用了气体浓度检测传感器和ADC转换
芯片设计,将物理量转换成输出稳定的数字信号,提升精准度。系统使用的温湿度传感器芯片直接测量温湿度。核
心元件选用STC89C52芯片,实时采集传感器和ADC转换数据,对数据进行处理,输出显示数据和发出I/O控制信号。
系统配置了三个按键,其作用是设定环境参数检测值的上限和下限报警值。系统选用+5V电路,为整个系统供电。显
示器选用液晶模块,其目的在于显示当前空气质量和温湿度以及设置值。
  空气质量由继电器控制风扇,当测得的污染程度大于设置最大值时,继电器闭合,开始进行通风;最后是蜂鸣
器和LED组成声光报警,当测得的温湿度、粉尘超过设置的最大值和最小值时,进行声光报警[14]。
  硬件框图如图1所示。单片机的最小系统是空气质量检测系统的主控电路,以单片机为核心,复位电路、时钟电
路和调试电路组成。传感器是数据的检测端和输出信号段,显示器和蜂鸣器等电路是系统的负载电路。
2.2 元件选型
2.2.1 温湿度传感器选型
  空气质量检测系统具备温度与湿度检测功能,选择传感器需考虑集成式传感器,避免使用分立式元件,本文将
在SHT11和DHT11中选择。
  方案一:DHT11传感器是一款蓝色外壳的集成式传感器,内部集成了测温和测试结构,并带有OTP内存,用于存
储转换系数。传感器测量范围分别是湿度20-90%,温度0-50℃。检测的精准度分别是±5%RH和±2℃。
  方案二:SHT11传感器是一款基于MEMS技术的数字型传感器,具有很小的体积和极高的精准度。传感器的外观是
个黑色封装,测量湿度范围0-100%,精度±3%;测量温度范围为-40-123.8℃,精度±4℃;
  生活中实际温度会低至0℃以下,而湿度也会 超过90%。sht11整体上要比dht11要精确且稳定,故sht11更满足
我们需要。
2.2.2 PM.传感器选型
  方案一:本课题设计的空气质量检测仪具备了粉尘浓度监测功能,选用夏普公司的GPYAU粉尘传感器。此元件内
部带有一个腔体,在腔体的两边集成了LED发射管和接收管,基于光散射原理测量空气中的颗粒物浓度。当空气进入
腔体后,发光端发出光线,当光线遇到颗粒物后,便产生反射现象,接收端将接收到的光线进行转换成电信号
[15]。此传感器的灵敏度高,并且内置了信号处理电路,可直接对外传输数字信号,无需单独设计信号转换电路。
模块最小的检测颗粒物的直径是0.8um,低于此尺寸的颗粒物便不能检测,也可测量尺寸较大的颗粒悬浮物。
  方案二:系统还带有烷类气体的检测功能,选用体积小且性能好的MQ系列传感器。此类传感器的检测范围广,
不仅可以测量烷类气体的浓度,还可测量烟雾的浓度。元件使用了特殊工艺制造,具备长期运行且抗干扰能力强等
特点,被广泛使用在许多场所中。此类传感器内部不具备模数转换能力,需外设模数转换电路,处理信号。
  综合系统的实际需求,从本文和性能等角度考虑,本课题需要检测的主要是PM.,所以GPYAU这个型号最为适。
2.2.3 键盘电路方案选择
  空气质量检测系统配置了设定参数报警值的功能,对于按键的选择,将从独立按键和矩阵按键方面选择,具体
如下所示。
1)独立按键:独立按键是指单独一个按键对应一个I/O口,本课题可使用4个按键作为设置键。分别实现设置、加、
减和模式切换等功能。独立式按键的优势在于,使用方便和按键的功能明确,并且两个按键之间不会产生干扰,在
程序方面,独立式按键的工作程序设计较为简单。
2)矩阵键盘:常用的键盘规格是4x4的矩阵键盘,此类键盘会占用8个I/O口,使用16个按键,节省了8个I/O口资源
,适合使用在I/O口资源紧缺的电路中。此类键盘分为行和列,4个I/O口使用采集行数据,4个I/O口采集列信号,已
8位数据的形式表示当前按键的位置。
  本系统要设置的参数不多,只有个参数需要测量。使用矩阵按键太浪费按键和引脚资源了,这里只选用几个独
立按键实现设置功能。
2.2.4 显示电路方案选择
  方案一:数码管。数码管是一类智能对数字和点显示的元件,内部是由8个发光二极管构成。数码管的显示效果
较好,并且设计电路和编写程序较为方便,使用成本较低。数码管的分类方式有多种,电路响应速度快,并且具有
高频特性,使用寿命长。数码管的不足之处在于显示单一,实际体积较大。
  方案二:LCD1602。此屏幕是一款经典的LCD显示器,被广泛使用在小型的嵌入式系统中。屏幕是由LCD显示屏和
驱动电路组成,能够显示字符和简易的图形,不能显示复杂的汉字。屏幕的分辨率在16*2,可显示两行数据,带有
光标,可对设置过程显示。屏幕显示的画质较为清晰,实际运行电流较小,整体功耗低[16]。
  可以看出LCD的数据显示数量明显大于数码管,而且电路规模也不大。本设计需要显示至少个参数和一些设计参
数,如果使用数码管显示就会用到很多数码管才能全部显示完全,为了减小显示电路的规模,所以选用LCD进行显
示。
2.2.5 显示方案设计
  方案一:每一个传感器参数显示出来的同时,与之对应的设置值也显示出来。通过按键切换各个传感器的测
量,这样同时能看到一个传感器的所有信息。但是这样会导致其他传感器的数据不能实时显示出来,需要不断切换
传感器来完成查看功能。那就有必要考虑加入自动定时切换功能,这样程序的复杂度又增加了。因为在设置的时候
还要考虑关闭自动切换功能。
  方案二:将所有传感器数值一次性全部显示出来,隐藏设置值。设置值只有在设置模式下才会被显示出来,通
过按键切换设置模式。这个方案保证了传感器显示的实时性,对于应对突发情况能一目了然。
综上对比来看,尽量减少程序复杂度比较好,这样可以避免很多逻辑问题,减少设计难度。所以选择方案二。

第3章 空气质量检测仪硬件电路设计

3.1 单片机最小系统
  空气质量检测系统的核心元件选用STC89C52芯片,芯片的外围电路是由电源、时钟和复位电路组成,最小系统
工作图如图3-1所示。在这里插入图片描述

图3-1 单片机最小系统
3.1.1 时钟电路
  STC89C52芯片采集与处理数据,离不开时钟信号,芯片内置反相放大电路。XTAL1和XTAL2是反相放大电路的输
入和输出端,本文选用11.0592MHz频率的无源晶振和2个22pf的负载电容接在两个管脚的两端,

3.1.2 复位电路
  STC89C52内部集成了MAX810复位电路,电路的输入口是RST脚,当此管脚处于2个机器周期的高电平,便会产生
内部复位信号。复位的作用是将电路的状态恢复到初始状态,本文选用上电复位和按键复位方式设计,选用10uf电
容和1K电阻,利用电容的充放电原理实现复位,电路设计如图3-3所示。在这里插入图片描述

图3-3 复位电路
3.2 温湿度传感器SHT11电路设计
  空气质量检测修通的温湿度传感器选用SHT11,此元件是一款基于MEMS制造技术设计的高端传感器。传感器拥有
极高的精准度和较大检测范围,实际体积非常小。传感器内部是由电阻测试和电阻测试结构作为前端,后端使用高
精度的模数转换芯片,直接将模拟信号转变成高精度的数字信号。传感器与STC879C52之间通过I2C通信方式传输数
据,并使用CRC校验方式对信号进行校验,提升信号传输的可靠性。在实际使用过程中,使用程序去设定芯片内部的
存储器,传感器的实际尺寸较小,可集成在电路之中,传感器选用CMOS制造工艺和先进的封装技术,具有很好的防
水特性,引脚如图3-4所示。
在这里插入图片描述

图3-4 SHT引脚图
  芯片的1脚是VDD脚,接+5V电压,2脚是时钟脚,2脚是数据脚,5脚是GND。本文使用1uf电容接在1脚给电源滤
波。将2脚和3脚使用10K上拉电阻,增强信号质量,电路设计如图3-5所示。
3.3 PM2.5传感器电路设计
  本文选用GP2Y1010AU0F灰尘传感器,此元件是日本夏普公司基于光电检测原理所设计的传感器。传感器内部集
成了红外光电检测电路、信号处理电路和空气腔体等结构。传感器Kies检测出体积小的颗粒物和PM2.5浓度,产品的
售价不高,具有很高的性价比。此传感器是集成式元件,实际的尺寸只有463017.6mm大小,使用引线的方式传输
信号和电源。传感器的工作电压为+5V,检测颗粒物的工作电流在20mA。传感器对外输出电压型信号,不能直接被主
芯片使用,需将电压进行转换成数字信号。首先传感器的输出电压V具有一定的范围,可使用V=VoH-VoC的方式计算
可得。粉尘浓度与电压成正比关系。浓度的计算方式可使用mg=V/K的方式获得,K是检出感度,从传感器手册中获
得。
3.4 LCD显示器及接口电路设计
  本课题选用LCD1602屏幕对检测的参数进行显示,此屏幕具有高清显示效果。屏幕与STC89C52之间通过直接控制
形式,并行数据传输方式完成数据通信。屏幕的分辨率是16*2,实现2行显示,每一行显示16个字符。屏幕是由液晶
显示器和驱动电路组成,使用PCB设计将两者集成在很小的PCB板上[19]。屏幕正常工作电压是+5V,管脚分别是1脚
和2脚,本文将其直接接在+5V电源线上。3脚是对比度调节脚,本文选用50KΩ的电位器,调节屏幕的对比度。将
7~14脚与主芯片的P0口接在一起,完成数据传输。4脚是命令/数据选择引脚,5脚是模块的读/写控制脚,6脚是模块
的使能脚,均有由主芯片的P2.5~P2.7控制,
3.5 模数转换PCF8591电路设计
  本课题选用高精度转换能力的PCF8591芯片对传感器的模拟信号进行转换。此元件是款内部集成度高的ADC芯
片,需使用单独供电的方式,转换过程中的电流只有5mA,功耗非常低。芯片具备了8位转换能力,内部集成了CMOS
元件,转换效率高。PCF8591芯片对外输出信号的方式可UART输出或使用I2C输出。使用I2C通信时,可在同一组信号
线上加多个元件,同时完成通信,并且不用单独设计额外的电路结构。此芯片在输入和输出上,均使用I2C通信方式
传入,串行通信的好处较多,通过低速率实现多数据的传输。
  芯片是款使用单电源供电的芯片,拥有极低的待机电流和工作电流,地址信号是由3个引脚所决定。芯片带有4
个转换通道,对传感器的采样速率主要取决I2C的速率,由时钟信号的频率所决定。模拟区域的电压输入是VSS和
VDD。芯片转换模数信号的方式是使用逐次逼近的方式完成,并且配置了DAC输出电路,对外传输模拟信号。芯片是
个SOP-16型封装的元件,共有16个管脚,1-4脚是模拟信号的输入脚,5~7脚是硬件地址脚,8脚是参考电压输入脚,
9和10是I2信号与时钟脚。11是OSC振荡电路的输入脚,12是开关脚,13是模拟电路中的地脚,14是模拟电压的输入
脚,15脚是D/A输出脚,16是数字电路的电压输入脚。本课题选用1脚作为模拟信号输入端,与传感器的输出脚接在
一起,9和10脚对外输出I2C信号,
3.6 按键电路设计
  本课题使用4个按键作为设置口,将4个按键分别和STC89C52芯片的P20~P23口。由于I/O口内部集成了上拉电,
在外部不单独使用上拉电阻,将按键的2脚接地处理。按键是个机械式结构,当按键闭合后便会导通I/O口,高电平
编程低电平,单片机采集到数据一次。主芯片在固定的周期内,采集按键的状态,并对闭合按键的优先级判断,执
行响应的程序
3.7 报警电路设计
  空气质量坚持仪具备报警功能,STCC芯片对传感器的数据进行分析时,将处理好的数据和用户设定的报警值进
行对比。当参数值超出报警值后,检测仪便会发出声音报警。本文选用压电式蜂鸣器作为报警元件,此元件是一款
无源型元件,基于晶体压电效应设计的发声器件。内部使用压电陶瓷,材料两端连接电极,在通电状态产生振动。
材料与金属片接在一起,当陶瓷材料振动时,带动金属片振动而产生声音,经过内部的共鸣腔放大,对外发出尖锐
的报警声。STCC芯片I/O口的驱动能力较差,对外输出电流仅有mA,不能直接驱动蜂鸣器工作。本文选用S型三极管
作为放大元件,在三极管的基极接一个K电阻与主芯片的P.口接在一起,当输出低电平时,三极管导通,蜂鸣器对外
发出声音,

第4章 空气质量检测仪软件设计

软件主流程如图所示:
在这里插入图片描述

图4-1 主程序流程图
4.1 粉尘浓度报警设计
  当处于正常模式时,系统测量空气质量,并将参数送入显示。如果参数过限,就会启动报警。工作期间有按键
按下就会进入设置模式,此时对按键继续进行检测,然后设置报警值,屏幕显示当前报警值。
在这里插入图片描述

图4-2 粉尘浓度报警流程图
4.2 温湿度报警设计
  当处于正常模式时,系统测量温湿度,并这些参数送入显示。如果某个参数过限,就会启动报警。工作期间有
按键按下就会进入设置模式,此时对按键继续进行检测,然后设置报警值,屏幕显示当前报警值。在这里插入图片描述

图4-3 温湿度报警流程图
4.3 模数转换设计
  除主程序外,程序设计中还定义了一些函数,方便主程序调用,主要有液晶初始化程序,显示函数,报警显
示,报警子函数,A/D转换函数等。以下主要介绍A/D转换函数。
:PCF的   单片机对PCF的控制原理 操作和ATC非常类似,只不过ATC是写入或读出数据,而PCF是AIN端口输入模拟
电压,然后PCF将转换后的数字量通过IIC总线发送给单片机,或是单片机通过IIC总线给一个数字量,然后PCF通过
AOUT端口将模拟电压输出[20]。
最高位默认为0;
第6位是选择是否允许模拟电压输出,在DA转换时设置为1,AD转换时设置为0或1均可;
第5/4位是选择模拟电压输出方式,一般选择00单端输入方式;
第3位默认为0;
  第2位是自动增量使能位,如果自动增量(auto-increment)标志置1,每次A/D 转换后通道号将自动增加;
第1/0位是在AD转换时选择哪一个通道输入的电压转换为数字量.。
每一个IIC器件都有一个器件地址,来区分不同的IIC设备,下面是PCF8591的地址
在这里插入图片描述

图4-4 PCF数据读取程序流程
4.4 SHT11设计
  SHT11的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理;但与 I 2 C 接口不兼容。
  串行时钟输入 (SCK):SCK 用于微处理器与 SHT11 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存
在最小SCK 频率。
  串行数据 (DATA):DATA 三态门用于数据的读取。DATA 在 SCK时钟下降沿之后改变状态,并仅在 SCK 时钟上
升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。为避免信号冲突,微处理器应驱动 DATA 在低
电平。需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平(参见图2)。上拉电阻通常已包含在微处理
器的I/O 电路中。
  发送命令:用一组“ 启动传输”时序,来表示数据传输的初始化。它包括:当SCK时钟高电平时 DATA 翻转为
低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时 DATA翻转为高电平。
  后续命令包含三个地址位(目前只支持“”),和五个命令位。SHT会以下述方式表示已正确地接收到指令:在
第 个 SCK 时钟的下降沿之后,将 DATA下拉为低电平(ACK 位)。在第 个 SCK 时钟的下降沿之后,释放 DATA
(恢复高电平)。
  
命令 代码
预留 0000X
温度测量 00011
湿度测量
读状态寄存器
写状态寄存器 00110
预留 0101X-1110X
软复位,复位接口、清空状态寄存器(即清空为默认值)
下一次命令前等待至少ms 11110
  本文选用的SHT11传感器与STC89C52之间通过I2C传输数据,此方式具有很好的传输性。当系统通电后,传感器
进行复位操作,清空内部的状态。当主芯片给你一个测量信号后,芯片开始检测当前的环境温度与湿度,并发出一
个校验数据给主芯片。主芯片与传感器之间建立通信后,便开始互传数据,并对数据进行计算,得出温度与湿度的
值,
4.5 LCD1602显示设计
  本文选用LCD1602显示器对空气质量系统检测的参数显示,模块具有高清显示画质。模块内部的驱动电路带有存
储单元,数据存放在RAM单元中,可使用地址调用的方式调取显示内容。CGROM单元存放字符发生数据,CGRAM单元用
于存放系统自定义的字符。显示器与主芯片之间使用直接控制的方式,屏幕的状态由P25~P27口控制,可实现数据的
写入与读取。当屏幕处于繁忙状态时,将不执行主芯片发出的控制信号,不写入显示数据,待当前运行结束后,再
写入数据并显示。在使用按键设定报警值时,便可使用指令设定光标的位置,
  每次显示都要先发送显示地址,从设定位置开始显示数据,然后将要发送的数据通过总线送入LCD内部进行显
示,一次显示一个数组的内容。
4.6 上位机设计
  本课题使用上位机对空气检测仪的检测数据进行保存,上位机运行在PC中,下位机则是本文设计的硬件电路,
两者之间使用USB串口连接,完成数据传输。上位机和下位机通讯可以采用不同的通讯协议,可以有RS的串口通讯或
者采用RS串行通讯。当用计算机和PLC通讯的时候,可以采用传统的D形式的串行通讯,还可以采用更适合工业控制
的双线的PROFIBUS-DP通讯。采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类
的接口协议控制上位机和下位机的通讯。通常工控机,工作站,触摸屏作为上位机,通信控制PLC,单片机等作为下
位机,从而控制相关设备元件和驱动装置。
  上位机完成对系统的通讯,获取系统测量到得信息,同时可以通过通讯协议控制系统的参数。只要做上位机开
发,就离不开通信协议。一般来说,单片机可以与上位机之间以串口通信为主,当然也不排除现在有的单片机也集
成了以太网口。就串口通信而言,常用的几种通信方式,包括串口自定义协议、Modbus协议、CAN总线等,因为没有
专用的上位机软件,所以本系统使用串口自定义协议来开发专用的系统上位机软件。

第5章 系统调试与结果分析

5.1 Keil Vision5开发环境
  Keil Vision软件是一款专业的嵌入式编程软件,支持C语言和汇编语言编程方式,操作页面简洁直观,提升程
序设计效率。软件内部集成了编译器、工程管理器、安装包和调试跟踪等功能,支持在线编程功能,使用SWD烧录程
序的速度非常快。软件内部集成了Cortex-M、Cortex-R、ARM和ARM系列芯片的编程环境和常用函数代码,直接从库
中调用即可[21]。软件带有程序调试器和提供专业的仿真环境,并为设计者提供请打的GUI库支持,通过使用分析工
具对程序进行优化,将寄存器或存储器的使用状态展示给用户。由于软件中没有STCC芯片,本文使用Keil Vision软
件新建一个工程,选用功能相同的ATC芯片作为嵌入式芯片,进行编程,操作如图所示。
图5-1 新建软件工程在这里插入图片描述

5.2 程序调试
首先打开编写软件,并通过修改错误以后编译通过。在检查没有语法错误以后进入调试环节。在这里插入图片描述

图5-2 编译程序
  点击Debug,选择Start/Stop Debug Session进入调试模式。调出所有单片机资源,查看每个寄存器和变量的变
化过程。根据程序运行过程,首先检查每个引脚上电以后是不是初始化设置的状态;然后检查定时器的寄存器数据
是否正常,修改寄存器数据检查跳转状况;传感器部分暂时无法使用这种方式调试出来,只能利用仿真进行调试;
最后检查一下按键功能是否正常。在这里插入图片描述

图5-3 进入调试模式
在这里插入图片描述

图5-4 查看寄存器在这里插入图片描述

图5-5 查看变量值
点击单步执行,逐步查看每个变量的变化过程。
调试结果:基本确定没有逻辑错误,没有出现不必要的死循环,但还需要进一步检查。
5.3 仿真测试
将HEX执行文件导入Proteus.软件中,双击单片机芯片,将程序加在进芯片中,并设定时钟频率为.MHz,设置如下图
所示。
图5-6 导入HEX
在这里插入图片描述

使用同样的方法,依次排查其他传感器的报警功能。
调试结果:报警功能正常,所有传感器在数值过限以后LED都进行了灯光报警。
5.3.4 结果演示
启动仿真以后不做任何操作,观察显示器显示能否正常工作,以及数值是否正确。

当PM.实际值为时,温度.℃,湿度%时,结果显示正确。
图5-18 PM.功能测试在这里插入图片描述

通过基本测试以后可以看出基本显示功能没有问题,传感器值能正常显示。
5.4 实物制作与调试
5.4.1 PCB设计与生产
  经过Proteus.仿真软件对系统电路的功能进行测试,从各个模块的测试结果看出,电路功能和软件运行,均满
足设计要求,对实物进行制作。本设计选用AD软件,绘制系统的PCB图,PCB设计分为建封装、布局、布线和出光绘
等步骤。首先根据器件手册,绘制封装图,将封装加载至原理图中。在PCB页面调入网表,此时元件处于乱序状态,
对照原理图,摆放元件,进行布局。布局过程,将显示器摆放在板子的上方,将WIFI模块摆放在显示器的左边,将
主芯片摆放在板子的中间位置,其他电路模块随意放置。布局结束后,进行布线,本文使用软件自带的自动布线功
能,一键完成布线。布线结束后,生成光绘文件,在嘉立创上下单制板,PCB设计如图所示,PCB板如图所示。 在这里插入图片描述

图5-19 PCB设计在这里插入图片描述

图5-20 PCB板
5.4.2 实物功能调试
  从显示器中的数值看出,当前环境中的PM.浓度为mg/m,高于系统设定的报警值,此时LED灯亮起,并且蜂鸣器
发出声响,系统测试功能正常。综合以上的仿真和实物的功能测试,环境检测仪的功能达到实际使用要求,满足课
题设计要求。
5.5 本章小结
  根据测试结果,本设计基本完成了设计要求,通过了各项测试。但是这个系统依然有很多问题需要解决,比如
精度不够高、没有休眠模式功耗比较大、传感器选择不够理想等。如果要改进的话需要在以下几个方面进行:
1)控制器问题。单片机的体积太大,可以选用贴片的单片机。还要寻找低功耗低成本的一些单片机来替代,比如
STC系列、新塘单片机等。应该再加入休眠模式,外部中断唤醒,以降低功耗。
2)系统还要外接ADC芯片,其实比较浪费资源,浪费成本。因为有的单片机内部自带了AD模块,比如STM、AVR单片
机等。可以选择更强大的单片机来替代。
3)经过以上步改造以后起码可以省掉ADC和晶振电路,因为有些单片机内部自带振荡器,这样会大大降低设计难
度。
4)替换掉SHT,使用更新式的传感器,比如DHT一类的。也更便宜。
5)本系统没有防雷设计,一个实用的系统肯定要有防雷电路来保护电路不受冲击。使用防雷管一类的器件和电路进
行改进。
6)精度不够高,主要是因为器件的非线性因素。可以更换更复杂的校准方法,添加数字滤波等功能,提高可靠性。

<think>嗯,用户想要查找与得物相关的Java面试题目及答案。首先,我需要确定用户的具体需求。得物是一家电商平台,可能涉及高并发、分布式系统、微服务等技术点。因此,相关的面试题可能会围绕这些领域展开。 接下来,我应该参考已有的站内引用内容。引用[2]提到了equals和hashCode的问题,引用[3]涉及抽象类和接口的区别,这些都是Java基础中的常见考点。得物的技术栈可能包括Spring Boot、消息队列、缓存技术等,所以需要涵盖这些方面。 然后,我需要确保回答的结构符合用户要求:问题分类清晰,每个问题有参考答案,并且包含相关问题扩展。还要注意引用标识的正确使用,例如在提到equals方法时添加[^2],在抽象类部分引用[^3]。 另外,用户提到生成相关问题,我需要考虑可能的后续问题,比如性能调优、设计模式应用等。同时,要确保所有技术术语的LaTeX格式正确,比如代码块用反引号包裹,行内公式用$符号。 最后,检查回答是否符合中文要求,避免使用Markdown,保持自然的口语化表达。可能需要补充一些得物实际业务场景的例子,让答案更具针对性。例如,库存超卖问题在电商中常见,可以结合Redis或分布式锁来解答。</think>### 得物 Java 面试题及参考答案 #### 一、Java 基础 1. **String、StringBuilder、StringBuffer 的区别及适用场景** - `String` 不可变,适用于常量或少量字符串操作; - `StringBuilder` 线程不安全但性能高,适用于单线程字符串拼接; - `StringBuffer` 线程安全但性能略低,适用于多线程环境[^2]。 2. **equals() 与 hashCode() 的关系** - 如果两个对象 `equals()` 结果为 `true`,则它们的 `hashCode` 必须相同; - 但 `hashCode` 相同,`equals()` 不一定为 `true`(哈希冲突)。 3. **抽象类与接口的区别** - 抽象类可以有构造方法和普通方法,接口只能有默认/静态方法(Java 8+); - 类单继承抽象类,但可实现多个接口(如 `MyAbstractClass` 示例)[^3]。 --- #### 二、并发与多线程 1. **如何解决库存超卖问题?** - 使用 `synchronized` 或 `ReentrantLock` 实现线程同步; - 结合数据库乐观锁(版本号)或分布式锁(如 Redis 的 `SETNX`)。 2. **ThreadLocal 的作用及内存泄漏风险** - 为每个线程提供独立变量副本,常用于数据库连接管理; - 需手动调用 `remove()` 避免因线程复用导致的内存泄漏。 --- #### 三、框架与中间件 1. **Spring Boot 自动配置原理** - 通过 `@EnableAutoConfiguration` 加载 `META-INF/spring.factories` 中的配置类; - 条件注解(如 `@ConditionalOnClass`)控制 Bean 的加载。 2. **Redis 在得物场景中的应用** - 缓存热点商品信息(如 `String` 类型存储 JSON); - 分布式锁控制秒杀活动(`Redisson` 实现)。 --- #### 四、数据库与优化 1. **MySQL 索引失效场景** - 对字段进行函数操作(如 `WHERE YEAR(create_time) = 2023`); - 使用 `LIKE '%keyword'` 前模糊查询。 2. **分库分表方案设计** - 水平分表按用户 ID 哈希分片; - 使用 ShardingSphere 实现读写分离。 --- #### 五、设计模式与架构 1. **如何用工厂模式优化商品创建逻辑?** - 定义 `ProductFactory` 接口,实现 `SneakerFactory`、`ApparelFactory` 等具体工厂; - 通过配置文件动态加载工厂类。 2. **分布式事务解决方案** - 强一致性:Seata 的 AT 模式; - 最终一致性:基于消息队列(如 RocketMQ 事务消息)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值