基于STM32的大棚温室补光温湿度检测控制proteus仿真

更新时间:2023-06-18 06:36:05 阅读: 评论:0

基于STM32的⼤棚温室补光温湿度检测控制proteus仿真硬件设计
(末尾附⽂件)
仿真图如下所⽰:
程序设计
#include "stm32f10x.h"
#include "LQ12864.h"
#include "adc.h"
#include "dth11.h"
#define PUSH_UP 1
#define PUSH_DOWN 2
#define PUSH_OK 3
#define PUSH_NONE 4
void main_delay(u32 ms)
{
int i, j;
for(i = 0; i < ms; i++)
{
for(j = 0; j < 1000; j++)
{
;
}
}
}
//按键初始化函数
void KEY_Init(void) //IO初始化
void KEY_Init(void) //IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
//初始化KEY0-->GPIOA.1  上拉输⼊
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA,
GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;//PE2~4 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输⼊
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA1
}
int KEY_Read()
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0) == 0)
{
return PUSH_UP;
}
el if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)
{
return PUSH_DOWN;
}
el if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == 0)
{
return PUSH_OK;
}
el
return PUSH_NONE;
}
void FAN_Init()
{
GPIO_InitTypeDef  GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
}
void Beep_Init()
{
GPIO_InitTypeDef  GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;过去将来时例句
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
}
void LED_Init()
{文件夹加密码
GPIO_InitTypeDef  GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
烧烤烤鱼GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
GPIO_SetBits(GPIOA,GPIO_Pin_3);
}
int main(void)
{
int key;
int times;
int status[4] = { 0 };
uint16_t val;
u8 temp = 0, hum = 0;
int i = 2;
char buf[100] = { 0 };
delay_init() ;
LCD_Init() ;
Adc_Init();
DHT11_Init();
KEY_Init();
LED_Init();
FAN_Init();
Beep_Init();
while(1)
{
DHT11_Read_Data(&temp, &hum);
sprintf(buf, "temp: %d  hum:%d", temp, hum);
LCD_P6x8Str(1, 0, buf);
val = Get_Adc();  //得到对应通道的adc值
sprintf(buf, "light:%d  ", val);
难过近义词LCD_P6x8Str(1, 1, buf);
LCD_P6x8Str(1, 2, "LED1    ");
LCD_P6x8Str(1, 3, "LED2    ");
LCD_P6x8Str(1, 4, "BEEP    ");
LCD_P6x8Str(1, 5, "FAN      ");
LCD_P6x8Str(40, i, "*"); //
sprintf(buf, "L1:%d L2:%d BE:%d FAN:%d", status[0], status[1], status[2], status[3]);
LCD_P6x8Str(1, 6, buf);
for (times = 0; times < 5000; ++times)
{
key = KEY_Read();
if (key != PUSH_NONE)
河北师范大学录取分数线{
main_delay(200);
break;
}
}
年糕纪念谁if(key == PUSH_DOWN)逍遥自得
{
i++;
if(i > 5)
i = 2;
}
el if(key == PUSH_UP)
{
i--;
if(i < 2)
i = 5;
}
el if(key == PUSH_OK)
{
if(i == 2)
{
status[0] = !status[0];
status[0] ? GPIO_RetBits(GPIOA,GPIO_Pin_2) : GPIO_SetBits(GPIOA,GPIO_Pin_2);    }
el if(i == 3)
{
status[1] = !status[1];
status[1] ? GPIO_RetBits(GPIOA,GPIO_Pin_3) : GPIO_SetBits(GPIOA,GPIO_Pin_3);
status[1] ? GPIO_RetBits(GPIOA,GPIO_Pin_3) : GPIO_SetBits(GPIOA,GPIO_Pin_3);
}
el if(i == 4)
{
status[2] = !status[2];
status[2] ? GPIO_RetBits(GPIOA,GPIO_Pin_4) : GPIO_SetBits(GPIOA,GPIO_Pin_4);        }
el if(i == 5)
{
status[3] = !status[3];
status[3] ? GPIO_RetBits(GPIOA,GPIO_Pin_1) : GPIO_SetBits(GPIOA,GPIO_Pin_1);            }
}
}
双色茉莉花}
.
.

本文发布于:2023-06-18 06:36:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1043638.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控制   检测   通道   按键   文件夹   烧烤
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图