照着论坛一位朋友的资料做的电路,原始资料地址
http://www.amobbs.com/forum.php? ... 407&pid=6891549
我没有用138和595,手边只找到27M的晶振,简单修改了显示部分,直接io口加三极管驱动10*15个led,也就是10个高共15列的led。
现在出现一个问题,用信号发生器输出可调频率给电路,发现led显示有异常,比如输入1k频率,会发现第3列和第7列会同时亮,其他几列也会亮一些。
逐渐提高频率这个现象还有,总之不是一列对应1个频率点,而是不相邻的好几列对应一个频率点,好苦恼啊,请各位前辈帮忙指点一下,通常这个问题是什么原因造成的?
下面是显示部分做的改动,我感觉应该不是显示部分的问题,但又搞不懂哪里不合适。
while(1)
{
if(fft_sign == 1) // 读取频率为20Hz
{
fft_sign = 0;
for(i=0;i<65;i++)
{
dd[ i ].real=(GetADCResult(0))<<2; // 读取ad结果并放大4倍;
}
processfft(num); // 傅立叶变化及处理
}
for(i=0;i<15;i++)
{ //这是原来的显示程序
/* LineInput(0x0000);
P2 = ColScan[ i ];
LineInput(LEDBuf[ i ]);
n = 512;
while(n--);
LineInput(0x0000);
*/
P0=0xff; //下面是我根据我临时搭的电路改的显示程序
if(i<7) //共15列,先显示前面7列接着显示后面8列
{
P3=led1[ i ];
P2=0;
}
else
{
P3=0;
P2=led3[ i-7 ];
}
P0=LEDBuf[ i ];
n=512;
while(n--);
P0=0xff;
}
}
下面是临时搭的电路原理图,暂时只接了8行led。
未命名.jpg (375.49 KB, 下载次数: 0)
下载附件
2013-10-18 11:57 上传
一周热门 更多>