srp结题总结报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

石河子大学第十一期SRP 项目
声噪计的设计与实现
指导老师: ……
小组组长: ……
小组组员: …………
项目总结报告
简易声噪计的设计与实现
1.课题的提出
1.1课题研究背景及意义
噪音的污染应经成为生活中原来越常见的污染,一次对声音的测量越来越重要。

通过对声音大小的测量来鉴别噪音的污染程度非常重要。

而如今,市场上的声噪计种类繁多,主要有数字式声噪计、精密声噪计、数位式噪音计,而他们的原理大同小异。

而由于电子产品本身技术含量较高,所以,声噪计的售价普遍偏高。

而声噪及的原理与我们所学学科有一定的交叉,所以,我们在学习课本基础之上做一个简单、使用的声噪计。

这样,不仅成本远低于售价,而且我们的动手能力以及对知识的理解能力都会增强。

2、课题研究设计
2.1研究目标
1)利用简易声噪计测出分贝数。

2)利用9个发光二极管灯亮显示,声音越大所亮灯根据芯片控
制越靠后。

3)当噪音大到扰乱人正常生活之时,红灯亮。

2.2研究方法与关键的问题
1)各个元器件选择之时参数的正确把握。

2)芯片LM3914各个引脚的焊接时,应当注意准确把握。

3)最后一个显示模块难度较大,需要应用单片机编程,予以输
出。

2.3课题研究方法步骤
1)首先在进行电路的焊接之前,需要对电路进行仿真模拟,即用仿
真软件进行仿真,就可得出个元器件的参数。

2)LM3914共18个引脚在进行实际焊接之前,对该芯片需要清楚的
了解各个引脚的功能。

3)在最后一个部分显示模块的部分,可以利用单片机的从芯片中引
出模拟量予以显示。

3、课题研究的实施
在项目具体实施过程中主要分为一下三个模块:
3.1声音的采集模块
方法与原则:
1)利用MIC进行声音采集,并通过传感器将声信号转化为电信号。

早经过AD模块转化为数字信号,用于下一阶段处理。

2)利用CA3130运算放大器,将信号放大输出。

3)在此模块主要由话筒和运放CA3130构成,IC2接成高增益反相放大器工作模式,3脚固定在4.5V电位作为基准电压,2脚则接
入话筒输出信号,信号在6脚放大输出后经R5负极反馈至2脚。

4)由于放大器输入阻抗极高,因此很小的输入电流变化就能激励运放工作。

3.2 信号整流与对数运算模块
主要方法:主要利用芯片LM3914:
LM3914是10位发光二极管驱动器,他可以把输入模拟量转换为数字量输出驱动10位发光二极管来进行点显示或柱显示。

芯片的详细介绍:
LM3914的参考电压源输出约为5V,即在7脚和8脚之间维持一个5V的基准电压vref,该基准可以直接给内部分压器使用,这样Vin
(5脚)输入一个0到5V电压时,通过比较器即可点亮发光二极管。

4脚和6脚之间连接有10个精密分压电阻,7脚和8脚之间是一个参考电源,9脚为点/柱模式选择,5脚为信号输入端。

(后有
附图)
3.3 显示模块
概述:
此模块主要用单片机进行显示,将前一块放大数字信号进行显示。

