基于STM32单片机的酒精浓度检测系统设计

发布者:真诚相伴最新更新时间:2024-09-04 来源: elecfans关键字:STM32  单片机 手机看文章 扫描二维码
随时随地手机看文章

一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、按键模块、LED和蜂鸣器、MQ-3酒精传感器模块等。


主要功能:

系统运行后,LCD1602显示酒精浓度值和阈值,可通过按键K1和K2调节阈值,当检测浓度高于阈值,蜂鸣器报警。


主要功能如下:

(1)酒精浓度实时检测;

(2)LCD显示浓度值和阈值;

(3)阈值设置、超限声光报警;

(4)支持按键连按。


二、软件设计

//系统初始界面显示

void sys_open_show(void)

{

lcd1602_clear();

lcd1602_show_string(0,0,'AL: mg/mL');

lcd1602_show_string(0,1,'TH: mg/mL');

}

//系统参数采集

void sys_parm_get(void)

{

while(1)

{

//读取传感器 AD值

sys_ctrl.ad_val=pcf8591_read_adcvalue(0);

break;

}

}

//系统参数显示

void sys_parm_show(void)

{

while(1)

{

//传感器检测浓度值显示

lcd1602_show_nums(3,0,sys_ctrl.ad_val,3,0);

//阈值显示

lcd1602_show_nums(3,1,sys_ctrl.ad_valh,3,0);

break;

}

}

//系统参数设定

void sys_parm_set(void)

{

u8 key=0;

key=KEY_Scan(1);

//阈值加

if(key==KEY1_PRESS)

{

sys_ctrl.ad_valh++;

if(sys_ctrl.ad_valh>255)sys_ctrl.ad_valh=0;

}

//阈值减

else if(key==KEY2_PRESS)

{

sys_ctrl.ad_valh--;

if(sys_ctrl.ad_valh<0)sys_ctrl.ad_valh=100;

}

}

//系统参数控制

void sys_parm_ctrl(void)

{

//如果检测浓度高于阈值,报警打开

if(sys_ctrl.ad_val>sys_ctrl.ad_valh)

{

beep_alarm(1,10000);

}

}

//应用控制系统

void appdemo_show(void)

{

sys_parm_init();//系统参数初始化

LED_Init();

KEY_Init();

BEEP_Init();

pcf8591_init();

lcd1602_init();//LCD1602初始化

sys_open_show();//系统初始界面显示

while(1)

{

sys_parm_get();

sys_parm_show();

sys_parm_set();

sys_parm_ctrl();

}

}

三、演示现象

图片

图片

图片


关键字:STM32  单片机 引用地址:基于STM32单片机的酒精浓度检测系统设计

上一篇:STM32单片机的八种IO口模式讲解
下一篇:STM32片内RTC亚秒特性以及应用演示的分享

推荐阅读最新更新时间:2024-11-21 18:46

