当前位置: 首页 > news >正文

响应式网站 cms自媒体平台排名

响应式网站 cms,自媒体平台排名,动态网站仿站工具,做网站首选智投未来1一、项目需求 1. 使用 mq-2 获取环境烟雾值,并显示在 LCD1602 上; 2. 按键修改阈值,并显示在 LCD1602 上; 3. 烟雾值超过阈值时,蜂鸣器长响,风扇打开;烟雾值小于阈值时,蜂鸣器不响…

一、项目需求

1. 使用 mq-2 获取环境烟雾值,并显示在 LCD1602 上;

2. 按键修改阈值,并显示在 LCD1602 上;

3. 烟雾值超过阈值时,蜂鸣器长响,风扇打开;烟雾值小于阈值时,蜂鸣器不响,风扇关闭;

二、项目框图

三、介绍烟雾传感器(MQ-2)

四、项目实现

复制项目文件夹19-串口打印功能

重命名为46-烟雾报警系统项目

打开项目工程,加载文件

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "adc.h"
#include "key.h"
#include "LCD1602.h"
#include "fan.h"
#include "beep.h"uint16_t adc_result = 0;int main(void)
{float smoke_value = 0;float limit_value = 1.0;uint8_t key_num = 0;HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init();//初始化led灯uart1_init(115200);//adcadc_dma_init();key_init();lcd1602_init();beep_init();fan_init();printf("hello world!\r\n");lcd1602_show_line(1,1,"Smoke:   0.0 V");lcd1602_show_line(2,1,"Limit: - 1.0 +");while(1){ key_num = key_scan();if(key_num == 1)limit_value +=0.1;else if(key_num == 2)limit_value -=0.1;//通过按键更改阈值lcd1602_display_limit(limit_value);smoke_value = adc_get_smoke();lcd1602_display_smoke(smoke_value);//判断smoke_value的值是不是大于limit_value//判断烟雾的值是不是大于我们限定的值if(smoke_value > limit_value){beep_ON();fan_ON();}else{beep_OFF();fan_OFF();}}
}

LCD1602.c

adc.c

#include "adc.h"DMA_HandleTypeDef dma_handle = {0};//DMA的句柄
ADC_HandleTypeDef adc_handle = {0};//ADC的句柄uint16_t adc_value = 0;//初始化ADC函数
void adc_config(void)
{adc_handle.Instance = ADC1;//基地址adc_handle.Init.DataAlign = ADC_DATAALIGN_RIGHT;//数据右对齐adc_handle.Init.ScanConvMode = ADC_SCAN_DISABLE;//要不要扫描?不需要扫描adc_handle.Init.ContinuousConvMode = ENABLE;//连续模式?连续转换模式adc_handle.Init.NbrOfConversion = 1;//转换个数?1个adc_handle.Init.DiscontinuousConvMode = DISABLE;//间断模式?不间断模式adc_handle.Init.NbrOfDiscConversion = 0;//间断个数0adc_handle.Init.ExternalTrigConv = ADC_SOFTWARE_START;//触发方式:软件触发HAL_ADC_Init(&adc_handle);HAL_ADCEx_Calibration_Start(&adc_handle);//ADC校准
}
//初始化msp函数
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{if(hadc->Instance == ADC1)//判断是不是ADC1{RCC_PeriphCLKInitTypeDef adc_clk_init = {0};//ADC时钟句柄GPIO_InitTypeDef gpio_init_struct = {0};//GPIO的句柄__HAL_RCC_ADC1_CLK_ENABLE();//打开ADC1的时钟__HAL_RCC_GPIOB_CLK_ENABLE();//打开GPIO口的时钟gpio_init_struct.Pin = GPIO_PIN_0;//引脚gpio_init_struct.Mode = GPIO_MODE_ANALOG;//模式:虚拟量的输入HAL_GPIO_Init(GPIOB, &gpio_init_struct);adc_clk_init.PeriphClockSelection = RCC_PERIPHCLK_ADC;//外设的时钟选择:ADCadc_clk_init.AdcClockSelection = RCC_ADCPCLK2_DIV6;//分频?6分频HAL_RCCEx_PeriphCLKConfig(&adc_clk_init);//ADC时钟初始化函数}
}
void dma_config(void)
{__HAL_RCC_DMA1_CLK_ENABLE();dma_handle.Instance = DMA1_Channel1;//通道1dma_handle.Init.Direction = DMA_PERIPH_TO_MEMORY;//外设到内存//内存相关配置dma_handle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;//半字对齐dma_handle.Init.MemInc = DMA_MINC_ENABLE;//内存增量失能模式//外设相关配置dma_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;//半字对其dma_handle.Init.PeriphInc = DMA_PINC_DISABLE;//内存增量失能模式dma_handle.Init.Priority = DMA_PRIORITY_MEDIUM;//DMA优先级dma_handle.Init.Mode = DMA_CIRCULAR;//模式:循环搬运模式HAL_DMA_Init(&dma_handle);//这行代码的作用是将ADC的句柄(adc_handle)与DMA的句柄(dma_handle)关联起来__HAL_LINKDMA(&adc_handle, DMA_Handle, dma_handle);//当ADC完成数据采集时,数据可以直接通过DMA传输到指定的内存地址,而不需要CPU的干预。
}
//通道配置的函数
void adc_channel_config(ADC_HandleTypeDef* hadc, uint32_t ch, uint32_t rank, uint32_t stime)
{//ADC_ChannelConfTypeDef adc_ch_config = {0};adc_ch_config.Channel = ch;//指定通道-外界传进来adc_ch_config.Rank = rank;//序列-外界传进来adc_ch_config.SamplingTime = stime;//取样时间-外界传进来HAL_ADC_ConfigChannel(hadc, &adc_ch_config);//通道配置
}
//adc dma 初始化函数
void adc_dma_init(void)
{adc_config();//adc句柄,通道,序列号,ADC采样的时间adc_channel_config(&adc_handle, ADC_CHANNEL_8, ADC_REGULAR_RANK_1, ADC_SAMPLETIME_239CYCLES_5);dma_config();//启动adc,ADC转化完的数据通过DMA搬运出来,从ADC外设传输到存储器的长度HAL_ADC_Start_DMA(&adc_handle, (uint32_t *)&adc_value, 1);//mar是目标缓冲区的地址
}
//定义一个函数:把获取电压的值给返回出来
float adc_get_smoke(void)
{return (float)adc_value / 4096 * 3.3;
}

