硬件设计
功能说明:
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单片机DHT11的加湿器proteus仿真程序设计
下一篇:基于51单片机和ADC0808 ADC0809的自动数字电压表设计
推荐阅读最新更新时间:2024-11-16 22:22
设计资源 培训 开发板 精华推荐
- 睿瀚医疗万斌:“脑机接口+AI+机器人”是康复赛道的未来
- 希润医疗孟铭强:手功能软体机器人,让脑卒中患者重获新生
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度