基于51单片机声音噪声分贝检测采集显示设计

发布者:一直333最新更新时间:2021-12-07 来源: eefocus关键字:51单片机 手机看文章 扫描二维码
随时随地手机看文章

硬件设计


功能说明:

1.基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机作为主控制器

2、采用LCD1602液晶显示屏实时显示分贝值;

3、使用小麦克风采集声音经过LM358放大信号后经过ADC0832进行采集,最终转换成分贝值。

4、可以通过按键进行设定分贝限值,设定的分贝限值存储于STC单片机内部eeprom,具有掉电存储的功能;(AT单片机没有掉电存储功能)

5、当实测分贝值低于设定值时绿色指示灯亮,当实测分贝值高于设定值时红色指示灯亮并蜂鸣器报警;

在这里插入图片描述

仿真图:

在这里插入图片描述

程序设计

部分代码如下:


*******************************************************************************/

#include

#include "ADC0832.h"   

#include "LCD1602.h"  

#include "eeprom52.h"  

  typedef unsigned int u16; 

#define led P1

uint Noise_h=50;

uint AD_dat=0;

uint mmm=0;

uint Noise=0;

uchar ms=0;

uchar sec=0;

uchar sec1=0;

 

sbit beep=P2^0;

sbit led0=P1^6;

sbit led1=P1^4;

sbit key1=P3^5;

sbit key2=P3^6;//位定义

bit key1_flag=0;

bit key2_flag=0;

bit beep1=0;

bit memory_flag=0;//方向标志

int c=0;


/*******************************************************************************

* 函 数 名         : delay

* 函数功能    : 延时函数,i=1时,大约延时10us

*******************************************************************************/

void delay(u16 i)

{

while(i--);

}


/*******************************************************************************

* 函 数 名         : memroy

* 函数功能    : eeprom

*******************************************************************************/


void memroy()

 {

    if(memory_flag) 

{ memory_flag=0;

  SectorErase(0x2000);

byte_write(0x2000,Noise_h/256);//取整

byte_write(0x2001,Noise_h%256);//取余

}

 }


/*******************************************************************************

* 函 数 名         : read_memory

* 函数功能    : 设定可调噪声检测的最大值

*******************************************************************************/


void read_memory()

 {

    Noise_h=byte_read(0x2000)*256+byte_read(0x2001);

if(Noise_h>999) 

{

   Noise_h=70;

}

 }


/*******************************************************************************

* 函 数 名         : key_dispose

* 函数功能    : 按键函数,调节噪声检测的上限

*******************************************************************************/


void key_dispose()

 {

   if(!key1) 

    {

   if(key1_flag) 

    {

  if(Noise_h<999) Noise_h++;

}

if(sec==0) 

{

   if(Noise_h<999) Noise_h++;

}

}

else 

{

   if(key1_flag==0) 

    {

  key1_flag=1;

  memory_flag=1;

}

sec=2;

}


   if(!key2) 

    {

   if(key2_flag) 

    {

  key2_flag=0;

  if(Noise_h>0) Noise_h--;

}

if(sec1==0) 

{

   if(Noise_h>0) Noise_h--;

}

}

else 

{

   if(key2_flag==0) 

    {

  key2_flag=1;

}

sec1=2;

}


 }

