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.pswp.cn/news/247880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247880.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

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

說實話&#xff0c;公司要上架一個自己做的一個小項目。為了完成這個任務&#xff0c;菜鳥的我一遍找資料一遍跟著做&#xff0c;一遍修改錯誤一遍查找解決方案。網上的資料大部分都是2015年以前的資料&#xff0c;資料有點不夠過時&#xff0c;而且步驟配圖也不是很詳細&#…

this.$router 的三種跳轉頁面方法

第一種&#xff1a; this.$router.push(需要跳轉到的路徑名稱)此方法跳轉后&#xff0c;會在歷史欄目中保存路勁地址&#xff0c;當點擊歷史標簽時可以進行訪問 第二種&#xff1a; this.$router.replace(需要跳轉到的路徑名稱)此方法跳轉后&#xff0c;會在歷史欄目中不保存…

cf777c

題意&#xff1a;給你一個n*m的數陣 對于一行到另一行&#xff0c;若存在一列從上到下遞減&#xff0c;則稱之符合題意 The first line of the input contains two positive integers n and m (1?≤?nm?≤?100?000) — the number of rows and the number of columns in t…

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

注&#xff1a;此片文章是基于app已經上架&#xff0c;也就是證書都已經配置好的前提下。 首先是還是app打包 修改版本號 修改project處的pp文件 檢查無誤后打包打包完成后upload to app store 漫長的等待。。 上傳到appstore進入iTunesConnect 選擇我的app 選擇對應app點…

輸入框輸入數字,且不能有小數點存在

基于Vue項目進行設置 <template><comp v-if"update"></comp><button click"reload()">刷新comp組件</button></template><script>import comp from /views/comp.vueexport default {name: parentComp,data() {r…

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" …

SQL -- 多表查詢

-- --SQL基礎-->多表查詢 -- /* 一、多表查詢 簡言之&#xff0c;根據特定的連接條件從不同的表中獲取所需的數據 笛卡爾集的產生條件&#xff1a; 省略連接條件 連接條件無效 第一個表中的所有行與第二個表中的所有行相連接 二、多表查詢語法&#xff1a;*/ SELECT tab…

如何解決兩個相鄰的span中間有空隙

span中間不要有換行、或者空格 或者在樣式上加上float&#xff1a;left轉載于:https://www.cnblogs.com/lst619247/p/10944341.html

Vue項目中Table設置 render 函數

statusList1: {0: "",1: "",2: "藥品服務費收入",3: "特藥服務費收入",4: "直保經紀費",5: "再保經紀費",6: "廣告費",},render: (h, params) > {return this.colorCommon(h, params.row, "1&q…

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…

iOS開發 簡單實現視頻音頻的邊下邊播

直接切入主題&#xff0c;要實現的功能是&#xff1a;1、ios視頻音頻邊緩存邊播放&#xff0c;緩存時可以在已下載的部分拖拽進度條。2、緩存到一半退出&#xff0c;再次播放同一地址的視頻時&#xff0c;視頻繼續下載&#xff0c;并且緩存進度已經走到上一次下載的位置。3、無…

volatile的原理和實現機制

volatile到底如何保證可見性和禁止指令重排序的。 “觀察加入volatile關鍵字和沒有加入volatile關鍵字時所生成的匯編代碼發現&#xff0c;加入volatile關鍵字時&#xff0c;會多出一個lock前綴指令” lock前綴指令實際上相當于一個內存屏障&#xff08;也成內存柵欄&#xff0…

Table城市代碼翻譯

// data 數據變量 eara&#xff1a;[]// 接口調用 getChinaList() {return fetch({url: "/api/v1/china/city/search",method: "GET"});},// table 欄中的 render 函數 render: (h, params) > {return h("span",this.dictCodesCommon(params.…

iOS中的WiFi與硬件通信

WiFi通信是指手機通過WiFi與外部設備建立連接&#xff0c;并與外部設備進行交互、通信。手機與外部設備的WiFi通信通常是使用Socket來實現的&#xff0c;在這里先介紹一個第三方Socket庫&#xff08;CocoaAsyncSocket&#xff09;來實現WiFi通信。 CocoaAsyncSocket支持TCP和U…

MongoDB查詢報錯:class com.mongodb.MongoSecurityException: Exception authenticating MongoCredential...

異常日志&#xff1a; 2019-05-30 10:10:24,252 [http-nio-8080-exec-1] DEBUG [java.sql.Connection] - ooo Connection Opened 2019-05-30 10:10:24,258 [http-nio-8080-exec-1] DEBUG [java.sql.PreparedStatement] - > Executing: insert into client_config ( appid, …

動態添加后的數據轉換 — 后臺接收數據

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})