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