基于单片机的音频频谱显示器设计
基于51单片机的LED点阵音乐频谱显示器
基于51单片机的LED点阵音乐频谱显示器李逸家【期刊名称】《工业控制计算机》【年(卷),期】2015(0)4【摘要】This design by using singIe-chip microcomputer and digitaI signaI processing techniques to achieve musicaI spectrum dispIay system based on MCU.The system is divided into:the voice sampIing unit,sound processing unit and the LED dot matrix dispIay consisting of ceI s.Voice capture moduIe in SCM resources incIude sound reception and a/d conversion sys-tems.Voice receiving unit receives the audio anaIogue signaI,after the a/d converted to a digitaI signaI,to the next IeveI of processing units,sound processing unit STC12C5A60S2 microcontroI er FFT processing.%通过使用单片机原理,利用数字信号理论,使音乐频谱分析在单片机上的实现。
系统包括:声音接收模块,声音转换模块和LED组成的点阵显示单元。
其中声音采集模块,是利用STC12C5A60S2单片机中的声音采集和A/D转换。
音频的模拟信号通过声音采集模块接收到,经过A/D转换系统,转换为数字信号,送给下一级处理单元处理。
声音转换模块利用STC12C5A60S2单片机内部的资源,进行FFT处理。
基于STC8A4K60S2A12单片机的音乐频谱仪的设计
基于STC8A4K60S2A12单片机的音乐频谱仪的设计作者:王启明郭宁峰周艳艳来源:《电脑知识与技术》2019年第27期摘要:通过对音乐频谱仪原理的研究,利用STC8A4K60S2A12单片机控制技术、离散傅里叶变换快速算法,通过单片机内置的ADC采集音频信号,并将采集到的音频信号转换成数字信号。
设计并实现一个音乐频谱仪,通过LED点阵将音乐频谱显示出来。
关键词:单片机;傅里叶变换;LED点阵中图分类号:TP393; ; ; ; 文献标识码:A文章编号:1009-3044(2019)27-0211-02时代在不断发展,生活水平在不断提高,人们在解决基本生活所需的同时,也更加注重对生活品质的追求,音乐频谱仪就是在这种追求之下的产物。
它促进了音乐的可视化,把原本只能“听”的音乐,变得能够“看”到,使音乐在给人听觉享受的同时,也带来视觉上的享受;帮助录音师对录制的音频进行加工处理,使音频变得更加丰富,有层次感。
更广泛的,是它在家庭影院、卡拉OK等音响系统中,实时显示音乐信号的频谱将为音响系统增添不少色彩。
本文设计并实现一个基于STC8A4K60S2A12单片机的音乐频谱系统,具有电路结构简单、易开发、生产成本低等特点。
能够较好地满足人们在生活中的需求。
1 系统的基本结构本系统以STC8A4K60S2A12单片机为控制核心,利用其内部集成的一个12位15通道的高速ADC转换器收集来自外界的音频信号,并将音频信号(电信号)转化为数字信号。
通过快速傅里叶变换(FFT)对离散后的数字信号进行处理和运算。
FFT计算出频谱值以后,由LED频谱显示电路负责在单片机的控制下把频谱直观地显示出来。
此外,本系统还包括按键控制的开关和开始动画等其他功能。
2 硬件设计2.1复位电路复位电路用来将中央处理器及其他功能模块同时恢复到一个确切的初始状态,以备下次运行时从该初始状态重新开始。
复位方式有手动按钮复位、上电复位、积分型上电复位、看门狗型复位电路等。
用51单片机实现电脑音频信号的频谱显示(在LCD上显示)
如何用51单片机实现音频信号的频谱显示(在LCD上显示)思路:外来音频信号经过51单片机,在单片机中进行频谱分析,并将结果显示在LCD(12864或1602)上要求:频谱显示如同千千静听播放音乐时的频谱显示希望各位高手能给出详细的解决方案,感激。
51做FFT有些困难,可以使用增强型(RAM)的51机子进行参考程序:#include<STC12C5A.H>#define uchar unsigned char#define uint unsigned int#define channel 0x01 //设置AD通道为 P1.1//---------------------------------------------------------------------sbit SDA_R=P1^2;sbit SDA_R_TOP=P1^3;sbit SDA_G=P1^4;sbit SDA_G_TOP=P1^5;sbit STCP=P1^6;sbit SHCP=P1^7;//---------------------------------------------------------------------//----------------------------------------------------------------------------------------------------------------------//放大128倍后的sin整数表(128)code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112,108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30,-36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121,-123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102,-98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };//放大128倍后的cos整数表(128)code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -54, -59,-65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -85, -80,-75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70,75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };//采样存储序列表code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,8, 72, 40, 104, 24, 88, 56, 120,4, 68, 36, 100, 20, 84, 52, 116,12, 76, 44, 108, 28, 92, 60, 124,2, 66, 34, 98, 18, 82, 50, 114,10, 74, 42, 106, 26, 90, 58, 122,6, 70, 38, 102, 22, 86, 54, 118,14, 78, 46, 110, 30, 94, 62, 126,1, 65, 33, 97, 17, 81, 49, 113,9, 73, 41, 105, 25, 89, 57, 121,5, 69, 37, 101, 21, 85, 53, 117,13, 77, 45, 109, 29, 93, 61, 125,3, 67, 35, 99, 19, 83, 51, 115,11, 75, 43, 107, 27, 91, 59, 123,7, 71, 39, 103, 23, 87, 55, 119,15, 79, 47, 111, 31, 95, 63, 127};uchar COUNT=0,COUNT1=0,ADC_Count=0,LINE=15,G,T;uchar i,j,k,b,p;int Temp_Real,Temp_Imag,temp; // 中间临时变量uint TEMP1;int xdata Fft_Real[128];int xdata Fft_Image[128]; // fft的虚部uchar xdata LED_TAB2[64]; //记录漂浮物是否需要停顿一下uchar xdata LED_TAB[64]; //记录红色柱状uchar xdata LED_TAB1[64]; //记录漂浮点void Delay(uint a){while(a--);}void FFT(){ //uchar X;for( i=1; i<=7; i++) /* for(1) */{b=1;b <<=(i-1); //碟式运算,用于计算隔多少行计算例如第一极 1和2行计算,,第二级for( j=0; j<=b-1; j++) /* for (2) */{p=1;p <<= (7-i);p = p*j;for( k=j; k<128; k=k+2*b) /* for (3) 基二fft */{Temp_Real = Fft_Real[k]; Temp_Imag = Fft_Image[k]; temp = Fft_Real[k+b];Fft_Real[k] = Fft_Real[k] +((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k] = Fft_Image[k] -((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);Fft_Real[k+b] = Temp_Real -((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);// 移位.防止溢出. 结果已经是本值的 1/64Fft_Real[k] >>= 1;Fft_Image[k] >>= 1;Fft_Real[k+b] >>= 1;Fft_Image[k+b] >>= 1;}}}// X=((((Fft_Real[1]*Fft_Real[1]))+((Fft_Image[1]*Fft_Image[1])))>>7);Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量// Fft_Real[63]=Fft_Image[63]=0;for(j=0;j<64;j++){TEMP1=((((Fft_Real[j]*Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j])))>>1);//求功率if(TEMP1>1)TEMP1--;else TEMP1=0;if(TEMP1>31)TEMP1=31;if(TEMP1>(LED_TAB[j]))LED_TAB[j]=TEMP1;if(TEMP1>(LED_TAB1[j])){ LED_TAB1[j]=TEMP1;LED_TAB2[j]=18; //提顿速度=12}}}void Init(){//-----------------------------------------------------------------------------------P1ASF = 0x02; //0000,0010, 将 P1.1 置成模拟口AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0EADC=1; //AD中断打开ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel;//1110 1001 1打开 A/D (ADC_POWER)转换电源;11速度为70周期一次;//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);//-----------------------------------------------------------------------------------P2M0=1;P0M0=1;TMOD=0X12;TH0=0x30; //大约20K的采样率(要完整频段需40K以上。
基于单片机的音频频谱显示器的研究与开发
1
音频信号,这个音频信号再经功放模块由扬声器驱动播放音乐。
同时,音频信号又作为输入信号接到另外一个单片机系统,此单片机系统主要是完成音频信号的模数转换,并由内部软件通过快速傅里叶算法,实现音频信号在频域上的分析,最后量化输出,由LED点阵显示出频谱变化。
三、研究指向内容与过程
(一)研究指向
1. 降低设计、制作以及成品的成本;
2. 提高音频频谱与音乐的匹配度;
3. 开发电子产品专业课程的实训资源,使实训资源与生活相结合,便于电子专业学生的
学习与研究。
(二)研究内容
1、硬件设计
单片机我们选用STC12C5A60S2。
STC 公司的单片机不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,其中STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
而且STC 系列单片机支持串口程序烧写。
本设计系统由单片机模块、音频采集模块、滤波模块、按键模块、功放模块和显示模块六部分组成,如图1所示。
图1 音频频谱显示器的系统结构图
硬件电路图如图2所示,使用音频采集模块对输入的音频信号进行采样,经过FFT变换,然后取某些频率项的幅值,量化显示,驱动LED点阵,点亮相应的LED灯,其中显示模块即LED频谱显示电路。
图2左上方是滤波模块以及功放模块的设计,左下方是单片机模块的电路设计,右侧是LED频谱显示电路的设计。
其中,音频功放芯片选用8002,它是两个OTL电路桥式连接为BTL工作方式的音频功放。
2
3。
手把手教你用51单片机DIY音乐频谱显示器
手把手教你用51单片机DIY音乐频谱显示器说起。
我们知道,一切声音都是由振动产生的。
声音之所以千变万化各不相同,是因为它们的振动各不相同。
看看琵琶,吉他或者其他的弦类乐器,可以发现它的每一根琴弦的直径都是不一样的。
琴弦越细,音调也就越高。
反之则越低。
显然粗的弦就不如细的弦振动得快或者说是振动的频率高。
产生音调高低的不同,就是由于振动的频率不同。
很显然频率越高,音高也就越高。
频率的单位是赫兹(简写为Hz),赫兹(1857-1894),是德国物理学家,他发现了电磁波,为了纪念他,人们用它的名字来做为频率的单位。
所谓的一赫兹,就是一秒钟振动一次。
那么440Hz 呢,当然就是每秒振动440 次,这个声音就是音乐中的标准A 音,是乐器定音的标准。
而钢琴中央C 的频率则是261.63Hz。
我们人的耳朵能够听到的频率范围,是20Hz 到20000Hz。
低于这个频率范围的声音叫次声波,而高于这个频率范围的声音叫做超声波。
所以我们能听到的音乐的频率,即都在人耳可听到的这个范围之内,约从20Hz 到20KHz。
比如,下面的表格中是我们常见的一些人声的基频范围男低音80-320Hz男中音96-387Hz男高音122-488Hz女低音145-580Hz女高音259-1034Hz根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐波分量。
而它们又往往是时刻在变化着。
所以一个声音的构成其实是很复杂的。
将声音的频率分量绘制成曲线,就形成了频谱。
对频谱进行分析的仪器就是频谱分析仪,早期频谱仪都是模拟分析的。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
基于单片机的音频频谱程序
此程序用的单片机是ATMEGA16L单片机#include "avr/io.h"#include "util/delay.h"#include "avr/interrupt.h"#include "FFT1.h"#define uchar unsigned char#define uint unsigned int#define RED1_H PORTB|=(1<<PB0)#define RED1_L PORTB&=~(1<<PB0) //上屏红#define GREEN1_H PORTB|=(1<<PB1)#define GREEN1_L PORTB&=~(1<<PB1) //上屏绿#define GREEN2_H PORTB|=(1<<PB2)#define GREEN2_L PORTB&=~(1<<PB2) //下屏绿#define RED2_H PORTB|=(1<<PB3)#define RED2_L PORTB&=~(1<<PB3) //下屏红#define SCL1_H PORTB|=(1<<PB4)#define SCL1_L PORTB&=~(1<<PB4) //#define RCL1_H PORTB|=(1<<PB5)#define RCL1_L PORTB&=~(1<<PB5) // 上屏595SCL和RCL #define RCL2_H PORTB|=(1<<PB6)#define RCL2_L PORTB&=~(1<<PB6) //#define SCL2_H PORTB|=(1<<PB7)#define SCL2_L PORTB&=~(1<<PB7) //下屏595scl和rcl#define E_H PORTD|=(1<<PD3)#define E_L PORTD&=~(1<<PD3) //#define SDA_H PORTD|=(1<<PD4)#define SDA_L PORTD&=~(1<<PD4) //#define CK_H PORTD|=(1<<PD5)#define CK_L PORTD&=~(1<<PD5) //行控制信号uchar adc_count;uchar count,count1=0;/********************初始化行*********************/void init_line (void){uchar i=0;for (i=0;i<16;i++){SDA_L;CK_L;_delay_us(8);//8个nopCK_H; //上升沿有效_delay_us(10);//10个nopCK_L;}}void send_mov(void)//容易出错的地方送行数据{CK_L;_delay_us(8);//8CK_H;_delay_us(10);//10CK_L;}/*********************ad中断程序******************/SIGNAL (SIG_ADC){uint temp1,temp2;temp1=ADCL;temp2=ADCH;Fft_Real[pgm_read_byte(&LIST_TAB[adc_count])]=(temp1+(temp2<<8));//存储在int类型,if(adc_count<32)adc_count++;elseadc_count=0;}/********************显示部分******************/void display (void){uchar LINE =16,i,er; //一共是32行init_line ();//行初始化,全送零SDA_H;for (LINE =16;LINE>0;LINE--){ if(adc_count>=32)//每采样32个点进行一次fft{ E_L;//一定要关行显示,不然会有一行的亮度特别突出adc_count=0;// ADCSRA&=~(1<<ADEN);//关adc// ADCSRA&=(1<<ADIE);//开adcprocessfft();// ADCSRA|=(1<<ADEN);//开adc// ADCSRA|=(1<<ADSC);// E_H;count1=0;}for (i=0;i<16;i++) //判断16个数,因为要显示16个柱{if (led_buf[i]>LINE+16) //上屏柱的数据判断{GREEN1_H;RED1_L;} //else{GREEN1_L;RED1_L;}if (led_buf[i]>LINE) //下屏柱的数据判断{GREEN2_H;RED2_L;}else{GREEN2_L;RED2_L;}if (led_buf1[i]==LINE+16)//浮点数据红色数据(上屏){ RED1_H;GREEN1_L;}elseif (led_buf1[i]==LINE) //浮点数据红色数据(下屏){ RED2_H;GREEN2_L;}for (er=0;er<2;er++) //连续送两次因为两列为一柱(容易出错) {SCL1_L;_delay_us(1);SCL1_H; //上升沿有效(送上一屏595的数据)_delay_us(1);SCL1_L;SCL2_L;_delay_us(1);SCL2_H; //上升沿有效(送下一屏的595数据)_delay_us(1);SCL2_L;} //送两列采样点数RED1_L; //送两列的不显数据GREEN1_L;RED2_L;GREEN2_L;for (er=0;er<2;er++) //连续送两次因为两列为一柱(容易出错) {SCL1_L;_delay_us(1);SCL1_H; //上升沿有效(送上一屏595的数据)_delay_us(1);SCL1_L;SCL2_L;_delay_us(1);SCL2_H; //上升沿有效(送下一屏的595数据)_delay_us(1);SCL2_L;}} //送完64个数据// E =0;//关闭行显示// E_L;RCL1_L; //上屏595显示数据_delay_us(1);RCL1_H; //上升沿输出_delay_us(1);RCL1_L; //RCL2_L; //下屏595显示数据_delay_us(1);RCL2_H; //上升沿输出_delay_us(1);RCL2_L; // 595整体输出send_mov();//行脉冲上升沿,促使行移位E_H; //扫描行显示_delay_us(400);//50ms延时程序?//_delay_ms(1000);SDA_L;//数据位变0}for (count=0;count<16;count++)//绿色柱状递减{if(led_buf[count]>1)led_buf[count]--;}count1++;//红色浮点下滑速度if (count1>5){for (count=0;count<16;count++)//红色浮点递减{if(led_buf1[count]>1)led_buf1[count]--;}}}int main (void){ adc_count=0;RED1_L; //显示屏控制端口GREEN1_L;RED2_L;GREEN2_L;CK_L;E_H;DDRB =0XFF;DDRD =0XFF;PORTB=0XFF;PORTD=0XFF;ADMUX=0X40;//5V的基准电压设置,A0口为输入口ad转换寄存器设置//ADCSRA=_BV(ADEN)|_BV(ADA TE)|_BV(ADIE)|_BV(ADPS2);//连续准换模式,开中断,16分频,采样频率为35khz//ADCSRA=_BV(ADSC);//启动ad变换ADCSRA=0XED;//连续准换模式,开中断,16分频,采样频率为35khz (16分频是EC) (应该是ec) (32分频ed),(64分频ee) (128分频ef)sei();while (1){display ();}return 0;}下面是fft子程序#include "avr/pgmspace.h"#define progmem __ATTR_PROGMEM__#define uchar unsigned char#define uint unsigned intuchar led_buf [16];//显示缓存单元; //显示缓存单元uchar led_buf1[16];//浮点数据存储单元int Fft_Real[32]; //fft实部int Fft_Image[32]; // fft的虚部uchar i,j,k,b,p;int Temp_Real,Temp_Imag,temp; // 中间临时变量uint TEMP1;//放大128倍后的sin整数表(128)占用flashprogmem char SIN_TAB[16] = { 0x00, 0x18, 0x30, 0x46,0x59, 0x69, 0x75, 0x7c,0x7f, 0x7c, 0x75, 0x69,0x59, 0x46, 0x30, 0x18,};//放大128倍后的cos整数表(128)//32个就可以了啊progmem char COS_TAB[16] = { 0x7f, 0x7c, 0x75, 0x69,0x59, 0x46, 0x30, 0x18,0x00, -0x18, -0x30, -0x46,-0x59, -0x69, -0x75, -0x7c,};//采样存储序列表progmem char LIST_TAB[32] = { 0, 16, 8, 24,4, 20, 12, 28,2, 18, 10, 26,6, 22, 14, 30,1, 17, 9, 25,5, 21, 13, 29,3, 19, 11, 27,7, 23, 15, 31,};/******************快速傅立叶变换**********************/void FFT(void){for( i=1; i<=5; i++) //没有倒叙计算一共是6级i表示第几级/* for(1) */{b=1;b <<=(i-1); //2(L-1) //碟式运算,用于计算隔多少行计算例如第一极1和2行计算,,第二级for( j=0; j<=b-1; j++) //求旋转因子/* for (2) */{p=1;p <<= (5-i); //p = p*j;//求pfor( k=j; k<32; k=k+2*b) /* for (3) 基二fft */{Temp_Real = Fft_Real[k];Temp_Imag = Fft_Image[k];temp = Fft_Real[k+b];Fft_Real[k] = Fft_Real[k] + ((Fft_Real[k+b]*pgm_read_byte(&COS_TAB[p]))>>7) + ((Fft_Image[k+b]*pgm_read_byte(&SIN_TAB[p]))>>7);Fft_Image[k] = Fft_Image[k] - ((Fft_Real[k+b]*pgm_read_byte(&SIN_TAB[p]))>>7) + ((Fft_Image[k+b]*pgm_read_byte(&COS_TAB[p]))>>7);Fft_Real[k+b] = Temp_Real - ((Fft_Real[k+b]*pgm_read_byte(&COS_TAB[p]))>>7) - ((Fft_Image[k+b]*pgm_read_byte(&SIN_TAB[p]))>>7);Fft_Image[k+b] = Temp_Imag + ((temp*pgm_read_byte(&SIN_TAB[p]))>>7) - ((Fft_Image[k+b]*pgm_read_byte(&COS_TAB[p]))>>7);// 移位.防止溢出. 结果已经是本值的1/64Fft_Real[k] >>= 1;Fft_Image[k] >>= 1;Fft_Real[k+b] >>= 1;Fft_Image[k+b] >>= 1;}}}}/***************量化数据函数*************/void processfft(void ){for(i=0;i<32;i++){Fft_Image[i]=0; //虚部清0 进行fft之前,虚部要进行清零}FFT();//32点fftfor(j=0;j<32;j++) //取各个频率点的模值{TEMP1=(Fft_Real[j]* Fft_Real[j])+(Fft_Image[j]*Fft_Image[j]);//求功率if(TEMP1<4)TEMP1=1;else if(TEMP1<9)TEMP1=2;else if(TEMP1<16)TEMP1=3;else if(TEMP1<25)TEMP1=4;else if(TEMP1<36)TEMP1=5;else if(TEMP1<49)TEMP1=6;else if(TEMP1<55)TEMP1=7;else if(TEMP1<60)TEMP1=8;else if(TEMP1<65)TEMP1=9;else if(TEMP1<70)TEMP1=10;else if(TEMP1<75)TEMP1=11;else if(TEMP1<80)TEMP1=12;else if(TEMP1<96)TEMP1=13;else if(TEMP1<125)TEMP1=14;else if(TEMP1<156)TEMP1=15;else if(TEMP1<189)TEMP1=16;else if(TEMP1<224)TEMP1=17;else if(TEMP1<261)TEMP1=18;else if(TEMP1<300)TEMP1=19;else if(TEMP1<341)TEMP1=20;else if(TEMP1<384)TEMP1=21;else if(TEMP1<429)TEMP1=22;else if(TEMP1<476)TEMP1=23;else if(TEMP1<525)TEMP1=24;else if(TEMP1<576)TEMP1=25;else if(TEMP1<629)TEMP1=26;else if(TEMP1<684)TEMP1=27;else if(TEMP1<741)TEMP1=28;else if(TEMP1<800)TEMP1=29;else if(TEMP1<861)TEMP1=30;else if(TEMP1<1024)TEMP1=31;elseTEMP1=32;if (TEMP1>led_buf[j])led_buf[j]=TEMP1; //送显示单元if (TEMP1>led_buf1[j])led_buf1[j]=led_buf[j];//浮点显示单元}}。
基于单片机的频谱仪设计
基于单片机的频谱仪设计发表时间:2019-08-15T15:40:29.510Z 来源:《信息技术时代》2018年12期作者:唐弟杨艺敏[导读] 频谱仪以STM32F103单片机作为主控电路,包含程控衰减模块HMC624,滤波模块、混频模块ADL5801、固定增益放大模块adl5611、检波模块ad8310,利用锁相环芯片ADF4351生成系统扫频信号发生器,输出的信号频率范围为35MHz到400MHz以上。
(桂林电子科技大学信息科技学院,广西桂林 541000)项目支持:2017年大学生创新创业项目“便携式简易频谱仪的设计”,项目编号:201713644035摘要:频谱仪以STM32F103单片机作为主控电路,包含程控衰减模块HMC624,滤波模块、混频模块ADL5801、固定增益放大模块adl5611、检波模块ad8310,利用锁相环芯片ADF4351生成系统扫频信号发生器,输出的信号频率范围为35MHz到400MHz以上。
频谱仪采用两级混频,然后通过检波器对第二中频信号进行模拟检波,输出直流信号给STM32的ADC脚进行采集并处理,此外由程控衰减进行参考电平的调节,最后通过TFT液晶屏显示频率和频谱。
该频谱仪实现了实用频谱仪的频标设置、扫频宽度、参考电平等功能。
关键词:STM32;ADF4351adl5801;混频Design of SpectrometerAbstract:The spectrum analyzer uses STM32F103 MCU as the main control circuit,including program-controlled attenuation module HMC624,filtering module,mixing moduleADL5801,fixed gain amplification module adl5611,detection module ad8310.The system sweep signal generator is generated by using phase-locked loop chip ADF4351,and the output signal frequency range is over 35MHz to 400MHz.The spectrum analyzer uses two-stage mixing,and then simulates the second IF signal through the detector.The output DC signal is collected and processed by the ADC foot of STM32.In addition,the reference level is adjusted by programmable attenuation.Finally,the frequency and spectrum are displayed by TFT LCD screen.The spectrum analyzer realizes the functions of frequency standard setting,sweep width and reference electric equality of practical spectrum analyzer.Key words:STM32; ADF4351; adl5801; mixing引言技术不断发展,信号频率越来越高、精度要求越来越高、工程作业环境越来越复杂等等挑战不断催促着频谱仪更新换代。
基于51单片机的LED点阵音乐频谱显示器
1 3 7
基于 5 1 单片机的 L E D点阵音乐频谱显示器
L E D Do t Ma t r i x Di s pl a y Mu s i c Sp e c t r u m B a s e d o n 51 Si n gl e Ch i p Mi c r o c o mp u t e r
pr o c e s s i n g u n i t s . s o u n d p r o c e s s i n g u n i t S T Cl 2 C 5 A 6 0 S 2 mi c r o c o n t r o l l e r F F . r p r o c e s s i n g .
实 现 音 乐频 谱 。
关键词 : S T C l 2 C 5 A 6 0 S 2 , 数 字信 号 处理 , 傅里叶变换 , 源程 序 , 仿 真 与调 试
Abs t r a c t
T h i s d e s i g n b y u s i n g s i n g l e - c h i p mi c r o c o mp u t e r a n d d i g i t a l s i g n a l p r o c e s s i n g t e c h n i q u e s t o a c h i e v e mu s i c a l s p e c t r u m
李逸 家 ( 华南农业大学珠江学院, 广东 广州 5 1 0 9 0 0 )
摘 要
.
通 过 使 用 单 片机 原 理 , 利 用数 字信 号 理 论 , 使 音 乐频 谱 分 析 在 单 片机 上 的 实现 。 系 统 包括 : 声 音 接 收模 块 , 声 音 转 换 模 块和 L E D 组 成 的点 阵显 示单 元 。 其 中声 音采 集模 块 , 是利用 S T C1 2 C5 A 6 0 S 2单 片机 中 的声 音 采 集 和 A / D转 换 。 音 频 的模 拟信号 通过声音采 集模块接 收到 , 经过 A / D转 换 系统 , 转换为数 字信号 , 送给 下一级 处理单元 处理 。声音转换模 块利 用 S T Cl 2 C5 A 6 0 S 2单 片机 内部 的 资 源 , 进行 F F T处 理 。显 示模 块接 收 AD转 换 后 的信 号 , 控 制 5组 , 总共 有 5 5个 L E D灯泡 , 分别完成显示。 L E D 灯 的 明 暗条 件 , 是 随 着 音 乐的 频 率 变化 所 决 定 的 , 随 时更 新 做 出相 应 的 变化 , 通过 视 觉 上 的 灯光 显 示 以
基于STC12A32S2音乐频谱播放器
电子电路设计与方案基于STC12A32S2音乐频谱播放器乔宏飞,陈洋,李刚(湖北文理学院物理与电子工程学院,湖北襄阳,441053 )S金项目:湖北省教育厅科学技术研究项目资助(项目编号:Q20152605)。
摘要:本文以STC12A32S2单片机为核心,通过控制ADC0809模数转换器将模拟电压转化为数字信号,再通过离散傅里叶变换的快速方 法,然后在频域中计算出音频信号各个频率分量的功率,最终在LED单元上进行显示。
该系统有电路结构简洁,开发成本低等优点。
关键词:RFID;单片机;模数转换器;傅里叶变换运算;频谱显示0引言本文以STC12A32S2单片机为主控制器,通过A/D转 换器ADC0809对音频信号进行采样,把连续信号离散化进 行快速傅里叶变换(FFT)运算,然后通过LED屏将其频谱 分布显示出来。
根据实际应用的需求,在功能上做了改进,添加了功放模块、呼吸灯等功能。
1频谱的原理■ 1.1频谱的原理及作用原理:声音可以分解为数个甚至无限个正弦波,而且又 包含有无数多的时刻在变化的谐波分量。
由于声音的构成很 复杂,故将声音的频率分量绘制成曲线,就形成了频谱。
作用:主要是将电力系统中的谐波透过仪器和软件将谐 波组成的成分分解出来。
看各次谐波的频率及其大小是怎样 的,以利于分析。
频谱分析丨义对频谱进行分析的仪器就是频谱分析仪,其特性由中心频率(步进的)、频带宽度及响应时间表示。
在声音信号通过滤波器后,经过平方检波器,并进行平均 之后的谱仪都是模拟分析的。
由于传统的频谱仪受到滤波 器性能的制约,那些笨重而不准确的模拟仪器的频谱仪逐 渐被冷落。
随着科学的不断发展,频谱分析的数据来源经 过了模数转换器件转换后得出的数字信号,更加迅速和精 确。
而频谱仪软件所测量的信号准确度,很大程度取决于 数模转换电路的性能。
■ 1.2 FFT简介FFT(Fast Fourier Transform )即离散傅立叶变换的快 速算法,是离散傅氏变换(DFT)的快速算法。
用51单片机实现音频信号的频谱显示(在LCD上显示)
用51单片机实现音频信号的频谱显示(在LCD上显示)思路:外来音频信号经过51单片机,在单片机中进行频谱分析,并将结果显示在LCD(12864或1602)上要求:频谱显示如同千千静听播放音乐时的频谱显示希望各位高手能给出详细的解决方案,感激。
51做FFT有些困难,可以使用增强型(RAM)的51机子进行参考程序:#include<STC12C5A.H>#define uchar unsigned char#define uint unsigned int#define channel 0x01 //设置AD通道为 P1.1//---------------------------------------------------------------------sbit SDA_R=P1^2;sbit SDA_R_TOP=P1^3;sbit SDA_G=P1^4;sbit SDA_G_TOP=P1^5;sbit STCP=P1^6;sbit SHCP=P1^7;//---------------------------------------------------------------------//----------------------------------------------------------------------------------------------------------------------//放大128倍后的sin整数表(128)code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112,108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36,30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30,-36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121,-123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102,-98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };//放大128倍后的cos整数表(128)code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -54, -59,-65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -85, -80,-75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70,75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };//采样存储序列表code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,8, 72, 40, 104, 24, 88, 56, 120,4, 68, 36, 100, 20, 84, 52, 116,12, 76, 44, 108, 28, 92, 60, 124,2, 66, 34, 98, 18, 82, 50, 114,10, 74, 42, 106, 26, 90, 58, 122,6, 70, 38, 102, 22, 86, 54, 118,14, 78, 46, 110, 30, 94, 62, 126,1, 65, 33, 97, 17, 81, 49, 113,9, 73, 41, 105, 25, 89, 57, 121,5, 69, 37, 101, 21, 85, 53, 117,13, 77, 45, 109, 29, 93, 61, 125,3, 67, 35, 99, 19, 83, 51, 115,11, 75, 43, 107, 27, 91, 59, 123,7, 71, 39, 103, 23, 87, 55, 119,15, 79, 47, 111, 31, 95, 63, 127};uchar COUNT=0,COUNT1=0,ADC_Count=0,LINE=15,G,T;uchar i,j,k,b,p;int Temp_Real,Temp_Imag,temp; // 中间临时变量uint TEMP1;int xdata Fft_Real[128];int xdata Fft_Image[128]; // fft的虚部uchar xdata LED_TAB2[64]; //记录漂浮物是否需要停顿一下uchar xdata LED_TAB[64]; //记录红色柱状uchar xdata LED_TAB1[64]; //记录漂浮点void Delay(uint a){while(a--);}void FFT(){ //uchar X;for( i=1; i<=7; i++) /* for(1) */{b=1;b <<=(i-1); //碟式运算,用于计算隔多少行计算例如第一极 1和2行计算,,第二级for( j=0; j<=b-1; j++) /* for (2) */{p=1;p <<= (7-i);p = p*j;for( k=j; k<128; k=k+2*b) /* for (3) 基二fft */{Temp_Real = Fft_Real[k]; Temp_Imag = Fft_Image[k]; temp = Fft_Real[k+b];Fft_Real[k] = Fft_Real[k] + ((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k] = Fft_Image[k] - ((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);Fft_Real[k+b] = Temp_Real - ((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);// 移位.防止溢出. 结果已经是本值的 1/64Fft_Real[k] >>= 1;Fft_Image[k] >>= 1;Fft_Real[k+b] >>= 1;Fft_Image[k+b] >>= 1;}}}// X=((((Fft_Real[1]* Fft_Real[1]))+((Fft_Image[1]*Fft_Image[1])))>>7);Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量// Fft_Real[63]=Fft_Image[63]=0;for(j=0;j<64;j++){TEMP1=((((Fft_Real[j]*Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j])))>>1);//求功率if(TEMP1>1)TEMP1--;else TEMP1=0;if(TEMP1>31)TEMP1=31;if(TEMP1>(LED_TAB[j]))LED_TAB[j]=TEMP1;if(TEMP1>(LED_TAB1[j])){ LED_TAB1[j]=TEMP1;LED_TAB2[j]=18; //提顿速度=12}}}void Init(){//-----------------------------------------------------------------------------------P1ASF = 0x02; //0000,0010, 将 P1.1 置成模拟口AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0EADC=1; //AD中断打开ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel;//1110 1001 1打开 A/D (ADC_POWER)转换电源;11速度为70周期一次;//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);//-----------------------------------------------------------------------------------P2M0=1;P0M0=1;TMOD=0X12;TH0=0x30; //大约20K的采样率(要完整频段需40K以上。
基于增强型8051单片机的音乐频谱显示器的设计
基于增强型8051单片机的音乐频谱显示器的设计【摘要】该系统采用增强型8051单片机STC12C5A60S2为主控制器,通过单片机内置的ADC对音频信号进行采样、量化,然后通过快速傅里叶变换运算,在频域计算出音频信号各个频率分量的功率,最后通过双基色LED单元板进行显示。
该方案具有电路结构简洁,开发、生产成本低的优点。
【关键词】单片机;FFT;频谱显示一、引言本文介绍的音乐频谱显示器可对mp3、手机、计算机输出的音乐信号进行实时的频谱显示。
系统采用增强型8051单片机STC12C5A60S2为主控制芯片,通过单片机内置的ADC对音频信号进行采样,把连续信号离散化,然后通过快速傅里叶变换(FFT)运算,在频域计算出音频信号各个频率分量的功率,最后通过双基色LED单元板进行显示。
在显示的频率点不多的情况下,本系统比采用DSP或ARM作为主控制芯片的设计方案具有电路结构简洁,开发、生产成本低的优点。
二、系统设计该系统由音频信号预处理电路、单片机STC12C5A60S2控制电路、LED频谱显示电路等部分组成。
图l为系统整体设计原理框图。
图1 系统整体设计原理框图系统各组部分的功能:(1)音频信号预处理电路主要对输入的音频进行电压放大和电平提升。
(2)单片机STC12C5A60S2控制电路采用内置的ADC对音频信号进行采样量化,然后对量化后的音频数据采用FFT算法计算其频谱值,再将各频谱值进行32级量化。
(3)LED频谱显示电路在单片机的控制下,负责将FFT计算得到的音频信号的各个频点的大小进行直观显示。
1.音频信号预处理电路图2 音频信号预处理电路音频信号预处理电路见图2所示,对输入的音频进行电压放大和电平提升。
手机、计算机输出的音频信号Vin经过RP1进行电压调节后,经集成运放LMV358反相放大10倍(Av=-R3/R2=-10),提高系统的灵敏度。
选用单电源供电的运放LMV358,一方面可以简化系统电源电路的设计,直接采用系统的+5V供电即可;另一方面其输出端静态电压为VCC/2,即2.5V。
基于单片机的音频频谱显示器设计说明[文摘][整理]
目次1 绪论-----------------------------------------------------------12 系统功能-------------------------------------------------------13 系统设计-------------------------------------------------------23.1 主控单元----------------------------------------------------23.2 STC12C5A60S2 系列单片机单片机的A/D转换器-------------------10 3.3 STC12C5A60S2 系列单片机单片机的I/O口结构-------------------113.4 频谱显示单元-----------------------------------------------144 音频频谱显示相关问题-------------------------------------------164.1 频谱及频谱显示---------------------------------------------164.2 FFT运算规则及编程思想--------------------------------------175 总结-----------------------------------------------------------22参考文献-------------------------------------------------------24致-----------------------------------------------------------23附录A 源程序-------------------------------------------------25附录B 系统电路图---------------------------------------------321 绪论随着电子技术的进步发展在功率放大器的设计上功能也不断更新。
基于STM32L053的音乐频谱仪的设计
基于STM32L053的音乐频谱仪的设计惠州市技师学院 牟丽霞0 引言STM32L053是目前市面上比较流行的一款单片机,功耗低,价格便宜,是做电子产品设计以及教学科研比较适合的产品。
本文研究一种基于STM32L053实现音乐播放和频谱显示,可以应用于玩具,简易音乐显示设备,音乐喷泉等。
本设计用到了多个定时计数器同时使用,中断,按键扫描,音乐实现,频谱显示,数码管使用等,是一个综合性非常强的实践项目,有利于培养学生的综合设计和调试能力,为电子技术应用专业学生走入社会奠定良好的技术基础。
图1 音乐频谱总体设计框图1 系统总体设计框图本文主要利用低功耗的STM32L053单片机设计一种用按键控制播放音乐、显示音乐频谱、数码管显示曲目和播放时间的简易音乐设备,同时如果曲目较多或要让设备实现断电记忆功能的话,可以添加使用I2C 通信方式的AT24C16存储芯片。
本设计的核心为STM32L053单片机,外围有5个部分,分别是按键扫描、音乐播放、数码管显示曲目和播放时间、点阵显示音乐频谱和存储芯片,总体设计框图见图1。
2 音乐频谱的实现原理2.1 音乐的产生我们能感知到美妙的音乐,主要是基于人耳能够分辨不同频率的信号,如何让单片机能够发出动听的音乐呢,原理主要是把乐谱分成不同频率以及延时各不相同的PWM 波,在单片机中可以利用定时器实现PWM 波[1]。
2.2 频谱人类能够感知音乐律动的旋律,在电子产品中我们通常还可以通过视觉来观看跳动的旋律,这样更加直观,本文中把不图2 基于STM32L053的音乐频谱仪的电路设计同的音符编成不同的谱状,随着音乐的播放,把这些谱线显示在点阵中[2]。
3 电路设计本设计采用比较主流的Altium Designer 16软件进行电路设计和PCB 制作,电路原理图见图2。
由于所选的STM32L0引脚只有40个,I/O 口较少,使用了8位串行输入 /8位串行或并行输出的74HC595与数码管相连,用于计时和显示曲目;同时使用了74LS138和74HC595作为8*8点阵的行选端和列选端,大大节约了I/O 资源,8*8点阵主要用于音乐频谱显示;四个按键与10K 电阻串联直接和STM32L0相连,单片机通过中断扫描方式检测用户行为,如上一曲、下一曲、暂停和(下转第195页)在IPTV 上就可以了解医院的详细情况和就诊流程,既满足了不同患者对医院医生诊疗的了解需求、方便病人就医,也能更合理的安排患者就诊,降低病人就医成本,提高门诊服务效率。
毕业设计-频谱显示的音乐播放器
关键词:单片机;音频;快速傅里叶变换(FFT) ;频谱显示
I
河南理工大学毕业设计(论文)说明书
Abstract
This design is a single-chip computer with spectrum display function based on music player, through a design of hardware and software of low cost, to realize the music playing function. At the same time achieving music spectrum dynamic display, so that people can easily enjoy music brought joy. Music playing part is composed of a single-chip computer, the SD card module circuit, power amplifier circuit, a function key circuit and power supply circuit. Through the single-chip computer, using serial peripheral interface (SPI) protocol on the SD card, and the WAV music file is read. The WAV file with pulse width modulated sampling rate (PWM). Pulse width modulation (PWM) and the two order filter circuit converts the digital signal into analog signals, and the audio power amplifier module amplifies the signal to drive reducing audio speaker. Spectrum display part is composed of a single-chip computer and LED lattice part. When the music is played, the analog signal is collected by A/D converter in the single-chip computer. The 128 sampling points are analyzed by the Fast Fourier Transform (FFT) algorithm. And then taking the amplitude, driving LED lattice. And the corresponding LED is lighted.
手把手教你用51单片机DIY音乐频谱显示_稿件 - V3
呼
吸
触
摸
键
灯
(
图二
)
MCU 部分的原理图
颜
:
:
:
色
图三 (三) 编程思路 1)
点阵驱动电路图
在主函数中,单片机通过 AD 对音频数据采样,然后存放到数据缓存区进行预处理,完成 AD 滤波 处理, 自动增益控制信息扫描以及其他信息处理。 接着, 将缓存区数据送入 快速傅立叶变换 (FFT) 处理子函数进行运算。 处理完后, 从缓存区取出运算结果, 根据得到幅值计算出点阵的显示数据, 并存储到显示缓存区。 在中断函数中,根据显示缓冲区的内容对点阵显示屏进行实时刷新点亮。
根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐 波分量。而它们又往往是时刻在变化着。所以一个声音的构成其实是很复杂的。将声音的频率分量绘 制成曲线,就形成了频谱。 对频谱进行分析的仪器就是频谱分析仪,早期频谱仪都是模拟分析的。频谱仪的原理就是将声音
信号通过一系列不同中心频率的模拟带通滤波器。每个带通滤波器相当于一个共振电路,其特性由中 心频率(步进的) 、频带宽度及响应时间表示。在声音信号通过滤波器后,经过平方检波器,并进行平 均之后,在每个频率上测定所传输的功率,从而得到信号的频谱。然而,传统的频谱仪受到滤波器性 能的制约,因为模拟电路本身的特性所局限,滤波器的带宽和响应时间成反比,也就是说模拟滤波器 的频率分辨力与时间分解能力之间存在矛盾。因为频谱仪所测量的往往都是非稳态声,一般来说,都 是使用若干个滤波器来覆盖整个频率范围,并将信号同时并联地输入到这些滤波器上去。或者使用中 心频率能够从低到高连续变化的滤波器。 随着科学技术的不断进步,现在我们所使用的基本不再是那些笨重而不准确的模拟仪器的频谱仪, 取而代之的是基于处理器的软件分析法。它分析的数据来源其实是经过了 ADC(模数转换器件)转换 后得出的数字信号,所以频谱仪软件所测量的信号准确度,很大程度取决于数模转换电路的性能。比 起模拟滤波器,数字滤波器应该要更加迅速和精确。 2) 你问:那什么是均衡器和音乐频谱显示?在我们欣赏音乐的过程中有什么样的作用? 我答:对于录音棚等专业级别的音乐制作来说,通常都需要对录制的音频信号进行频谱分析来辅助音 频的加工制作。当然对于我们普通的爱好者来说,不需要那么精确的频谱分析,我们更多的是用来略 显音乐节奏,美化环境,增添气氛。于是,大多数的音乐播放软件(如图一),手机,mp3,高档的音箱 设备等,都有了音乐频谱显示。
基于ARM的音频频谱显示器的设计
基于ARM的音频频谱显示器的设计段丽娜【摘要】详细介绍了一种基于 ARM 的音频频谱显示系统的实现,整个音频显示系统包括音频信号采集、音频信号处理以及音频信号转换后的显示等功能。
在设计中综合了声音采集、ARM技术及FFT算法,构建了一个实时采集的频谱显示系统,可以应用于各种需要对声音进行采集和分析的场合。
其中,硬件系统主要包括声音信号的采集与处理、最小系统、电源和显示模块;而软件系统则是将ADC 转换的数据通过FFT算法后显示在LCM12864显示器上。
测试结果表明,该系统具有较好的实时性和准确性。
%The paper introduces an implementation of the audio spectrum display system based on ARM in detail. The audio display system includes an audio signal acquisition, the audio signal processing and the audio signal display after conversion. In the design, a combination of sound collection, ARM technology and FFT algorithm build a real-time acquisition of spectrum display system, which can be applied to a varietyof occasion in which sound capture and analyze are needed. The hardware system mainly includes the sound signal acquisition and processing, the smallest system, power supply and display module. The software system is to make the ADC conversion data display on LCM12864 after FFT algorithm. Test results show that the system has good real-time performance and accuracy.【期刊名称】《微型机与应用》【年(卷),期】2014(000)001【总页数】3页(P22-24)【关键词】音频;频谱显示;FFT;ARM【作者】段丽娜【作者单位】华中科技大学武昌分校,湖北武汉 430064【正文语种】中文【中图分类】TP368.1本文设计了基于SONiX公司的ARM Cortex-M0 SN32F700的音频频谱显示器,采用性价比较高的Cortex-M0 SN32F700实现对音频频谱的分析处理,取代了传统使用纯硬件滤波器或专用数字处理芯片DSP来实现的方法,具有较高的实用价值。
LED音乐频谱设计与制作【毕业作品】
BI YE SHE JI(20 届)LED音乐频谱设计与制作所在学院专业班级自动化学生姓名学号指导教师职称完成日期年月毕业设计(论文)任务书I、毕业设计(论文)题目:LED音乐频谱设计与制作II、毕业设计(论文)使用的原始资料(数据)及设计技术要求:原始资料:技术要求:1、自选一款单片机作为主处理器,设计一个LED音乐频谱显示器,实现所播放音乐频率和强度的对应显示,设计硬件和软件,做出实物。
2、自动化相关英文材料,一万字符,翻译成中文。
III、毕业设计(论文)工作内容及完成时间:1、查阅文献,翻译英文资料,书写开题报告;第1周~第2周2、整理资料,学习单片机和传感器等相关知识第3周~第8周3、设计硬件原理图和编写程序,调试;第9周~第15周4、撰写毕业论文,准备答辩;第16第~第18周Ⅳ、主要参考资料:[1] 张孝虎.DIY音乐频谱显示.电子制作,2011.11[2] 杨丽娟.快速傅里叶变换FFT及其应用.光电工程,2008.S1期[3] 谭浩强.C程序设计[M].清华大学出版社 2009[4] 凌志浩.AT89C52单片机原理与接口技术[M].北京:高等教育出版社,2011[5] 位永辉;杨威,基于BISS0001的智能台灯设计,电子元器件应用,2010[6] Shen J.Dillion.Microstructural design considerations for Li-ion battery systems[J] 2012LED音乐频谱设计与制作摘要:电子信息技术几乎主宰了整个电器行业的发展,随着电子技术的进步发展在功率放大器的设计上功能也不断更新。
功率放大器在家电、数码产品中的应用也越来越广泛,与我们日常生活有着密切关系。
随着生活水平的提高,人们越来越注重视觉,音质的享受。
音频频谱显示器不但能够直观的显示信号输入的状况,而且在美学方面给予人好的视觉享受和,在某一方面来说频谱显示器赋予了音乐的动态美,让原本抽象的电信号,具体化,实质化。
基于单片机的频谱仪的设计(优.选)
目录1 绪论 (2)1.1频谱仪概述 (2)1.1.1 古老频谱仪 (2)1.1.2 现代频谱仪 (3)1.2背景及意义 (4)2 频谱分析原理与技术指标 (6)2.1 基本原理 (6)2.1.1 动态信号的分析方法 (6)2.1.2 扫描调谐分析仪 (6)2.2 技术指标 (7)2.2.1频率指标 (7)2.2.2 幅度指标 (8)3频谱仪的设计方案 (9)3.1模拟式频谱分析仪 (9)3.2数字式频谱分析仪 (10)3.2.1 按信号处理方式分类 (10)3.2.2 按频谱仪实现方式分类 (12)3.3虚拟频谱分析仪 (13)4 方案实现 (14)4.1理论分析 (15)4.2 软件总体设计 (16)1 绪论射频测量对象是宽频带内信号与网络系统的特性参数,而同一个物理系统或信号可以分别在时域和频域描述。
(1)时域测量以被测信号和网络系统在时域内的特性为依据,研究的是被测对象的幅度时间特性时域测量常用的测试信号是脉冲或阶跃信号,研究的是待测信号的瞬变过程或网络输出的冲激或阶跃响应:关键是时域信号的采集和分析(2)频域测量以被测信号和被测网络系统在频域的特性为依据,研究的是被测对象的幅频特性和相频特性。
频域测量常用的测试信号为正弦波,研究的是待测信号或网络输出的稳态响应:关键是特定频率的产生和选择。
射频测试中,时域测量和频域测量是相辅相成的。
从一个域到另一个域,如果测试是完全的,则无任何信息损失,仅仅是同一信号的不同表述方法。
1.1频谱仪概述1.1.1 古老频谱仪频谱仪便是对频域进行测量。
频谱仪被誉为射频领域的示波器,现代频谱仪不仅具有传统的频谱分析功能,而且通过扩展选件,可以集成功率计、频率计、标量/矢量网络分析仪、信号分析、通信测试仪等众多仪器的主要功能,堪称射频测试的集大成者,拥有一台高性能频谱仪,即可完成大部分射频测试、信号分析功能。
现代实时频谱仪的出现,进一步将频谱仪的应用领域扩展到快速变化的瞬态信号测试、宽实时带宽信号分析中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目次1 绪论-----------------------------------------------------------12 系统功能-------------------------------------------------------13 系统设计-------------------------------------------------------2 3.1 主控单元----------------------------------------------------2 3.2 STC12C5A60S2 系列单片机单片机的A/D转换器-------------------10 3.3 STC12C5A60S2 系列单片机单片机的I/O口结构-------------------113.4 频谱显示单元-----------------------------------------------144 音频频谱显示相关问题-------------------------------------------16 4.1 频谱及频谱显示---------------------------------------------164.2 FFT运算规则及编程思想--------------------------------------175 总结-----------------------------------------------------------22 参考文献-------------------------------------------------------24致谢-----------------------------------------------------------23附录A 源程序-------------------------------------------------25 附录B 系统电路图---------------------------------------------321 绪论随着电子技术的进步发展在功率放大器的设计上功能也不断更新。
电子信息技术几乎主宰了整个电器行业的发展。
我们知道,一切声音都是由振动产生的。
声音之所以千变万化各不相同,是因为它们的振动各不相同。
产生音调高低的不同,是由于振动的频率不同。
频率越高,音高也就越高。
根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐波分量。
而它们又往往是时刻在变化着。
所以一个声音的构成其实是很复杂的。
将声音的频率分量绘制成曲线,就形成了频谱。
本设计通过STC12C5A60S2单片机及外围器件组成的系统实现音频信号的频谱显示,将音频信号送入STC12C5A60S2单片机的A/D转换接口进行数据的采集和预处理,然后送入单片机中通过编程实现频谱计算,在LCD1604上实时显示音频信号的频谱。
2 系统功能转换,单片机作为主控单元,进行数据采集,STC12C5A60S2A/D本设计以显示频谱。
且在完成系统其他控制任务的前提),再由LCD1604频谱计算(FFT音频算法计算音频信号频谱。
充分利用单片机剩余计算资源,采用优化FFT下,接口实现模拟音频信号的采样保持和量化处理,的STC12C5A60S2A/D数据通过频谱显示电路实现模拟音频信号)转换;A/D(包括音频采集和转换该单片机内置级量化,由14段,每段按照14频谱的分段显示,它将音频信号频谱划分成.LCD1604显示器件显示。
3 系统设计3.1 主控单元本设计以STC12C5A60S2单片机作为主控单元,进行频谱计算和数据采集,A/D 转换,频谱计算(FFT)。
3.1 STC12C5A60S2 系列单片机简介3.1.1.1 简介STC12C5A6OS2是宏晶公司推出的完全集成的混合信号片上系统MCU。
1个时钟/机器周期,低成本、高可靠性、高速A/D转换。
带8通道模拟多路开关,转换速度250K/S(25万次/秒);具有可编程数据更新方式;60KB系统编程的Flash 内存。
1280字节的片内RAM,可寻址64KB地址空间的外部数据存储器接口。
硬件实现的ISP/IPA在线系统可编程/在线应用可编程。
可通过串口(P3.0/P3.1)直接下载用户程序:6个通用的16位定时器。
兼容普通8051的定时器T0/T1 ,4路PCA也是4个定时器:2通道捕获/比较单元(PWM2路/PCA可编程计数器阵列4路/CCU)一可用来当2路D/A使用、用来再实现2个定时器或2个外部中断STC12C5A60S2是真正能独立工作的片上系统STC12C5A60S2的功能均可由用户进行设置使能/禁止。
3.1.1.2 STC12C5A60S2主要性能:▲高速:1个时钟/机器周期,速度比普通MCS一51单片机快8~l2倍;▲宽电压:5.5~3 .3 V,2 .2~3 .6 V;▲低功耗设计:掉电模式(可由外部中断唤醒)。
可支持下降沿/上升沿和远程唤醒;▲增加外部掉电检测电路,可在掉电时及时将数据保存EPROM;▲工作频率:0~35 MHz,相当于普通MCS一51单片机的0~420 MHz ;▲ 8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用;▲每个I/OEl驱动能力均可达到2OmA。
但整个芯片最大不得超过100mA。
单片机实物图STC12C5A60S2 为3.1图图3.1 STC12C5A60S2 单片机实物图3.1.2 STC12C5A60S2 系列单片机内部结构STC12C5A60S2系列单片机的内部结构框图如下图所示。
STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。
STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。
系列内部结构框图STC12C5A60S2为3.2图图3.2 STC12C5A60S2系列内部结构框图3.1.3 STC12C5A60S2 系列单片机管脚及管脚说明图3.3为STC12C5A60S2系列单片机管图图3.3 STC12C5A60S2系列单片机管图管脚说明:▲P0.0-P0.7:P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。
当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。
当P0作为地址/数据复用总线使用时,是低8位地址线[A0-A7],数据线 [D0-D7]。
▲CLKOUT2/ADC0/ P1.0:p1.0 标准I/O口 PORT1[0]ADC0 ADC 输入通道-0CLKOUT2 独立波特率发生器的时钟输出,可通过设置WAKE-CLKO[2]位/BRT-CLKO将该管脚配置为CLKOUT2。
▲ADC1/P1.0:p1.1 标准I/O口 PORT1[1]ADC1 ADC 输入通道-1▲RxD2 /ECI / ADC2/P1.2:p1.2 标准I/O口 PORT1[2]ADC2 ADC 输入通道-2ECI PCA计数器的外部脉冲输入脚RxD2 第二串口数据接收端▲TxD2 /CCP0/ADC3/P1.3:P1.3 标准I/O口 PORT1[3]ADC3 ADC 输入通道-3CCP0 外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。
TxD2 第二串口数据发送端▲SS/CCP1/ADC4/ P1.4:P1.4 标准I/O口 PORT1[4]ADC4 ADC 输入通道-4CCP1 外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。
SS SPI同步串行接口的从机选择信号▲MOSI/ADC5 /P1.5:P1.5 标准I/O口 PORT1[5]-5输入通道 ADC5 ADCMOSI SPI同步串行接口的主出从入(主器件的输出和从器件的输入)▲MISO/ADC6/P1.6:P1.6 标准I/O口 PORT1[6]ADC6 ADC 输入通道-6MISO SPI同步串行接口的主入从出(主器件的输入和从器件的输出)▲SCLK/ADC7/P1.7:P1.7 标准I/O口 PORT1[7]ADC7 ADC 输入通道-7SCLK SPI同步串行接口的时钟信号▲P2.0-P2.7:P2口内部有上拉电阻,即可以作为输入/输出,也可以作为高8位地址总线使用[A8-A15],当P2口作为输入/输出口时,P2是一个8位准双向口。
▲RxD/ P3.0:P3.0 标准I/O口 PORT3[0]RxD 串口1数据接收端▲TxD/P3.1:P3.1 标准I/O口 PORT3[1]TxD 串口1数据发送端INT0 /P3.2:P3.2 标准▲I/O口 PORT3[2]INT0外部中断0 ,下降沿中断或低电平中断INT1/ P3.3:P3.3 标准I/O口 PORT3[3]▲INT1外部中断1 ,下降沿中断或低电平中断INT/T0/P3.4:P3.4 标准▲I/OCLKOUT0/口 PORT3[4]T0 定时器/计数器0的外部输入INT定时器0下降沿中断CLKOUT0 定时器/计数器0的时钟输出,可通过设置WAKE-CLKO[0]位/TOCLKO将该管脚设置为CLKOUT0INT PORT3[5]口I/O标准P3.5 :/T1/P3.5CLKOUT1/▲.T1 定时器/计数器1的外部输入INT定时器1下降沿中断CLKOUT1 定时器/计数器1的时钟输出,课通过设置WAKE-CLKO[1]位/TOCLKO将该管脚设置为CLKOUT1WR/P3.6:P3.6 标准I/O口▲ PORT3[6]WR外部数据存储器写脉冲▲/ P3.7:P3.7 标准I/O口 PORT3[7]RD外部数据存储器读脉冲RD SS/P4.0:P4.0 标准I/O▲口 PORT4[0] SS SPI同步串行接口的从机选择信号▲MOSI/ECI/P4.1:P4.1 标准I/O口 PORT4[1]ECI PCA计数器的外部脉冲输入脚MOSI SPI同步串行接口的主出从入(主器件的输出和从器件的输入)▲MISO/CCP0/P4.2:P4.2 标准I/O口 PORT4[2]CCP0 外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。
MISO SPI同步串行接口的主入从出(主器件的输入和从器件的输出)▲SCLK/CCP1/P4.3:P4.3 标准I/O口 PORT4[3]CCP1 外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。