167-基于stm32单片机智能盆栽植物生长环境监测系统Proteus仿真+源程序

资料编号:167

一:功能介绍

1、采用stm32单片机+LCD1602显示屏+DHT11温湿度模块+电位器+按键+电机,制作一个基于stm32单片机智能盆栽植物生长环境监测系统Proteus仿真;

2、通过DHT11温湿度传感器,读取当前的温度和湿度,数值显示到LCD1602显示屏上;

3、可以通过按键设置湿度阈值,显示到LCD1602显示屏上;

4、监测到湿度低于设置阈值时,自动开启浇水电机进行浇水;

5、通过电位器模拟光照变化,可以通过stm32单片机内部ADC采集光照强度,显示到LCD1602显示屏上;

二:仿真演示视频+程序简要讲解(程序有中文注释,新手容易看懂)

三:设计软件介绍

本设计使用C语言编程设计,程序代码采用keil5编写,程序有中文注释,新手容易看懂,仿真采用Proteus软件进行仿真,演示视频使用的是Proteus8.9版本;资料包里有相关软件包,可自行下载安装。

四:程序打开方法

特别注意:下载资料包以后一定要先解压! !!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

d84bed5856a14ccdf731f9691251f941.png

b616ea83a65a5ded7b9e118127d772a6.png

程序部分展示,有中文注释,新手容易看懂
/* ADC配置 */
void ADC_Set(void)
{
  ADC_InitTypeDef ADC_InitStructure;//ADC结构体变量//注意在一个语句快内变量的声明要放在可执行语句的前面,否则出错,因此要放在ADC1_GPIO_Config();前面
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式
  ADC_InitStructure.ADC_ScanConvMode =        DISABLE; //使能扫描
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由软件控制转换,不使用外部触发
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
  ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为1
  ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC   
  ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_28Cycles5);




  
  ADC_Cmd(ADC1, ENABLE);//使能ADC1
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
void anjiansaomiao(void)
{


  //值+
  if(k1 == 1)
  {
      set1++;     while(k1!=0);
      if(set1>100) set1=100;      
  }
  //值-    
  if(k2 == 1)
  {      
      set1--;      while(k2!=0);
      if(set1<1) set1=1;
  }  
    
}


int main(void)
{
  float vol;//ADC电压值
  IO_out();
  GPIO_Configuration();//初始化  
  Init1602();      
   ADC_Set();  //获取光敏电阻阻值,单位K欧
  delay_ms(500);
  while(1)
  {  
    
      //计算光强
      vol = ADC_GetConversionValue(ADC1);
      //根据阻值计算光强
      guangqiang = vol*(3.4/4096)*45.;
  anjiansaomiao();
  WrByte1602(0,1,' '); //字符显示
  WrByte1602(0,2,'W'); 
  WrByte1602(0,3,'D'); 
  WrByte1602(0,4,'='); 
  
  WrByte1602(0,9,' '); 
  WrByte1602(0,10,'S'); 
  WrByte1602(0,11,'D'); 
  WrByte1602(0,12,'='); 
    
  WrByte1602(1,2,'G'); 
  WrByte1602(1,3,'Z'); 
  WrByte1602(1,4,'='); 
  
  WrByte1602(1,9,'S'); 
  WrByte1602(1,10,'E'); 
  WrByte1602(1,11,'T'); 
  WrByte1602(1,12,'='); 
    //读取温湿度
    DHT11_receive(&shidu,&wendu);
    anjiansaomiao();
  WrByte1602(1,5,AsciiCode[guangqiang%1000/100]);  //显示光照
  WrByte1602(1,6,AsciiCode[guangqiang%100/10]);
  WrByte1602(1,7,AsciiCode[guangqiang%10]);
  
  WrByte1602(0,5,AsciiCode[wendu%1000/100]);//显示温度
  WrByte1602(0,6,AsciiCode[wendu%100/10]);
  WrByte1602(0,7,AsciiCode[wendu%10]);


  WrByte1602(0,13,AsciiCode[shidu%1000/100]);  //显示湿度
  WrByte1602(0,14,AsciiCode[shidu%100/10]);
  WrByte1602(0,15,AsciiCode[shidu%10]);
  
    
  WrByte1602(1,13,AsciiCode[set1%1000/100]); //显示设置湿度
  WrByte1602(1,14,AsciiCode[set1%100/10]);
  WrByte1602(1,15,AsciiCode[set1%10]);  
  
  if(shidu<set1)//湿度<设置值  开启浇水
    PCout(10)=0;
  else PCout(10)=1;

五:仿真文件(采用Proteus打开)

061d5e0c9f9ca3c985d4d70b7f78e623.png

e7eaac5e994b216fd734b6cc2051fe3b.png

d4f44f60345d0dffba34e4199f21885a.png

97afbe262077e2903de08fc24940359c.png

六:资料清单展示(文件中包含的相关资料)

5f586fb07ff7995b96b1d33829349463.png

付费后即可在下方获取资料下载链接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值