LED音乐频谱之点阵
轉(zhuǎn)載請注明出處:http://blog.csdn.net/ruoyunliufeng/article/details/37967455
一.硬件
這里的LED選擇直插的霧面LED,亮度可以還不失美觀。
注意每行要加上限流電阻。74HC138(三八譯碼器)作為列選,每行都連著74HC595(移位寄存器)實(shí)現(xiàn)串行輸入,并行輸出。
???????
二.軟件
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 串行數(shù)據(jù)輸入端 sbit _RCLK = P0^1; // 74hc595 數(shù)據(jù)輸出時(shí)鐘線 sbit _SRCLK = P0^2; // 74hc595 數(shù)據(jù)輸入時(shí)鐘線 sbit ACT_Key = P0^3; // 模式開關(guān) sbit key1 = P0^6; // pwm調(diào)節(jié)+ sbit Key_2 = P3^3; // 時(shí)鐘調(diào)節(jié)按鍵extern void delayled(int ); extern void LineInput(uint dat); //extern void DisplayTime(void); //extern void TimeSetting(void); extern void ruoyun(void);#endifled.c
我想最核心的東西,應(yīng)該就是怎么通過三個(gè)循環(huán)實(shí)現(xiàn)左移的吧(盡管這樣做用來三個(gè)循環(huán)。如今看來并非非常好),以下具體講講這段代碼。
代碼思路:我們都知道要想實(shí)現(xiàn)點(diǎn)陣顯示僅僅要向595串行輸入16個(gè)字模數(shù)據(jù)就OK了。那么怎樣叫它向左面移動(dòng)呢?事實(shí)上非常easy。以下我繪圖說明:
最里面的那層for循環(huán)實(shí)現(xiàn)了點(diǎn)陣的顯示,就是從左到右刷一遍。
中間那層for循環(huán)是一箭雙雕,有兩個(gè)作用。第一個(gè)就是為了點(diǎn)陣可以穩(wěn)定顯示,就是高速的多刷幾遍(要不刷一遍誰看得清)。
第二個(gè)作用就是為了向左移動(dòng)提供延時(shí)(要不瞬間不就左移到頭了嘛)。
事實(shí)上規(guī)范點(diǎn)的寫法應(yīng)該是這個(gè)for提供穩(wěn)定點(diǎn)陣顯示。然后外面在加一個(gè)延時(shí)控制向左移動(dòng)的速率。后來我看寫的太復(fù)雜就給省略了。
最外面的那層循環(huán)控制的是左移的列數(shù)(就是向左移動(dòng)多少):
for(k=0;k<25;k++) //控制動(dòng)畫移動(dòng)
K的值代表想做移動(dòng)的列數(shù)。為什么是25。由于一共是5個(gè)字每一個(gè)字占8行??????????????
初始狀態(tài): ?? ???????????????? *若 云*MCU
終止?fàn)顟B(tài):????????????? 若云*MCU*
也就是像左面移動(dòng)三個(gè)字,3*8=24,所以K<25。
最后另一個(gè)LineInput()函數(shù),干嘛用的呢?留個(gè)懸念,興許博客解說。
轉(zhuǎn)載于:https://www.cnblogs.com/ldxsuanfa/p/10927853.html
總結(jié)
以上是生活随笔為你收集整理的LED音乐频谱之点阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行附属卡年费多少?免年费吗?
- 下一篇: cf777c