版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目: 单片机LED音乐频谱的设计院(系): 专业:学生姓名: 学号: 指导教师: 2011年07月07日该系统采用增强型8051单片机STC12C5A60S2为主控制器,通过单片机内置的ADC对音频信号进行采样、量化,然后通过快速傅里叶变换运算,在频域计算出音频信号各个频率分量的功率,最后通过双基色LED单元板进行显示。该方案具有电路结构简洁,开发、生产成本低的优点。关键词:单片机;傅里叶;LED;TOC\o"1-5"\h\z\o"CurrentDocument".引言 1\o"CurrentDocument".方案设计 21设计要求 22总体方案设计 33总体方案组成 6\o"CurrentDocument"3.系统电路设计 61单片机主控电路设计主控制器 62LED显示模块电路设计 7.软件设计 8软件设计流程图 8\o"CurrentDocument".系统的测试 8\o"CurrentDocument".结论 9.参考文献 11.附录 14.引言本文介绍的音乐频谱显示器可对mp3、手机、计算机输出的音乐信号进行实时的频谱显示。系统采用增强型8051单片机STC12C5A60S2为主控制芯片,通过单片机内置的ADC对音频信号进行采样,把连续信号离散化,然后通过快速傅里叶变换(FFT)运算,在频域计算出音频信号各个频率分量的功率,最后通过双基色LED单元板进行显示。在显示的频率点不多的情况下,本系统比采用DSP或ARM作为主控制芯片的设计方案具有电路结构简洁,开发、生产成本低的优点。.方案设计设计要求.单片机自带AD转换,这样省去外围AD电路。.控制LED随着音乐跳动,需要理解傅里叶原理。总体方案设计经分析,将系统分为两个部分,一个是由单片机组成的主控。另一部分是LED显示部分,单片机对接收到的音频进行处理经过傅里叶换算后在LED显示,5V稳压电源给各个部分供电。该系统实现的方法有很多种,下面将列出大家最经常用到的实现方案。系统框图如图1所示显示电路音频信号显示电路音频信号图1音乐频谱总体系统框图该系统由音频信号预处理电路、单片机STC12C5A60S2控制电路、LED频谱显示电路等部分组成。图l为系统整体设计原理框图。图1系统整体设计原理框图系统各组部分的功能:(1)音频信号预处理电路主要对输入的音频进行电压放大和电平提升。(2)单片机STC12C5A60S2控制电路采用内置的ADC对音频信号进行采样量化,然后对量化后的音频数据采用FFT算法计算其频谱值,再将各频谱值进行32级量化。(3)LED频谱显示电路在单片机的控制下,负责将FFT计算得到的音频信号的各个频点的大小进行直观显示。.音频信号预处理电路图2音频信号预处理电路音频信号预处理电路见图2所示,对输入的音频进行电压放大和电平提升。手机、计算机输出的音频信号Vin经过RP1进行电压调节后,经集成运放LMV358反相放大10倍(Av=-R3/R2=-10),提高系统的灵敏度。选用单电源供电的运放LMV358,一方面可以简化系统电源电路的设计,直接采用系统的+5V供电即可;另一方面其输出端静态电压为VCC/2,即2.5V。放大后的音频信号和这2.5V叠加后变为直流电压信号,满足后面单片机内置的ADC对输入电压量程的要求。另外,LMV358为轨到轨输出运放,它可在+5V单电源供电条件下仍具有较大的动态输出范围。.单片机STC12C5A60S2控制电路STC12C5A60S2单片机是宏晶科技生产的新一代单时钟/机器周期(1T)8051单片机,具有高速、低功耗及超强抗干扰等特点,指令代码完全兼容传统8051,但速度快8-12倍;内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S)等资源[1]。特别是它带硬件乘法/除法指令,使乘法指令执行时间从传统8051的48个晶振周期减少到4个晶振周期,使需要大量乘法运算的FFT运算速度得到大幅度提高。在本系统中,STC12C5A60S2单片机负责完成对音频信号进行A/D变换,然后采用FFT算法计算音频信号频谱,并将计算结果输出到LED频谱显示电路。(1)音频信号的A/D变换根据香农采样定理,一般采样频率至少应为所采样音频信号最高频率的2倍。由于人耳能够感受的频率为20Hz-20kHz,所以理论上采样频率最高取40kHz。本设计采用单片机STC12C5A60S2内置的ADC对音频信号进行采样、量化。STC12C5A60S2单片机的A/D转换口在P1□(P1.0-P1.7),W8路10位的高速ADC,其输入电压量程为0-Vcc,转换速度可通过ADC_CONTR特殊功能寄存器的SPEED1,SPEED0位进行控制,速度最快可设置为每90个时钟周期转换一次。在外接晶振为24MHz时,ADC的转换速度可达到330KHZ,完全可满足对音频信号的采样需要。(2)音频信号频谱值的计算我们采用快速傅里叶算法(FFT)来计算音频信号的频谱值。根据FFT运算规律,如ADC以fs的采样频率取N个采样点,经过FFT运算之后,就可以得到N个点的复数序列。通常为了方便进行FFT运算,通常N取2的整数次方:N=2L(L为正整数)。这N个点的FFT结果,每一个点就对应着原始信号的一个频率点,即第n点所表示的频率为f=nxfs/N,n=0,1,…,(N-1);该点的模值除以N/2就是对应该频率下原始信号的幅度(对于第1个点则是除以N);该点的相位即是对应该频率下原始信号的相位。由于FFT结果的对称性,通常只使用FFT运算后的前N/2个点的数值。本系统每隔10ms采样一次128个点,经过FFT运算后将得到128个频率点。由于FFT结果的对称性,我们选取前64个点进行显示。现在FFT算法已发展出多种形式,本系统采用按时间抽选(DIT)的基-2FFT算法,这种算法程序相对较简单,节省存储单元,运行效率较高,比较适合用单片机编程实现。DIT基-2FFT算法主要由倒位序运算和多级蝶形运算实现。a.倒位序运算的实现DIT基-2FFT算法通常将原始数据序列倒位序存储,运算后的结果则按正常顺序输出。一般的数字信号处理的教材都介绍雷德(Rader)算法,通过“反向进位加法”将原始数据序列进行倒位序存储[2]。雷德算法的灵活性较大,但在本系统中,参与运算的数据点数只有128个,通过预先编制倒位序查询表,采用查表方式实现倒位序操作速度会更快。b.蝶形运算的实现根据DIT基-2FFT算法原理,N点FFT运算由log2N级,每级N/2个蝶形运算,共(^2)log2N个蝶形运算构成。每个蝶形运算结构见图3所示[2]。,丫’(k) \ (k)k+b)¥ ~(k+b)-1图3蝶形运算图3按时间抽选蝶形运算结构蝶形运算结构图中,m表示第m级的蝶形运算,k为蝶形运算第一节点所在行数,b为蝶形运算两节点距离,b=2m-1,WNr为旋转因子,WNr=cos(2nr/N)-jsin(2nr/N)。每个蝶形结构完成下述基本迭代运算[2]:式中,卬,cos(2”/N)-/sin(2fP/N)o设Xm=Rm+jIm,将式(1)转变为实部和虚部的表示形式,得到:由上面式(1)、式(2)可见,一个蝶形运算需要一次复数乘法Xm-1(k+b)WNr及两次复数加(减)法。在单片机系统中编程实现时,需把复数运算转变为实数运算。心依)=1『(@+*盟人6龙0虱21Tm信乩)虱鼠2万肉”3)儿(幻=为,(幻一X/5+b)sin(27rPTV)+*(表+/j)cos(2tt%V)(4)同理,将式(2)转变为:Xd)=XJ(左)4,保雨V)-茶为无拙由n(2ir/WV)(5)X《k钻HX;(k)+茶;/+b)sin(2irBW)-X:(*+6)cqs(21r附V)(6)将sin、cos函数做成表格sin_tab[128]、cos_tab[128],直接查表可提高运算速度。3.频谱值的显示系统中采用5*11个不同颜色的草帽LED进行显示,每列显示音频信号的一个频率点,每列LED点亮的高度表示该频率点幅度的大小。整个显示板一共有5列U,工作的时候,可以看到每列根据频率幅度的大小在跳动。2.3整体系统组成本系统硬件部分由单片机主控电路、LED显示部分、音频采集等部分组成,其中单片机主控电路有外接晶振,电源供电电路阻等部分组成。软件部分详细见下文。单片机全系统如下图2所示。3.系统电路设计单片机主控电路设计单片机主控模块包括了振落电路、音频采集电路,同时接入了各个模块的接口,保证了整个系统的灵活性。单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。控制电路的核心器件是由美国Atmel公司生产的AT89S52单片机,属于MCS-51系列。AT89S52是一种低功耗、高性能的CMOS8位微控制器,具有8K在系统可编程Flash存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。单片机主控电路原理图如下所示:£7UpfUI£7UpfUIri.oI-iPLn1« ¥L.L-PO.OnntJ耶4ri_z. 1:iF.lnj j'^,2PI4 PO.JPL5 P0.4PI6 Prt.5PL7 PQ.GR^T FVJRXD.TIO _EA1XD/P3.1ALEFROGN 2 PSHX]NII/PS3 P2J1X1314 72t612P15 曾.5WRZP3.fi P2.4尺EP,7 P2.3XTAL2 P2.2XTAll P2JVSS P2.037手斯63$千34E31Q3?R3]031135I1130P3.2J229P3.313NXRI5—IKP2.7P3.114nRI4—IKl'2.6P31IXR7152ftkl<—=JlKP2.5P?1625KL2P2.4!J.1K—Kt,,..—IK咫K517:MK|.1gJJ*— Jk.]&2JRLUP2.2—―JK]*>R9—'jK120,21K*—IKP2.0■SlCl2C5A(hOS2Cl2Tpf——24MEIZTY]图4.1单片机主控电路原理图3.23.2LED显示模块电路设计pr7_K|__收了Pl7/Jm.7 ।P:7 |□l尸产D123产D2S20&4U45Pi.6_KIPI6■网6-叫h-P3恁-FlJF,02DBDM尸尸D35尸尸D46尸尸P3.SblE■呼5■F5|■FlJF,VVJP2.7_k|DI.4P27尸再]D25尸尸4D36甩,1八K4P2. 1J1K31DI5尸产Flo她尸尸□r?JD4S产尸P2S6aRlfi卜P2„fikl十P2,r.P2.6FlFlP2.5kl__016F尸产,iD271*2.5尸尸kl_■尸尸,04g”3|尸尸Fl况;"尸D17尸产D28Fl尸尸—rD39尸尸iD5Q尸尸■P2.4-闻P24।t吐4w4也4;1P!PIP2JDT尸J□18P2JJX।029P3J1J__ fP2.D4031工工D51P2J|0Wmn□41D52P2.2P2..2尸E।吆2尸尸吐2尸尸值21尸尸D201n■1D3M24n4P2.13尸iIP21IJ।iP2.I.P2.1kL_P2.I|KJkL_彳□21I)2D43D54P2.0了.为qb匕UJ尸产|iP2JIJJ■IP2J.I?J也U|尸尸PI□ii:二D221 D3H$「![M4飞1n寸rnrrEJ4.软件设计4.1软件设计流程图FFT倒序流程图(一…一丽送入上gcrM=J(kHK.W)*f/FFT计算流程图.系统测试制作的过程中首先遇到的问题是LED如何组装,经过查阅资料发现,可以利用LED的管脚互相按照电路图连接起来,这个时候主要是利用万用表来测试,LED灯到底有无坏掉的。通电后,在无音频输入时,LED应该无闪烁跳动现象。在制作完成的时候,发现LED灯闪烁,这个时候,在音频输入端接入了47P的电容,这样就解决了这个问题。.结论本系统采用增强型8051单片机STC12C5A60S2实现音乐频谱显示,该方案硬件电路设计简单、成本低,并具有较高的实用价值。本方案是通过ADC采样输入的音频信号,ADC采样完成以后,将数据进行倒序排列并进行FFT运算,结果通过TFT液晶显示出来。由于采用的处理器的处理能力的原因,不能做到很高的采样频率和很精细的频率分辨率,要提高系统的频率分辨率,就需要增加采样点数。可以借助PC的强大处理能力,将采样的数据通过预留的串口传送给PC,在PC上完成FFT运算以及显示,这就是虚拟仪器的方式,实际工作中应用前景也非常大。10感谢老师对我们的指导。完成了这个实训任务,虽然结果差强人意,但是还是有进步的,有收获的。希望以后在学习生活中能继续好好学习。11.参考文献[1]宏晶科技.STC12C5A60S2系列单片机器件手册卬].2010.[2]程佩青.数字信号处理教程(第二版)[M].北京:清华大学出版社,2001.[3]靳桅,等.基于51系列单片机的LED显示屏开关技术(第2版)[M].北京:北京航空航天大学出版社,2011.作者简介:吴永德(1980—),男,讲师,从事电子技术专业教学及研究。罗萍(1979—),女,讲师,从事计算机技术专业教学及研究。12
附录:电路图:程序:#include<stc12c5a60s2.h>〃"stc12c5620ad.h"#include<intrins.h>#defineLongToBin(n)(((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)&0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01))#defineBIN(n)LongToBin(0x##n##)#defineucharunsignedchar#defineuintunsignedintdefineSAMPLE_NUM64defineNUM_2_LOG6defineFFT_OUT_MIN3ucharcodeBRTable[SAMPLE_NUM]={0,32,16,48,8,40,24,56,4,36,20,52,12,44,28,60,2,34,18,50,10,42,26,58,6,38,22,54,14,46,30,62,1,33,17,49,9,41,25,57,5,37,21,53,13,45,29,61,3,35,19,51,11,43,27,59,7,39,23,55,15,47,31,63);charcodesin_tabb[SAMPLE_NUM]={0,12,25,37,49,60,71,81,90,98,106,112,117,122,125,126,127,126,125,122,117,112,106,98,90,81,71,60,49,37,25,12,0,-12,-25,-37,-49,-60,-71,-81,-90,-98,-106,-112,-117,-122,-125,-126,-127,-126,-125,-122,-117,-112,-106,-98,-90,-81,-71,-60,-49,-37,-25,-12);charcodecos_tabb[SAMPLE_NUM]={127,126,125,122,117,112,106,98,90,81,71,60,49,37,25,12,0,-12,-25,-37,-49,-60,-71,-81,-90,-98,-106,-112,-117,-122,-125,-126,-127,-126,-125,-122,-117,-112,-106,-98,-90,-81,-71,-60,-49,-37,-25,-1132,0,12,25,37,49,60,71,81,90,98,106,112,117,122,125,126);uchara[21];ucharkeep,keepnum,anum,timernum,timernum2,lednum3,Ltime;//用于分离/*加入数组用于显示相应led灯数目*/ucharlednum□二{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//0-7的显示数组P2组控制intxdataFftReal[SAMPLE_NUM];intxdataFftImage[SAMPLE_NUM];sbitp30=P3八0;sbitp31=P31;sbitp32=P3”;sbitp33=P3八3;sbitp34=P3N;sbitp35=P3八5;//9-11的led控制sbitp36=P3^6;sbitp37=P3";voidtimerinit()//定时器初始化函数{TMOD=0x01;TH0=(65536-6000)/256;TL0=(65536-6000)%256;EA=1;ET0=1;TR0=1;)voiddisp(){timernum++;if(timernum==6)timernum=1;P2=0;//显示前先关闭P3=P3&0x1f;switch(timernum){case1:anum=a[0];p34=0;p33=1;p32=1;p31=1;p30=1;break;case2:anum=a[1];p34=1;p33=0;p32=1;p31=1;p30=1;break;case3:anum=a[2];p34=1;p33=1;p32=0;p31=1;p30=1;break;case4:anum=a[3];p34=1;p33=1;p32=1;p31=0;p30=1;break;case5:anum=a[4];p34=1;p33=1;p32=1;p31=1;p30=0;break;)//anum=a[10];/*修改可以改变光柱高度(anum值分开几个部分用定时器区分显示)(a口内逐加)*/if(anum<=8){P2=lednum[anum];P3=P3&0xff;}//屏蔽高三位1f14//else{P2=0xff;P3=lednum2[anum-9];}if(anum==9){P2=0xff;p35=1;p36=0;p37=0;}if(anum=10){P2=0xff;p35=1;p36=1;p37=0;}if(anum==11){P2=0xff;p35=1;p36=1;p37=1;})ucharSTC_ADC() //!!根据数据手册写一个ad读取函数{uchari;ADC_RES=0;ADC_RESL=0;ADC_CONTR=BIN(10001000);i=3;while(i--);while(1){if(ADC_CONTR&BIN(10000)){break;))ADC_CONTR=BIN(10000000);return(ADC_RESL<<2);)shortsqrt_16(unsignedlongM){unsignedintN,i;unsignedlongtmp,ttp;if(M==0)return0;N=0;tmp=(M>>30);M<<=2;if(tmp>1){N++;tmp-二N;)for(i=15;i>0;i--){15N<<=1;tmp<<=2;tmp+=(M>>30);ttp=N;ttp=(ttp<<1)+1;M<<=2;if(tmp>=ttp)(tmp-=ttp;N++;))returnN;)voidFFT()(registeruchari,bb,j,k,p,max;registershortTR,TI,temp;unsignedlongulReal;unsignedlongulImage;for(i=0;i<SAMPLE_NUM;i++) 〃此处可以加入自动增益(FftReal[BRTable[i]]=STC_ADC()<<keep;〃使显示保持在一定范围内FftImage[i]=0;)keepnum=FftReal[2]/32;〃提取等级数if((7<keepnum)&&(keepnum<=8)){keep=1;}elseif((4<keepnum)&&(keepnum<=6)){keep=2;}elseif((2<keepnum)&&(keepnum<=4)){keep=3;}else{keep=5;}for(i=1;i<=NUM_2_LOG;i++){bb=1;bb<<=(i-1);for(j=0;j<=bb-1;j++)16p=1;p<<=(NUM_2_LOG-i);p=P*j;for(k=j;k<SAMPLE_NUM;k=k+2*bb){TR=FftReal[k];TI=FftImage[k];temp=FftReal[k+bb];FftReal[k]=FftReal[k]+((FftReal[k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度活动板房销售与体育场馆临时设施合同
- 2025年度农村土地院子使用权转让合同
- 高效节能家电产品助力绿色生活
- 二零二五年度农业科技股权分配及种植养殖合同范本
- 2025年度非婚生子抚养费用及探望权执行协议
- 2025年度科研机构简易用工合同范本
- 2025年度过桥资金借款合同续签合同
- 2025年度二零二五年度汽车抵押分期购车合同模板
- 运动赛事策划的未来趋势
- 科技创新驱动的企业文化构建
- 人教版英语高考试卷与参考答案(2024年)
- 红楼梦服饰文化
- 浙江省中小学心理健康教育课程标准
- 《共情的力量》课件
- 2022年中国电信维护岗位认证动力专业考试题库大全-上(单选、多选题)
- 水平二(四年级第一学期)体育《小足球(18课时)》大单元教学计划
- 《关于时间管理》课件
- 医药高等数学智慧树知到课后章节答案2023年下浙江中医药大学
- 城市道路智慧路灯项目 投标方案(技术标)
- 水泥采购投标方案(技术标)
- 医院招标采购管理办法及实施细则(试行)
评论
0/150
提交评论