转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/37967455

一.硬件

这里的LED选择直插的雾面LED,亮度可以还不失美观。

注意每行要加上限流电阻。74HC138(三八译码器)作为列选,每行都连着74HC595(移位寄存器)实现串行输入,并行输出。

二.软件

led.h

#ifndef __Led_H
#define __Led_H#include "STC12C5A.h"#define uint unsigned int
#define uchar unsigned char
#define light 127sbit _SER    = P0^0;              // 74hc595 串行数据输入端
sbit _RCLK   = P0^1;               // 74hc595 数据输出时钟线
sbit _SRCLK  = P0^2;               // 74hc595 数据输入时钟线
sbit ACT_Key = P0^3;               // 模式开关
sbit key1    = P0^6;               // pwm调节+
sbit Key_2   = P3^3;               // 时钟调节按键extern void delayled(int );
extern void LineInput(uint dat);
//extern void DisplayTime(void);
//extern void TimeSetting(void);
extern void ruoyun(void);#endif

led.c

#include "Led.h"uint   code table1[80]={
0x0C,0x01,0x10,0x11,0xFE,0x11,0x44,0x3F,
0x44,0x11,0x44,0x3D,0x7E,0x11,0x00,0x11,/*"若",0*/0x00,0x00,0x0C,0x01,0x34,0x11,0xC4,0x11,
0x04,0x11,0x14,0x11,0x0E,0x01,0x00,0x01,/*"云",0*/0x04,0x10,0xFC,0x1F,0x00,0x1F,0xFC,0x00,
0x00,0x1F,0xFC,0x1F,0x04,0x10,0x00,0x00,/*"M",0*/0xE0,0x03,0x18,0x0C,0x04,0x10,0x04,0x10,
0x04,0x10,0x08,0x10,0x10,0x1C,0x00,0x00,/*"C",0*/0x00,0x10,0xF8,0x1F,0x04,0x10,0x04,0x00,
0x04,0x00,0x04,0x10,0xF8,0x1F,0x00,0x10,/*"U",0*/};uchar  code ColScan[16]   =  {0x20,0x24,0x22,0x26,0x21,0x25,0x23,0x27,0x10,0x14,0x12,0x16,0x11,0x15,0x13,0x17};                       // 74hc138 进行列扫描void delayled(int z)                // 延时函数
{int x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);
}void WriteByte(char dat)           //写一个字节的数据
{char i;                                  for(i=0;i<8;i++)                 //循环8次把编码传给锁存器{dat=dat>>1;               //右移一位。取出该字节的最低位_SER=CY;                   //将该字节的最低位传给R_SRCLK=0;                      //将数据取出,上升沿_SRCLK=1;}
}
void LineInput(uint dat)                // 单列数据显示
{uchar n;_RCLK = 0;for(n=0;n<16;n++){_SRCLK = 0;_SER  = (dat>>n)&0x01;        //将数据的值串入输入SER中,然后并行输出_SRCLK = 1;}_RCLK = 1;
}void ruoyun()
{int num,k,j;//,move,speed;for(k=0;k<25;k++)                //控制动画移动{ for(j=0;j<150;j++)              //延时{for(num=0;num<16;num++)            //控制每一帧{WriteByte(table1[2*(num+k)]);       //送出一个字节WriteByte(table1[2*(num+k)+1]);P2=ColScan[num];                        //行选_RCLK=1;                            //输出锁存器数据下降沿_RCLK=0;delayled(2);}} }

我想最核心的东西,应该就是怎么通过三个循环实现左移的吧(尽管这样做用来三个循环。如今看来并非非常好),以下具体讲讲这段代码。

代码思路:我们都知道要想实现点阵显示仅仅要向595串行输入16个字模数据就OK了。那么怎样叫它向左面移动呢?事实上非常easy。以下我绘图说明:

最里面的那层for循环实现了点阵的显示,就是从左到右刷一遍。

中间那层for循环是一箭双雕,有两个作用。第一个就是为了点阵可以稳定显示,就是高速的多刷几遍(要不刷一遍谁看得清)。

第二个作用就是为了向左移动提供延时(要不瞬间不就左移到头了嘛)。

事实上规范点的写法应该是这个for提供稳定点阵显示。然后外面在加一个延时控制向左移动的速率。后来我看写的太复杂就给省略了。

最外面的那层循环控制的是左移的列数(就是向左移动多少):

      for(k=0;k<25;k++)               //控制动画移动

K的值代表想做移动的列数。为什么是25。由于一共是5个字每一个字占8行

初始状态:                     *若 云*MCU

终止状态:              若云*MCU*

也就是像左面移动三个字,3*8=24,所以K<25。

最后另一个LineInput()函数,干嘛用的呢?留个悬念,兴许博客解说。

转载于:https://www.cnblogs.com/ldxsuanfa/p/10927853.html

LED音乐频谱之点阵相关推荐

  1. LED音乐频谱之概述

    点击打开链接       转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/37929733 这个LED音乐频谱是我在学51单片机的 ...

  2. LED音乐频谱之输出数据处理

    转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/38023539 一.PWM调节 1.初始化 void DACInit() {CC ...

  3. LED音乐频谱之输入数据处理

    转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/38023431 通过前面的介绍我们知道.声音信号要通过AD转换,变成我们可以处理 ...

  4. 毕业设计| STM32F103全彩FFT音乐频谱+LED年历闹钟显示

    大家好,我是写代码的篮球球痴,今天在后台看到有人想找毕业设计的点子. 然后我今天刚好看到一个不错的点子,给大家分享 看今天分享的毕设是来自点-凡自制的FTF音乐频谱制作,先来看展示效果: --视频出处 ...

  5. 51DIY音乐频谱显示

    以前,每当看到家里的音箱功放上的几排小灯,随着播放的音乐如波浪般跳跃,或者在电脑上打开千千静听这个音乐播放软件时,看到那动感的频谱跟随音乐节奏优美的舞动着时,不禁思绪万千,要是自己某天能亲手用普通的单 ...

  6. 音乐频谱显示小玩具——FFT在STM32中的实现与应用

    0.前言 音乐频谱显示说白了就是"儿童版"频谱仪.笔者平时比较喜欢听音乐,闲暇之余听音乐的时候如果有个频谱显示的小玩具在旁边跳来跳去的也挺有意思的,所以笔者去万能的某宝上搜索了一下 ...

  7. html音乐跳动的线,利用CSS3制作跳动音乐频谱跳动效果

    [摘要] CSS3新增很多实用的属性,特别是可以实现动画效果的animation属性,本文通过使用CSS3来实现一个类似于音乐频谱跳动效果. 在一个网站上看到"直播中"的提示标题, ...

  8. 桌面音乐频谱linux,X Music Spectrum(音乐频谱桌面特效)

    XMusicSpectrum是一款音乐频谱桌面特效软件,听上去可能很复杂,简单点来说就是当你用播放器播放音乐时,屏幕下方会出现动态音乐频谱,让你的桌面变成更加丰富多彩. 相关软件软件大小版本说明下载地 ...

  9. Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条

    前段时间,公司项目有个UI需求,要做一个这么的东西 : 一个仿音乐频率谱线进度条(这是什么鬼?),那好,就先将这个控件命名为:音乐频谱进度条:) 废话不多说,先来看一下效果图: 附上在GitHub上的 ...

最新文章

  1. CF1148F - Foo Fighters
  2. 【old】mapX距离工具源码,delphi7+mapx5.0
  3. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
  4. ios 应用 开发流程。。。
  5. 商汤2021春季校园招聘正式启动!“春招百晓生”系列空宣强势来袭
  6. SQL基础操作_7_时间运算
  7. 如何解决苹果Mac安装Ps错误代码182?
  8. 华为hcip认证题库在哪找?HCIP如何考取?
  9. 使用 软件 vscode 对比文件内容的方法
  10. wps表格l制作甘特图_如何在表格中制作甘特图(横道图)?
  11. 孔夫子旧书网接口:实现输入ISBN获取图书信息
  12. jQuery控制网页字体大小
  13. (转)那些年不容错过的硅谷IT公司
  14. 无线通信蜂窝网络 的 覆盖范围
  15. 机器学习knn算法学习笔记使用sklearn库 ,莺尾花实例
  16. php GD库的使用
  17. 根据起始日期、起始时间、终止日期、终止时间计算天数
  18. 写论文工具:LaTex在线网站
  19. React.Component
  20. 编译原理第一个项目——个人所得税PersonalTax

热门文章

  1. P2486 [SDOI2011]染色(树链剖分+线段树)
  2. 洛谷3384(树链剖分模板题)
  3. mac mysql 设置短命令_短小强大的8个命令,分分钟帮你提高工作效率!
  4. PAT_B_1013_Java(20分)
  5. linux wptmp文件分析,wordpress上传图片提示“缺少临时文件夹”的解决方法
  6. mysql备份文件0kb_Oracle 数据文件大小为0kb或者文件丢失恢复
  7. CF思维联系–CodeForces - 223 C Partial Sums(组合数学的先线性递推)
  8. 数据结构-二叉树的非递归遍历
  9. 时间触发以太网TTEthernet技术
  10. 图像卷积与滤波知识点整理(2)