/*******************************************************************************


文件地址:

链接:https://pan.baidu.com/s/1FY5kDcX6yzMzMzsM70kygg

提取码:cfu6

关键字:51单片机 引用地址:基于51单片机声音噪声分贝检测采集显示设计

上一篇:基于51单片机DHT11的加湿器proteus仿真程序设计
下一篇:基于51单片机和ADC0808 ADC0809的自动数字电压表设计

推荐阅读最新更新时间:2024-11-16 22:22

51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》、《24C02/24C04/24C08/24C16/24C32/24C64芯片手册》 AT24Cxx 介绍 AT24C01/02/04/08/16…是一个1K/2K/4K/8K/16K 位串行 CMOS,内部含有 128/256/512/1024/2048 个 8 位字节,AT24C01 有一个 8 字节页写缓冲器, AT24C02/04/08/16 有一个 16 字节页写缓冲器。该器件通过 I2C
[单片机]
【<font color='red'>51单片机</font>快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写
一文详解80C51单片机的指令集
数据传送类指令 数据传送是单片机最基本的操作。数据传送的一般功能是将源操作数传送到指令所指定的目的操作数,指令执行后,源操作数不变。 数据传送类指令一般不影响标志位。数据传送类指令共29条,可以分为两大类。一是采用MOV操作符,称为一般传送指令,共16条;二是采用非MOV操作符,称为特殊传送指令,共13条。 一般传送指令的 汇编 指令格式为: MOV是传送指令的操作助记符。其功能是将源操作数传送到目的操作数,源操作数内容不变。 该类指令的助记符,操作数,功能,字节数及执行时长(机器周期数),按目的操组数归类如下。 1)内部8位数据传送指令 内部 RAM 区是数据传送最活跃的区域,8位内部数据传送指令共15条,用于 单片机
[单片机]
一文详解80C<font color='red'>51单片机</font>的指令集
51单片机按键控制舵机
#include reg52.h #define Stop 0 //宏定义,停止 #define Left 1 //宏定义,左转 #define Right 2 //宏定义,右转 sbit ControlPort = P1^0; //舵机信号端口 sbit KeyLeft = P1^1; //左转按键端口 sbit KeyRight = P1^2; //右转按键端口 sbit KeyStop = P1^3; //归位按键端口 unsigned char TimeOutCounter = 0,LeftOrRight = 0; //TimeOutCounter:定时器溢出计数 LeftOrRigh
[单片机]
以累加器A为目的操作数类指令(4条)—mcs51单片机汇编语言
数据传送类 指令 的通用格式是:  MOV  目的操作数 , 源操作数 源操作数可以是:累加器A、通用寄存器Rn(n=0-7)、直接地址direct、间接地址和立即数; 目的操作数可以是:累加器A、通用寄存器Rn(n=0-7)、直接地址direct和间接地址; 数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。 . 以累加器A为目的操作数类指令(4条) 这4条指令的作用是把源操作
[单片机]
51单片机控制红外线通信接口电路设计
在通信系统中,常利用非电信号来传递控制信号和数据,以实现遥控或遥测的功能红外通信,具有控制简单、实施方便,传输可靠性高的特点,是一种较为常用的通信方式。红外通信利用950 nm近红外波段的红外线作为传递信息的媒体,发送端采用脉时调制方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送,接收端将收到的光脉冲转换成电信号。再经过放大、滤波处理后送给解调电路,还原为二进制数字信号后输出。 1 系统的总体构成 红外通信系统采用红外光传输及无限工作机制,其组成结构主要包括:红外发射器,通信信道,红外接收器三大部分组成。 (1)完成信号的电光变换并向空间发射红外脉冲 红外发射器的关键是红外发光
[单片机]
用<font color='red'>51单片机</font>控制红外线通信接口电路设计
51单片机-多文件编写
为了与主流的编程素养接轨,我们本章讲解如何书写简洁并且高效率的代码以及首次运用多文件编程。多文件的作用是方便编写大程序时更加的模块化,那么至于原理,头文件包含关系等这些知识还需读者自己再多多补补C语言知识了。 1.多文件的优势 运用多文件编程是为了使我们教程无需每次都贴出相同功能的代码,像第一阶段最后的一个例程,已经有很多代码完全可以前往以前的例程里复制即可,笔者也是考虑到一开始我们都是从单个“.c”文件入门单片机编程,所以之前的例程都是提供完整的代码给大家方便复制移植到自己的单个“.c”工程文件中。 可后期的例程里我们的代码量越来越大,显然全部给出就不合适了,所以我们把经常使用的功能模块代码封装起来放在另一个“.c”文件
[单片机]
<font color='red'>51单片机</font>-多文件编写
C51单片机的精准延时程序(Timer)
使用定时器 / 计数器实现精确延时 单片机系统一般常选用 11.059 2 MHz 、 12 MHz 或 6 MHz 晶振。第一种更容易产生各种标准的波特率, 后两种的一个机器周期分别为 1 μ s 和 2 μ s ,便于精确延时。本程序中假设使用频率为 12 MHz 的晶振。 最 长的延时时间可达 216=65 536 μ s 。若定时器工作在方式 2 ,则可实现极短时间的精确延时;如使用其他 定时方式,则要考虑重装定时初值的时间(重装定时器初值占用 2 个机器周期)。 在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时 器 / 计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但
[单片机]
基于51单片机超声波测距器设计
一、设计要求     设计一个超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0.10-3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。 二、设计思路   超声波传感器及其测距原理       超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的
[单片机]
基于<font color='red'>51单片机</font>超声波测距器设计
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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