基于STM32的超声波HC-SR04详解
HC-SR04基本工作原理: (1)采用IO口TRIG触发测距,给最少10us的高电平信呈。 (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回, 通过IO口ECHO输出一个高电平, 高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2。 程序编写思路是: 1、配置好使用到的GPIO以及定时器; 2、给模块TRIG端口发送大于10us的高电平信号,当收、收到ECHO回响信号是,打开定时器开始定时; 3、当回响信号消失,关闭定时器; 4、通过定时器定时时间来确定距离。 连线 1.这里,HC-SR04模块必须使用5V供电,不能是3.3V (若
[单片机]
基于<font color='red'>STM32</font>的超声波HC-SR04详解
51单片机+max6675采集热电偶温度
51单片机用max6675采集热电偶温度 已调试成功 带电路 单片机源程序如下: #include include.h #include 12864.h unsigned int i,j; unsigned char Flag_connect; unsigned int MAX6675_Temp; /******************************************************************** /********************************************************************
[单片机]
51<font color='red'>单片机</font>+max6675采集热电偶温度
关于STM32 ADC DMA 使用心得(2)
(二)ADC循环采集六路电压,使用DMA. 这次实验真的很郁闷,对DMA的不了解让我深陷误区,明白之后,让我更加佩服DMA的强大。 误区就是:从实验的目标我们知道这次是用DMA把ADC转换的数据传送到内存中的一个数组里存起来,因为是采集6个通道,这里使能了ADC的扫描模式。一旦启动ADC,就会按顺序转换SQRX里选中的通道,问题就是我一开始以为ADC与DMA并不会协调工做,也就是ADC自己转自己的,DMA自己传自己的,这样的话内存里的数组就不是我想要的了,后来着实的研究了很长时间,在群里的一位兄弟的提醒下,我才知道,可能我想的复杂了,也许就可以在ADC转一次,然后DMA把数据传一次,Ok,经过实验得知,这个想法是正确的。
[单片机]
STM32中关于位运算的基本介绍与注意点
在位运算中的基本运算符号是( / ). 表示左移,是一个双目运算符:temp n。在以为的过程中会出现移位到一定时会一直处于一个值,这是因为在每次的移位中高位都会被舍弃而地位补0.称之溢出。这里只关心1的溢出而不关心0的溢出。 表示右移,同样是一个双目运算符:temp n。在做每次位移时都是低位被舍弃而高位补0. 左移一次相当于该数乘2,右移一次相当于该数除2,以此类推。 TIPS:在实际的编程中,最好是多使用括号,会使得程序易读。 在按位与(&)运算中,当对其数据为1时,该结果为1,否则为0。按与运算的目的是为了对指定位清0.也可以是用于检查某一位的状态值,或者是保留某位的状态而其他位清0. 在按位或(|)运算中,当对其位有
[单片机]
STM32HAL库ADC实验(一)——阻塞查询法
实验现象 生成代码: int main(void) { /* USER CODE BEGIN 1 */ uint16_t adcData; float voltage; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BE
[单片机]
STM32HAL库ADC实验(一)——阻塞查询法
采用单片机的LED汉字显示屏的设计与Proteus仿真
O 引言 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于AT89C51单片机16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。 1 硬件电路组成及工作原理 本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组成,如
[单片机]
采用<font color='red'>单片机</font>的LED汉字显示屏的设计与Proteus仿真
AT89C51单片机扩展高速串行同步移位输出口的方法
AT89C51(与MCS-51兼容)单片机的串行口在方式0工作状态下,使用移位寄存器芯片可以扩展多个8位并行I/O口。在LED点阵显示屏应用系统中,一般都采用数据同步移位输出方式,并使用移位寄存器芯片(如74LS595)扩展并行I/O口驱动LED点阵显示。LED 点阵显示采用扫描方式,为不产生闪烁感,每秒需要传送50屏点阵显示数据,因此有大量的数据要通过同步移位的方式送到显示驱动电路部分,这就要求单片机能够快速地输出数据。AT89C51单片机的串行口在方式0工作状态下,数据以fosc/12的波特率输出,1个字节数据写入SBUF后,需检查中断标志位 TI是否为“1”并清“0”TI或延时几个机器周期后才能继续写入了一个数据,输出速度慢
[单片机]
AT89C51<font color='red'>单片机</font>扩展高速串行同步移位输出口的方法
基于VB的机房计算机电源监控系统
  为了能实时、高效、方便地监控、管理机房计算机电源设备,并实现对机房的计算机集中监控、少人值守的目标,本文提出了一个机房计算机电源集中监控系统方案。本系统的目标是:通过相关软件、硬件的设计,实现由1台主机(上位机)通过单片机(下位机)监控多个机房中多台计算机的开关情况。即利用主机的监控软件与单片机进行通信,以实现对计算机电源的监控功能。本系统应具备如下功能:   (1)通过键盘或鼠标对多台计算机进行开关控制并对整个机房的所有计算机进行开关状态的检测。   (2)上位机与下位机能进行可靠、实时的通信。   (3)界面设计清晰,功能齐全。备有菜单及各机房的电脑分布图,并带有右键快速菜单。   (4)能根据不同机房中不
[电源管理]
基于VB的机房计算机电源监控系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved