ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:206.88KB ,
资源ID:21327770      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21327770.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国电子设计大赛一等奖Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国电子设计大赛一等奖Word文件下载.docx

1、程序清单111方案论证与比较1.1 采样方法比较与选择方案一、用DDS芯片配合FIFO对信号进行采集,通过DDS集成芯片产生一个频率稳定度和精度相当高的信号作为FIFO的时钟,然后由FIFO对A/D转换的结果进行采集和存储,最后送MCU处理。方案二、直接由32位MCU的定时中断进行信号的采集,然后对信号分析。 由于32位MCU -LPC2148是60M的单指令周期处理器,所以其定时精确度为16.7ns,已经远远可以实现我们的40.96KHz的采样率,而且控制方便成本便宜,所以我们选择由MCU直接采样。1.2 处理器的比较与选择系统方案一:基于ARMST710的专用芯片的体统方案。基于ARM S

2、T710音频频谱分析仪系统原理图如下 信号输入该方案采用DSP专用芯片ARM ST710进行控制和FFT计算,速度快,且具有波形存储和处理后的波形可以重放功能。还配有输出接口与示波器销量。可以从时域和频域观察波形,非常直观、实用。系统方案四:基于单片机C8051F060+FPGA构成信号分析仪,该系统原理方框图如图所示。单片机C8051F060独立完成4096点FFT运算和信号的失真度分析。虽然这种方案在速度上不及采用专用DPS芯片快,但采用优化的FFT,并将优化后的FFT再单片机内做实验,利用外扩的128KB RAM运算4096点FFT计算幅度谱,利用FPGA进行测频和控制。其运算时间也不超

3、过4S。能够达到设计要求。FPGA点阵液晶字符液晶测频电路信号预处理128KB RAMC8051F060PC键盘DMAADC0信号输入 整形信号最终方案选择:由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,我们采用Philips 的32位的单片机LPC2148,它拥有32K的RAM,并且时钟频率高达60M,所以对于浮点运算不论是在速度上还是在内存上都能够很快的处理。1.3 周期性判别与测量方法比较与选择对于普通的音频信号,频率分量一般较多

4、,它不具有周期性。测量周期可以在时域测量也可以在频域测量,但是由于频域测量周期性要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的,频率分量较多且功率分布较均匀且低信号就无法正确的分析其周期性。而在时域分析信号,我们可以先对信号进行处理,然后假定具有周期性,然后测出频率,把采样的信号进行周期均值法和定点分析法的分析后即可以判别出其周期性。 综上,我们选择信号在时域进行周期性分析和周期性测量。对于一般的音频信号,其时域变化是不规则的,所以没有周期性。而对于单频信号或者由多个具有最小公倍数的频率组合的多频信号具有周期性。这样我们可以在频域对信号的频谱进行定量分析,从而得出其周期性。而

5、我们通过先假设信号是周期的,然后算出频率值,然后在用此频率对信号进行采样,采取连续两个周期的信号,对其值进行逐次比较和平均比较,若相差太远,则认为不是周期信号,若相差不远(约5%),则可以认为是周期信号。2 系统设计2.1 总体设计音频信号经过一个由运放和电阻组成的50 Ohm阻抗匹配网络后,经由量程控制模块进行处理,若是一般的100mV-5V的电压,我们选择直通,也就是说信号没有衰减或者放大,但是若信号太小,12位的A/D转换器在2.5V参考电压的条件下的最小分辨力为1mV左右,所以如果选择直通的话其离散化处理的误差将会很大,所以若是采集到信号后发现其值太小,在20mV-250mV之间的话,

