LED音乐频谱之点阵

转载请注明出处: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上架相关——App Store 上架流程

说实话&#xff0c;公司要上架一个自己做的一个小项目。为了完成这个任务&#xff0c;菜鸟的我一遍找资料一遍跟着做&#xff0c;一遍修改错误一遍查找解决方案。网上的资料大部分都是2015年以前的资料&#xff0c;资料有点不够过时&#xff0c;而且步骤配图也不是很详细&#…

上架相关——appstore 更新app版本

注&#xff1a;此片文章是基于app已经上架&#xff0c;也就是证书都已经配置好的前提下。 首先是还是app打包 修改版本号 修改project处的pp文件 检查无误后打包打包完成后upload to app store 漫长的等待。。 上传到appstore进入iTunesConnect 选择我的app 选择对应app点…

iOS开发 蓝牙技术4.0详解

前言 前端时间,同学在做项目过程中遇到关于蓝牙方面的问题,今天我就给大家进行详细的进行讲解下蓝牙在iOS开发中的具体实现.在介绍蓝牙前,大家要搞清楚什么是蓝牙? 什么是蓝牙? 随着蓝牙低功耗技术BLE&#xff08;Bluetooth Low Energy&#xff09;的发展&#xff0c;蓝牙技术…

前端面试题(五)

position的属性有哪些&#xff1f; 1、absolute生成绝对定位的元素&#xff0c;相对于值不为 static的第一个父元素进行定位。 2、fixed &#xff08;老IE不支持&#xff09;生成绝对定位的元素&#xff0c;相对于浏览器窗口进行定位。 3、relative生成相对定位的元素&#xff…

qrcode.js 二维码生成器

二维码生成 并显示&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"ko" …

AVPlayer设置从哪儿开始播放

avplayer 播放视频 首先介绍几个方法吧和属性吧。 - (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block 这个方法可以用于跟新进度条。 - (void)seekToTime:(CMTime)time completionHandler:(v…

老男孩爬虫实战密训课第一季,2018.6,初识爬虫训练-实战1-爬取汽车之家新闻数据...

1.爬虫介绍 编写程序&#xff0c;根据URL获取网站信息 2.用到的库 requests库 bs4库 3.内容及步骤 4.代码 import requests import os from bs4 import BeautifulSoup # 1.下载页面 ret requests.get(urlhttps://www.autohome.com.cn/news/) ret.encoding ret.apparent_encod…

Table 表格导出功能

<Card class"clearfix"><p slot"title"><Icon type"ios-list"></Icon>收入信息</p><!-- 导出1 --><div class"daochu1"><!-- 导出按钮 --><div class"search"><B…

动态添加后的数据转换 — 后台接收数据

let data this.projectPersonnel.map(item > {let obj {}obj.member item.people.map(info > {return info.id})obj.member JSON.stringify(obj.member)obj.projectId idobj.teamId item.name.idreturn obj})

iOS开发--地图与定位

iOS开发--地图与定位 概览 现在很多社交、电商、团购应用都引入了地图和定位功能&#xff0c;似乎地图功能不再是地图应用和导航应用所特有的。的确&#xff0c;有了地图和定位功能确实让我们的生活更加丰富多彩&#xff0c;极大的改变了我们的生活方式。例如你到了一个陌生的地…

iview组件库 - 穿梭栏设置

<Modalv-model"modal1"title"项目药品上下架维护"width"1020":mask-closable"false"on-ok"addOk()"><Col span"36"><Selectfilterableon-change"onChangeProject"placeholder"请先…

如何优雅地使用Sublime Text3

Sublime Text&#xff1a;一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件&#xff0c;不仅具有华丽的界面&#xff0c;还支持插件扩展机制&#xff0c;用她来写代码&#xff0c;绝对是一种享受。相比于难于上手的Vim&#xff0c;浮肿沉重的Eclipse&#xff0c;VS…

Windows 聚焦的锁屏壁纸设置为桌面壁纸

需求&#xff1a; Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸&#xff0c;想设置为桌面壁纸。 步骤如下&#xff1a; 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里。 a. 打开“资源管理器 b. 在地址栏复制粘贴下方路径后按回车键&#xff0c;即可快速跳转至这…

Chrome 控制台的console用法收集

Chrome 控制台console的用法 大家都有用过各种类型的浏览器&#xff0c;每种浏览器都有自己的特色&#xff0c;本人拙见&#xff0c;在我用过的浏览器当中&#xff0c;我是最喜欢Chrome的&#xff0c;因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方。…

pycharm安装lxml

今天下午刚学爬虫&#xff0c;要安好多库的感觉&#xff0c;崩溃 requests 首先我们用pip安装完成后&#xff0c;在pycharm里面还要导入进去&#xff0c;没有的话是会报错的 文件--设置--Project Interpreter 然后点击pip进去&#xff0c;搜索requests&#xff0c;再安装进去就…

6.1团队第二阶段冲刺(七)

燃尽图&#xff1a; 任务板: 会议照片&#xff1a; 昨天完成了管理员对发布人的查询功能&#xff0c;条件查询功能以及一系列常用小功能 今天完成了功能说明部分及其那部分界面美化&#xff0c;所有界面的退出以及回到首页的功能及首页美化等 明天打算做信息分页显示&#xff0…

在vue项目中使用树形结构的穿梭框

先看一下最后的效果&#xff1a; 一个基于elementui的穿梭框组件&#xff1a;el-tree-transfer 第一步&#xff1a;安装组件 npm install el-tree-transfer --save 第二步&#xff1a;写代码 // 使用树形穿梭框组件<tree-transfer :title"title" :from_datafromDa…

导航跳转后保持选中状态 jquery高亮当前选中菜单

功能需求&#xff1a; 今天在写一个站点需要用到在导航菜单点击链接跳转到新页面后&#xff0c;高亮当前菜单样式。 简单的说&#xff0c;就是我点击导航菜单中的一个栏目&#xff0c;跳转到该栏目下&#xff0c;该栏目菜单也同时高亮&#xff08;可以是背景色也可以是背景图片…

eacharts中国地图省市区点击显示

1.安装echarts.js 相关模块 npm i echarts2. 在 main.js 文件中搭建全局 // 引入echarts import echarts from echarts Vue.prototype.$echarts echarts3.vue文件种引入相关文档 import echarts from "echarts"; import "./china.js"; // 引入中国地图…

中英翻译(基于百度翻译)

先来看效果图 只做了简单的在线翻译&#xff0c;语音翻译和图片翻译都要钱&#xff0c;哈哈 市面上有名气的翻译公司就是有道和百度了&#xff0c;有道尝试了一下&#xff0c;分为API和SDK两种&#xff0c;但是demo下载下来跑不了 百度的就是API&#xff0c;也很简单&#xff0…