【STC32G12K128开发板】第3-7讲:声音探测传感器

第3-7讲:声音探测传感器

    1. 学习目的
  1. 了解声音探测传感器模块的作用。
  2. 掌握单片机编程读取声音探测传感器模块引脚输出状态,从而判断周围环境声音强度有没有达到设置的阈值。
    1. 声音探测传感器简介

声音探测传感器模块对环境声音强度敏感,常用来检测周围环境的声音强度,当环境声音强度达不到设定阈值时,OUT引脚输出高电平,当外界环境声音强度超过设定阈值时,模块OUT引脚输出低电平。声音探测传感器在生活中比较常见的应用是楼道的声控照明。声音探测传感器如下图所示。

图1:声音探测传感器

  1. 声音探测传感器模块特性
  1. 可以检测周围环境的声音强度,需要注意的是:该传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音。
  2. 灵敏度可调(图中蓝色数字电位器调节)。
  3. 工作电压范围:直流电压(3.3~5)V。
  4. 输出形式:数字开关量输出(0和1高低电平)。
  5. 设有固定螺栓孔,方便安装。
  6. 小板PCB尺寸:3.2cm * 1.7cm。
  1. 引脚说明

声音探测传感器模块的引脚如下图所示。

表1:声音探测传感器引脚描述

序号

针脚名称

功能描述

1

VCC

模块3.3V/5V供电正。

2

GND

模块供电负。

3

OUT

数字开关量输出(高低电平)。

    1. 软件设计
      1. 声音探测实验
  • 注:本节的实验是在“实验2-6-1:串口1数据收发实验”的基础上修改,本节对应的实验源码是:“实验3-7-1:声音探测传感器实验”。
        1. 实验内容

单片机实时读取声音探测传感器模块输出引脚的状态,以此判断环境声音强度有没有达到设定阈值。

  1. 高电平:环境声音强度达不到设定阈值,指示灯D1熄灭。
  2. 低电平:环境声音强度达到设定阈值,指示灯D1点亮,串口输出提示信息。
        1. 代码编写

本节的代码比较简单,我们直接在“main.c”文件中编写相关的代码。

  1. 定义引脚

首先,定义连接声音探测传感器模块输出的引脚,本例中,我们用P5.1连接模块的输出引脚,定义如下。

代码清单:引用头文件

  1. sbit sensor_in = P5^1;     //用于读取声音探测传感器模块输出引脚的状态
  1. 读取引脚状态

程序初始化时将P5.1引脚配置为准双向,主循环中不断读取该引脚状态,如为高电平,则认为有人经过,代码清单如下。

代码清单:主函数

  1. /************************************************************************** 
  2. 功能描述:主函数 
  3. 参    数:无 
  4. 返 回 值:int类型 
  5. **************************************************************************/  
  6. int main(void)  
  7. {  
  8.     P2M1 &= 0xBF;   P2M0 &= 0xBF;     //设置P2.6为准双向口(LED1)  
  9.     P3M1 &= 0xFE;   P3M0 &= 0xFE;     //设置P3.0为准双向口(串口1的RxD)  
  10.     P3M1 &= 0xFD;   P3M0 |= 0x02;     //设置P3.1为推挽输出(串口1的TxD)  
  11.     P5M1 &= 0xFD;   P5M0 &= 0xFD;     //设置P5.1为准双向口 (声音探测传感器模块输出)  
  12.     uart1_init();                     //串口1初始化  
  13.     while(1)  
  14.     {  
  15.         if(sensor_in == 0)                 //声音超过设置的阈值,传感器模块OUT引脚输出低电平  
  16.         {  
  17.             led_on(LED_1);                 //点亮用户指示灯D1  
  18.             printf("sound detected!\r\n"); //串口输出提示信息  
  19.             delay_ms(100);                 //延时100ms,方便在串口调试助手中观察实验数据  
  20.         }  
  21.         else                       
  22.         {  
  23.             led_off(LED_1);                //熄灭用户指示灯D1  
  24.         }  
  25.     }  
  26. }  
        1. 硬件连接

如下图所示,将声音探测传感器安装到开发板的J22端子上。

图2:硬件连接

        1. 实验步骤
  1. 解压“…\第3部分:配套例程源码”目录下的压缩文件“实验3-7-1:声音探测传感器实验”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。
  2. 双击“…\sound_detection\project”目录下的工程文件“sound_detection.uvproj”。
  3. 点击编译按钮编译工程,编译成功后生成的HEX文件“sound_detection.hex”位于工程的“…\sound_detection\Project\Object”目录下。
  4. 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
  5. 电脑上打开串口调试助手,选择开发板对应的串口号,将波特率设置为9600bps。
  6. 程序运行后,在没有较强声音信号的情况下,可观察到开发板用户指示灯D1熄灭,串口无输出。对着声音传感器咳嗽、拍巴掌或大声说话时可以观察到指示灯D1点亮,并通过串口输出提示信息。

图3:串口调试助手中观察结果

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是基于STC32G12K128的蓝牙HC-05代码示例: ```c #include <reg52.h> sbit LED = P2^0; // 控制LED的IO口 sbit RXD = P3^0; // HC-05模块的接收引脚 sbit TXD = P3^1; // HC-05模块的发送引脚 void UART_Init() { TMOD = 0x20; // 定时器1工作在方式2,8位自动重装载模式 TH1 = 0xFD; // 波特率9600,定时器1重装载值 TL1 = TH1; // 初始化定时器1初值 TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口工作在模式1,允许接收 } void UART_SendByte(unsigned char dat) { SBUF = dat; // 将数据写入发送缓冲区 while (!TI); // 等待发送完成标志置位 TI = 0; // 清除发送完成标志 } unsigned char UART_ReceiveByte() { while (!RI); // 等待接收完成标志置位 RI = 0; // 清除接收完成标志 return SBUF; // 返回接收到的数据 } void main() { unsigned char data; UART_Init(); // 初始化串口 while (1) { data = UART_ReceiveByte(); // 接收串口数据 if (data == '1') { LED = 1; // 点亮LED UART_SendByte('L'); // 发送应答信号 } else if (data == '0') { LED = 0; // 熄灭LED UART_SendByte('H'); // 发送应答信号 } } } ``` 这个代码示例实现了基于STC32G12K128的蓝牙HC-05模块的通信功能。当接收到字符 '1' 时,点亮LED并发送字符 'L' 作为回应;当接收到字符 '0' 时,熄灭LED并发送字符 'H' 作为回应。你可以根据自己的需求进行修改和扩展。请确保正确连接HC-05模块的TXD和RXD引脚到STC32G12K128单片机的对应引脚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子友人张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值