共享自习室环境检测系统设计_第1页
共享自习室环境检测系统设计_第2页
共享自习室环境检测系统设计_第3页
共享自习室环境检测系统设计_第4页
共享自习室环境检测系统设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[18]。综合国内外发展情况不难看出,如今在物质生活日益丰富的同时,人们对生活品质的要求越来越高,因此也越来越重视室内环境,所以开发此款系统具有非常重要的意义。

1.3主要研究内容本系统主要是开发一款共享自习室环境检测系统借助STM32单片机搭配光敏电阻和气体传感器、温湿度‎‏传感器等传感器的作用,采集共享自习室空气中光照、PM2.5、CO2浓度和环境中温湿度的含量,并且显示在OLED液晶显示屏上,通过无线通讯传入手机APP判断自习室内的空气状态如果数值超过阈值,那么系统内的蜂鸣‎‏器会发出报警声。此次设计的共享自习室环境检测系统具有实现简单成本低廉的优点,有一定的实用意义。第2章系统总体结构2.1总体方案设计本系统主要是开发一款共享自习室环境检测系统。借助STM32单片机搭配光敏电阻和气体传感器、温湿度传感器等传感器的作用,采集共享自习室空气中PM2.5、二氧化碳浓度、室内光照和环境中温湿度的含量,并且显示在OLED液晶显示屏上,通过无线通讯传入手机APP。判断自习室内的空气状态,如果数值超过阈值时,系统内的蜂鸣器将会发出报警。图2-1结构框图2.2单片机性能选择方案一:AT89C51单片机资源丰富,配备了丰富的开发板和学习资料,为初学者提供了轻松愉悦的入门体验。该程序可通过串口直接下载,具有更低的学习成本和更稳定的运行表现。由于它有多种编程接口,可方便地编写各种应用程序代码,而且功能强大,适合初学者开发。然而,其操作速度缓慢,缺乏足够的自我保护机制,极易导致芯片烧毁。所以必须对电路进行升级或改进。扩展AD、EEPROM等功能的需求增加了硬件和软件的负担,尽管I/O脚简单易用,但高电平时缺乏输出能力,这是它们最大的短板所在。方案二:STM32F103C8T6单片机呈现出卓越的性能表现,令人瞩目。在性能上可以说完全达到设计要求。该公司不仅提供了丰富合理的外设,还配备了强大的软件支持,此外,其软件包还提供了全面丰富的技术文档,为用户提供了全方位的服务。可以说,它的应用几乎涵盖了所有领域。芯片的种类繁多,其覆盖范围广泛。可以说是一个完整的产品系列。因此,该平台的用户群体规模庞大,为用户提供了强大的基础。为了更好地发挥这些功能,我们在这里为大家介绍一些重要器件,以及其特性。1、核心:arm32位cortex-m3cpu;72mHz最高工作频率;1.25dmips/mHz;单周期乘法及硬件除法2、存储器:芯片内集成32~512kb闪存。6-64kbSRAM内存3、采用串行调试(SWD)和JTAG接口进行调试操作。该系统支持最多112个快速I/O端口、最多11个定时器和最多13个通信接口,为用户提供高效的通信服务上所述并结合自身实际情况,STM32单片机由于其出色的处理速度和简单的外设价格更加实惠、功耗可控,比51单片机更加适合使用,所以选择方案二。图2-2STM32引脚图2.3无线通信功能选择在不同的环境和功能需求下,无线通信技术的类型繁多,因此需要采用不同的技术方案。无线局域网技术就是一种比较常用的技术。无线通信技术的范畴十分广泛,其中包括蓝牙技术、WIFI、Z-WAVE、蜂窝低功耗广域网技术以及非蜂窝低功耗广域网技术等。这几种技术各有优缺点,但它们都能实现短距离无线传输。(其中的蜂窝低功耗广域网技术和非蜂窝低功耗广域网技术要求高、门槛高,会对网络有要求,所以不予考虑)。方案一:WIFI是所有IEEE802.11标准无线局域网(WLAN)的商标名称。WIFI有许多版本WIFI联盟最近采用了一种新型版本编号系统:WIFI1(802.11b)、WIFI2(802.11a)、WIFI3(802.11g)、WIFI4(802.11n、WIFI5(802.11ac)和WIFI6(802.11ax)。WIFI常见的拓扑结构是星型拓扑结构。但在星型拓扑结构中,节点只能通过中枢相互通信。方案二:蓝牙技术:是一种可在2.4GHzISM频段上运行的低功耗无线解决方案,为用户提供了一种高效的无线通信方式。它将传统的无线连接方式与短距离无线通信技术相结合。该拓扑结构在距离、带宽和通信方面呈现出高度的可塑性,足以满足各种物联网应用的需求。蓝牙技术可以被用来实现短距离无线通信功能。目前存在两种截然不同的无线蓝牙选择,一种是经典蓝牙(BluetoothClassic),另一种则是低功耗蓝牙(BluetoothLE),它们各具特色。经典蓝牙采用链状拓扑结构,即每个结点都只有一个天线,而低功耗蓝牙则采用树形拓扑结构。其中低功耗蓝牙分为点对点(point-to-point)、星型拓扑结构(StarTopology)、mesh网络(meshTopology)和广播式拓扑结构(broadcasttopologies)。这四种无线组网方式各有优缺点,但它们都具有良好的扩展性,可以扩展到更大的规模。在mesh的拓扑结构中,两个节点可以直接连接,无需经过中央节点与其他节点进行通信,从而大幅提升了系统的灵活性。此外,由于每个节点只需发送少量能量即可获得足够带宽,因而降低了系统功耗。由于节点具备将数据和信息传输至原始源节点通信范围之外的其他节点的能力,因此网络的覆盖范围在大型区域内得到了扩展。综合上述在结合自身实际情况,蓝牙无线通信技术普及性高,应用广,虽然传输速度慢但使用方便,可进行点对点传输,其成本更加实惠。故此选择蓝牙‎‏‎‏低‎‏能耗‎‎‏‏无线‎‏技‎‏‎‏术。图2-3蓝牙通信实物图2.4显示功能选择方案一:LEDdisplay是一款平板显示器,由一系列微小的LED模块面板构成,其色彩鲜艳、亮度高、工作寿命长、稳定性高,但其清晰度一般,彩色对比度一般,对比度低。LED灯珠在运输、安装和使用过程中容易脱落,导致部分像素点不亮,从而引发质量问题,同时也增加了死灯的可能性。方案二:OLED显示屏是利用有机电自发光二极管制成的显示屏。因其自发光,故可以直接控制像素点,控制速度非常快,操作更灵敏很难观察到残影现象。因其不背光源,所以材质更轻薄、可塑性强、可弯曲抗震。OLED显示屏可视角度好,对比度高、色域广,因为可以对像素点进行直接控制,其可以直接关闭像素点的发光,不会漏光。综合上述并结合系统实际情况,OLED因其材质更薄,运行速度更快,可以解决LED面板的拖影、残影问题。故选择方案二。图2-4OLED显示屏实物图第3章系统的硬件部分设计3.1系统总体设计本系统主要是开发一款共享自习室环境检测系统。借助STM32单片机搭配光敏电阻和气体传感器、温湿度传感器等传感器的作用,采集共享自习室空气中光照、PM2.5、二氧化碳浓度和环境中温湿度的含量,并且显示在LED液晶显示屏上,通过无线通讯传入手机APP。判断自习室内的空气状态,如果数值超过阈值,那么系统内的蜂鸣器将会发出报警。在进行该设计时,首先需要明确系统中各个模块之间的相互关系,并收集相关的软硬件资料,以确保整个系统的正常运行;进行软件编程和调试。确立系统的构成要素,勾勒出整体系统的架构,并在此基础上提出一个基于原理的框图;根据原理框图和总体设计原则对整个控制系统的软硬件模块分别进行了具体划分。进行电路部分的硬件设计,并绘制出各个部分的电路图,接着将系统部件通过接口电路整合在一起,最终绘制出相应的电路图;对系统软件进行编程实现各模块功能。在系统控制过程的基础上,完成软件设计部分并绘制主流程图;对软件模块和整体控制流程做出详细说明。最终,经过模拟仿真后,进行了实际组装,将元器件焊接到电路模板上,并结合程序进行了调试,最终将各个功能的电路程序组合起来,进行了全面的调试。3.2系统的主要功能模块设计3.2.1温湿度采集模块设计DHT11传感器是一种数字温湿度传感器,具有价格低廉、使用方便、精度高等优点。它的工作原理是通过测量介质中的温度和湿度,将其转化为电信号输出。DHT11传感器具有4个引脚,分别是VCC、DAT‏A、NC、GND,可与STM32单片机任意数字I/O连接。本系统采用STM32单片机作为主控芯片,经过软件和硬件的精心设计,成功地实现了一款基于DHT11传感器的温湿度检测设备。本系统能够在无人值守条件下对室内环境进行数据采集,并能根据需要将采集的结果传送至上位机即手机上,以方便用户随时了解室内情况。利用串口传输技术,我们能够实时监测环境中的温湿度变化,实验结果表明,该传感器具有高度的精准度和稳定性,足以满足实际应用的需求。温湿度采集模块原理图如图3-1所示。图3-1温湿度采集模块原理图3.2.2CO2浓度采集模块设计考虑到共享自习室的人员密度,需要进行CO2浓度检测。因此利用MQ-2传感器进行检测。Q-2是一种广泛应用于家庭和工厂的气体泄漏监测设备。其原理与其它类型气体传感器相同。MQ-2作为一款多功能气体探测器,其探测范围极为广泛,几乎涵盖了所有可能的气体。它主要应用在可燃液体、易燃固体或蒸气的检测上,也可用于其他气体的探测。其敏感度高,反应迅速,稳定性优异,寿命长久,驱动电路简单易用。CO2浓度监测模块原理图如图3-2所示。图3-2CO2浓度采集模块原理图3.2.3PM2.5浓度采集模块设计GP2Y1014AU0F是一款高效的光学灰尘传感器,它能够精准地检测出微小的颗粒,例如香烟烟雾等,具有卓越的检测能力。它可用于测量在空气中未被吸收的尘埃含量,从而确定是否需要清洁空气过滤器或清除空气中的尘土。主要参数如下:1.电源电压:5-7V2.工作温度:-10-65摄氏度3.消耗电流:20mA最大4.最小粒子检出值:0.8微米5.灵敏度:0.5V/(0.1mg/m3)6.清洁空气中电压:0.9V典型值7.工作温度:-10~65℃8.存储温度:-20~80℃图3-3PM2.5浓度采集模块原理图3.2.4光照强度采集模块设计光照强度采集模块原理图如图3-4所示。作为一种半导体型光敏元件,光敏电阻器不仅表现出卓越的灵敏度、快速响应、频谱特性和阻值一致性,同时也展现出极高的稳定性和可靠性,因此广泛应用于光声控制开关、各类光控玩具、光控灯饰、灯具等领域的光自动开关控制。图3-4光照强度采集模块原理图3.2.5显示模块设计0.96寸4针OLED屏模块为显示屏模块,由0.96英寸OLED显示屏及四个引脚组成,该OLED屏幕模块一般应用于嵌入式系统及小型电子设备,可显示文本图像等类型信息。该模块由多个子像素构成,每个子像素都具有相同的结构和功能。由于其微小的尺寸和低功耗,它们被广泛应用于智能手表、健康追踪器以及其他可携带的设备之中。在设计时为了实现其功能需要对该面板的四个基本元件进行合理的布局以达到所要求的性能。这类模块通常采用SPI或I2C接口进行通信,同时支持多种分辨率和颜色模式,以确保通信的多样性和灵活性。4个引脚分别为VCC、GND、SCL和‎SDA。在系统中,如果一个电源板有两个以上不同电压源供电的话。VCC作为一种电源引脚,主要用于提供模块所需的电源,通常为3.3V或5V,以确保用户获得更高强度的能量。地球导航系统(GND)是一种用于接收模块接地的接地装置。如果没有接在地线上,则会导致错误输出,因此必须将其从正极引出。需要将电源连接至负极。一般需要接到主控芯片和地线之间。SCL是一种时钟信号,用于在数据传输过程中传递时钟信息。一般情况下,这两种引脚都不能直接接到主控芯片的总线上,因为它们会占用一定面积来进行数据传输和控制。一般而言,主控芯片需要连接时钟引脚以确保数据传输的稳定性,而SDA则是一种数据引脚。当使用I2C接口时,为了接收主控芯片的数据,需要使用一种名为SDA(串行数据线)的引脚。图3-5显示模块原理图3.2.6蓝牙模块设计蓝牙模块可被用作主机或从机主机,以便自动搜索并建立连接,而从机则无法主动建立连接,只能等待他人连接自身。蓝牙的这种特性使它在很多方面比传统手机有优势。BLE蓝牙低能耗无线技术运用多种智能技术,以最大程度地减少功耗为目标。蓝牙协议采用了一个标准的物理层来实现数据与指令之间的通信,从而减少对电池能量的需求。蓝牙的低能耗架构由单模芯片和双模芯片两种不同的构成方式所组成。在本文所讨论的情况下,双模芯片被认为是最适合用于低功耗设计的芯片。蓝牙规范中最新推出的单模器件,专注于支持低能耗蓝牙技术,是专为优化ULP操作而设计的技术之一。在这一协议下,所有设备都必须同时执行蓝牙功能并采用蓝牙模式工作。蓝牙通信模块原理图如图3-6所示。图3-6蓝牙模块原理图3.2.7继电器模块设计共享自习室环境检测系统中的继电器需要具备以下功能需求:继电器需要能够控制电路的开关,例如控制指示灯、蜂鸣器等设备的开关;继电器需要能够通过控制信号进行控制,例如通过开关按钮、遥控器等控制信号;继电器需要具备高可靠性,能够长期稳定地工作,确保能够正常控制电路的开关;继电器需要具备安全性,能够在电路异常情况下进行自我保护,确保使用者的安全和设备的稳定运行;继电器需要具备较高的耐用性,能够经受住长时间使用和频繁开关的考验。综上所述,共享自习室环境检测系统中的继电器的功能需求包括开关功能、控制方式、可靠性、安全性和耐用性。这些功能可以确保控制电路的正常运行,控制温度、湿度、通风等设备的开关,并在电路异常时进行自我保护,确保使用者的安全和设备的稳定运行。图3-7继电器模块原理3.2.8蜂鸣器模块设计共享自习室环境监测系统中的蜂鸣器需要具备以下功能需求:当温湿度、CO2、PM2.5浓度超过设定阈值时,蜂鸣器需要能够发出警报声,提示使用者及时采取措施,蜂鸣器需要能够通过通信接口将数据传输给监控系统,以便记录和分析警报信息;蜂鸣器需要具备高可靠性,能够长期稳定地工作,确保在需要时能够正常发出警报声。综上所述,蜂鸣器在共享自习室环境监测系统中的功能需求包括警报提示、数据传输和可靠性。这些功能可以确保监控系统能够及时检测到温湿度、CO2、PM2.5浓度异常情况,并通过蜂鸣器发出声音提示,以便及时采取措施。图3-8蜂鸣器模块原理图第4章系统的软件设计4.1系统总体流程图图4-1系统总体流程图4.2温湿度采集模块软件的设计当温湿度传感器接通,测试温湿度当时值,当温度超过预设的阈值时,系统将自动启动降温模式,而当温度降至设定的阈值以下时,系统则会自动启动加热模式;当空气中的湿度超过预设的阈值时,启动除湿模式;而当湿度低于预设的阈值时,则启用通风模式。图4-2温湿度模块子程序流程图4.3CO2浓度采集模块软件的设计利用MQ-2型烟雾传感器探测自习室内二氧化碳浓度,当二氧化碳浓度未达到预设的阈值时,启动通风模式;在CO2浓度超过预设的阈值时,需关闭通风模式以确保空气质量。图4-3CO2浓度采集模块子程序流程图4.4PM2.5浓度采集模块软件的设计通过夏普光学灰尘传感器检测自习室内的PM2.5浓度,当PM2.5浓度低于设定的阈值时,开启通风模式;当PM2.5浓度高于设定的阈值时,关闭通风模式。图4-4PM2.5浓度采集模块子程序流程图4.5光照强度模块软件的设计利用光敏电阻检测自习室内的光照强度,当光线强度未达到预设阈值时,启动灯光照明系统;当光照强度超过设定的阈值时。在超过预设阈值的光照强度下,关闭灯光照明以确保照明效果。图4-5光照强度模块子程序流程图4.6显示模块软件的设计在设计中需要显示当前环境的CO2含量、PM2.5含量、光照强度和温湿度。系统使用液晶显示数据,STM32单片机初始化完成后显示屏会自动写控制字,控制字为单片机中获得的数据,随后显示出来。图4-6显示模块子程序流程图4.7继电器模组软件的设计继电器需要能够控制电路的开关,例如控制指示灯、蜂鸣器等设备的开关;继电器需要能够通过控制信号进行控制,例如通过开关按钮、遥控器等控制信号;继电器需要具备高可靠性,能够长期稳定地工作,确保能够正常控制电路的开关。图4-7继电器模组子程序流程图

4.8蓝牙模组软件的设计在设计中需要上位机能够搜索到其蓝牙并能与其连接成功,成功连接后将传感器收集到的数据传输到上位机APP中,并同时可以接受上位机APP下达的指令,改写参数。系统可通过其实现用上位机APP控制设备。图4-8蓝牙模组子程序流程图第5章系统测试5.1系统实物图如图5-1所示。图5-1系统实物图5.2测试原理测试用例应当涵盖所需测试的功能、输入的数据以及预期的输出成果。在设计与实现阶段,测试用例的确定可以采用自上而下或自下而上两种方法,前者侧重于功能分析及性能优化,后者则侧重对具体软件组件或子系统进行全面的功能分析并提出相应解决方案。为了确保测试数据的全面性和高效性,我们应该选择尽可能少且高效的数据进行测试;测试方法必须符合软件可靠性模型的要求,且与所设计的软件系统具有较高的兼容性。为了确保系统符合规格说明书的要求,我们需要输入用户的实际数据进行验证;测试范围应根据不同情况而有所不同,但都必须包含所需测试的所有功能。在测试用例中,必须确保测试点的覆盖范围不少于需求规格说明书中规定的各项功能,并且保持正常运行状态

5.3功能测试给系统通电,并通过蓝牙模块与上位机手机APP连接成功,OLED显示屏与手机APP同步显示相关参数。图5-2蓝牙通信测试(1)温湿度测试当与上位机APP连接时,温湿度传感器测试自习室内的温湿度,此时手机APP与OLED显示屏显示温度22℃,此时温度阈值为0–20℃,此时超过温度上限,蜂鸣器发出嗡鸣声报警,制冷继电器指示灯亮起,证明制冷功能可以正常运行。图5-3温度测试图保持与上位机APP连通,通过上位机APP调整温度阈值为25℃–50℃,此时APP与OLED显示屏显示阈值为25℃–50℃,自习室内温度22℃低于设定的阈值,蜂鸣器发出嗡鸣声报警,加热继电器指示灯亮起,证明加热功能可以正常运行。图5-4温度测试图保持与上位机APP连通,调回温度阈值为10-50℃。此时湿度传感器检测自习室内的湿度并实时显示为42rh。在手机APP设置湿度下限为45rh,低于设定的湿度阈值,蜂鸣器发出嗡鸣声报警,加湿继电器指示灯亮起,证明加湿功能能正常运行。图5-5湿度测试图

(2)PM2.5传感器测试,保持与上位机APP连通,将湿度阈值调回10rh–50rh,夏普光学灰尘传感器检测自习室内的PM2.5浓度并在OLED显示屏和APP实时显示数值161,通过手机APP设置PM2.5浓度下限为100,当PM2.5浓度低于设定的阈值时,蜂鸣器发出嗡鸣声报警,通风继电器指示灯亮起,证明通风功能可以正常运行。图5-6PM2.5模组测试(3)CO2传感器测试保持与上位机APP连通,调回PM2.5下限为1000,通过MQ-2型烟雾传感器检测自习室内的CO2浓度并实时显示在OLED显示屏上,数值为1719,设置CO2浓度下限为1000,室内CO2浓度低于设定的阈值。此时蜂鸣器发出嗡鸣声报警,通风继电器指示灯亮起,证明通风功能可以正常运行。图5-7CO2模组测试5.4照明功能测试保持与上位机APP连通,调回CO2浓度下限4000,通过光敏电阻检测自习室内的光照强度为221,通过手机APP设置光照强度下限为300,当光照强度低于设定的阈值时,蜂鸣器发出嗡鸣声报警,LED灯亮起,证明照明功能可以正常运行。图5-8光敏模组测试第6章总结与展望共享自习室环境检测系统的设计是一个涉及多个方面的复杂过程,需要对系统需求、传感器选型、数据采集和传输、数据处理和分析、系统架构和部署等方面进行深入的分析和研究。在设计完成后,我们可以总结如下几个方面的成果和收获:(1)实现了对共享自习室环境的实时监测和管理,包括温度、湿度、二氧化碳、PM2.5等多个环境参数的监测和预警。(2)提高了共享自习室的管理效率和用户体验,通过系统的实时数据监测和分析,可以及时发现和解决室内环境问题,保障用户的学习和生活质量。(3)探索了物联网和传感器技术在共享自习室管理中的应用,为智慧城市和智慧校园建设提供了有益的经验和思路。未来展望:共享自习室环境检测系统具有广阔的应用前景和发展空间。未来,我们可以进一步完善系统功能和性能,探索新的应用场景和解决方案,如结合人工智能和大数据技术实现更加精准的数据分析和预测,建立智能化的自动化管理系统,提高系统的可扩展性和可维护性。同时,还可以将系统与其他相关领域进行结合,如室内空气净化、智能照明、能源管理等,实现更加全面和高效的共享自习室管理和服务。参考文献[1]聂嘉乐,余旌胡.一类受随机扰动的动态优化问题的环境检测与响应[J].数学物理学报.2022.[2]徐骜博.室内空气质量检测系统的研究[M].黑龙江大学,2018.[3]丁月月,龙光利.基于LoRa通信的机房环境检测与控制系统的设计[J].物联网技术.2021.[4]梁锦昌.环境检测实验室分析工作质量不确定度分析[J].皮革制作与环保科技.2021.[5]胡俊贤,田秀云,赖锦松等.基于单片机的空气质量检测与报警系统设计[J].电子测试,2020.[6]唐秀华,唐菊荣.环境检测的作用与环境保护措施分析[J].清洗世界,2022.[7]姜俊,李晖.室内空气质量检测发展现状[J].湖北林业科技,2020.[8]冯召南.室内空气质量检测系统的设计与实现[M].哈尔滨理工大学,2022,.[9]齐利平.环境检测中化学分析方法的应用研究[J].皮革制作与环保科技.2022[10]徐文政.智能家居室内空气质量检测评价与监控系统设计[M].北京工业大学.2021[11]叶智勇,操思薇,张楠,李琦,郏晨植.基于AIoT技术的高校自习室智慧光环境营造系统设计与实现[J].软件,2022,43(12):183-186.[12]刘一婵,李永昌.基于非互动关系的共享自习室空间设计研究[J].美术教育研究,2022(22):96-98.[13]李一丁.基于单片机的室内环境检测监控系统设计[J].信息与电脑(理论版),2021,33(23):155-157+165.[14]郭帅.建筑工程室内环境污染的检测及治理对策初探[J].皮革制作与环保科技,2021,2(20):110-111.[15]陆殿华,唐凯璇,吴子恒,唐鑫.基于STM32的室内环境检测调节系统[J].电子产品世界,2021,28(09):100-10[16]GarzaMorenoLaura;VilaltaCarles.EnvironmentaldetectionofMycoplasmahyopneumoniaeinbreed-to-weanfarms.[P].2022[17]ThirumalG.,KumarChiranjeev.MultilevelsensordeploymentapproachinIIoT-basedenvironmentalmonitoringsysteminundergroundcoalmines[J].ComputerCommunications,2022,195.[18]VicenteVaniaAparecida;LustosaBrunoPauloRodrigues.EnvironmentalDetectionofSARS-CoV-2VirusRNAinHealthFacilitiesinBrazilandaSystematicReviewonContaminationSources[C]2018[19]LiuChenguang.DesignandResearchofBuildingIndoorEnvironmentMonitoringSystemRelyingon3DModelingandImageProcessing[J].JournalofElectricalandComputerEngineering,2022,2022.[20]MaranzanoPaolo.AirQualityinLombardy,Italy:AnOverviewoftheEnvironmentalMonitoringSystemofARPALombardia[J].Earth,2022,3(1).附录电路图

源代码#include"sys.h"#include"usart.h"#include"stdlib.h"#include"delay.h"#include"usart2.h"#include"usart3.h"#include"string.h"#include"oled.h"#include"adc.h"#include"tim.h"#include"app.h"#include"gpio.h"#include"dht11.h"#include"pm25.h"uint8_tval[2];intmain(void){u8t; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 delay_init();//延时函数初始化 system_Time_Init(9,7199); USART_Config();//串口打印USART3_Config(9600);//蓝牙GPIOABC_Configuration(); uart2_init(9600);//adc_init();DHT11_Init();//DHT11初始化 pm25_init(); OLED_Init();// OLED_Clear(); delay_ms(1); while(1) { app(); }}ifndef__SYS_H#define__SYS_H #include"stm32f10x.h"//0,不支持ucos//1,支持ucos#defineSYSTEM_SUPPORT_OS 0 //定义系统文件夹是否支持UCOS //IO口操作宏定义#defineBITBAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))#defineMEM_ADDR(addr)*((volatileunsignedlong*)(addr))#defineBIT_ADDR(addr,bitnum)MEM_ADDR(BITBAND(addr,bitnum))//IO口地址映射#defineGPIOA_ODR_Addr(GPIOA_BASE+12)//0x4001080C#defineGPIOB_ODR_Addr(GPIOB_BASE+12)//0x40010C0C#defineGPIOC_ODR_Addr(GPIOC_BASE+12)//0x4001100C#defineGPIOD_ODR_Addr(GPIOD_BASE+12)//0x4001140C#defineGPIOE_ODR_Addr(GPIOE_BASE+12)//0x4001180C#defineGPIOF_ODR_Addr(GPIOF_BASE+12)//0x40011A0C#defineGPIOG_ODR_Addr(GPIOG_BASE+12)//0x40011E0C#defineGPIOA_IDR_Addr(GPIOA_BASE+8)//0x40010808#defineGPIOB_IDR_Addr(GPIOB_BASE+8)//0x40010C08#defineGPIOC_IDR_Addr(GPIOC_BASE+8)//0x40011008#defineGPIOD_IDR_Addr(GPIOD_BASE+8)//0x40011408#defineGPIOE_IDR_Addr(GPIOE_BASE+8)//0x40011808#defineGPIOF_IDR_Addr(GPIOF_BASE+8)//0x40011A08#defineGPIOG_IDR_Addr(GPIOG_BASE+8)//0x40011E08//IO口操作,只对单一的IO口!//确保n的值小于16!#definePAout(n)BIT_ADDR(GPIOA_ODR_Addr,n)//输出#definePAin(n)BIT_ADDR(GPIOA_IDR_Addr,n)//输入#definePBout(n)BIT_ADDR(GPIOB_ODR_Addr,n)//输出#definePBin(n)BIT_ADDR(GPIOB_IDR_Addr,n)//输入#definePCout(n)BIT_ADDR(GPIOC_ODR_Addr,n)//输出#definePCin(n)BIT_ADDR(GPIOC_IDR_Addr,n)//输入#definePDout(n)BIT_ADDR(GPIOD_ODR_Addr,n)//输出#definePDin(n)BIT_ADDR(GPIOD_IDR_Addr,n)//输入#definePEout(n)BIT_ADDR(GPIOE_ODR_Addr,n)//输出#definePEin(n)BIT_ADDR(GPIOE_IDR_Addr,n)//输入#definePFout(n)BIT_ADDR(GPIOF_ODR_Addr,n)//输出#definePFin(n)BIT_ADDR(GPIOF_IDR_Addr,n)//输入#definePGout(n)BIT_ADDR(GPIOG_ODR_Addr,n)//输出#definePGin(n)BIT_ADDR(GPIOG_IDR_Addr,n)//输入#ifndef__USART_H#define__USART_H#include"stdio.h" #include"sys.h"#include"stm32f10x.h" //externu8USART_RX_BUF[USART_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节.末字节为换行符//externu16USART_RX_STA; //接收状态标记 ////如果想串口中断接收,请不要注释以下宏定义//voiduart_init(u32bound);//串口1-USART1#defineDMA_UART1_data_len128externu8DMA_UART1_data[DMA_UART1_data_len];#defineDEBUG_USARTxUSART1#defineDEBUG_USART_CLKRCC_APB2Periph_USART1#defineDEBUG_USART_APBxClkCmdRCC_APB2PeriphClockCmd#defineDEBUG_USART_BAUDRATE9600//USARTGPIO引脚宏定义#defineDEBUG_USART_GPIO_CLK(RCC_APB2Periph_GPIOA)#defineDEBUG_USART_GPIO_APBxClkCmdRCC_APB2PeriphClockCmd#defineDEBUG_USART_TX_GPIO_PORTGPIOA#defineDEBUG_USART_TX_GPIO_PINGPIO_Pin_9#defineDEBUG_USART_RX_GPIO_PORTGPIOA#defineDEBUG_USART_RX_GPIO_PINGPIO_Pin_10#defineDEBUG_USART_IRQUSART1_IRQn#defineDEBUG_USART_IRQHandlerUSART1_IRQHandlervoidUSART_Config(void);voidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch);voidUsart_SendString(USART_TypeDef*pUSARTx,char*str);voidUsart_SendHalfWord(USART_TypeDef*pUSARTx,uint16_tch);#endif#ifndef__DELAY_H#define__DELAY_H #include"sys.h" voiddelay_init(void);voiddelay_ms(u16nms);voiddelay_us(u32nus);voiddelay_nms(u16nms);voiddelay_nus(u32nus);#endif#ifndef__USART2_H#define__USART2_H#include"stdio.h" #include"sys.h"voiduart2_init(u32bound);#defineUSART2_REC_LEN 200 //定义最大接收字节数200#defineEN_USART2_RX 1 //使能(1)/禁止(0)串口1接收 externu8USART2_RX_BUF[USART2_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节.末字节为换行符externu16USART2_RX_STA; //接收状态标记 //如果想串口中断接收,请不要注释以下宏定义voidUSART2_SendString(u8*DAT,u8len);voidUSART2_SendData(u8data);voidUSART2_Init(u32bound);#endif#ifndef__USART3_H#define__USART3_H#include"stdio.h" #include"sys.h"#defineUSART3_REC_LEN 200 //定义最大接收字节数200#defineEN_USART3_RX 1 //使能(1)/禁止(0)串口1接收 externu8USART3_RX_BUF[USART3_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节.末字节为换行符externu16USART3_RX_STA; //接收状态标记 //如果想串口中断接收,请不要注释以下宏定义voiduart3_init(u32bound);voidUSART3_Config(u32bound);voidUSART3_send_byte(u8data);voidUSART3_send_buf(u8*buf,u16len);#endif#ifndef__OLED_H#define__OLED_H#include"sys.h"#include"stdlib.h" #defineOLED_MODE0#defineSIZE8#defineXLevelL 0x00#defineXLevelH 0x10#defineMax_Column 128#defineMax_Row 64#define Brightness 0xFF#defineX_WIDTH 128#defineY_WIDTH 64 //OLEDIIC端口定义 #defineOLED_SCLK_Clr()GPIO_ResetBits(GPIOB,GPIO_Pin_6)//SCL#defineOLED_SCLK_Set()GPIO_SetBits(GPIOB,GPIO_Pin_6)#defineOLED_SDIN_Clr()GPIO_ResetBits(GPIOB,GPIO_Pin_5)//SDA#defineOLED_SDIN_Set()GPIO_SetBits(GPIOB,GPIO_Pin_5) #defineOLED_CMD0 //写命令#defineOLED_DATA1 //写数据//OLED控制用函数voidOLED_WR_Byte(unsigneddat,unsignedcmd);voidOLED_Display_On(void);voidOLED_Display_Off(void); voidOLED_Init(void);voidOLED_Clear(void);voidOLED_DrawPoint(u8x,u8y,u8t);voidOLED_Fill(u8x1,u8y1,u8x2,u8y2,u8dot);voidOLED_ShowChar(u8x,u8y,u8chr,u8Char_Size);voidOLED_ShowNum(u8x,u8y,u32num,u8len,u8size);voidOLED_ShowString(u8x,u8y,u8*p,u8Char_Size); voidOLED_Set_Pos(unsignedcharx,unsignedchary);voidOLED_ShowCHinese(u8x,u8y,u8no);voidOLED_DrawBMP(unsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharBMP[]);void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论