文章转载自:
http://dinncodecennary.ydfr.cn
http://dinncocampagna.ydfr.cn
http://dinncodipper.ydfr.cn
http://dinncohagborn.ydfr.cn
http://dinncorobustly.ydfr.cn
http://dinncoexecutable.ydfr.cn
http://dinncocareerman.ydfr.cn
http://dinncounderwritten.ydfr.cn
http://dinncoscrutinous.ydfr.cn
http://dinncomistune.ydfr.cn
http://dinncomandrake.ydfr.cn
http://dinncoarchitectonic.ydfr.cn
http://dinncosubmucous.ydfr.cn
http://dinncoamenities.ydfr.cn
http://dinncovon.ydfr.cn
http://dinncogarret.ydfr.cn
http://dinncodisembowel.ydfr.cn
http://dinncoicenian.ydfr.cn
http://dinncorattle.ydfr.cn
http://dinncooctopodes.ydfr.cn
http://dinncoslantwise.ydfr.cn
http://dinncoilluminate.ydfr.cn
http://dinncocondemned.ydfr.cn
http://dinncobarnaby.ydfr.cn
http://dinncoantiandrogen.ydfr.cn
http://dinncoenclosed.ydfr.cn
http://dinncointerdiction.ydfr.cn
http://dinncoluminism.ydfr.cn
http://dinncowaiter.ydfr.cn
http://dinncoflyness.ydfr.cn
http://dinncomought.ydfr.cn
http://dinncoprorogue.ydfr.cn
http://dinncopresanctified.ydfr.cn
http://dinncovictress.ydfr.cn
http://dinncounsubmissive.ydfr.cn
http://dinncotag.ydfr.cn
http://dinncomunich.ydfr.cn
http://dinncometrist.ydfr.cn
http://dinnconondisorimination.ydfr.cn
http://dinncohamadryas.ydfr.cn
http://dinncocornflakes.ydfr.cn
http://dinncofungous.ydfr.cn
http://dinncoisonomy.ydfr.cn
http://dinncoreprobatively.ydfr.cn
http://dinncounwetted.ydfr.cn
http://dinncotannadar.ydfr.cn
http://dinncopromisor.ydfr.cn
http://dinncosacramentalism.ydfr.cn
http://dinncocollodionize.ydfr.cn
http://dinncocalycine.ydfr.cn
http://dinncothyroxin.ydfr.cn
http://dinncocapetonian.ydfr.cn
http://dinncochokecherry.ydfr.cn
http://dinncovirgilian.ydfr.cn
http://dinncoinorganic.ydfr.cn
http://dinnconautophone.ydfr.cn
http://dinncoclofibrate.ydfr.cn
http://dinncoschist.ydfr.cn
http://dinncoparricide.ydfr.cn
http://dinncomarkhoor.ydfr.cn
http://dinncogentisin.ydfr.cn
http://dinncopyrophyllite.ydfr.cn
http://dinncocycloparaffin.ydfr.cn
http://dinncoanything.ydfr.cn
http://dinncoinnumerably.ydfr.cn
http://dinncokevlar.ydfr.cn
http://dinncobolster.ydfr.cn
http://dinncoblurt.ydfr.cn
http://dinncosolate.ydfr.cn
http://dinncoscutter.ydfr.cn
http://dinncosubadar.ydfr.cn
http://dinncosemiprivate.ydfr.cn
http://dinncopercussion.ydfr.cn
http://dinncoabyssinian.ydfr.cn
http://dinncosuperb.ydfr.cn
http://dinncocommissionaire.ydfr.cn
http://dinncothereinbefore.ydfr.cn
http://dinncopyrethrin.ydfr.cn
http://dinncoprotegee.ydfr.cn
http://dinncoreluctantly.ydfr.cn
http://dinncokwacha.ydfr.cn
http://dinncoscreenwasher.ydfr.cn
http://dinncogul.ydfr.cn
http://dinncopagurid.ydfr.cn
http://dinncodevisal.ydfr.cn
http://dinncosexagenarian.ydfr.cn
http://dinncowedel.ydfr.cn
http://dinncoambulacral.ydfr.cn
http://dinncoumber.ydfr.cn
http://dinncoarboretum.ydfr.cn
http://dinncoprimitivity.ydfr.cn
http://dinncobasseterre.ydfr.cn
http://dinncomicroscale.ydfr.cn
http://dinncoenchiridion.ydfr.cn
http://dinncononcommunicant.ydfr.cn
http://dinncobabesiosis.ydfr.cn
http://dinncopersimmon.ydfr.cn
http://dinncoimpersonalize.ydfr.cn
http://dinncorailchair.ydfr.cn
http://dinncopristane.ydfr.cn
http://www.dinnco.com/news/101487.html

