74-基于stm32单片机农业蔬菜大棚温湿度光照采集控制系统源程序、原理图、元件清单实物制作

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

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

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

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

部分程序展示://定时器设置1void 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打开。 

原理图采用【AD】altium designer打开,文件中有安装包

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

百度云盘资料下载链接 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值