6、我们可以将其认定为小信号,从而选择信号经过20倍增益的放大器后再进行A/D采样。经过12位A/D转换器ADS7819转换后的数字信号经由32位MCU进行FFT变换和处理,分析其频谱特性和各个频率点的功率值,然后将这些值送由Atmega16进行显示。信号由32 位MCU分析后判断其周期性,然后由Atmegal6进行测量,然后进行显示。总体设计框架图2.2 单元电路设计2.2.1前级阻抗匹配和放大电路设计 信号输入后通过R5,R6两个100Ohm的电阻和一个高精度仪表运放AD620实现跟随作用,由于理想运放的输入阻抗为无穷大,所以输入阻抗即为:R5/R6=50Ohm,阻抗匹配后的通过继电器控制是对

7、信号直接送给AD转换还是放大20倍后再进行AD转换。 在这道题目里,需要检测各频率分量及其功率,并且要测量正弦信号的失真度,这就要求在对小信号进行放大时,要尽可能少的引入信号的放大失真。正弦信号的理论计算失真度为零,对引入的信号失真非常灵敏,所以对信号的放大,运放的选择是个重点。我们选择的运放是TI公司的低噪声、低失真的仪表放大器INA217,其失真度在频率为1KHz,增益为20dB(100倍放大)时仅为0.004%,其内部原理图如下图所示。其中放大器A1的输出电压计算公式为OUT1=1+(R1/RG)*VIN+同理, OUT2=1+(R2/RG)*VIN-R3、R4、R5、R6及A3构成减法

8、器,最后得到输出公式VOUT=(VIN2-VIN1)*1+(R1+R2)/RGR1=R2=5K,取RG=526,从而放大倍数为20。2.2.2AD转换及控制模块电路设计 采用12位AD转换器ADS7819进行转换,将转换的数据送32位控制器进行处理。2.2.3功率谱测量功率谱测量主要通过对音频信号进行离散化处理,通过FFT运算,求出信号各个离散频率点的功率值,然后得到离散化的功率谱。由于题目要求频率分辨力为100Hz和20Hz两个档,这说明在进行FFT运算前必须通过调整采样频率(fK)和采样的点数(N),使其基波频率f为100Hz和20Hz。根据频率分辨率与采样频率和采样点数的关系:f=fk/

9、N。可以得知,fk=N*f。又根据采样定理,采样频率fk必须不小于信号频率fm的2倍,即:fk=2fm。题目要求的最大频率为10KHz,所以采样频率必须大于20KHz,考虑到FFT运算在2的次数的点数时的效率较高,所以我们在20Hz档时选择40.96KHz采样率,采集2048个点,而在100档时我们选择51.2KHz采样率,采集512个点。通过FFT 分析出不同的频率点对应的功率后,就可以画出其功率谱,并可以在频域计算其总功率。3 软件设计主控制芯片为LPC2148,测量周期为Atmega16实现,由于处理器速度较快,所以采用c语言编程方便简单.软件流程图如下: 主流程图 周期性分析和测量流程

10、图4系统测试4.1总功率测量(室温条件下) 输入信号 频率 幅度 测量时域总功率(w)测量频域总功率(w) 理论值估算误差 正弦波 100Hz 1 Vpp0.127 0.1290.1251.2% 1KH 0.1260.129 1.3%音频信号 20Hz-10KHz20mVpp-5Vpp 0.783 0.761 X 5% 1.803 1.777 X 结果分析: 由于实验室提供的能够模仿音频信号的且能方便测量的信号只有正弦信号,所以我们用一款比较差点的信号发生器产生信号,然后进行测量,发现误差不达,在+-5%以内。我们以音频信号进行测量,由于其实际值无法测量,所以我们只能根据时域和频域以及估计其误

11、差,都在5%以内。4.2 单个频率分量测量(室温条件下)频率幅度最大功率频点最大功率频点功率次大功率频点次大功率频点功率正弦波500Hz100mVpp 500Hz1.20mw 520Hz0.04mW5KHz1Vpp 5KHz 120mw 5.02KHz3.56mw20Hz-10K 880Hz 23mw 600Hz 4.3mw我们首先以理论上单一频率的正弦波为输入信号,在理想状况下,其频谱只在正弦波频率上有值,而由于有干扰,所以在其他频点也有很小的功率。音频信号由于有多个频点,所以没有一定的规律性。由于音频信号波动较大,没有一定的规律,且实验室没有专门配置测量仪器,所以我们只好以正弦波和三角波作

