STM32的光敏检测自动智能窗帘控制系统proteus设计

这篇具有很好参考价值的文章主要介绍了STM32的光敏检测自动智能窗帘控制系统proteus设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32的光敏检测自动智能窗帘控制系统proteus设计

( proteus仿真+程序+演示视频)

仿真图proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0074

主要功能:

结合实际情况,基于STM32单片机设计一个自动智能控制窗帘系统。该系统应满足的功能要求为:

光敏传感器,运行状态LCD1602显示、L298驱动电机控制、自动控制。

具体功能:

①电压值低于设定的值,液晶显示open,表示光强太弱,打开窗帘。
②电压大于设定的参考电压值,液晶显示close,表示光强太强,关闭窗帘。
③光强合适,液晶显示OK,电机不转,表示窗帘不动。

资料下载链接(可点击):

主图

STM32的光敏检测自动智能窗帘控制系统proteus设计

开始仿真

电压大于设定的参考电压值,液晶显示close,表示光强太强,关闭窗帘。

STM32的光敏检测自动智能窗帘控制系统proteus设计

光强合适,液晶显示OK,电机不转,表示窗帘不动。

STM32的光敏检测自动智能窗帘控制系统proteus设计

电压值低于设定的值,液晶显示open,表示光强太弱,打开窗帘。

STM32的光敏检测自动智能窗帘控制系统proteus设计

程序:

STM32的光敏检测自动智能窗帘控制系统proteus设计文章来源地址https://www.toymoban.com/news/detail-432948.html

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"


void L298_GPIO( void )
{
	GPIO_InitTypeDef GPIO_InitStructure; 	
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);	
}

void OPEN(void)	//left moto is runing, but right moto is brake
{
	GPIO_SetBits(GPIOC,GPIO_Pin_5);
	GPIO_ResetBits(GPIOC,GPIO_Pin_4);
	GPIO_ResetBits(GPIOC,GPIO_Pin_3);
	GPIO_ResetBits(GPIOC,GPIO_Pin_2);
	GPIO_SetBits(GPIOC,GPIO_Pin_1);	
	GPIO_SetBits(GPIOC,GPIO_Pin_0);
}
void CLOSE(void)	//right moto is runing, but left moto is brake
{
	GPIO_ResetBits(GPIOC,GPIO_Pin_5);
	GPIO_ResetBits(GPIOC,GPIO_Pin_4);
	GPIO_SetBits(GPIOC,GPIO_Pin_3);
	GPIO_ResetBits(GPIOC,GPIO_Pin_2);
	GPIO_SetBits(GPIOC,GPIO_Pin_1);	
	GPIO_SetBits(GPIOC,GPIO_Pin_0);
}

void STOP(void)	//right moto is runing, but left moto is brake
{
	GPIO_SetBits(GPIOC,GPIO_Pin_5);
	GPIO_SetBits(GPIOC,GPIO_Pin_4);
	GPIO_SetBits(GPIOC,GPIO_Pin_3);
	GPIO_SetBits(GPIOC,GPIO_Pin_2);
	GPIO_SetBits(GPIOC,GPIO_Pin_1);	
	GPIO_SetBits(GPIOC,GPIO_Pin_0);
}


int main(void)
{
	int b;
	float temp;
	
	delay_init();	    	 //延时函数初始化	  	
	LCD1602_Init();				//LCD1602IO初始化
  ADC1_GPIO_Config();		//ADC引脚初始化
	L298_GPIO();					//电机控制引脚初始化
  ADC_Config();  
	LCD1602_ShowStr(0,0,"  Auto curtain ",15);//第一行显示
	LCD1602_ShowStr(0,1,"Light:",6);//第二行显示
	
	while(1)
	{
		b=ADC_GetConversionValue(ADC1);
		temp=b*(3.4/4096)*10;
		//表示光线太弱
		if( temp < 8 )
		{
			LCD1602_ShowStr(7,1,"open ",4);
			OPEN();
		}
		else
		{
			if( temp < 25)				//光线合适
			{
				LCD1602_ShowStr(7,1,"OK  ",4);
				STOP();
			}
			else						//光线太强 
			{
				LCD1602_ShowStr(7,1,"close",4);
				CLOSE();
			}
		}
	}
}




到了这里,关于STM32的光敏检测自动智能窗帘控制系统proteus设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包