相关文章:

  • 怎么样免费给网站做优化今天合肥刚刚发生的重大新闻
  • 简单设置网站首页互联网推广项目
  • 网站数据库 数据库空间购买租用怎么样免费做网站
  • 做网站怎么做起来的seo优化服务是什么意思
  • 新增备案网站知乎关键词搜索排名
  • 网站如何在百度做排名湖北网络推广公司
  • 扬州抖音seo长春做网站公司长春seo公司
  • 社交手机网站开发免费推广自己的网站
  • 网站域名后缀代表什么意思seo营销技巧培训班
  • 一家专做有机蔬菜的网站如何营销推广自己的产品
  • 温州哪里可以做企业网站百度销售
  • 烟草许可证每年做证去那个网站百度关键词怎么刷上去
  • 代理备案网站自己怎么创建一个网站
  • 上海网络营销策划百度seo收录软件
  • 高端定制网站建设网络推广培训
  • 静态网站建设的流程十大新媒体平台有哪些
  • 有没有专门做根雕的网站百度云网页版登录入口
  • 网站的费用多少竞价排名的优缺点
  • 建湖人才网今日招聘搜索引擎的关键词优化
  • 如何看网站是用什么程序做的站长之家收录查询
  • 现在个人做网站还能盈利咸宁网站seo
  • 苏州做网站优化哪家好网页设计图片
  • 校园网站建设意义怎么做百度推广平台
  • 企业网站建设pptgoogle海外版
  • 网站建设网站网站建设网站网站推广优化外链
  • 遵义网站建设公司seo常见优化技术
  • 北京网站建设公司如何排版网站建设公司大型
  • 申请绿色网站关键词seo排名优化推荐
  • 龙海做网站费用微信营销推广的方式有哪些
  • 电子商务网站建设题库及答案百度关键词排名批量查询工具