编写程序:
#include<reg52.h>
#include <I2C.H>//I2C总线头文件申明
#include <intrins.h>//调用部分汇编函数的申明
#define uchar unsigned char
#define uint unsigned int
#define PCF8591 0x90 //PCF8591 器件地址 1001 0000 参考datasheet
unsigned int D[32];
unsigned int result;//存放AD转换的结果,用于显示
sbit LCD_RS = P2^6; //复位端
sbit LCD_RW = P2^5; //写数据端
sbit LCD_EP = P2^7; //使能端
uchar Code1[]="Noise Degree ";
uchar Code2[]="Level: of . ";
/********************************************************* ADC发送字节[命令]数据函数
*********************************************************/ bit ISendByte(unsigned char sla,unsigned char c)
{
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(c); //发送数据
if(ack==0)return(0);
Stop_I2c(); //结束总线
return(1);
}
/********************************************************* ADC读字节数据函数
*********************************************************/ unsigned char IRcvByte(unsigned char sla)
{ unsigned char c;
Start_I2c(); //启动总线
SendByte(sla+1); //发送器件地址
if(ack==0)return(0);
c=RcvByte(); //读取数据0
Ack_I2c(1); //发送非就答位
Stop_I2c(); //结束总线
return(c);
}
//*******************************************************/ void ADC()
{
/********以下AD处理*************/
ISendByte(PCF8591,0x41);
//发送控制命令 0x41 四路但输入,选择1号输入通道 result=IRcvByte(PCF8591)*2;
//ADC0 模数转换1 放大2倍显示
}
void delay1(unsigned int n)
{
int i,j,k;
for (k=0;k<100;k++)
{
for (i=0; i<n; i++)
for (j=0; j<100; j++);
}
}
void delay(int ms)
{ //延时子程序
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_(); //空执行
_nop_();
_nop_();
_nop_();
}
}
}
/****************测忙函数************************/
bit lcd_bz()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80); //检测P0最高位是否为1
LCD_EP = 0;
return result;//返回侧忙结果,返回的值给了lcd_bz()
}
/****************写命令函数************************/
void lcd_wcmd(uchar cmd)
{ // 通过cmd将指令数据写入到LCD
while(lcd_bz());//当st7位为0时才允许读写操作
LCD_RS = 0;
LCD_RW = 0;
LCD_EP = 0;
_nop_();
_nop_();
P0 = cmd; //将8位指令通过P0口传给1602
_nop_();
_nop_(); //用于产生一个脉冲宽度
_nop_();
_nop_();
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 0;
}
void lcd_pos(uchar pos)//设定显示位置
{
lcd_wcmd(pos | 0x80);
}
/****************写数据函数************************/ void lcd_wdat(uchar dat)
{ //将字符显示数据写入到LCD
while(lcd_bz());
LCD_RS = 1;
LCD_RW = 0;
LCD_EP = 0;
P0 = dat; //将8位数据通过P0口传给1602
_nop_();
_nop_(); //用于产生一个脉冲宽度
_nop_();
_nop_();
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 0;
}
void lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据delay(1);
lcd_wcmd(0x0c); //显示开,开光标
delay(1);
lcd_wcmd(0x06); //移动光标
delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(1);
}
void operation()
{
uint shengyin_dianya;
uint zaosheng_level=0;
uint zaosheng_shiwei;
uint zaosheng_gewei;
uint zaosheng_xiaoshuwei;
ADC();
shengyin_dianya=result;//读取电压值
//shengyin_dianya=shengyin_dianya; // 电压显示
zaosheng_shiwei=shengyin_dianya/100; //数据拆分
zaosheng_gewei=shengyin_dianya/10%10;
zaosheng_xiaoshuwei=shengyin_dianya%10;
//Code2[12]=shengyin_dianya/100+0x30; //数据拆分后每一位对应的字符数值
Code2[13]=shengyin_dianya/10%10+0x30; //并放到相应的字符数组位置
Code2[15]=shengyin_dianya%10+0x30;
Code2[7]=zaosheng_gewei+0x30; //噪声等级放到相应的字符显示位置
}
void display() //
{
//LCD1602显示部分的程序
unsigned char m;
lcd_wcmd(0x80+0x00);//写入显示缓冲区起始地址为1行1列
for(m=0;m<16;m++)
{
lcd_wdat(Code1[m]);
delay(1);
}
lcd_wcmd(0x80+0x40);//写入显示缓冲区起始地址为2行1列 for(m=0;m<16;m++)
{
lcd_wdat(Code2[m]);
delay(1);
}
}
/****************主函数************************/
void main()
{
lcd_init();// 初始化LCD
while(1)
{
display();//对结果的显示
operation();// 对数据的读取和处理
}
}
4、项目完成情况及自我评价
项目基本完成目标,在采集模块方面能够比较准确地采集声音,在声音处理方面也可以达到预想的结果,然后经过LM3914处理可以使发光二极管不同位置的灯亮。

这一模块,达到理想的要求。

在单片机单片机显示模块,经过AD转换模块,将所测得模拟量转化为数字量,在LCD1602中予以显示,也达到理想要求。

5、项目成果的科学价值、应用前景、效益
当前市场上所售的测量噪音的声级计,由于电子产品的固有特性,所以它的售价较高,我们所做的项目,另辟蹊径,都是利用最简单、最普通的元器件,通过自己的动手所焊接出成品。

首先成本上远低于市场上的同类产品,而且我们所有器件均为常见元器件,所以就售价而言应该会远低于市场售价。

虽然现在我们的产品还不完善,但经过我们不断的完善,整改,终有一天,它会在市场上出现。

致谢:本项目研究是在导师田敏老师的悉心指导下完成的。

导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。

不仅使我们树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。

本研究课题的选择到实验数据的收集,以及论文的最终完成,每一步都是在导师的指导下完成的,倾注了导师大量的心血。

在此,谨向导师表示崇高的敬意和衷心的感谢!
本研究的顺利完成,也离不开各项目组成员的团结协作,通过大家的团结协作、共同努力,本次项目的研究得以顺利的完成,因此,我要感谢我的队友,今天的一切正式集体努力的结果!
参考文献
[1]谭浩强C++程序设计清华大学出版社2004:
[2]沈美明,温东婵,IBM-PC汇编语言程序设计清湖大学出版报社,2012;
[3]邱关源电路基础高等教育出版社2004:
[4]童诗白,华成英模拟电子技术基础高等教育出版社2006;
[5]闫石。

数字电子技术基础高等教育出版社2003:
[6]戴梅鄂,史嘉权微型计算机技术与应用清华大学出版社2006;
[7]何炎详,李飞,李宁计算机操作系统清华大学出版社2011;
[8]同济大学数学系高等数学第六版高等教育出版社2011;
[9]陈希孺,概率论与数理统计中国科学技术大学出版社2012;
[10]同济大学数学系线性代数第五版高等教育出版社2012;
[11] 吴功宜计算机网络(第三版)清华大学出版社2011;
[12] 高宗升滕岩梅复变函数与积分变换北京航空航天大学出版社2011;
附:LM3914内部电路图
成果图展示:。

相关文档
最新文档