B024 – STM32温湿度控制体温检测烟雾报警系统
任务
硬件设计部分主要包括硬件选型及其配置,mq-2烟雾传感器,温湿度传感器dht11,lcd显示屏,红外热释传感器,声音报警器。
主要要求: dht11,红外传感器,了解其工作原理
(2)掌握STM32/51单片机基本的库函数,学会基本的C编程语言
(3)设计动物体温识别算法,能准确识别热源点
(4)能通过液晶显示器显示测到的温度和湿度
(5)可以通过按键来设置需要的值
(6)能通过单片机控制系统的运行,并在触发烟雾传感器,红外传感器时报警
(7)设计硬件图纸和相应的源程序
核心技术指标:
(1)温度未达到设定值,动机工作
(2)湿度未达到设定值时,动机工作
(3)有动物闯入别的区域时,触发报警蜂鸣器
(4)发声火灾时,烟雾报警器进行报警,触发蜂鸣器
本研究的目的是开发一种能实时、准确地显示温湿度值、可以进行动物走错区报警,以及火灾报警室内动物园温湿度控制系统。通过采集温湿度值,可以准确判断标准值与当前值的差值,并能及时报警,并通过外界采取相应的方案。温度和湿度可调节到所需状态,可提高系统的方便性,并可在上述目的的基础上节约能源。
实物
原理图
源程序
主函数main.c
/******************************************************************************** 文件名称:STM32温湿度控制体温检测烟雾报警系统* 实验目的:1.* 2.* 程序说明:完整程序Q:2772272579;@: itworkstation@hotmail.com* 日期版本:51,STM32功能可定制。*******************************************************************************//* Includes ------------------------------------------------------------------*/
#include "main.h" /* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*//*** @说明 主函数* @参数 None * @返回值 None*/
int main(void)
{Proc_Init();LED_Init();OLED_Init(); LCD_Display();ADC1_Init(); if(DHT11_Init() == 1){OLED_Showx8_y16(0,3,(unsigned char*)" DHT11 ERROR! "); }else{ OLED_Showx8_y16(0,3,(unsigned char*)" DHT11 SUCCESS! ");}BEEP_Init(); BEEP_Control(ON); LED_Control(ON);Delay_ms(1000);BEEP_Control(OFF); LED_Control(OFF);KEY_Init();RELAY_Init();SMBus_Init();TIM4_Init(); while(1){ Key_Proc(); if(TIM4_FlagStatus.Flag_200MS == SET){TIM4_FlagStatus.Flag_200MS = RESET;LED_Control(REVERSE);Proc_200Ms(); }Check_Sensior(); LCD_Display();}
}
处理逻辑
#include "proc.h"
LCD_ENUM LCD_Menu = LCD_DEFAULT,LCD_Menu_Last = LCD_DEFAULT;
LCD_DEF_MENU LCD_DefShow;
LCD_SET_MENU LCD_SetShow;
#define LCD_BUFFMAX 21
char LCD_Buff[LCD_BUFFMAX];
void LCD_Display(void)
{if(LCD_Menu_Last != LCD_Menu){LCD_Menu_Last = LCD_Menu;OLED_CLS();//清屏} if(LCD_Menu == LCD_DEFAULT) {memset(LCD_Buff,'0',LCD_BUFFMAX); sprintf(LCD_Buff,(char *)" 检测界面 ");OLED_Showx8_y16(0,0,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 温度: %d℃ ",LCD_DefShow.DHT11_Tempe);OLED_Showx8_y16(0,1,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 湿度: %d%%RH ",LCD_DefShow.DHT11_Humi); // RH就是相对湿度,(Relative Humidity) %转义->%OLED_Showx8_y16(0,2,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 体温: %3.1f℃ ",LCD_DefShow.GY906_Temp); OLED_Showx8_y16(0,3,(unsigned char*)LCD_Buff); }else if(LCD_Menu == LCD_Tset02){memset(LCD_Buff,'0',LCD_BUFFMAX); sprintf(LCD_Buff,(char *)" 检测界面 ");OLED_Showx8_y16(0,0,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 烟雾: %dPPM ",LCD_DefShow.Yanwu); OLED_Showx8_y16(0,1,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 火焰: %.2fV ",LCD_DefShow.Adc_Huoyan); // OLED_Showx8_y16(0,2,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)" 体温: %3.1f℃ ",LCD_DefShow.GY906_Temp); OLED_Showx8_y16(0,3,(unsigned char*)LCD_Buff); }else if(LCD_Menu == LCD_SETTING){memset(LCD_Buff,'0',LCD_BUFFMAX); sprintf(LCD_Buff,(char *)" 设置界面 ");OLED_Showx8_y16(0,0,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"温度L: %d℃ ",LCD_SetShow.DHT11_Tempe_Set_L);OLED_Showx8_y16(1,1,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"温度H: %d℃ ",LCD_SetShow.DHT11_Tempe_Set_H);OLED_Showx8_y16(1,2,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"湿度L: %d%%RH ",LCD_SetShow.DHT11_Humi_Set_L); OLED_Showx8_y16(1,3,(unsigned char*)LCD_Buff);if(LCD_SetShow.Now_SetLine > 1)OLED_Showx8_y16(0,LCD_SetShow.Now_SetLine-1,(unsigned char*)" ");//LCD_SetShow.Now_SetLineOLED_Showx8_y16(0,LCD_SetShow.Now_SetLine,(unsigned char*)"*");//LCD_SetShow.Now_SetLine}else if(LCD_Menu == LCD_SETTING02){memset(LCD_Buff,'0',LCD_BUFFMAX); sprintf(LCD_Buff,(char *)" 设置界面 ");OLED_Showx8_y16(0,0,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"湿度H: %d%%RH ",LCD_SetShow.DHT11_Humi_Set_H); OLED_Showx8_y16(1,1,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"体温L: %3.1f℃ ",LCD_SetShow.GY906_Temp_Set_L); OLED_Showx8_y16(1,2,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"体温H: %3.1f℃ ",LCD_SetShow.GY906_Temp_Set_H); OLED_Showx8_y16(1,3,(unsigned char*)LCD_Buff); if(LCD_SetShow.Now_SetLine > 1)OLED_Showx8_y16(0,LCD_SetShow.Now_SetLine-1,(unsigned char*)" ");//LCD_SetShow.Now_SetLineOLED_Showx8_y16(0,LCD_SetShow.Now_SetLine,(unsigned char*)"*");//LCD_SetShow.Now_SetLine}else if(LCD_Menu == LCD_SETTING03) {memset(LCD_Buff,'0',LCD_BUFFMAX); sprintf(LCD_Buff,(char *)" 设置界面 ");OLED_Showx8_y16(0,0,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"烟雾: %dPPM ",LCD_SetShow.Yanwu_Set); OLED_Showx8_y16(1,2,(unsigned char*)LCD_Buff); memset(LCD_Buff,'0',LCD_BUFFMAX);sprintf(LCD_Buff,(char *)"火焰: %.2fV ",LCD_SetShow.Huoyan_Set); // OLED_Showx8_y16(1,3,(unsigned char*)LCD_Buff); if(LCD_SetShow.Now_SetLine > 2)OLED_Showx8_y16(0,LCD_SetShow.Now_SetLine-1,(unsigned char*)" ");//LCD_SetShow.Now_SetLineOLED_Showx8_y16(0,LCD_SetShow.Now_SetLine,(unsigned char*)"*");//LCD_SetShow.Now_SetLine}
}
STRUCT_NVICPriority NVICPriority_Structure;
void Proc_Init(void)
{ NVICPriority_Structure.Tim4 = 4; LCD_SetShow.DHT11_Tempe_Set_L=15; LCD_SetShow.DHT11_Tempe_Set_H=23; LCD_SetShow.DHT11_Humi_Set_L = 60;LCD_SetShow.DHT11_Humi_Set_H = 80;LCD_SetShow.GY906_Temp_Set_L = 20;LCD_SetShow.GY906_Temp_Set_H = 30; LCD_SetShow.Huoyan_Set = 1.0;LCD_SetShow.Yanwu_Set = 200;
}extern STRUCT_DHT11 DHT11_Structure;
extern __IO uint16_t ADCConvertedValue[ADC_BUFFMAX];
void Proc_200Ms(void)
{if(DHT11_Read_Data() != 0){LCD_DefShow.DHT11_Humi = (u8)DHT11_Structure.Humi;LCD_DefShow.DHT11_Tempe = (u8)DHT11_Structure.Tempe;}LCD_DefShow.GY906_Temp=SMBus_ReadTemp();LCD_DefShow.Adc_Yanwu = (float)(ADCConvertedValue[0] * 3.3 / 0xfff); LCD_DefShow.Adc_Yanwu-=0.138; //自减初值if(LCD_DefShow.Adc_Yanwu <0)LCD_DefShow.Adc_Yanwu=0;LCD_DefShow.Yanwu = (u16)((LCD_DefShow.Adc_Yanwu*100) * 36.36); //0.14 - 0.7 ;0-2000PPM 均分比列LCD_DefShow.Adc_Huoyan = (float)(ADCConvertedValue[1] * 3.3 / 0xfff); }
void RELAY_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;/* GPIOx clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //LED_REDGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_6);GPIO_SetBits(GPIOB,GPIO_Pin_7);
}
void RELAY_Control(u8 choice,ENUM_STATE NewState)
{if(NewState == ON){if(choice == 1)GPIO_ResetBits(GPIOB,GPIO_Pin_6);elseGPIO_ResetBits(GPIOB,GPIO_Pin_7);}else if(NewState == OFF){if(choice == 1)GPIO_SetBits(GPIOB,GPIO_Pin_6);elseGPIO_SetBits(GPIOB,GPIO_Pin_7);}
}
void BEEP_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;/* GPIOx clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //LED_REDGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_15; //BEEPGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_12);GPIO_SetBits(GPIOB,GPIO_Pin_9);
}
uint8_t BEEP_BUFF = 0x01;
void BEEP_Control(ENUM_STATE NewState)
{if(NewState == ON){BEEP_BUFF = 0x00;GPIO_ResetBits(GPIOA,GPIO_Pin_12);GPIO_ResetBits(GPIOB,GPIO_Pin_9);}else if(NewState == OFF){BEEP_BUFF = 0x01;GPIO_SetBits(GPIOA,GPIO_Pin_12);GPIO_SetBits(GPIOB,GPIO_Pin_9);}else //reverse {if(BEEP_BUFF == 0x01) // currunt bit status is 1?--off{BEEP_BUFF = 0x00;GPIO_ResetBits(GPIOA,GPIO_Pin_12);GPIO_ResetBits(GPIOB,GPIO_Pin_9);}else{BEEP_BUFF = 0x01;GPIO_SetBits(GPIOA,GPIO_Pin_12);GPIO_SetBits(GPIOB,GPIO_Pin_9);}}
}
extern STRUCT_KEY KEY_Structure;
void Key_Proc(void)
{if(KEY_Structure.TouchKey != 0xff){switch(KEY_Structure.TouchKey){case 1:if(KEY_Structure.IS_ShortTouch == TRUE){if(LCD_Menu == LCD_DEFAULT) {LCD_Menu = LCD_Tset02;}else{LCD_Menu = LCD_DEFAULT; LCD_SetShow.Now_SetLine = 0;}}break;case 2:if(KEY_Structure.IS_ShortTouch == TRUE){if(LCD_Menu != LCD_SETTING && LCD_Menu != LCD_SETTING02 && LCD_Menu != LCD_SETTING03) LCD_Menu = LCD_SETTING;if(LCD_Menu == LCD_SETTING){LCD_SetShow.Now_SetLine++; //u8 LCD_SetShow.Now_SetLine=0;if(LCD_SetShow.Now_SetLine > 3){LCD_SetShow.Now_SetLine = 0;LCD_Menu = LCD_SETTING02; }}if(LCD_Menu==LCD_SETTING02){LCD_SetShow.Now_SetLine++; //u8 LCD_SetShow.Now_SetLine=0;if(LCD_SetShow.Now_SetLine > 3){LCD_SetShow.Now_SetLine = 1;LCD_Menu = LCD_SETTING03; }} if(LCD_Menu==LCD_SETTING03){LCD_SetShow.Now_SetLine++; //u8 LCD_SetShow.Now_SetLine=0;if(LCD_SetShow.Now_SetLine > 3){LCD_SetShow.Now_SetLine = 0;LCD_Menu = LCD_DEFAULT; }} }break;case 3:if(LCD_Menu == LCD_SETTING){switch(LCD_SetShow.Now_SetLine){case 1: //DHT11温度LLCD_SetShow.DHT11_Tempe_Set_L++;if(LCD_SetShow.DHT11_Tempe_Set_L>=LCD_SetShow.DHT11_Humi_Set_H)LCD_SetShow.DHT11_Tempe_Set_L=LCD_SetShow.DHT11_Humi_Set_H-1;break;case 2: //DHT11温度HLCD_SetShow.DHT11_Tempe_Set_H++;if(LCD_SetShow.DHT11_Tempe_Set_H>99)LCD_SetShow.DHT11_Tempe_Set_H=99;break; case 3: //DHT11湿度LLCD_SetShow.DHT11_Humi_Set_L++;if(LCD_SetShow.DHT11_Humi_Set_L>=LCD_SetShow.DHT11_Humi_Set_H)LCD_SetShow.DHT11_Humi_Set_L=LCD_SetShow.DHT11_Humi_Set_L-1;break; default:break;}}if(LCD_Menu == LCD_SETTING02){switch(LCD_SetShow.Now_SetLine){case 1: //DHT11湿度HLCD_SetShow.DHT11_Humi_Set_H++;if(LCD_SetShow.DHT11_Humi_Set_H>99)LCD_SetShow.DHT11_Humi_Set_H=99;break;case 2: //GY906 LLCD_SetShow.GY906_Temp_Set_L+=0.1;if(LCD_SetShow.GY906_Temp_Set_L>=LCD_SetShow.GY906_Temp_Set_H)LCD_SetShow.GY906_Temp_Set_L=LCD_SetShow.GY906_Temp_Set_H-0.1;break; case 3: //GY906 HLCD_SetShow.GY906_Temp_Set_H+=0.1;if(LCD_SetShow.GY906_Temp_Set_H>99.9)LCD_SetShow.GY906_Temp_Set_H=99.9;break; default:break;}}if(LCD_Menu == LCD_SETTING03){switch(LCD_SetShow.Now_SetLine){case 2: //烟雾LCD_SetShow.Yanwu_Set++;if(LCD_SetShow.Yanwu_Set>2000)LCD_SetShow.Yanwu_Set=2000;break; case 3: //火焰LCD_SetShow.Huoyan_Set+=0.1;if(LCD_SetShow.Huoyan_Set>3.3)LCD_SetShow.Huoyan_Set=3.3;break; default:break;}}break;case 4:if(LCD_Menu == LCD_SETTING){switch(LCD_SetShow.Now_SetLine){case 1: //DHT11温度LLCD_SetShow.DHT11_Tempe_Set_L--;if(LCD_SetShow.DHT11_Tempe_Set_L<1)LCD_SetShow.DHT11_Tempe_Set_L=1;break;case 2: //DHT11温度HLCD_SetShow.DHT11_Tempe_Set_H--;if(LCD_SetShow.DHT11_Tempe_Set_H<=LCD_SetShow.DHT11_Tempe_Set_L)LCD_SetShow.DHT11_Tempe_Set_H=LCD_SetShow.DHT11_Tempe_Set_L+1;break; case 3: //DHT11湿度LLCD_SetShow.DHT11_Humi_Set_L--;if(LCD_SetShow.DHT11_Humi_Set_L<1)LCD_SetShow.DHT11_Humi_Set_L=1;break; default:break;}}if(LCD_Menu == LCD_SETTING02){switch(LCD_SetShow.Now_SetLine){case 1: //DHT11湿度HLCD_SetShow.DHT11_Humi_Set_H--;if(LCD_SetShow.DHT11_Humi_Set_H<=LCD_SetShow.DHT11_Humi_Set_L)LCD_SetShow.DHT11_Humi_Set_H=LCD_SetShow.DHT11_Humi_Set_L-1;break;case 2: //GY906 LLCD_SetShow.GY906_Temp_Set_L-=0.1;if(LCD_SetShow.GY906_Temp_Set_L<=0.1)LCD_SetShow.GY906_Temp_Set_L=0.1;break; case 3: //GY906 HLCD_SetShow.GY906_Temp_Set_H-=0.1;if(LCD_SetShow.GY906_Temp_Set_H<=LCD_SetShow.GY906_Temp_Set_L)LCD_SetShow.GY906_Temp_Set_H=LCD_SetShow.GY906_Temp_Set_L-0.1;break; default:break;}}if(LCD_Menu == LCD_SETTING03){switch(LCD_SetShow.Now_SetLine){case 2: //烟雾LCD_SetShow.Yanwu_Set--;if(LCD_SetShow.Yanwu_Set<1)LCD_SetShow.Yanwu_Set=1;break; case 3: //火焰LCD_SetShow.Huoyan_Set-=0.1;if(LCD_SetShow.Huoyan_Set<0.1)LCD_SetShow.Huoyan_Set=0.1;break; default:break;}}break;default:break;}KEY_Structure.TouchKey = 0xff;KEY_Structure.IS_ShortTouch = FALSE;}
}
u8 Flag_Gy906=0,Flag_Yanwu=0,Flag_Huoyan=0;
void Check_Sensior(void)
{if(LCD_DefShow.DHT11_Tempe <LCD_SetShow.DHT11_Tempe_Set_L || LCD_DefShow.DHT11_Tempe >LCD_SetShow.DHT11_Tempe_Set_H){RELAY_Control(1,ON); }else{RELAY_Control(1,OFF); }if(LCD_DefShow.DHT11_Humi <LCD_SetShow.DHT11_Humi_Set_L || LCD_DefShow.DHT11_Humi >LCD_SetShow.DHT11_Humi_Set_H){RELAY_Control(2,ON); }else{RELAY_Control(2,OFF); }if(LCD_DefShow.GY906_Temp < LCD_SetShow.GY906_Temp_Set_L || LCD_DefShow.GY906_Temp > LCD_SetShow.GY906_Temp_Set_H){Flag_Gy906 = 1;}else{Flag_Gy906 = 0;}if(LCD_DefShow.Yanwu >LCD_SetShow.Yanwu_Set){Flag_Yanwu = 1;}else{Flag_Yanwu = 0;}if(LCD_DefShow.Adc_Huoyan <LCD_SetShow.Huoyan_Set){Flag_Huoyan = 1;}else{Flag_Huoyan = 0;}if(Flag_Gy906 | Flag_Yanwu | Flag_Huoyan){BEEP_Control(ON);}else{BEEP_Control(OFF);}
}
B024 – STM32温湿度控制体温检测烟雾报警系统相关推荐
- 基于单片机节日彩灯控制器系统设计、基于单片机脉搏检测和体温检测设计、基于单片机可燃气体检测及报警系统、基于单片机可调八路抢答器仿真设计-全套设计资料
1425基于单片机节日彩灯控制器系统设计-protues仿真资料 以单片机为核心,设计一个节日彩灯控制器: l K1-开始,按此键则灯开始流动(由上而下). l K2-停止,按此键则停止流动,所有 ...
- 单片机课程设计:基于STM32的温湿度检监测报警系统的设计
基于STM32的温湿度检监测报警系统 文章目录 基于STM32的温湿度检监测报警系统 前言 一.设计任务 二.系统硬件设计 1.元器件选用 2.系统模型设计 3.硬件连接 二.系统程序设计 1.程序流 ...
- 基于单片机双路温度检测报警系统设计-基于单片机声光控智能开关控制灯设计-基于单片机热电偶智能体温检测设计-基于单片机小型家用燃气锅炉控制系统设计-基于单片机一氧化碳有毒气体采集报警系统设计
1628基于单片机双路温度检测报警系统设计(串口上位机控制) 基于pcf8591 tlc2543的双路温度检测报警系统 带串口上位机控制带仿真 源程序 温度传感器是 LM35 两路测温通道所用的ad芯 ...
- 【008】【毕业设计】基于51单片机的烟雾报警系统proteus仿真与实物设计
一.压缩包资料内容(私信获取) (1).基于51单片机的烟雾报警系统proteus仿真设计一份: (2).基于51单片机的烟雾报警系统proteus仿真设计keli源代码一份: (3).基于51单片 ...
- openmv串口数据 串口助手_STM32 串口接收不定长数据 STM32 USART空闲检测中断
编者注: 单片机串口接收不定长数据时,必须面对的一个问题为:怎么判断这一包数据接收完成了呢?常见的方法主要有以下两种: 1.在接收数据时启动一个定时器,在指定时间间隔内没有接收到新数据,认为数据接收完 ...
- ESP32基于arduino开发的心跳体温检测系统(一)项目介绍及准备
本文为被北邮信息系统设计课程摧残的同学们(包括但不限于作者的室友)提供一个可行的方案及模板. 本项目使用Arduino作为开发环境,使用ESP32开发一个心跳体温检测系统. 系统通过心跳传感器--pu ...
- 基于STM32风速风向检测仿真
目录 一.项目描述 二.仿真 三.程序 资料下载地址:基于STM32风速风向检测仿真 一.项目描述 获取风速风向值并在OLED液晶上显示. 二.仿真 系统未上电 系统上电 更改风速风向 ...
- STM32的光敏检测自动智能窗帘控制系统proteus设计
STM32的光敏检测自动智能窗帘控制系统proteus设计 ( proteus仿真+程序+演示视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0074 主 ...
- 基于stm32的温湿度检测案例(一)
系列文章目录 一.基于stm32的温度检测案例(一) 文章目录 目录 系列文章目录 一.基于stm32的温度检测案例(一) 文章目录 前言 一.实验器材简介 1.1.基于STM32F042F6P6的最 ...
- stm32采集交流电压信号_基于STM32的交流电压检测.pdf
第24卷第13期 电子设计工程 2016年7月 V01.24 No.13 Electronic Jul.2016 DesignEngineering 基于STM32的交流电压检测 任宏斌,冷建伟 (天 ...
最新文章
- linux规则及别名设置
- (0056)iOS开发之深拷贝与浅拷贝
- IDEA设置虚拟机参数
- JQuery获取元素的N种方法
- Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))
- 二维傅里叶变换是怎么进行的?
- 一本通1596动物园
- ReportViewer教程(15)-矩阵报表-1
- C 语言未初始化的局部变量是多少?
- 前端特效demo | 一起围观 10 种创意时钟
- Java的GUI学习四(事件监听机制)
- python爬取58同城房子发布的手机号码_python爬虫:爬取58同城武汉地区商品房信息(最后碰到了58同城的反爬机制,吓得我不敢说话···)...
- 全球与中国高精度漆包扁铜线市场深度研究分析报告
- 零跑C01/S01/C11/T03维修手册电路图培训手册用户手册技术资料
- 最强大脑就是让你记得住--史上最高效的270个记忆法
- Redis:Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use
- 事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。...
- 如何让局域网中的其他主机访问虚拟机
- java jmf播放mp3_关于jmf不能播放mp3的问题解决
- ST_Intersection
热门文章
- 机器学习(一)模型三要素
- Java核心技术大会|Java应用开发专场
- 融金所:云办公提升P2P金融“生命”
- oracle rac定时清理归档日志,Rman 定时删除归档日志
- javascript之原型,原型链
- python自动获取北京时间_python将当前服务器的时区时间转为北京时间
- c语言混沌序列,基于混沌序列的数据加密算法
- .Net Core——配置系统
- [经验教程]国内如何下载更新google谷歌浏览器及更新谷歌chrome浏览器无法访问此网站怎么办?
- python短信验证码登录_Python实现短信验证