12、为信号进行定量分析测量,以及对音频信号进行定性的分析和测量。我们发现其数字和用电脑模拟的结果符合得很近。5 结论由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。信号与系统,ALAN V.OPPENHEIM著,西安:西安交通大学出版社,1997年;数字图像处理学,元秋奇著,北京:电子工业出版社,2000年;模拟电子线路基础,吴运昌著,广州:华南理工大学出版社,2004年;数字电子技术基础,阎石著,北京:高等教育出版社,1997年;数据结构与算法,张晓丽等著,北京:机械工业出版社,2002年;ARM&Linux嵌入式系统教程,马忠梅等著,北京:北京航空航

13、天大学出版社,2004年;单片机原理及应用,李建忠著,西安:西安电子科技大学,2002年;1、LPC21482、ATMEGA163、AD6204、ADS78195、液晶320*240仪器设备清单1、低频信号发生器 2、数字万用表 3、失真度测量仪4、数字示波器5、稳压电源电路图图纸电源系统前级放大和AD转换Atmega16控制板程序清单/*/ FFT转换函数,dataR:实部,datai:虚部,/*/void FFT(float *dataR,float *dataI,int n)int i,L,j,k,b,p,xx,qq。int x11=0。float TR,TI,temp。float QQ

14、。/位倒置/for(i=0。icountn。i+) xx=0。 for(j=0。jn。j+) xj=0。 xj=(i/countj)&0x01。 xx=xx+xj*countn-j-1。 dataIxx=dataRi。 dataRi=dataIi。 dataIi=0。/蝶形运算/for(L=1。L0) b=b*2。 i-。 for(j=0。=b-1。j+) p=1。 i=n-L。 p=p*2。p=p*j。for(k=j。k0) page-。 delay_nms(8000000)。 /上翻页 if(key=1) page+。if(page=SampleNum/4) page=0。 /下翻页/失真

15、度计算/void distortion(void)LCD_ClearScreen()。LCD_WriteChineseString(font6,3,10,20)。unsigned int key。int fr。while(1)/获取频率/log_2_N=11。SampleNum=SampleTablog_2_N。reset_timer(0)。init_timer0(40960)。New_Flag=0。enable_timer(0)。/等待采样完成/while(!FFT_Flag)。disable_timer(0)。 /关定时器0/FFT运算/FFT(Re,Im,log_2_N)。/频域功率/f

16、or(i=1。SampleNum/2。i+) Rei=Rei*Rei。Rei=Rei/2。/总功率/Fp=0。i+) Fp+=Rei。sort(&Re1,&Im1,SampleNum/2-1)。fr=1000000/fre。if(Tflag) LCD_WriteChineseString(font7,1,50,20)。LCD_WriteEnglishString( ,0,38)。print3510(fr,10,38)。US,58,38)。else LCD_WriteEnglishString(LCD_WriteChineseString(font8,1,50,20)。/按键扫描/if(key=

17、1) SystemState=fft_mode。mode=20。break。if(key=2) SystemState=fft_mode。mode=100。/按键扫描/unsigned char getkey(void) if(IO1PIN_bit.P1_21=0) delay_nms(200000)。 if(IO1PIN_bit.P1_21=0) return 1。 if(IO1PIN_bit.P1_22=0) delay_nms(2000000)。 if(IO1PIN_bit.P1_22=0) return 2。 if(IO1PIN_bit.P1_23=0) if(IO1PIN_bit.P1_23=0) return 3。 if(IO1PIN_bit.P1_24=0) if(IO1PIN_bit.P1_24=0) return 4。return 0xFF。/排序处理/void sort(float *a,float *b,int n)/a为待排序的量,b为起位置int i,j,temp。i+) bi=i+1。=n-1。for (i=0。n-j。i+) if (aiai+1) temp=ai。ai=a

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1