自制的VFD音乐频谱显示器,上来秀一把
前几天入手一个VFD显示器,全新原装进口。基本情况如下:双色点阵屏,20x8分辨率。
每个像素由6个发光条组成,每色3条,可显示红和天蓝,同时点亮为白色。
单5V供电,电流0.5A左右。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_613040YBBCL2.jpg
VFD显示器 (原文件名:VFD.jpg)
勉强可以显示字符,不适合显示长英文句子。先做了个温度计,效果似乎不好。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_613041GXM6CL.jpg
做了个温度计,效果似乎不太好 (原文件名:T.jpg)
然后就想到了做一个频谱显示器,正好用上里面的双色条状的点,效果还行。
于是花了点时间研究了51上运行的FFT程序,移植过来调试一下,再做个美化,就算初步完成了一个作品。
硬件用了STC12C5A08S2作MCU,和一个LM358对音频信号放大。
STC12C5A系列有1K的外部RAM,正好可做128点FFT运算。程序4K多,不算复杂。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_613042NB81F4.jpg
频谱效果 (原文件名:频谱.jpg)
不会贴视频,发个连接:http://v.youku.com/v_show/id_XMjM5MDQ5OTY0.html
新手报到,高手勿笑。 楼主厉害 这个VFD卖了好久了,只是觉得太老了,显示效果太粗糙了 楼主厉害,能否共享程序参考下,谢谢了先~ 回复【4楼】jingwaner
-----------------------------------------------------------------------
如果想制作的人多,我就上传资料。 楼主请上代码
偶学习下
多谢
一直想yy这个,不会神马傅里叶,也看不懂FFT
入口都找不到 顶一下 我老早就想做频谱显示了,支持下,希望楼主开源下,多谢了~~ 回复【5楼】reiyawea
回复【4楼】jingwaner
-----------------------------------------------------------------------
如果想制作的人多,我就上传资料。
-----------------------------------------------------------------------
要是都抱着这种想法,那么就没什么意思了。 回复【9楼】90999张耀扬
-----------------------------------------------------------------------
好吧,我错了。晚些时候传个FFT吧。 来个完整的吧,要是顺手的话
和我一样的菜鸟很多啊
呵呵 回复【10楼】reiyawea
回复【9楼】90999张耀扬
-----------------------------------------------------------------------
好吧,我错了。晚些时候传个fft吧。
-----------------------------------------------------------------------
并不是说你对错的问题,有些事情在这里不必和其他论坛一样,先要攒人气。一般攒人气盖楼的做法,时间一长,就会造就喷子。 VFD就是打点驱动,呵呵楼主没有用驱动IC? 回复【13楼】fei_yang
-----------------------------------------------------------------------
屏是是个模块,用8080时序写数据就行。 上程序
======================
#include<math.h>//要调入数学(和谐)运算的头文件
#include<reg52.h>
//定义复数结构
struct compx
{
float real;
float imag;
};
//定义复数乘法
struct compx EE(struct compx a,struct compx b)
{
struct compx c;
c.real=a.real*b.real-a.imag*b.imag;
c.imag=a.real*b.imag+a.imag*b.real;
return(c);
}
//定义复数求模
float cmplxabs(struct compx a)
{
float b;
b=sqrt(a.real*a.real+a.imag*a.imag);
return(b);
}
//FFT子程序
//入口:复数数组指针和点数。
//出口:原复数数组,取模后为强度,可用于频谱。
void FFT(struct compx *xin,unsigned int N)
{
int f,m,nv2,nm1,i,k,j=1,l;
int le,lei,ip;
struct compx v,w,t;
nv2=N/2;
f=N;
for(m=1;(f=f/2)!=1;m++);
nm1=N-1;
for(i=1;i<=nm1;i++){
if(i<j){t=xin;xin=xin;xin=t;}
k=nv2;
while(k<j){j=j-k;k=k/2;}
j=j+k;
}
/* FFT*/
for(l=1;l<m;l++)
{
le=pow(2,l);
lei=le/2;
v.real=1.0;v.imag=0.0;
w.real=cos(pi/lei);w.imag=-sin(pi/lei);
for(j=1;j<=lei;j++){
for(i=j;i<=N;i+=le){
ip=i+lei;
t=EE(xin,v);
xin.real=xin.real-t.real;
xin.imag=xin.imag-t.imag;
xin.real=xin.real+t.real;
xin.imag=xin.imag+t.imag;
}
v=EE(v,w);
}
}
}
//使用示例
xdata struct compx s;//我的有1024字节外部RAM,可做128点FFT。
void main()
{
unsigned char i,bar;
for(;;){
for(i=0;i<=127;i++){
……………………//AD采样
s.real=(float)ADC_RES;//采样结果送实部,注意数据类型转换
s.imag=0;
}
FFT(s,128);
//由于FFT的结果是关于中间对称的,只需要左半边结果
for(i=0;i<=63;i++)bar=(unsigned char)(complxabs(s)/50);//需要除一个数,免得结果太大转换出错。具体多少需调试。
……………………//显示转换结果
}
} 不错 这个必须顶! 顶! 必须顶! 收藏!谢谢 顶一下。谢谢! 你用的什么屏啊?那么亮? mark,研究下fft 回复【22楼】proteldxp
-----------------------------------------------------------------------
屏没有照片上那么亮,是因为用手机拍的,开了闪光灯就看不清字,不开闪光灯,曝光过度了。
但屏本身也不错,放在暗的地方很漂亮的。 mark~~ make fft 脚印 make fft 打算做个PCB出来。
到时若有想一起制作的,可以赠送PCB。 回复【4楼】jingwaner
楼主厉害,能否共享程序参考下,谢谢了先~
----------------------------------------------------------------------- 收藏! 收藏! 回复【30楼】baodingren
-----------------------------------------------------------------------
最主要的已经贴上了,其余就要按不同的MCU和显示器分别对待了。 好东东,咱有两个128*63的VFD点阵,正想搞个音响的屏呢,多谢LZ了 顶 前段时间结合前辈们的FFT,从网上淘了一块二手双色点阵屏用MSP430做了一个效果很不错 楼主能否把这个的升压电路抄出来。 楼主能否讲解一下显示原理啊 回复【37楼】mcu_mouse
-----------------------------------------------------------------------
抄板是不可能的啦,元件很密,很多都藏在玻璃下面。 回复【38楼】lwg998
-----------------------------------------------------------------------
您是指VFD的显示还是频谱的显示? http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4634814&bbs_page_no=1&search_mode=3&search_text=format&bbs_id=9999
还请楼主帮忙看看这个问题
多谢 FFT good 高手啊! mark 程序总体讲,很不错,美中不足有两处小问题
1
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_631863KLCCCB.JPG
(原文件名:1.JPG)
2
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_631864UMIQLB.JPG
(原文件名:2.JPG) 回复【45楼】encyclopedia
-----------------------------------------------------------------------
cmplxabs为缩写,通常都会省去元音以便在不影响认读的情况下缩短长度。
不是拼写错误啊! 回复【41楼】format
-----------------------------------------------------------------------
这个函数是复数求模,函数体已经包含在源码里了,math.h里不会有的,是没仔细看? 不错 支持楼主 mark mark cool 挖一下坟~~
很好的程序!! 能不能把电路图付上啊!!谢谢 学习一下 我的fft白学了,看不懂。。。。 楼主,上次说你模仿过mini48,不是可否共享下,也想模仿写。 效果不错 mark顶!!!! 打酱油了 学习了。。。 记号 太厉害了,我也些过fft,不过程序达16k,为什么你的才4K,高手啊。 mark sss mark! 这个不错可以看看 留个爪印 format 发表于 2011-1-24 11:34 static/image/common/back.gif
楼主请上代码
偶学习下
参考魏坤示波器,有相关代码很容易知道函数接口 不错 支持楼主 顶一下。谢谢! 好贵的好像 楼主建议你把程序和原理图打包上来如果愿意开源的话,因为上传完整的资料就可以置酷了 z317946208 发表于 2011-9-3 21:55
楼主,上次说你模仿过mini48,不是可否共享下,也想模仿写。
mini48?杜洋的?现在开源了啊 楼主~求开源~ 在学习中,顶.... 收藏!!谢谢分享了 这个屏真漂亮,做频谱显示 楼主的程序不错,MARK下。 有图和程序吗 我也想做个 如果屏更好看就好了 求原理图一份 呵呵学习 楼主干的漂亮! 帥氣!!!
页:
[1]