74-基于stm32单片机农业蔬菜大棚温湿度光照采集控制系统(程序+原理图+元件清单全套资料)...

资料编号:074

功能介绍:采用stm32单片机作为主控CPU,采用DHT11传感器采集温湿度,采用光敏传感器采集光照强度,通过按键设置温湿度、光照的阈值,当温度高于设置值,继电器开启散热,当湿度低于设置值,继电器开启加湿,当光敏值大于设置值,蜂鸣器进行报警提醒,LCD1602显示相关数据,程序中文注释,新手容易看懂,全套实物资料齐全:

下面是实物演示视频和相关实物图片

c3e14bc6dcd0a85e6ead648fb6aff9e9.jpeg

d37dce3bc797861fabf33e51f03d6376.png

下面是程序部分展示(程序有中文注释,新手容易看懂)

部分程序展示:
//定时器设置1
void TimerConfig(TIM_TypeDef* TIMx,unsigned int time)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_DeInit(TIMx);
  TIM_TimeBaseStructure.TIM_Period = time * 2;             /* 自动重装载寄存器周期的值(计数值) */
                                                          /* 累计 TIM_Period个频率后产生一个更新或者中断 */
  TIM_TimeBaseStructure.TIM_Prescaler= (4000- 1);            /* 时钟预分频数   例如:时钟频率=72MHZ/(时钟预分频+1) */
  TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;       /* 采样分频 */
  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;     /* 向上计数模式 */
  TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);
  TIM_ClearFlag(TIMx, TIM_FLAG_Update);                  /* 清除溢出中断标志 */
  TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);
}


//定时器开关
void TimerSW( TIM_TypeDef* TIMx, FunctionalState NewState )
{
   TIM_SetCounter(TIMx,0);  
   TIM_Cmd(TIMx,NewState);
}


char k6,k7;
/*
wendu,shidu,guangqiang,xiaoshi,fenzhong
*/
void Display(void)
{
  char xxx=0,yyy=0;
  //T1 温度
  WrByte1602(0,0,'T'); //.
  WrByte1602(0,1,'='); //.    
  WrByte1602(0,2,AsciiCode[wendu%100/10]);
  WrByte1602(0,3,AsciiCode[wendu%10]);
  WrByte1602(0,4,' ');  
  //T2 湿度
  WrByte1602(0,5,'H'); //.
  WrByte1602(0,6,'='); //.    
  WrByte1602(0,7,AsciiCode[shidu%100/10]);
  WrByte1602(0,8,AsciiCode[shidu%10]);
  WrByte1602(0,9,' ');    
  //T3 光强
  WrByte1602(0,10,'G'); //.
  WrByte1602(0,11,'='); //.    
  WrByte1602(0,12,AsciiCode[guangqiang%1000/100]);  
  WrByte1602(0,13,AsciiCode[guangqiang%100/10]);
  WrByte1602(0,14,AsciiCode[guangqiang%10]);
  WrByte1602(0,15,' ');    


  xxx=0;yyy=1;
  //T6 湿度动作值
  
  WrByte1602(1,2,AsciiCode[wendu1%100/10]);
  WrByte1602(1,3,AsciiCode[wendu1%10]);
  
  WrByte1602(1,7,AsciiCode[shidu1%100/10]);
  WrByte1602(1,8,AsciiCode[shidu1%10]);  
  
  WrByte1602(1,12,AsciiCode[gm%1000/100]);  
  WrByte1602(1,13,AsciiCode[gm%100/10]);
  WrByte1602(1,14,AsciiCode[gm%10]);
}


int main(void)
{  
  char  i=0;
  float vol;//电压
  //时钟配置
  SystemInit();    
  SystemCoreClockUpdate();
  //引脚配置
  GPIO_Configuration();
  //LCD1602初始化
  Init1602();
  NVICConfig();
  //RCC时钟开启
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  //定时器  
  TimerConfig(TIM3,10);//定时器
  //开启定时器
  TimerSW(TIM3, ENABLE);
   //获取光敏电阻阻值,单位K欧
   ADC_Set();  
  //DS1302数据编码格式需要进行转换
  PBout(5)=0;//LED灯亮
//WriteDS1302Clock(time_buf);
  while (1)
  {    


    delay_ms(10);


           //计算光强


         vol = ADC_GetConversionValue(ADC1);
         vol = 10*(4095-vol)/vol;
         //根据阻值计算光强
         guangqiang = 285.6*pow(vol,-1.168)+0.1;              


         //读取室内温度
         DHT11_receive(&shidu,&wendu);


         Display(); 
    
         //按键扫描
         anjiansaomiao();
      
if(wendu%100>wendu1) Q1=0;
    else Q1=1;
    
if(shidu%100>shidu1) Q2=0;
    else Q2=1;


if(guangqiang>gm) Q3=0;
    else Q3=1;

程序打开方法:采用keil5打开,公众号有软件安装包

f592b6cc0a9ee523272476b869fcf8c7.png

原理图采用【AD】altium designer打开,公众号有安装包

f6ea5182ca3ea7cb68166cb38f8557aa.png

43081504f5b2b75922fea98c39d195a0.png

下面是资料包里面包含的相关文件展示

85a4ddaa3ee3ed0af153d7fb389937f9.png

资料源链接:设计资料合集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值