|
灰色小精灵(VIP会员)
头衔:版面管理
帮派:无帮无派
帖数:26
金钱:346
积分:77
注册时间:2020/12/28
|
用单片机ATMEGA324PA自制音乐频谱-附C程序源代码 看到论坛上有很多朋友做了音乐频谱,感觉很炫,于是也模仿着做了一个。在制作过程中,从网上查了很多资料,得到很多帮助。我要非常感谢那些辛勤付出的网友们,是你们无私的付出让我们可以站在更高的起点奔跑。诗经有云:投我以木桃,报之以琼瑶。如果一味的索取,泉源也会枯竭。故将我制作的所有资料传上来,以作为对那些帮助过我的网友的答谢,也希望看到此贴的人能将此一做法传承下去, 为论坛贡献自己的一份力量。效果图: 这个作品的制作可以分为三个过程:1、焊接LED点阵;2、设计控制电路;3、编程所谓音乐频谱就是将音乐的各个频率分量显示出来,LED点阵的水平轴代表各个频率,竖直轴代表强度。从下面的图中可以看出,该点阵大小为16*30(本来要做16*32,限于万用板大小只能容下30列)。每两列为一组,共15组,由于是阴极接在一起,姑且称之为共阴极组;同理,每一行的阳极接在一起,称为共阳极组,共16组。 点阵接线图: 正面: (围成圆圈的灯是七彩快闪LED,只要接上电源,其颜色自动变换。) 背面: 从图中可以看到,所有的阴极线(15根)、阳极线(16根) 都用排针引出来,再用杜邦线就可以和控制板相连。 控制电路图: 单片机用的是ATMEGA324PA(内部晶振,8MHZ),只用到通用IO功能,移植到其他单片机上也很方便。基本控制思路:扫描。每一时刻只让一个共阴极组接地,其它接高电平,从左至右依次选通每个共阴极组。每次选中共阴极组后,需要对其阳极写入数据,由于有16行,需要写入两个字节。假如以上方为高字节,我想让选中的共阴极组下面的9行灯亮,则应往阳极段写入的两个字节为:0x01,0xff。控制电路采用了4个锁存器74HC573,2个ULN2803(八路达林顿管,其实是一个8路反向器,可以承受大电流 ) 。左边两个573用来对阳极写入数据,右边两个573和2803接在一起,用来选通共阴极组。4个573的数据输入端都连到一起,接在单片机的PB口。573还有一个选通端LE,当其为高电平时,可以对其写入数据,低电平时输出锁存。将其作为片选(SS0,SS1,SS2,SS3)依次接单片机PA0,PA1,PA2,PA3。每次只让一个片选为1,就可以对每个573分开写入数据了。最后说说编程。用了一个声音模块采集声音,声音模块 原理为:麦克接收声音,OUT端输出声音信号波形。OUT端接在单片机的PA7(AD转换端口)上。程序的循环中,先进行32次AD采样,得到32(必须是2的n次方)个采样值,做快速傅里叶变换,得到32个频率的强度,由于是前后对称的,只取其前15个频率的强度,经过幅值调整(调为0~16),在15个共阴极组上依次显示出来。 「该帖子被 灰色小精灵 在 2021/1/6 13:41:47 编辑过」 我的地盘我做主 |
等级: |
2021/1/6 13:36:51
|
灰色小精灵(VIP会员)
头衔:版面管理
帮派:无帮无派
帖数:26
金钱:346
积分:77
注册时间:2020/12/28
|
1、<main.c> 主函数(AD转换,FFT变换) 限于篇幅现将源程序打包: 2021161444875.rar [ 4.25 KB ] 「该帖子被 灰色小精灵 在 2021/1/6 14:05:23 编辑过」 我的地盘我做主 |
等级: |
2021/1/6 13:43:03
|