你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用CubMX和Proteus学习STM32单片机(七)------智能环境监测系统

[复制链接]
STMCU小助手 发布时间:2022-12-31 19:29
该智能环境监测系统采用STMF103R4为主控MCU单元,主要外设有LCD1602,DHT11,EEPROM 24C02以及LDR光电检测单元,采用Proteus作为仿真平台用于对系统进行一个初步的验证,采用CubMX和Keil作为程序编辑软件,以实现监测周围环境的主要参数的功能。

第一,先介绍一下Proteus上搭建的硬件电路图。
首先是STMF103R4单元,如下图所示:

GJEZCMI(TY0E%7[3H_U][2L.png

然后是LCD1602模块:

LCMM63DLJYVQCJAK5)UVML2.png

然后是EEPROM 24C02模块:

N$(H[Z6C~83QT5BNN`3$EFD.png

然后是DHT11模块:

44BTL5N{%P]2{C}N`[0EBIB.png

最后是LDR光电检测部分,用于转换光强数据:

SHXZOZI5ID5DHXC6Z%GMV~E.png

最最后,再来一张整体的图。

8~6FQF8MY2IDO`BFLFV3FPD.png

第二,对功能进行一个简单的概括
LCD1602实时显示测量的温度与湿度;

对光照强度进行实时监控,在LCD1602上显示AD_Value,

设置AD_Value在一定值的时候输出不同占空比的PWM波给LED灯;

将最近的5个温湿度数据输入进24C02中,存储起来,按下按键后在LCD1602上显示最近的5个湿度温度数据,

再按一次按键就显示实时的温度湿度以及AD_Value。


第三,简单介绍一下Keil中的程序
首先是温湿度采集显示功能,相关程序如下图所示,刚开始调用DHT11_Read_Data函数将温度数据和湿度数据分别赋给temp和humi两个变量,然后将它们赋值给要存储进24C02中的数组,最后调用sprintf格式化函数和LCD_WRITE_StrDATA显示函数将温湿度数据显示再LCD1602中。

N1_XP]Y)_@H5D~OY7T_XP.png

然后是ADC采集功能以及PWM占空比设置功能,光照强度越强,AD采集的电压越小,需要LED的亮度也要越暗些,所以PWM的占空比要小一些,所以AD_Value与PWM的占空比P_Value成一种正关系,即AD_Value越大,P_Value越大,设置P_Value=AD_Value/50就行,因为AD_Value最大值是4096,不要让P_Value超过100就可以了。程序如下图所示。刚开始掉用HAL_ADC_Start函数启动32单片机内部ADC,之前已经初始化了,然后判断是否转换完成和检测完成,都没问题之后再用HAL_ADC_GetValue函数获取ADC转换数据,然后计算出PWM占空比,再进行格式化并在LCD1602上显示。最后将新的占空比写进__HAL_TIM_SET_COMPARE函数中,从而改变输出的PWM波形占空比,改变LED灯的亮度。

{37$]U%T49`X@__BQ7S%[}L.png

还有就是存储最近的5次温湿度数据进24C02中,程序如下图所示,首先复位一下写地址,然后一个for循环调用AT_24C02_write_data写入函数分别将5个温度数据和5个湿度数据写入24C02中以供备用。

$)~K8OKPO7_@HG{%KC%B}{Y.png

最后就是一个按键切换的功能,先提前设置好一个标志位flag,主要程序如下图所示,当检测到按键正常按下后,取反标志位flag,然后给LCD1602清一次屏。

_78(O]9C1%_LUL(SY3G9KUT.png

最最后在while循环里面判断标志位并设置标志位为不同值时的功能即可。程序如下图所示,flag为1的时候读取24C02中的数据并在LCD1602上显示。

L_C85_7{G60W@0]40C~HCLG.png

反之,flag为0的时候则将前三个功能一起应用起来即可。

1I)U4CQKQC6%I600{@PA.png

    第四,进入实际检验阶段

将程序编译好然后在Proteus中显示出来。实际现象如下图所示。

LCD1602第一行显示温度和湿度,第二行显示AD_Value和PWM占空比。

按下一次按键后,将24C02存储的最近的5次温度数据和湿度数据显示在LCD1602上。

[1`H~O]}IOM40%ID5C`A1.png

其实还是仿真还是有点问题的,可能调用的资源比较多,Proteus仿真的时候比较慢,且容易卡住,这个问题应该在实际的板子上能够消除。

补充一下CubMX的配置:

%H2F`RC87)MOXI3G9RXB2RA.png

OE@4{%SRLZMBW7FQL{U2_JA.png

((49S0BYI{29V$N{5PR%7(5.png

30[ARBPT`9`]Q_ZIK31CJ.png

A5J7$[MA(PT5Q)(8FL4$%[Y.png

T90AI9Z@V6HLRP19P~NWW_N.png


作者:jxjajl


收藏 评论0 发布时间:2022-12-31 19:29

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版